001package org.hl7.fhir.r4.formats;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 6, 2018 17:51-0400 for FHIR v3.4.0
033
034import org.hl7.fhir.r4.model.DateType;
035import org.hl7.fhir.r4.model.DateTimeType;
036import org.hl7.fhir.r4.model.CodeType;
037import org.hl7.fhir.r4.model.StringType;
038import org.hl7.fhir.r4.model.IntegerType;
039import org.hl7.fhir.r4.model.OidType;
040import org.hl7.fhir.r4.model.CanonicalType;
041import org.hl7.fhir.r4.model.UriType;
042import org.hl7.fhir.r4.model.UuidType;
043import org.hl7.fhir.r4.model.UrlType;
044import org.hl7.fhir.r4.model.InstantType;
045import org.hl7.fhir.r4.model.BooleanType;
046import org.hl7.fhir.r4.model.Base64BinaryType;
047import org.hl7.fhir.r4.model.UnsignedIntType;
048import org.hl7.fhir.r4.model.MarkdownType;
049import org.hl7.fhir.r4.model.TimeType;
050import org.hl7.fhir.r4.model.IdType;
051import org.hl7.fhir.r4.model.PositiveIntType;
052import org.hl7.fhir.r4.model.DecimalType;
053import org.hl7.fhir.r4.model.*;
054import org.xmlpull.v1.*;
055import org.hl7.fhir.utilities.Utilities;
056import org.hl7.fhir.exceptions.FHIRFormatError;
057import org.hl7.fhir.exceptions.FHIRException;
058import java.io.IOException;
059
060public class XmlParser extends XmlParserBase {
061
062  public XmlParser() {
063    super();
064  }
065
066  public XmlParser(boolean allowUnknownContent) {
067    super();
068    setAllowUnknownContent(allowUnknownContent);
069  }
070
071
072  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
073    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) 
074      res.getExtension().add(parseExtension(xpp));
075    else
076      return false;
077      
078    return true;
079  }
080
081  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
082    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
083      res.getModifierExtension().add(parseExtension(xpp));
084    else
085      return parseElementContent(eventType, xpp, res);
086      
087    return true;
088  }
089
090  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneType res) throws XmlPullParserException, IOException, FHIRFormatError {
091    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
092      res.getModifierExtension().add(parseExtension(xpp));
093    else
094      return parseElementContent(eventType, xpp, res);
095      
096    return true;
097  }
098
099  @SuppressWarnings("unchecked")
100  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
101    Enumeration<E> res = new Enumeration<E>(e);
102    parseElementAttributes(xpp, res);
103    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
104    next(xpp);
105    int eventType = nextNoWhitespace(xpp);
106    while (eventType != XmlPullParser.END_TAG) {
107      if (!parseElementContent(eventType, xpp, res))
108        unknownContent(xpp);
109      eventType = nextNoWhitespace(xpp);
110    }
111    next(xpp);
112    parseElementClose(res);
113    return res;
114  }
115
116  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
117    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
118    parseElementAttributes(xpp, res);
119    next(xpp);
120    int eventType = nextNoWhitespace(xpp);
121    while (eventType != XmlPullParser.END_TAG) {
122      if (!parseElementContent(eventType, xpp, res))
123        unknownContent(xpp);
124      eventType = nextNoWhitespace(xpp);
125    }
126    next(xpp);
127    parseElementClose(res);
128    return res;
129  }
130
131  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
132    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
133    parseElementAttributes(xpp, res);
134    next(xpp);
135    int eventType = nextNoWhitespace(xpp);
136    while (eventType != XmlPullParser.END_TAG) {
137      if (!parseElementContent(eventType, xpp, res))
138        unknownContent(xpp);
139      eventType = nextNoWhitespace(xpp);
140    }
141    next(xpp);
142    parseElementClose(res);
143    return res;
144  }
145
146  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
147    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
148    parseElementAttributes(xpp, res);
149    next(xpp);
150    int eventType = nextNoWhitespace(xpp);
151    while (eventType != XmlPullParser.END_TAG) {
152      if (!parseElementContent(eventType, xpp, res))
153        unknownContent(xpp);
154      eventType = nextNoWhitespace(xpp);
155    }
156    next(xpp);
157    parseElementClose(res);
158    return res;
159  }
160
161  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
162    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
163    parseElementAttributes(xpp, res);
164    next(xpp);
165    int eventType = nextNoWhitespace(xpp);
166    while (eventType != XmlPullParser.END_TAG) {
167      if (!parseElementContent(eventType, xpp, res))
168        unknownContent(xpp);
169      eventType = nextNoWhitespace(xpp);
170    }
171    next(xpp);
172    parseElementClose(res);
173    return res;
174  }
175
176  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
177    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
178    parseElementAttributes(xpp, res);
179    next(xpp);
180    int eventType = nextNoWhitespace(xpp);
181    while (eventType != XmlPullParser.END_TAG) {
182      if (!parseElementContent(eventType, xpp, res))
183        unknownContent(xpp);
184      eventType = nextNoWhitespace(xpp);
185    }
186    next(xpp);
187    parseElementClose(res);
188    return res;
189  }
190
191  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
192    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
193    parseElementAttributes(xpp, res);
194    next(xpp);
195    int eventType = nextNoWhitespace(xpp);
196    while (eventType != XmlPullParser.END_TAG) {
197      if (!parseElementContent(eventType, xpp, res))
198        unknownContent(xpp);
199      eventType = nextNoWhitespace(xpp);
200    }
201    next(xpp);
202    parseElementClose(res);
203    return res;
204  }
205
206  protected CanonicalType parseCanonical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
207    CanonicalType res = new CanonicalType(xpp.getAttributeValue(null, "value"));
208    parseElementAttributes(xpp, res);
209    next(xpp);
210    int eventType = nextNoWhitespace(xpp);
211    while (eventType != XmlPullParser.END_TAG) {
212      if (!parseElementContent(eventType, xpp, res))
213        unknownContent(xpp);
214      eventType = nextNoWhitespace(xpp);
215    }
216    next(xpp);
217    parseElementClose(res);
218    return res;
219  }
220
221  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
222    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
223    parseElementAttributes(xpp, res);
224    next(xpp);
225    int eventType = nextNoWhitespace(xpp);
226    while (eventType != XmlPullParser.END_TAG) {
227      if (!parseElementContent(eventType, xpp, res))
228        unknownContent(xpp);
229      eventType = nextNoWhitespace(xpp);
230    }
231    next(xpp);
232    parseElementClose(res);
233    return res;
234  }
235
236  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
237    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
238    parseElementAttributes(xpp, res);
239    next(xpp);
240    int eventType = nextNoWhitespace(xpp);
241    while (eventType != XmlPullParser.END_TAG) {
242      if (!parseElementContent(eventType, xpp, res))
243        unknownContent(xpp);
244      eventType = nextNoWhitespace(xpp);
245    }
246    next(xpp);
247    parseElementClose(res);
248    return res;
249  }
250
251  protected UrlType parseUrl(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
252    UrlType res = new UrlType(xpp.getAttributeValue(null, "value"));
253    parseElementAttributes(xpp, res);
254    next(xpp);
255    int eventType = nextNoWhitespace(xpp);
256    while (eventType != XmlPullParser.END_TAG) {
257      if (!parseElementContent(eventType, xpp, res))
258        unknownContent(xpp);
259      eventType = nextNoWhitespace(xpp);
260    }
261    next(xpp);
262    parseElementClose(res);
263    return res;
264  }
265
266  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
267    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
268    parseElementAttributes(xpp, res);
269    next(xpp);
270    int eventType = nextNoWhitespace(xpp);
271    while (eventType != XmlPullParser.END_TAG) {
272      if (!parseElementContent(eventType, xpp, res))
273        unknownContent(xpp);
274      eventType = nextNoWhitespace(xpp);
275    }
276    next(xpp);
277    parseElementClose(res);
278    return res;
279  }
280
281  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
282    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
283    parseElementAttributes(xpp, res);
284    next(xpp);
285    int eventType = nextNoWhitespace(xpp);
286    while (eventType != XmlPullParser.END_TAG) {
287      if (!parseElementContent(eventType, xpp, res))
288        unknownContent(xpp);
289      eventType = nextNoWhitespace(xpp);
290    }
291    next(xpp);
292    parseElementClose(res);
293    return res;
294  }
295
296  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
297    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
298    parseElementAttributes(xpp, res);
299    next(xpp);
300    int eventType = nextNoWhitespace(xpp);
301    while (eventType != XmlPullParser.END_TAG) {
302      if (!parseElementContent(eventType, xpp, res))
303        unknownContent(xpp);
304      eventType = nextNoWhitespace(xpp);
305    }
306    next(xpp);
307    parseElementClose(res);
308    return res;
309  }
310
311  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
312    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
313    parseElementAttributes(xpp, res);
314    next(xpp);
315    int eventType = nextNoWhitespace(xpp);
316    while (eventType != XmlPullParser.END_TAG) {
317      if (!parseElementContent(eventType, xpp, res))
318        unknownContent(xpp);
319      eventType = nextNoWhitespace(xpp);
320    }
321    next(xpp);
322    parseElementClose(res);
323    return res;
324  }
325
326  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
327    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
328    parseElementAttributes(xpp, res);
329    next(xpp);
330    int eventType = nextNoWhitespace(xpp);
331    while (eventType != XmlPullParser.END_TAG) {
332      if (!parseElementContent(eventType, xpp, res))
333        unknownContent(xpp);
334      eventType = nextNoWhitespace(xpp);
335    }
336    next(xpp);
337    parseElementClose(res);
338    return res;
339  }
340
341  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
342    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
343    parseElementAttributes(xpp, res);
344    next(xpp);
345    int eventType = nextNoWhitespace(xpp);
346    while (eventType != XmlPullParser.END_TAG) {
347      if (!parseElementContent(eventType, xpp, res))
348        unknownContent(xpp);
349      eventType = nextNoWhitespace(xpp);
350    }
351    next(xpp);
352    parseElementClose(res);
353    return res;
354  }
355
356  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
357    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
358    parseElementAttributes(xpp, res);
359    next(xpp);
360    int eventType = nextNoWhitespace(xpp);
361    while (eventType != XmlPullParser.END_TAG) {
362      if (!parseElementContent(eventType, xpp, res))
363        unknownContent(xpp);
364      eventType = nextNoWhitespace(xpp);
365    }
366    next(xpp);
367    parseElementClose(res);
368    return res;
369  }
370
371  protected PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
372    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
373    parseElementAttributes(xpp, res);
374    next(xpp);
375    int eventType = nextNoWhitespace(xpp);
376    while (eventType != XmlPullParser.END_TAG) {
377      if (!parseElementContent(eventType, xpp, res))
378        unknownContent(xpp);
379      eventType = nextNoWhitespace(xpp);
380    }
381    next(xpp);
382    parseElementClose(res);
383    return res;
384  }
385
386  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
387    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
388    parseElementAttributes(xpp, res);
389    next(xpp);
390    int eventType = nextNoWhitespace(xpp);
391    while (eventType != XmlPullParser.END_TAG) {
392      if (!parseElementContent(eventType, xpp, res))
393        unknownContent(xpp);
394      eventType = nextNoWhitespace(xpp);
395    }
396    next(xpp);
397    parseElementClose(res);
398    return res;
399  }
400
401  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
402    Extension res = new Extension();
403    parseElementAttributes(xpp, res);
404    if (xpp.getAttributeValue(null, "url") != null)
405        res.setUrl(xpp.getAttributeValue(null, "url"));
406    next(xpp);
407    int eventType = nextNoWhitespace(xpp);
408    while (eventType != XmlPullParser.END_TAG) {
409  if (!parseExtensionContent(eventType, xpp, res))
410        unknownContent(xpp);
411      eventType = nextNoWhitespace(xpp);
412    }
413    next(xpp);
414    parseElementClose(res);
415    return res;
416  }
417
418  protected boolean parseExtensionContent(int eventType, XmlPullParser xpp, Extension res) throws XmlPullParserException, IOException, FHIRFormatError {
419      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
420        res.setValue(parseType("value", xpp));
421      } else if (!parseElementContent(eventType, xpp, res))
422        return false;
423    return true;
424  }
425
426  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
427    Narrative res = new Narrative();
428    parseElementAttributes(xpp, res);
429    next(xpp);
430    int eventType = nextNoWhitespace(xpp);
431    while (eventType != XmlPullParser.END_TAG) {
432  if (!parseNarrativeContent(eventType, xpp, res))
433        unknownContent(xpp);
434      eventType = nextNoWhitespace(xpp);
435    }
436    next(xpp);
437    parseElementClose(res);
438    return res;
439  }
440
441  protected boolean parseNarrativeContent(int eventType, XmlPullParser xpp, Narrative res) throws XmlPullParserException, IOException, FHIRFormatError {
442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
443        res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
445        res.setDiv(parseXhtml(xpp));
446      } else if (!parseElementContent(eventType, xpp, res))
447        return false;
448    return true;
449  }
450
451  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
452    Meta res = new Meta();
453    parseTypeAttributes(xpp, res);
454    next(xpp);
455    int eventType = nextNoWhitespace(xpp);
456    while (eventType != XmlPullParser.END_TAG) {
457  if (!parseMetaContent(eventType, xpp, res))
458        unknownContent(xpp);
459      eventType = nextNoWhitespace(xpp);
460    }
461    next(xpp);
462    parseElementClose(res);
463    return res;
464  }
465
466  protected boolean parseMetaContent(int eventType, XmlPullParser xpp, Meta res) throws XmlPullParserException, IOException, FHIRFormatError {
467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
468        res.setVersionIdElement(parseId(xpp));
469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
470        res.setLastUpdatedElement(parseInstant(xpp));
471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
472        res.setSourceElement(parseUri(xpp));
473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
474        res.getProfile().add(parseCanonical(xpp));
475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
476        res.getSecurity().add(parseCoding(xpp));
477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
478        res.getTag().add(parseCoding(xpp));
479      } else if (!parseElementContent(eventType, xpp, res))
480        return false;
481    return true;
482  }
483
484  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
485    Address res = new Address();
486    parseTypeAttributes(xpp, res);
487    next(xpp);
488    int eventType = nextNoWhitespace(xpp);
489    while (eventType != XmlPullParser.END_TAG) {
490  if (!parseAddressContent(eventType, xpp, res))
491        unknownContent(xpp);
492      eventType = nextNoWhitespace(xpp);
493    }
494    next(xpp);
495    parseElementClose(res);
496    return res;
497  }
498
499  protected boolean parseAddressContent(int eventType, XmlPullParser xpp, Address res) throws XmlPullParserException, IOException, FHIRFormatError {
500      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
501        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
503        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
505        res.setTextElement(parseString(xpp));
506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
507        res.getLine().add(parseString(xpp));
508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
509        res.setCityElement(parseString(xpp));
510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
511        res.setDistrictElement(parseString(xpp));
512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
513        res.setStateElement(parseString(xpp));
514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
515        res.setPostalCodeElement(parseString(xpp));
516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
517        res.setCountryElement(parseString(xpp));
518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
519        res.setPeriod(parsePeriod(xpp));
520      } else if (!parseElementContent(eventType, xpp, res))
521        return false;
522    return true;
523  }
524
525  protected Contributor parseContributor(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
526    Contributor res = new Contributor();
527    parseTypeAttributes(xpp, res);
528    next(xpp);
529    int eventType = nextNoWhitespace(xpp);
530    while (eventType != XmlPullParser.END_TAG) {
531  if (!parseContributorContent(eventType, xpp, res))
532        unknownContent(xpp);
533      eventType = nextNoWhitespace(xpp);
534    }
535    next(xpp);
536    parseElementClose(res);
537    return res;
538  }
539
540  protected boolean parseContributorContent(int eventType, XmlPullParser xpp, Contributor res) throws XmlPullParserException, IOException, FHIRFormatError {
541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
542        res.setTypeElement(parseEnumeration(xpp, Contributor.ContributorType.NULL, new Contributor.ContributorTypeEnumFactory()));
543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
544        res.setNameElement(parseString(xpp));
545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
546        res.getContact().add(parseContactDetail(xpp));
547      } else if (!parseElementContent(eventType, xpp, res))
548        return false;
549    return true;
550  }
551
552  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
553    Attachment res = new Attachment();
554    parseTypeAttributes(xpp, res);
555    next(xpp);
556    int eventType = nextNoWhitespace(xpp);
557    while (eventType != XmlPullParser.END_TAG) {
558  if (!parseAttachmentContent(eventType, xpp, res))
559        unknownContent(xpp);
560      eventType = nextNoWhitespace(xpp);
561    }
562    next(xpp);
563    parseElementClose(res);
564    return res;
565  }
566
567  protected boolean parseAttachmentContent(int eventType, XmlPullParser xpp, Attachment res) throws XmlPullParserException, IOException, FHIRFormatError {
568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
569        res.setContentTypeElement(parseCode(xpp));
570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
571        res.setLanguageElement(parseCode(xpp));
572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
573        res.setDataElement(parseBase64Binary(xpp));
574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
575        res.setUrlElement(parseUrl(xpp));
576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
577        res.setSizeElement(parseUnsignedInt(xpp));
578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
579        res.setHashElement(parseBase64Binary(xpp));
580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
581        res.setTitleElement(parseString(xpp));
582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
583        res.setCreationElement(parseDateTime(xpp));
584      } else if (!parseElementContent(eventType, xpp, res))
585        return false;
586    return true;
587  }
588
589  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
590    Count res = new Count();
591    parseTypeAttributes(xpp, res);
592    next(xpp);
593    int eventType = nextNoWhitespace(xpp);
594    while (eventType != XmlPullParser.END_TAG) {
595  if (!parseCountContent(eventType, xpp, res))
596        unknownContent(xpp);
597      eventType = nextNoWhitespace(xpp);
598    }
599    next(xpp);
600    parseElementClose(res);
601    return res;
602  }
603
604  protected boolean parseCountContent(int eventType, XmlPullParser xpp, Count res) throws XmlPullParserException, IOException, FHIRFormatError {
605      if (!parseQuantityContent(eventType, xpp, res))
606        return false;
607    return true;
608  }
609
610  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
611    DataRequirement res = new DataRequirement();
612    parseTypeAttributes(xpp, res);
613    next(xpp);
614    int eventType = nextNoWhitespace(xpp);
615    while (eventType != XmlPullParser.END_TAG) {
616  if (!parseDataRequirementContent(eventType, xpp, res))
617        unknownContent(xpp);
618      eventType = nextNoWhitespace(xpp);
619    }
620    next(xpp);
621    parseElementClose(res);
622    return res;
623  }
624
625  protected boolean parseDataRequirementContent(int eventType, XmlPullParser xpp, DataRequirement res) throws XmlPullParserException, IOException, FHIRFormatError {
626      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
627        res.setTypeElement(parseCode(xpp));
628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
629        res.getProfile().add(parseCanonical(xpp));
630      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
631        res.setSubject(parseType("subject", xpp));
632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
633        res.getMustSupport().add(parseString(xpp));
634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
635        res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(xpp, res));
636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
637        res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(xpp, res));
638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
639        res.setLimitElement(parsePositiveInt(xpp));
640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sort")) {
641        res.getSort().add(parseDataRequirementDataRequirementSortComponent(xpp, res));
642      } else if (!parseElementContent(eventType, xpp, res))
643        return false;
644    return true;
645  }
646
647  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementDataRequirementCodeFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
648    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
649    parseElementAttributes(xpp, res);
650    next(xpp);
651    int eventType = nextNoWhitespace(xpp);
652    while (eventType != XmlPullParser.END_TAG) {
653  if (!parseDataRequirementDataRequirementCodeFilterComponentContent(eventType, xpp, owner, res))
654        unknownContent(xpp);
655      eventType = nextNoWhitespace(xpp);
656    }
657    next(xpp);
658    parseElementClose(res);
659    return res;
660  }
661
662  protected boolean parseDataRequirementDataRequirementCodeFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementCodeFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
663      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
664        res.setPathElement(parseString(xpp));
665      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
666        res.setValueSet(parseType("valueSet", xpp));
667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
668        res.getCode().add(parseCoding(xpp));
669      } else if (!parseElementContent(eventType, xpp, res))
670        return false;
671    return true;
672  }
673
674  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDataRequirementDateFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
675    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
676    parseElementAttributes(xpp, res);
677    next(xpp);
678    int eventType = nextNoWhitespace(xpp);
679    while (eventType != XmlPullParser.END_TAG) {
680  if (!parseDataRequirementDataRequirementDateFilterComponentContent(eventType, xpp, owner, res))
681        unknownContent(xpp);
682      eventType = nextNoWhitespace(xpp);
683    }
684    next(xpp);
685    parseElementClose(res);
686    return res;
687  }
688
689  protected boolean parseDataRequirementDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
690      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
691        res.setPathElement(parseString(xpp));
692      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
693        res.setValue(parseType("value", xpp));
694      } else if (!parseElementContent(eventType, xpp, res))
695        return false;
696    return true;
697  }
698
699  protected DataRequirement.DataRequirementSortComponent parseDataRequirementDataRequirementSortComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
700    DataRequirement.DataRequirementSortComponent res = new DataRequirement.DataRequirementSortComponent();
701    parseElementAttributes(xpp, res);
702    next(xpp);
703    int eventType = nextNoWhitespace(xpp);
704    while (eventType != XmlPullParser.END_TAG) {
705  if (!parseDataRequirementDataRequirementSortComponentContent(eventType, xpp, owner, res))
706        unknownContent(xpp);
707      eventType = nextNoWhitespace(xpp);
708    }
709    next(xpp);
710    parseElementClose(res);
711    return res;
712  }
713
714  protected boolean parseDataRequirementDataRequirementSortComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementSortComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
715      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
716        res.setPathElement(parseString(xpp));
717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
718        res.setDirectionElement(parseEnumeration(xpp, DataRequirement.SortDirection.NULL, new DataRequirement.SortDirectionEnumFactory()));
719      } else if (!parseElementContent(eventType, xpp, res))
720        return false;
721    return true;
722  }
723
724  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
725    Dosage res = new Dosage();
726    parseTypeAttributes(xpp, res);
727    next(xpp);
728    int eventType = nextNoWhitespace(xpp);
729    while (eventType != XmlPullParser.END_TAG) {
730  if (!parseDosageContent(eventType, xpp, res))
731        unknownContent(xpp);
732      eventType = nextNoWhitespace(xpp);
733    }
734    next(xpp);
735    parseElementClose(res);
736    return res;
737  }
738
739  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
740      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
741        res.setSequenceElement(parseInteger(xpp));
742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
743        res.setTextElement(parseString(xpp));
744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
745        res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
747        res.setPatientInstructionElement(parseString(xpp));
748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
749        res.setTiming(parseTiming(xpp));
750      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
751        res.setAsNeeded(parseType("asNeeded", xpp));
752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
753        res.setSite(parseCodeableConcept(xpp));
754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
755        res.setRoute(parseCodeableConcept(xpp));
756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
757        res.setMethod(parseCodeableConcept(xpp));
758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseAndRate")) {
759        res.getDoseAndRate().add(parseDosageDosageDoseAndRateComponent(xpp, res));
760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
761        res.setMaxDosePerPeriod(parseRatio(xpp));
762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
763        res.setMaxDosePerAdministration(parseSimpleQuantity(xpp));
764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
765        res.setMaxDosePerLifetime(parseSimpleQuantity(xpp));
766      } else if (!parseBackboneElementContent(eventType, xpp, res))
767        return false;
768    return true;
769  }
770
771  protected Dosage.DosageDoseAndRateComponent parseDosageDosageDoseAndRateComponent(XmlPullParser xpp, Dosage owner) throws XmlPullParserException, IOException, FHIRFormatError {
772    Dosage.DosageDoseAndRateComponent res = new Dosage.DosageDoseAndRateComponent();
773    parseElementAttributes(xpp, res);
774    next(xpp);
775    int eventType = nextNoWhitespace(xpp);
776    while (eventType != XmlPullParser.END_TAG) {
777  if (!parseDosageDosageDoseAndRateComponentContent(eventType, xpp, owner, res))
778        unknownContent(xpp);
779      eventType = nextNoWhitespace(xpp);
780    }
781    next(xpp);
782    parseElementClose(res);
783    return res;
784  }
785
786  protected boolean parseDosageDosageDoseAndRateComponentContent(int eventType, XmlPullParser xpp, Dosage owner, Dosage.DosageDoseAndRateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
787      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
788        res.setType(parseCodeableConcept(xpp));
789      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
790        res.setDose(parseType("dose", xpp));
791      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
792        res.setRate(parseType("rate", xpp));
793      } else if (!parseElementContent(eventType, xpp, res))
794        return false;
795    return true;
796  }
797
798  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
799    Money res = new Money();
800    parseTypeAttributes(xpp, res);
801    next(xpp);
802    int eventType = nextNoWhitespace(xpp);
803    while (eventType != XmlPullParser.END_TAG) {
804  if (!parseMoneyContent(eventType, xpp, res))
805        unknownContent(xpp);
806      eventType = nextNoWhitespace(xpp);
807    }
808    next(xpp);
809    parseElementClose(res);
810    return res;
811  }
812
813  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
814      if (!parseQuantityContent(eventType, xpp, res))
815        return false;
816    return true;
817  }
818
819  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
820    HumanName res = new HumanName();
821    parseTypeAttributes(xpp, res);
822    next(xpp);
823    int eventType = nextNoWhitespace(xpp);
824    while (eventType != XmlPullParser.END_TAG) {
825  if (!parseHumanNameContent(eventType, xpp, res))
826        unknownContent(xpp);
827      eventType = nextNoWhitespace(xpp);
828    }
829    next(xpp);
830    parseElementClose(res);
831    return res;
832  }
833
834  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
835      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
836        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
838        res.setTextElement(parseString(xpp));
839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
840        res.setFamilyElement(parseString(xpp));
841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
842        res.getGiven().add(parseString(xpp));
843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
844        res.getPrefix().add(parseString(xpp));
845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
846        res.getSuffix().add(parseString(xpp));
847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
848        res.setPeriod(parsePeriod(xpp));
849      } else if (!parseElementContent(eventType, xpp, res))
850        return false;
851    return true;
852  }
853
854  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
855    ContactPoint res = new ContactPoint();
856    parseTypeAttributes(xpp, res);
857    next(xpp);
858    int eventType = nextNoWhitespace(xpp);
859    while (eventType != XmlPullParser.END_TAG) {
860  if (!parseContactPointContent(eventType, xpp, res))
861        unknownContent(xpp);
862      eventType = nextNoWhitespace(xpp);
863    }
864    next(xpp);
865    parseElementClose(res);
866    return res;
867  }
868
869  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
870      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
871        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
873        res.setValueElement(parseString(xpp));
874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
875        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
877        res.setRankElement(parsePositiveInt(xpp));
878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
879        res.setPeriod(parsePeriod(xpp));
880      } else if (!parseElementContent(eventType, xpp, res))
881        return false;
882    return true;
883  }
884
885  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
886    Identifier res = new Identifier();
887    parseTypeAttributes(xpp, res);
888    next(xpp);
889    int eventType = nextNoWhitespace(xpp);
890    while (eventType != XmlPullParser.END_TAG) {
891  if (!parseIdentifierContent(eventType, xpp, res))
892        unknownContent(xpp);
893      eventType = nextNoWhitespace(xpp);
894    }
895    next(xpp);
896    parseElementClose(res);
897    return res;
898  }
899
900  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
901      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
902        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
904        res.setType(parseCodeableConcept(xpp));
905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
906        res.setSystemElement(parseUri(xpp));
907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
908        res.setValueElement(parseString(xpp));
909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
910        res.setPeriod(parsePeriod(xpp));
911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
912        res.setAssigner(parseReference(xpp));
913      } else if (!parseElementContent(eventType, xpp, res))
914        return false;
915    return true;
916  }
917
918  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
919    Coding res = new Coding();
920    parseTypeAttributes(xpp, res);
921    next(xpp);
922    int eventType = nextNoWhitespace(xpp);
923    while (eventType != XmlPullParser.END_TAG) {
924  if (!parseCodingContent(eventType, xpp, res))
925        unknownContent(xpp);
926      eventType = nextNoWhitespace(xpp);
927    }
928    next(xpp);
929    parseElementClose(res);
930    return res;
931  }
932
933  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
934      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
935        res.setSystemElement(parseUri(xpp));
936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
937        res.setVersionElement(parseString(xpp));
938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
939        res.setCodeElement(parseCode(xpp));
940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
941        res.setDisplayElement(parseString(xpp));
942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
943        res.setUserSelectedElement(parseBoolean(xpp));
944      } else if (!parseElementContent(eventType, xpp, res))
945        return false;
946    return true;
947  }
948
949  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
950    SampledData res = new SampledData();
951    parseTypeAttributes(xpp, res);
952    next(xpp);
953    int eventType = nextNoWhitespace(xpp);
954    while (eventType != XmlPullParser.END_TAG) {
955  if (!parseSampledDataContent(eventType, xpp, res))
956        unknownContent(xpp);
957      eventType = nextNoWhitespace(xpp);
958    }
959    next(xpp);
960    parseElementClose(res);
961    return res;
962  }
963
964  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
965      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
966        res.setOrigin(parseSimpleQuantity(xpp));
967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
968        res.setPeriodElement(parseDecimal(xpp));
969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
970        res.setFactorElement(parseDecimal(xpp));
971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
972        res.setLowerLimitElement(parseDecimal(xpp));
973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
974        res.setUpperLimitElement(parseDecimal(xpp));
975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
976        res.setDimensionsElement(parsePositiveInt(xpp));
977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
978        res.setDataElement(parseString(xpp));
979      } else if (!parseElementContent(eventType, xpp, res))
980        return false;
981    return true;
982  }
983
984  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
985    Ratio res = new Ratio();
986    parseTypeAttributes(xpp, res);
987    next(xpp);
988    int eventType = nextNoWhitespace(xpp);
989    while (eventType != XmlPullParser.END_TAG) {
990  if (!parseRatioContent(eventType, xpp, res))
991        unknownContent(xpp);
992      eventType = nextNoWhitespace(xpp);
993    }
994    next(xpp);
995    parseElementClose(res);
996    return res;
997  }
998
999  protected boolean parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
1000      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
1001        res.setNumerator(parseQuantity(xpp));
1002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
1003        res.setDenominator(parseQuantity(xpp));
1004      } else if (!parseElementContent(eventType, xpp, res))
1005        return false;
1006    return true;
1007  }
1008
1009  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1010    Distance res = new Distance();
1011    parseTypeAttributes(xpp, res);
1012    next(xpp);
1013    int eventType = nextNoWhitespace(xpp);
1014    while (eventType != XmlPullParser.END_TAG) {
1015  if (!parseDistanceContent(eventType, xpp, res))
1016        unknownContent(xpp);
1017      eventType = nextNoWhitespace(xpp);
1018    }
1019    next(xpp);
1020    parseElementClose(res);
1021    return res;
1022  }
1023
1024  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
1025      if (!parseQuantityContent(eventType, xpp, res))
1026        return false;
1027    return true;
1028  }
1029
1030  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1031    Age res = new Age();
1032    parseTypeAttributes(xpp, res);
1033    next(xpp);
1034    int eventType = nextNoWhitespace(xpp);
1035    while (eventType != XmlPullParser.END_TAG) {
1036  if (!parseAgeContent(eventType, xpp, res))
1037        unknownContent(xpp);
1038      eventType = nextNoWhitespace(xpp);
1039    }
1040    next(xpp);
1041    parseElementClose(res);
1042    return res;
1043  }
1044
1045  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
1046      if (!parseQuantityContent(eventType, xpp, res))
1047        return false;
1048    return true;
1049  }
1050
1051  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1052    Reference res = new Reference();
1053    parseTypeAttributes(xpp, res);
1054    next(xpp);
1055    int eventType = nextNoWhitespace(xpp);
1056    while (eventType != XmlPullParser.END_TAG) {
1057  if (!parseReferenceContent(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 parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
1067      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1068        res.setReferenceElement(parseString(xpp));
1069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1070        res.setTypeElement(parseUri(xpp));
1071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1072        res.setIdentifier(parseIdentifier(xpp));
1073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1074        res.setDisplayElement(parseString(xpp));
1075      } else if (!parseElementContent(eventType, xpp, res))
1076        return false;
1077    return true;
1078  }
1079
1080  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1081    TriggerDefinition res = new TriggerDefinition();
1082    parseTypeAttributes(xpp, res);
1083    next(xpp);
1084    int eventType = nextNoWhitespace(xpp);
1085    while (eventType != XmlPullParser.END_TAG) {
1086  if (!parseTriggerDefinitionContent(eventType, xpp, res))
1087        unknownContent(xpp);
1088      eventType = nextNoWhitespace(xpp);
1089    }
1090    next(xpp);
1091    parseElementClose(res);
1092    return res;
1093  }
1094
1095  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1096      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1097        res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
1098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1099        res.setNameElement(parseString(xpp));
1100      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
1101        res.setTiming(parseType("timing", xpp));
1102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1103        res.setData(parseDataRequirement(xpp));
1104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1105        res.setCondition(parseTriggerDefinitionTriggerDefinitionConditionComponent(xpp, res));
1106      } else if (!parseElementContent(eventType, xpp, res))
1107        return false;
1108    return true;
1109  }
1110
1111  protected TriggerDefinition.TriggerDefinitionConditionComponent parseTriggerDefinitionTriggerDefinitionConditionComponent(XmlPullParser xpp, TriggerDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1112    TriggerDefinition.TriggerDefinitionConditionComponent res = new TriggerDefinition.TriggerDefinitionConditionComponent();
1113    parseElementAttributes(xpp, res);
1114    next(xpp);
1115    int eventType = nextNoWhitespace(xpp);
1116    while (eventType != XmlPullParser.END_TAG) {
1117  if (!parseTriggerDefinitionTriggerDefinitionConditionComponentContent(eventType, xpp, owner, res))
1118        unknownContent(xpp);
1119      eventType = nextNoWhitespace(xpp);
1120    }
1121    next(xpp);
1122    parseElementClose(res);
1123    return res;
1124  }
1125
1126  protected boolean parseTriggerDefinitionTriggerDefinitionConditionComponentContent(int eventType, XmlPullParser xpp, TriggerDefinition owner, TriggerDefinition.TriggerDefinitionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1127      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1128        res.setDescriptionElement(parseString(xpp));
1129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1130        res.setLanguageElement(parseEnumeration(xpp, TriggerDefinition.ExpressionLanguage.NULL, new TriggerDefinition.ExpressionLanguageEnumFactory()));
1131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1132        res.setExpressionElement(parseString(xpp));
1133      } else if (!parseElementContent(eventType, xpp, res))
1134        return false;
1135    return true;
1136  }
1137
1138  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1139    Quantity res = new Quantity();
1140    parseTypeAttributes(xpp, res);
1141    next(xpp);
1142    int eventType = nextNoWhitespace(xpp);
1143    while (eventType != XmlPullParser.END_TAG) {
1144  if (!parseQuantityContent(eventType, xpp, res))
1145        unknownContent(xpp);
1146      eventType = nextNoWhitespace(xpp);
1147    }
1148    next(xpp);
1149    parseElementClose(res);
1150    return res;
1151  }
1152
1153  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
1154      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1155        res.setValueElement(parseDecimal(xpp));
1156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
1157        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
1158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
1159        res.setUnitElement(parseString(xpp));
1160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1161        res.setSystemElement(parseUri(xpp));
1162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1163        res.setCodeElement(parseCode(xpp));
1164      } else if (!parseElementContent(eventType, xpp, res))
1165        return false;
1166    return true;
1167  }
1168
1169  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1170    Period res = new Period();
1171    parseTypeAttributes(xpp, res);
1172    next(xpp);
1173    int eventType = nextNoWhitespace(xpp);
1174    while (eventType != XmlPullParser.END_TAG) {
1175  if (!parsePeriodContent(eventType, xpp, res))
1176        unknownContent(xpp);
1177      eventType = nextNoWhitespace(xpp);
1178    }
1179    next(xpp);
1180    parseElementClose(res);
1181    return res;
1182  }
1183
1184  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
1185      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1186        res.setStartElement(parseDateTime(xpp));
1187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1188        res.setEndElement(parseDateTime(xpp));
1189      } else if (!parseElementContent(eventType, xpp, res))
1190        return false;
1191    return true;
1192  }
1193
1194  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1195    Duration res = new Duration();
1196    parseTypeAttributes(xpp, res);
1197    next(xpp);
1198    int eventType = nextNoWhitespace(xpp);
1199    while (eventType != XmlPullParser.END_TAG) {
1200  if (!parseDurationContent(eventType, xpp, res))
1201        unknownContent(xpp);
1202      eventType = nextNoWhitespace(xpp);
1203    }
1204    next(xpp);
1205    parseElementClose(res);
1206    return res;
1207  }
1208
1209  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
1210      if (!parseQuantityContent(eventType, xpp, res))
1211        return false;
1212    return true;
1213  }
1214
1215  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1216    Range res = new Range();
1217    parseTypeAttributes(xpp, res);
1218    next(xpp);
1219    int eventType = nextNoWhitespace(xpp);
1220    while (eventType != XmlPullParser.END_TAG) {
1221  if (!parseRangeContent(eventType, xpp, res))
1222        unknownContent(xpp);
1223      eventType = nextNoWhitespace(xpp);
1224    }
1225    next(xpp);
1226    parseElementClose(res);
1227    return res;
1228  }
1229
1230  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
1231      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
1232        res.setLow(parseSimpleQuantity(xpp));
1233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
1234        res.setHigh(parseSimpleQuantity(xpp));
1235      } else if (!parseElementContent(eventType, xpp, res))
1236        return false;
1237    return true;
1238  }
1239
1240  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1241    RelatedArtifact res = new RelatedArtifact();
1242    parseTypeAttributes(xpp, res);
1243    next(xpp);
1244    int eventType = nextNoWhitespace(xpp);
1245    while (eventType != XmlPullParser.END_TAG) {
1246  if (!parseRelatedArtifactContent(eventType, xpp, res))
1247        unknownContent(xpp);
1248      eventType = nextNoWhitespace(xpp);
1249    }
1250    next(xpp);
1251    parseElementClose(res);
1252    return res;
1253  }
1254
1255  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
1256      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1257        res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
1258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1259        res.setDisplayElement(parseString(xpp));
1260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
1261        res.setCitationElement(parseString(xpp));
1262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1263        res.setUrlElement(parseUrl(xpp));
1264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1265        res.setDocument(parseAttachment(xpp));
1266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1267        res.setResourceElement(parseCanonical(xpp));
1268      } else if (!parseElementContent(eventType, xpp, res))
1269        return false;
1270    return true;
1271  }
1272
1273  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1274    Annotation res = new Annotation();
1275    parseTypeAttributes(xpp, res);
1276    next(xpp);
1277    int eventType = nextNoWhitespace(xpp);
1278    while (eventType != XmlPullParser.END_TAG) {
1279  if (!parseAnnotationContent(eventType, xpp, res))
1280        unknownContent(xpp);
1281      eventType = nextNoWhitespace(xpp);
1282    }
1283    next(xpp);
1284    parseElementClose(res);
1285    return res;
1286  }
1287
1288  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
1289      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
1290        res.setAuthor(parseType("author", xpp));
1291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
1292        res.setTimeElement(parseDateTime(xpp));
1293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1294        res.setTextElement(parseString(xpp));
1295      } else if (!parseElementContent(eventType, xpp, res))
1296        return false;
1297    return true;
1298  }
1299
1300  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1301    ContactDetail res = new ContactDetail();
1302    parseTypeAttributes(xpp, res);
1303    next(xpp);
1304    int eventType = nextNoWhitespace(xpp);
1305    while (eventType != XmlPullParser.END_TAG) {
1306  if (!parseContactDetailContent(eventType, xpp, res))
1307        unknownContent(xpp);
1308      eventType = nextNoWhitespace(xpp);
1309    }
1310    next(xpp);
1311    parseElementClose(res);
1312    return res;
1313  }
1314
1315  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
1316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1317        res.setNameElement(parseString(xpp));
1318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1319        res.getTelecom().add(parseContactPoint(xpp));
1320      } else if (!parseElementContent(eventType, xpp, res))
1321        return false;
1322    return true;
1323  }
1324
1325  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1326    UsageContext res = new UsageContext();
1327    parseTypeAttributes(xpp, res);
1328    next(xpp);
1329    int eventType = nextNoWhitespace(xpp);
1330    while (eventType != XmlPullParser.END_TAG) {
1331  if (!parseUsageContextContent(eventType, xpp, res))
1332        unknownContent(xpp);
1333      eventType = nextNoWhitespace(xpp);
1334    }
1335    next(xpp);
1336    parseElementClose(res);
1337    return res;
1338  }
1339
1340  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
1341      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1342        res.setCode(parseCoding(xpp));
1343      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1344        res.setValue(parseType("value", xpp));
1345      } else if (!parseElementContent(eventType, xpp, res))
1346        return false;
1347    return true;
1348  }
1349
1350  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1351    Signature res = new Signature();
1352    parseTypeAttributes(xpp, res);
1353    next(xpp);
1354    int eventType = nextNoWhitespace(xpp);
1355    while (eventType != XmlPullParser.END_TAG) {
1356  if (!parseSignatureContent(eventType, xpp, res))
1357        unknownContent(xpp);
1358      eventType = nextNoWhitespace(xpp);
1359    }
1360    next(xpp);
1361    parseElementClose(res);
1362    return res;
1363  }
1364
1365  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
1366      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1367        res.getType().add(parseCoding(xpp));
1368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1369        res.setWhenElement(parseInstant(xpp));
1370      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
1371        res.setWho(parseType("who", xpp));
1372      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onBehalfOf")) {
1373        res.setOnBehalfOf(parseType("onBehalfOf", xpp));
1374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetFormat")) {
1375        res.setTargetFormatElement(parseCode(xpp));
1376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sigFormat")) {
1377        res.setSigFormatElement(parseCode(xpp));
1378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
1379        res.setBlobElement(parseBase64Binary(xpp));
1380      } else if (!parseElementContent(eventType, xpp, res))
1381        return false;
1382    return true;
1383  }
1384
1385  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1386    Timing res = new Timing();
1387    parseTypeAttributes(xpp, res);
1388    next(xpp);
1389    int eventType = nextNoWhitespace(xpp);
1390    while (eventType != XmlPullParser.END_TAG) {
1391  if (!parseTimingContent(eventType, xpp, res))
1392        unknownContent(xpp);
1393      eventType = nextNoWhitespace(xpp);
1394    }
1395    next(xpp);
1396    parseElementClose(res);
1397    return res;
1398  }
1399
1400  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
1401      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1402        res.getEvent().add(parseDateTime(xpp));
1403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1404        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
1405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1406        res.setCode(parseCodeableConcept(xpp));
1407      } else if (!parseBackboneElementContent(eventType, xpp, res))
1408        return false;
1409    return true;
1410  }
1411
1412  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
1413    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1414    parseElementAttributes(xpp, res);
1415    next(xpp);
1416    int eventType = nextNoWhitespace(xpp);
1417    while (eventType != XmlPullParser.END_TAG) {
1418  if (!parseTimingTimingRepeatComponentContent(eventType, xpp, owner, res))
1419        unknownContent(xpp);
1420      eventType = nextNoWhitespace(xpp);
1421    }
1422    next(xpp);
1423    parseElementClose(res);
1424    return res;
1425  }
1426
1427  protected boolean parseTimingTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing owner, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1428      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1429        res.setBounds(parseType("bounds", xpp));
1430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1431        res.setCountElement(parseInteger(xpp));
1432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
1433        res.setCountMaxElement(parseInteger(xpp));
1434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
1435        res.setDurationElement(parseDecimal(xpp));
1436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
1437        res.setDurationMaxElement(parseDecimal(xpp));
1438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
1439        res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
1441        res.setFrequencyElement(parseInteger(xpp));
1442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
1443        res.setFrequencyMaxElement(parseInteger(xpp));
1444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1445        res.setPeriodElement(parseDecimal(xpp));
1446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
1447        res.setPeriodMaxElement(parseDecimal(xpp));
1448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
1449        res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
1451        res.getDayOfWeek().add(parseEnumeration(xpp, Timing.DayOfWeek.NULL, new Timing.DayOfWeekEnumFactory()));
1452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
1453        res.getTimeOfDay().add(parseTime(xpp));
1454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1455        res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
1456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
1457        res.setOffsetElement(parseUnsignedInt(xpp));
1458      } else if (!parseElementContent(eventType, xpp, res))
1459        return false;
1460    return true;
1461  }
1462
1463  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1464    CodeableConcept res = new CodeableConcept();
1465    parseTypeAttributes(xpp, res);
1466    next(xpp);
1467    int eventType = nextNoWhitespace(xpp);
1468    while (eventType != XmlPullParser.END_TAG) {
1469  if (!parseCodeableConceptContent(eventType, xpp, res))
1470        unknownContent(xpp);
1471      eventType = nextNoWhitespace(xpp);
1472    }
1473    next(xpp);
1474    parseElementClose(res);
1475    return res;
1476  }
1477
1478  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
1479      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
1480        res.getCoding().add(parseCoding(xpp));
1481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1482        res.setTextElement(parseString(xpp));
1483      } else if (!parseElementContent(eventType, xpp, res))
1484        return false;
1485    return true;
1486  }
1487
1488  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1489    ParameterDefinition res = new ParameterDefinition();
1490    parseTypeAttributes(xpp, res);
1491    next(xpp);
1492    int eventType = nextNoWhitespace(xpp);
1493    while (eventType != XmlPullParser.END_TAG) {
1494  if (!parseParameterDefinitionContent(eventType, xpp, res))
1495        unknownContent(xpp);
1496      eventType = nextNoWhitespace(xpp);
1497    }
1498    next(xpp);
1499    parseElementClose(res);
1500    return res;
1501  }
1502
1503  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1504      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1505        res.setNameElement(parseCode(xpp));
1506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1507        res.setUseElement(parseEnumeration(xpp, ParameterDefinition.ParameterUse.NULL, new ParameterDefinition.ParameterUseEnumFactory()));
1508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1509        res.setMinElement(parseInteger(xpp));
1510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1511        res.setMaxElement(parseString(xpp));
1512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1513        res.setDocumentationElement(parseString(xpp));
1514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1515        res.setTypeElement(parseCode(xpp));
1516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1517        res.setProfileElement(parseCanonical(xpp));
1518      } else if (!parseElementContent(eventType, xpp, res))
1519        return false;
1520    return true;
1521  }
1522
1523  protected SimpleQuantity parseSimpleQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1524    SimpleQuantity res = new SimpleQuantity();
1525    parseElementAttributes(xpp, res);
1526    next(xpp);
1527    int eventType = nextNoWhitespace(xpp);
1528    while (eventType != XmlPullParser.END_TAG) {
1529  if (!parseSimpleQuantityContent(eventType, xpp, res))
1530        unknownContent(xpp);
1531      eventType = nextNoWhitespace(xpp);
1532    }
1533    next(xpp);
1534    parseElementClose(res);
1535    return res;
1536  }
1537
1538  protected boolean parseSimpleQuantityContent(int eventType, XmlPullParser xpp, SimpleQuantity res) throws XmlPullParserException, IOException, FHIRFormatError {
1539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1540        res.setValueElement(parseDecimal(xpp));
1541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
1542        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
1543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
1544        res.setUnitElement(parseString(xpp));
1545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1546        res.setSystemElement(parseUri(xpp));
1547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1548        res.setCodeElement(parseCode(xpp));
1549      } else if (!parseElementContent(eventType, xpp, res))
1550        return false;
1551    return true;
1552  }
1553
1554  protected MarketingStatus parseMarketingStatus(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1555    MarketingStatus res = new MarketingStatus();
1556    parseElementAttributes(xpp, res);
1557    next(xpp);
1558    int eventType = nextNoWhitespace(xpp);
1559    while (eventType != XmlPullParser.END_TAG) {
1560  if (!parseMarketingStatusContent(eventType, xpp, res))
1561        unknownContent(xpp);
1562      eventType = nextNoWhitespace(xpp);
1563    }
1564    next(xpp);
1565    parseElementClose(res);
1566    return res;
1567  }
1568
1569  protected boolean parseMarketingStatusContent(int eventType, XmlPullParser xpp, MarketingStatus res) throws XmlPullParserException, IOException, FHIRFormatError {
1570      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
1571        res.setCountry(parseCodeableConcept(xpp));
1572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
1573        res.setJurisdiction(parseCodeableConcept(xpp));
1574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1575        res.setStatus(parseCodeableConcept(xpp));
1576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRange")) {
1577        res.setDateRange(parsePeriod(xpp));
1578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
1579        res.setRestoreDateElement(parseDateTime(xpp));
1580      } else if (!parseBackboneElementContent(eventType, xpp, res))
1581        return false;
1582    return true;
1583  }
1584
1585  protected SubstanceAmount parseSubstanceAmount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1586    SubstanceAmount res = new SubstanceAmount();
1587    parseElementAttributes(xpp, res);
1588    next(xpp);
1589    int eventType = nextNoWhitespace(xpp);
1590    while (eventType != XmlPullParser.END_TAG) {
1591  if (!parseSubstanceAmountContent(eventType, xpp, res))
1592        unknownContent(xpp);
1593      eventType = nextNoWhitespace(xpp);
1594    }
1595    next(xpp);
1596    parseElementClose(res);
1597    return res;
1598  }
1599
1600  protected boolean parseSubstanceAmountContent(int eventType, XmlPullParser xpp, SubstanceAmount res) throws XmlPullParserException, IOException, FHIRFormatError {
1601      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
1602        res.setAmount(parseType("amount", xpp));
1603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
1604        res.setAmountType(parseCodeableConcept(xpp));
1605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountText")) {
1606        res.setAmountTextElement(parseString(xpp));
1607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
1608        res.setReferenceRange(parseSubstanceAmountSubstanceAmountReferenceRangeComponent(xpp, res));
1609      } else if (!parseBackboneElementContent(eventType, xpp, res))
1610        return false;
1611    return true;
1612  }
1613
1614  protected SubstanceAmount.SubstanceAmountReferenceRangeComponent parseSubstanceAmountSubstanceAmountReferenceRangeComponent(XmlPullParser xpp, SubstanceAmount owner) throws XmlPullParserException, IOException, FHIRFormatError {
1615    SubstanceAmount.SubstanceAmountReferenceRangeComponent res = new SubstanceAmount.SubstanceAmountReferenceRangeComponent();
1616    parseElementAttributes(xpp, res);
1617    next(xpp);
1618    int eventType = nextNoWhitespace(xpp);
1619    while (eventType != XmlPullParser.END_TAG) {
1620  if (!parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(eventType, xpp, owner, res))
1621        unknownContent(xpp);
1622      eventType = nextNoWhitespace(xpp);
1623    }
1624    next(xpp);
1625    parseElementClose(res);
1626    return res;
1627  }
1628
1629  protected boolean parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(int eventType, XmlPullParser xpp, SubstanceAmount owner, SubstanceAmount.SubstanceAmountReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1630      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowLimit")) {
1631        res.setLowLimit(parseQuantity(xpp));
1632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("highLimit")) {
1633        res.setHighLimit(parseQuantity(xpp));
1634      } else if (!parseElementContent(eventType, xpp, res))
1635        return false;
1636    return true;
1637  }
1638
1639  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1640    ElementDefinition res = new ElementDefinition();
1641    parseElementAttributes(xpp, res);
1642    next(xpp);
1643    int eventType = nextNoWhitespace(xpp);
1644    while (eventType != XmlPullParser.END_TAG) {
1645  if (!parseElementDefinitionContent(eventType, xpp, res))
1646        unknownContent(xpp);
1647      eventType = nextNoWhitespace(xpp);
1648    }
1649    next(xpp);
1650    parseElementClose(res);
1651    return res;
1652  }
1653
1654  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1655      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1656        res.setPathElement(parseString(xpp));
1657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1658        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
1660        res.setSliceNameElement(parseString(xpp));
1661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1662        res.setLabelElement(parseString(xpp));
1663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1664        res.getCode().add(parseCoding(xpp));
1665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1666        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1668        res.setShortElement(parseString(xpp));
1669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1670        res.setDefinitionElement(parseMarkdown(xpp));
1671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1672        res.setCommentElement(parseMarkdown(xpp));
1673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1674        res.setRequirementsElement(parseMarkdown(xpp));
1675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1676        res.getAlias().add(parseString(xpp));
1677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1678        res.setMinElement(parseUnsignedInt(xpp));
1679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1680        res.setMaxElement(parseString(xpp));
1681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1682        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1684        res.setContentReferenceElement(parseUri(xpp));
1685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1686        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1687      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1688        res.setDefaultValue(parseType("defaultValue", xpp));
1689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1690        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1692        res.setOrderMeaningElement(parseString(xpp));
1693      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1694        res.setFixed(parseType("fixed", xpp));
1695      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1696        res.setPattern(parseType("pattern", xpp));
1697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1698        res.getExample().add(parseElementDefinitionElementDefinitionExampleComponent(xpp, res));
1699      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1700        res.setMinValue(parseType("minValue", xpp));
1701      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1702        res.setMaxValue(parseType("maxValue", xpp));
1703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1704        res.setMaxLengthElement(parseInteger(xpp));
1705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1706        res.getCondition().add(parseId(xpp));
1707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1708        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1710        res.setMustSupportElement(parseBoolean(xpp));
1711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1712        res.setIsModifierElement(parseBoolean(xpp));
1713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifierReason")) {
1714        res.setIsModifierReasonElement(parseString(xpp));
1715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1716        res.setIsSummaryElement(parseBoolean(xpp));
1717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1718        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1720        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1721      } else if (!parseBackboneElementContent(eventType, xpp, res))
1722        return false;
1723    return true;
1724  }
1725
1726  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1727    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1728    parseElementAttributes(xpp, res);
1729    next(xpp);
1730    int eventType = nextNoWhitespace(xpp);
1731    while (eventType != XmlPullParser.END_TAG) {
1732  if (!parseElementDefinitionElementDefinitionSlicingComponentContent(eventType, xpp, owner, res))
1733        unknownContent(xpp);
1734      eventType = nextNoWhitespace(xpp);
1735    }
1736    next(xpp);
1737    parseElementClose(res);
1738    return res;
1739  }
1740
1741  protected boolean parseElementDefinitionElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1742      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1743        res.getDiscriminator().add(parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(xpp, owner));
1744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1745        res.setDescriptionElement(parseString(xpp));
1746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1747        res.setOrderedElement(parseBoolean(xpp));
1748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1749        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1750      } else if (!parseElementContent(eventType, xpp, res))
1751        return false;
1752    return true;
1753  }
1754
1755  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1756    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1757    parseElementAttributes(xpp, res);
1758    next(xpp);
1759    int eventType = nextNoWhitespace(xpp);
1760    while (eventType != XmlPullParser.END_TAG) {
1761  if (!parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(eventType, xpp, owner, res))
1762        unknownContent(xpp);
1763      eventType = nextNoWhitespace(xpp);
1764    }
1765    next(xpp);
1766    parseElementClose(res);
1767    return res;
1768  }
1769
1770  protected boolean parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1771      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1772        res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1774        res.setPathElement(parseString(xpp));
1775      } else if (!parseElementContent(eventType, xpp, res))
1776        return false;
1777    return true;
1778  }
1779
1780  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1781    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1782    parseElementAttributes(xpp, res);
1783    next(xpp);
1784    int eventType = nextNoWhitespace(xpp);
1785    while (eventType != XmlPullParser.END_TAG) {
1786  if (!parseElementDefinitionElementDefinitionBaseComponentContent(eventType, xpp, owner, res))
1787        unknownContent(xpp);
1788      eventType = nextNoWhitespace(xpp);
1789    }
1790    next(xpp);
1791    parseElementClose(res);
1792    return res;
1793  }
1794
1795  protected boolean parseElementDefinitionElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1797        res.setPathElement(parseString(xpp));
1798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1799        res.setMinElement(parseUnsignedInt(xpp));
1800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1801        res.setMaxElement(parseString(xpp));
1802      } else if (!parseElementContent(eventType, xpp, res))
1803        return false;
1804    return true;
1805  }
1806
1807  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1808    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1809    parseElementAttributes(xpp, res);
1810    next(xpp);
1811    int eventType = nextNoWhitespace(xpp);
1812    while (eventType != XmlPullParser.END_TAG) {
1813  if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, owner, res))
1814        unknownContent(xpp);
1815      eventType = nextNoWhitespace(xpp);
1816    }
1817    next(xpp);
1818    parseElementClose(res);
1819    return res;
1820  }
1821
1822  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1823      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1824        res.setCodeElement(parseUri(xpp));
1825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1826        res.getProfile().add(parseCanonical(xpp));
1827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1828        res.getTargetProfile().add(parseCanonical(xpp));
1829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1830        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1832        res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1833      } else if (!parseElementContent(eventType, xpp, res))
1834        return false;
1835    return true;
1836  }
1837
1838  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionElementDefinitionExampleComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1839    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1840    parseElementAttributes(xpp, res);
1841    next(xpp);
1842    int eventType = nextNoWhitespace(xpp);
1843    while (eventType != XmlPullParser.END_TAG) {
1844  if (!parseElementDefinitionElementDefinitionExampleComponentContent(eventType, xpp, owner, res))
1845        unknownContent(xpp);
1846      eventType = nextNoWhitespace(xpp);
1847    }
1848    next(xpp);
1849    parseElementClose(res);
1850    return res;
1851  }
1852
1853  protected boolean parseElementDefinitionElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1854      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1855        res.setLabelElement(parseString(xpp));
1856      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1857        res.setValue(parseType("value", xpp));
1858      } else if (!parseElementContent(eventType, xpp, res))
1859        return false;
1860    return true;
1861  }
1862
1863  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1864    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1865    parseElementAttributes(xpp, res);
1866    next(xpp);
1867    int eventType = nextNoWhitespace(xpp);
1868    while (eventType != XmlPullParser.END_TAG) {
1869  if (!parseElementDefinitionElementDefinitionConstraintComponentContent(eventType, xpp, owner, res))
1870        unknownContent(xpp);
1871      eventType = nextNoWhitespace(xpp);
1872    }
1873    next(xpp);
1874    parseElementClose(res);
1875    return res;
1876  }
1877
1878  protected boolean parseElementDefinitionElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1879      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1880        res.setKeyElement(parseId(xpp));
1881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1882        res.setRequirementsElement(parseString(xpp));
1883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1884        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1886        res.setHumanElement(parseString(xpp));
1887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1888        res.setExpressionElement(parseString(xpp));
1889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1890        res.setXpathElement(parseString(xpp));
1891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1892        res.setSourceElement(parseCanonical(xpp));
1893      } else if (!parseElementContent(eventType, xpp, res))
1894        return false;
1895    return true;
1896  }
1897
1898  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1899    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1900    parseElementAttributes(xpp, res);
1901    next(xpp);
1902    int eventType = nextNoWhitespace(xpp);
1903    while (eventType != XmlPullParser.END_TAG) {
1904  if (!parseElementDefinitionElementDefinitionBindingComponentContent(eventType, xpp, owner, res))
1905        unknownContent(xpp);
1906      eventType = nextNoWhitespace(xpp);
1907    }
1908    next(xpp);
1909    parseElementClose(res);
1910    return res;
1911  }
1912
1913  protected boolean parseElementDefinitionElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1914      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1915        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1917        res.setDescriptionElement(parseString(xpp));
1918      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1919        res.setValueSet(parseType("valueSet", xpp));
1920      } else if (!parseElementContent(eventType, xpp, res))
1921        return false;
1922    return true;
1923  }
1924
1925  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1926    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1927    parseElementAttributes(xpp, res);
1928    next(xpp);
1929    int eventType = nextNoWhitespace(xpp);
1930    while (eventType != XmlPullParser.END_TAG) {
1931  if (!parseElementDefinitionElementDefinitionMappingComponentContent(eventType, xpp, owner, res))
1932        unknownContent(xpp);
1933      eventType = nextNoWhitespace(xpp);
1934    }
1935    next(xpp);
1936    parseElementClose(res);
1937    return res;
1938  }
1939
1940  protected boolean parseElementDefinitionElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1941      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1942        res.setIdentityElement(parseId(xpp));
1943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1944        res.setLanguageElement(parseCode(xpp));
1945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1946        res.setMapElement(parseString(xpp));
1947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1948        res.setCommentElement(parseString(xpp));
1949      } else if (!parseElementContent(eventType, xpp, res))
1950        return false;
1951    return true;
1952  }
1953
1954  protected SubstanceMoiety parseSubstanceMoiety(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1955    SubstanceMoiety res = new SubstanceMoiety();
1956    parseElementAttributes(xpp, res);
1957    next(xpp);
1958    int eventType = nextNoWhitespace(xpp);
1959    while (eventType != XmlPullParser.END_TAG) {
1960  if (!parseSubstanceMoietyContent(eventType, xpp, res))
1961        unknownContent(xpp);
1962      eventType = nextNoWhitespace(xpp);
1963    }
1964    next(xpp);
1965    parseElementClose(res);
1966    return res;
1967  }
1968
1969  protected boolean parseSubstanceMoietyContent(int eventType, XmlPullParser xpp, SubstanceMoiety res) throws XmlPullParserException, IOException, FHIRFormatError {
1970      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
1971        res.setRole(parseCodeableConcept(xpp));
1972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1973        res.setIdentifier(parseIdentifier(xpp));
1974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1975        res.setNameElement(parseString(xpp));
1976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
1977        res.setStereochemistry(parseCodeableConcept(xpp));
1978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
1979        res.setOpticalActivity(parseCodeableConcept(xpp));
1980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
1981        res.setMolecularFormulaElement(parseString(xpp));
1982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
1983        res.setAmount(parseSubstanceAmount(xpp));
1984      } else if (!parseBackboneElementContent(eventType, xpp, res))
1985        return false;
1986    return true;
1987  }
1988
1989  protected ProductShelfLife parseProductShelfLife(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1990    ProductShelfLife res = new ProductShelfLife();
1991    parseElementAttributes(xpp, res);
1992    next(xpp);
1993    int eventType = nextNoWhitespace(xpp);
1994    while (eventType != XmlPullParser.END_TAG) {
1995  if (!parseProductShelfLifeContent(eventType, xpp, res))
1996        unknownContent(xpp);
1997      eventType = nextNoWhitespace(xpp);
1998    }
1999    next(xpp);
2000    parseElementClose(res);
2001    return res;
2002  }
2003
2004  protected boolean parseProductShelfLifeContent(int eventType, XmlPullParser xpp, ProductShelfLife res) throws XmlPullParserException, IOException, FHIRFormatError {
2005      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2006        res.setIdentifier(parseIdentifier(xpp));
2007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2008        res.setType(parseCodeableConcept(xpp));
2009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2010        res.setPeriod(parseQuantity(xpp));
2011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialPrecautionsForStorage")) {
2012        res.getSpecialPrecautionsForStorage().add(parseCodeableConcept(xpp));
2013      } else if (!parseBackboneElementContent(eventType, xpp, res))
2014        return false;
2015    return true;
2016  }
2017
2018  protected ProdCharacteristic parseProdCharacteristic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2019    ProdCharacteristic res = new ProdCharacteristic();
2020    parseElementAttributes(xpp, res);
2021    next(xpp);
2022    int eventType = nextNoWhitespace(xpp);
2023    while (eventType != XmlPullParser.END_TAG) {
2024  if (!parseProdCharacteristicContent(eventType, xpp, res))
2025        unknownContent(xpp);
2026      eventType = nextNoWhitespace(xpp);
2027    }
2028    next(xpp);
2029    parseElementClose(res);
2030    return res;
2031  }
2032
2033  protected boolean parseProdCharacteristicContent(int eventType, XmlPullParser xpp, ProdCharacteristic res) throws XmlPullParserException, IOException, FHIRFormatError {
2034      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
2035        res.setHeight(parseQuantity(xpp));
2036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
2037        res.setWidth(parseQuantity(xpp));
2038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("depth")) {
2039        res.setDepth(parseQuantity(xpp));
2040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("weight")) {
2041        res.setWeight(parseQuantity(xpp));
2042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nominalVolume")) {
2043        res.setNominalVolume(parseQuantity(xpp));
2044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("externalDiameter")) {
2045        res.setExternalDiameter(parseQuantity(xpp));
2046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shape")) {
2047        res.setShapeElement(parseString(xpp));
2048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
2049        res.getColor().add(parseString(xpp));
2050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imprint")) {
2051        res.getImprint().add(parseString(xpp));
2052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
2053        res.getImage().add(parseAttachment(xpp));
2054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
2055        res.setScoring(parseCodeableConcept(xpp));
2056      } else if (!parseBackboneElementContent(eventType, xpp, res))
2057        return false;
2058    return true;
2059  }
2060
2061  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2062    parseResourceAttributes(xpp, res);
2063  }
2064
2065  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2066      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
2067        res.setText(parseNarrative(xpp));
2068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
2069        res.getContained().add(parseResourceContained(xpp));
2070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
2071        res.getExtension().add(parseExtension(xpp));
2072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
2073        res.getModifierExtension().add(parseExtension(xpp));
2074    } else
2075    return parseResourceContent(eventType, xpp, res);
2076    return true;
2077  }
2078
2079  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2080    Parameters res = new Parameters();
2081    parseResourceAttributes(xpp, res);
2082    next(xpp);
2083    int eventType = nextNoWhitespace(xpp);
2084    while (eventType != XmlPullParser.END_TAG) {
2085  if (!parseParametersContent(eventType, xpp, res))
2086        unknownContent(xpp);
2087      eventType = nextNoWhitespace(xpp);
2088    }
2089    next(xpp);
2090    parseElementClose(res);
2091    return res;
2092  }
2093
2094  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
2095      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
2096        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
2097      } else if (!parseResourceContent(eventType, xpp, res))
2098        return false;
2099    return true;
2100  }
2101
2102  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
2103    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
2104    parseBackboneAttributes(xpp, res);
2105    next(xpp);
2106    int eventType = nextNoWhitespace(xpp);
2107    while (eventType != XmlPullParser.END_TAG) {
2108  if (!parseParametersParametersParameterComponentContent(eventType, xpp, owner, res))
2109        unknownContent(xpp);
2110      eventType = nextNoWhitespace(xpp);
2111    }
2112    next(xpp);
2113    parseElementClose(res);
2114    return res;
2115  }
2116
2117  protected boolean parseParametersParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters owner, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2118      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2119        res.setNameElement(parseString(xpp));
2120      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2121        res.setValue(parseType("value", xpp));
2122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2123        res.setResource(parseResourceContained(xpp));
2124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
2125        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
2126      } else if (!parseBackboneElementContent(eventType, xpp, res))
2127        return false;
2128    return true;
2129  }
2130
2131  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2132    if (!comments.isEmpty()) {
2133      res.getFormatCommentsPre().addAll(comments);
2134      comments.clear();
2135     }
2136  }
2137
2138  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2139      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
2140        res.setIdElement(parseId(xpp));
2141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
2142        res.setMeta(parseMeta(xpp));
2143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
2144        res.setImplicitRulesElement(parseUri(xpp));
2145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2146        res.setLanguageElement(parseCode(xpp));
2147    } else
2148        return false;
2149    return true;
2150  }
2151
2152  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2153    Account res = new Account();
2154    parseDomainResourceAttributes(xpp, res);
2155    next(xpp);
2156    int eventType = nextNoWhitespace(xpp);
2157    while (eventType != XmlPullParser.END_TAG) {
2158  if (!parseAccountContent(eventType, xpp, res))
2159        unknownContent(xpp);
2160      eventType = nextNoWhitespace(xpp);
2161    }
2162    next(xpp);
2163    parseElementClose(res);
2164    return res;
2165  }
2166
2167  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
2168      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2169        res.getIdentifier().add(parseIdentifier(xpp));
2170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2171        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
2172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2173        res.setType(parseCodeableConcept(xpp));
2174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2175        res.setNameElement(parseString(xpp));
2176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2177        res.setSubject(parseReference(xpp));
2178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("servicePeriod")) {
2179        res.setServicePeriod(parsePeriod(xpp));
2180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2181        res.getCoverage().add(parseAccountCoverageComponent(xpp, res));
2182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
2183        res.setOwner(parseReference(xpp));
2184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2185        res.setDescriptionElement(parseString(xpp));
2186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
2187        res.getGuarantor().add(parseAccountGuarantorComponent(xpp, res));
2188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
2189        res.setPartOf(parseReference(xpp));
2190      } else if (!parseDomainResourceContent(eventType, xpp, res))
2191        return false;
2192    return true;
2193  }
2194
2195  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2196    Account.CoverageComponent res = new Account.CoverageComponent();
2197    parseBackboneAttributes(xpp, res);
2198    next(xpp);
2199    int eventType = nextNoWhitespace(xpp);
2200    while (eventType != XmlPullParser.END_TAG) {
2201  if (!parseAccountCoverageComponentContent(eventType, xpp, owner, res))
2202        unknownContent(xpp);
2203      eventType = nextNoWhitespace(xpp);
2204    }
2205    next(xpp);
2206    parseElementClose(res);
2207    return res;
2208  }
2209
2210  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2211      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2212        res.setCoverage(parseReference(xpp));
2213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2214        res.setPriorityElement(parsePositiveInt(xpp));
2215      } else if (!parseBackboneElementContent(eventType, xpp, res))
2216        return false;
2217    return true;
2218  }
2219
2220  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2221    Account.GuarantorComponent res = new Account.GuarantorComponent();
2222    parseBackboneAttributes(xpp, res);
2223    next(xpp);
2224    int eventType = nextNoWhitespace(xpp);
2225    while (eventType != XmlPullParser.END_TAG) {
2226  if (!parseAccountGuarantorComponentContent(eventType, xpp, owner, res))
2227        unknownContent(xpp);
2228      eventType = nextNoWhitespace(xpp);
2229    }
2230    next(xpp);
2231    parseElementClose(res);
2232    return res;
2233  }
2234
2235  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2236      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
2237        res.setParty(parseReference(xpp));
2238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
2239        res.setOnHoldElement(parseBoolean(xpp));
2240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2241        res.setPeriod(parsePeriod(xpp));
2242      } else if (!parseBackboneElementContent(eventType, xpp, res))
2243        return false;
2244    return true;
2245  }
2246
2247  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2248    ActivityDefinition res = new ActivityDefinition();
2249    parseDomainResourceAttributes(xpp, res);
2250    next(xpp);
2251    int eventType = nextNoWhitespace(xpp);
2252    while (eventType != XmlPullParser.END_TAG) {
2253  if (!parseActivityDefinitionContent(eventType, xpp, res))
2254        unknownContent(xpp);
2255      eventType = nextNoWhitespace(xpp);
2256    }
2257    next(xpp);
2258    parseElementClose(res);
2259    return res;
2260  }
2261
2262  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2263      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2264        res.setUrlElement(parseUri(xpp));
2265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2266        res.getIdentifier().add(parseIdentifier(xpp));
2267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2268        res.setVersionElement(parseString(xpp));
2269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2270        res.setNameElement(parseString(xpp));
2271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2272        res.setTitleElement(parseString(xpp));
2273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
2274        res.setSubtitleElement(parseString(xpp));
2275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2276        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2278        res.setExperimentalElement(parseBoolean(xpp));
2279      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
2280        res.setSubject(parseType("subject", xpp));
2281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2282        res.setDateElement(parseDateTime(xpp));
2283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2284        res.setPublisherElement(parseString(xpp));
2285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2286        res.getContact().add(parseContactDetail(xpp));
2287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2288        res.setDescriptionElement(parseMarkdown(xpp));
2289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2290        res.getUseContext().add(parseUsageContext(xpp));
2291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2292        res.getJurisdiction().add(parseCodeableConcept(xpp));
2293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2294        res.setPurposeElement(parseMarkdown(xpp));
2295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
2296        res.setUsageElement(parseString(xpp));
2297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2298        res.setCopyrightElement(parseMarkdown(xpp));
2299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
2300        res.setApprovalDateElement(parseDate(xpp));
2301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
2302        res.setLastReviewDateElement(parseDate(xpp));
2303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
2304        res.setEffectivePeriod(parsePeriod(xpp));
2305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
2306        res.getTopic().add(parseCodeableConcept(xpp));
2307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
2308        res.getContributor().add(parseContributor(xpp));
2309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
2310        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
2311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
2312        res.getLibrary().add(parseCanonical(xpp));
2313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2314        res.setKindElement(parseEnumeration(xpp, ActivityDefinition.ActivityDefinitionKind.NULL, new ActivityDefinition.ActivityDefinitionKindEnumFactory()));
2315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2316        res.setCode(parseCodeableConcept(xpp));
2317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
2318        res.setDoNotPerformElement(parseBoolean(xpp));
2319      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
2320        res.setTiming(parseType("timing", xpp));
2321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2322        res.setLocation(parseReference(xpp));
2323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2324        res.getParticipant().add(parseActivityDefinitionActivityDefinitionParticipantComponent(xpp, res));
2325      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2326        res.setProduct(parseType("product", xpp));
2327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2328        res.setQuantity(parseSimpleQuantity(xpp));
2329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
2330        res.getDosage().add(parseDosage(xpp));
2331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2332        res.getBodySite().add(parseCodeableConcept(xpp));
2333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenRequirement")) {
2334        res.getSpecimenRequirement().add(parseReference(xpp));
2335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
2336        res.setTransformElement(parseCanonical(xpp));
2337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
2338        res.getDynamicValue().add(parseActivityDefinitionActivityDefinitionDynamicValueComponent(xpp, res));
2339      } else if (!parseDomainResourceContent(eventType, xpp, res))
2340        return false;
2341    return true;
2342  }
2343
2344  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionActivityDefinitionParticipantComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2345    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2346    parseBackboneAttributes(xpp, res);
2347    next(xpp);
2348    int eventType = nextNoWhitespace(xpp);
2349    while (eventType != XmlPullParser.END_TAG) {
2350  if (!parseActivityDefinitionActivityDefinitionParticipantComponentContent(eventType, xpp, owner, res))
2351        unknownContent(xpp);
2352      eventType = nextNoWhitespace(xpp);
2353    }
2354    next(xpp);
2355    parseElementClose(res);
2356    return res;
2357  }
2358
2359  protected boolean parseActivityDefinitionActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2360      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2361        res.setTypeElement(parseEnumeration(xpp, ActivityDefinition.ActivityParticipantType.NULL, new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
2362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2363        res.setRole(parseCodeableConcept(xpp));
2364      } else if (!parseBackboneElementContent(eventType, xpp, res))
2365        return false;
2366    return true;
2367  }
2368
2369  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionActivityDefinitionDynamicValueComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2370    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2371    parseBackboneAttributes(xpp, res);
2372    next(xpp);
2373    int eventType = nextNoWhitespace(xpp);
2374    while (eventType != XmlPullParser.END_TAG) {
2375  if (!parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(eventType, xpp, owner, res))
2376        unknownContent(xpp);
2377      eventType = nextNoWhitespace(xpp);
2378    }
2379    next(xpp);
2380    parseElementClose(res);
2381    return res;
2382  }
2383
2384  protected boolean parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2385      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2386        res.setDescriptionElement(parseString(xpp));
2387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2388        res.setPathElement(parseString(xpp));
2389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2390        res.setLanguageElement(parseString(xpp));
2391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2392        res.setExpressionElement(parseString(xpp));
2393      } else if (!parseBackboneElementContent(eventType, xpp, res))
2394        return false;
2395    return true;
2396  }
2397
2398  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2399    AdverseEvent res = new AdverseEvent();
2400    parseDomainResourceAttributes(xpp, res);
2401    next(xpp);
2402    int eventType = nextNoWhitespace(xpp);
2403    while (eventType != XmlPullParser.END_TAG) {
2404  if (!parseAdverseEventContent(eventType, xpp, res))
2405        unknownContent(xpp);
2406      eventType = nextNoWhitespace(xpp);
2407    }
2408    next(xpp);
2409    parseElementClose(res);
2410    return res;
2411  }
2412
2413  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2414      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2415        res.setIdentifier(parseIdentifier(xpp));
2416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actuality")) {
2417        res.setActualityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventActuality.NULL, new AdverseEvent.AdverseEventActualityEnumFactory()));
2418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2419        res.getCategory().add(parseCodeableConcept(xpp));
2420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
2421        res.setEvent(parseCodeableConcept(xpp));
2422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2423        res.setSubject(parseReference(xpp));
2424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
2425        res.setContext(parseReference(xpp));
2426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2427        res.setDateElement(parseDateTime(xpp));
2428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultingCondition")) {
2429        res.getResultingCondition().add(parseReference(xpp));
2430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2431        res.setLocation(parseReference(xpp));
2432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
2433        res.setSeriousness(parseCodeableConcept(xpp));
2434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2435        res.setSeverity(parseCodeableConcept(xpp));
2436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2437        res.setOutcome(parseCodeableConcept(xpp));
2438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2439        res.setRecorder(parseReference(xpp));
2440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
2441        res.getContributor().add(parseReference(xpp));
2442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
2443        res.getSuspectEntity().add(parseAdverseEventAdverseEventSuspectEntityComponent(xpp, res));
2444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectMedicalHistory")) {
2445        res.getSubjectMedicalHistory().add(parseReference(xpp));
2446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceDocument")) {
2447        res.getReferenceDocument().add(parseReference(xpp));
2448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
2449        res.getStudy().add(parseReference(xpp));
2450      } else if (!parseDomainResourceContent(eventType, xpp, res))
2451        return false;
2452    return true;
2453  }
2454
2455  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventAdverseEventSuspectEntityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2456    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
2457    parseBackboneAttributes(xpp, res);
2458    next(xpp);
2459    int eventType = nextNoWhitespace(xpp);
2460    while (eventType != XmlPullParser.END_TAG) {
2461  if (!parseAdverseEventAdverseEventSuspectEntityComponentContent(eventType, xpp, owner, res))
2462        unknownContent(xpp);
2463      eventType = nextNoWhitespace(xpp);
2464    }
2465    next(xpp);
2466    parseElementClose(res);
2467    return res;
2468  }
2469
2470  protected boolean parseAdverseEventAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2471      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
2472        res.setInstance(parseReference(xpp));
2473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
2474        res.getCausality().add(parseAdverseEventAdverseEventSuspectEntityCausalityComponent(xpp, owner));
2475      } else if (!parseBackboneElementContent(eventType, xpp, res))
2476        return false;
2477    return true;
2478  }
2479
2480  protected AdverseEvent.AdverseEventSuspectEntityCausalityComponent parseAdverseEventAdverseEventSuspectEntityCausalityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2481    AdverseEvent.AdverseEventSuspectEntityCausalityComponent res = new AdverseEvent.AdverseEventSuspectEntityCausalityComponent();
2482    parseBackboneAttributes(xpp, res);
2483    next(xpp);
2484    int eventType = nextNoWhitespace(xpp);
2485    while (eventType != XmlPullParser.END_TAG) {
2486  if (!parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(eventType, xpp, owner, res))
2487        unknownContent(xpp);
2488      eventType = nextNoWhitespace(xpp);
2489    }
2490    next(xpp);
2491    parseElementClose(res);
2492    return res;
2493  }
2494
2495  protected boolean parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityCausalityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2496      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
2497        res.setAssessment(parseCodeableConcept(xpp));
2498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productRelatedness")) {
2499        res.setProductRelatednessElement(parseString(xpp));
2500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2501        res.setAuthor(parseReference(xpp));
2502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2503        res.setMethod(parseCodeableConcept(xpp));
2504      } else if (!parseBackboneElementContent(eventType, xpp, res))
2505        return false;
2506    return true;
2507  }
2508
2509  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2510    AllergyIntolerance res = new AllergyIntolerance();
2511    parseDomainResourceAttributes(xpp, res);
2512    next(xpp);
2513    int eventType = nextNoWhitespace(xpp);
2514    while (eventType != XmlPullParser.END_TAG) {
2515  if (!parseAllergyIntoleranceContent(eventType, xpp, res))
2516        unknownContent(xpp);
2517      eventType = nextNoWhitespace(xpp);
2518    }
2519    next(xpp);
2520    parseElementClose(res);
2521    return res;
2522  }
2523
2524  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
2525      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2526        res.getIdentifier().add(parseIdentifier(xpp));
2527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
2528        res.setClinicalStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceClinicalStatus.NULL, new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory()));
2529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
2530        res.setVerificationStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceVerificationStatus.NULL, new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory()));
2531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2532        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
2533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2534        res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
2535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
2536        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
2537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2538        res.setCode(parseCodeableConcept(xpp));
2539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2540        res.setPatient(parseReference(xpp));
2541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2542        res.setEncounter(parseReference(xpp));
2543      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
2544        res.setOnset(parseType("onset", xpp));
2545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertedDate")) {
2546        res.setAssertedDateElement(parseDateTime(xpp));
2547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2548        res.setRecorder(parseReference(xpp));
2549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
2550        res.setAsserter(parseReference(xpp));
2551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
2552        res.setLastOccurrenceElement(parseDateTime(xpp));
2553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2554        res.getNote().add(parseAnnotation(xpp));
2555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2556        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
2557      } else if (!parseDomainResourceContent(eventType, xpp, res))
2558        return false;
2559    return true;
2560  }
2561
2562  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
2563    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
2564    parseBackboneAttributes(xpp, res);
2565    next(xpp);
2566    int eventType = nextNoWhitespace(xpp);
2567    while (eventType != XmlPullParser.END_TAG) {
2568  if (!parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(eventType, xpp, owner, res))
2569        unknownContent(xpp);
2570      eventType = nextNoWhitespace(xpp);
2571    }
2572    next(xpp);
2573    parseElementClose(res);
2574    return res;
2575  }
2576
2577  protected boolean parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance owner, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2578      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
2579        res.setSubstance(parseCodeableConcept(xpp));
2580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
2581        res.getManifestation().add(parseCodeableConcept(xpp));
2582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2583        res.setDescriptionElement(parseString(xpp));
2584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2585        res.setOnsetElement(parseDateTime(xpp));
2586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2587        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
2588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
2589        res.setExposureRoute(parseCodeableConcept(xpp));
2590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2591        res.getNote().add(parseAnnotation(xpp));
2592      } else if (!parseBackboneElementContent(eventType, xpp, res))
2593        return false;
2594    return true;
2595  }
2596
2597  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2598    Appointment res = new Appointment();
2599    parseDomainResourceAttributes(xpp, res);
2600    next(xpp);
2601    int eventType = nextNoWhitespace(xpp);
2602    while (eventType != XmlPullParser.END_TAG) {
2603  if (!parseAppointmentContent(eventType, xpp, res))
2604        unknownContent(xpp);
2605      eventType = nextNoWhitespace(xpp);
2606    }
2607    next(xpp);
2608    parseElementClose(res);
2609    return res;
2610  }
2611
2612  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
2613      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2614        res.getIdentifier().add(parseIdentifier(xpp));
2615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2616        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
2617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
2618        res.getServiceCategory().add(parseCodeableConcept(xpp));
2619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
2620        res.getServiceType().add(parseCodeableConcept(xpp));
2621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
2622        res.getSpecialty().add(parseCodeableConcept(xpp));
2623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
2624        res.setAppointmentType(parseCodeableConcept(xpp));
2625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2626        res.getReason().add(parseCodeableConcept(xpp));
2627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
2628        res.getIndication().add(parseReference(xpp));
2629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2630        res.setPriorityElement(parseUnsignedInt(xpp));
2631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2632        res.setDescriptionElement(parseString(xpp));
2633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2634        res.getSupportingInformation().add(parseReference(xpp));
2635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2636        res.setStartElement(parseInstant(xpp));
2637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2638        res.setEndElement(parseInstant(xpp));
2639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
2640        res.setMinutesDurationElement(parsePositiveInt(xpp));
2641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
2642        res.getSlot().add(parseReference(xpp));
2643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2644        res.setCreatedElement(parseDateTime(xpp));
2645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2646        res.setCommentElement(parseString(xpp));
2647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
2648        res.setPatientInstructionElement(parseString(xpp));
2649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
2650        res.getBasedOn().add(parseReference(xpp));
2651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2652        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
2653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
2654        res.getRequestedPeriod().add(parsePeriod(xpp));
2655      } else if (!parseDomainResourceContent(eventType, xpp, res))
2656        return false;
2657    return true;
2658  }
2659
2660  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
2661    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
2662    parseBackboneAttributes(xpp, res);
2663    next(xpp);
2664    int eventType = nextNoWhitespace(xpp);
2665    while (eventType != XmlPullParser.END_TAG) {
2666  if (!parseAppointmentAppointmentParticipantComponentContent(eventType, xpp, owner, res))
2667        unknownContent(xpp);
2668      eventType = nextNoWhitespace(xpp);
2669    }
2670    next(xpp);
2671    parseElementClose(res);
2672    return res;
2673  }
2674
2675  protected boolean parseAppointmentAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment owner, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2676      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2677        res.getType().add(parseCodeableConcept(xpp));
2678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2679        res.setActor(parseReference(xpp));
2680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
2681        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
2682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2683        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
2684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2685        res.setPeriod(parsePeriod(xpp));
2686      } else if (!parseBackboneElementContent(eventType, xpp, res))
2687        return false;
2688    return true;
2689  }
2690
2691  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2692    AppointmentResponse res = new AppointmentResponse();
2693    parseDomainResourceAttributes(xpp, res);
2694    next(xpp);
2695    int eventType = nextNoWhitespace(xpp);
2696    while (eventType != XmlPullParser.END_TAG) {
2697  if (!parseAppointmentResponseContent(eventType, xpp, res))
2698        unknownContent(xpp);
2699      eventType = nextNoWhitespace(xpp);
2700    }
2701    next(xpp);
2702    parseElementClose(res);
2703    return res;
2704  }
2705
2706  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
2707      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2708        res.getIdentifier().add(parseIdentifier(xpp));
2709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
2710        res.setAppointment(parseReference(xpp));
2711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2712        res.setStartElement(parseInstant(xpp));
2713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2714        res.setEndElement(parseInstant(xpp));
2715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
2716        res.getParticipantType().add(parseCodeableConcept(xpp));
2717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2718        res.setActor(parseReference(xpp));
2719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
2720        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL, new AppointmentResponse.ParticipantStatusEnumFactory()));
2721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2722        res.setCommentElement(parseString(xpp));
2723      } else if (!parseDomainResourceContent(eventType, xpp, res))
2724        return false;
2725    return true;
2726  }
2727
2728  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2729    AuditEvent res = new AuditEvent();
2730    parseDomainResourceAttributes(xpp, res);
2731    next(xpp);
2732    int eventType = nextNoWhitespace(xpp);
2733    while (eventType != XmlPullParser.END_TAG) {
2734  if (!parseAuditEventContent(eventType, xpp, res))
2735        unknownContent(xpp);
2736      eventType = nextNoWhitespace(xpp);
2737    }
2738    next(xpp);
2739    parseElementClose(res);
2740    return res;
2741  }
2742
2743  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2744      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2745        res.setType(parseCoding(xpp));
2746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
2747        res.getSubtype().add(parseCoding(xpp));
2748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2749        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
2750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2751        res.setPeriod(parsePeriod(xpp));
2752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
2753        res.setRecordedElement(parseInstant(xpp));
2754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2755        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
2756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
2757        res.setOutcomeDescElement(parseString(xpp));
2758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
2759        res.getPurposeOfEvent().add(parseCodeableConcept(xpp));
2760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
2761        res.getAgent().add(parseAuditEventAuditEventAgentComponent(xpp, res));
2762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
2763        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
2764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
2765        res.getEntity().add(parseAuditEventAuditEventEntityComponent(xpp, res));
2766      } else if (!parseDomainResourceContent(eventType, xpp, res))
2767        return false;
2768    return true;
2769  }
2770
2771  protected AuditEvent.AuditEventAgentComponent parseAuditEventAuditEventAgentComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2772    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
2773    parseBackboneAttributes(xpp, res);
2774    next(xpp);
2775    int eventType = nextNoWhitespace(xpp);
2776    while (eventType != XmlPullParser.END_TAG) {
2777  if (!parseAuditEventAuditEventAgentComponentContent(eventType, xpp, owner, res))
2778        unknownContent(xpp);
2779      eventType = nextNoWhitespace(xpp);
2780    }
2781    next(xpp);
2782    parseElementClose(res);
2783    return res;
2784  }
2785
2786  protected boolean parseAuditEventAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2787      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2788        res.setType(parseCodeableConcept(xpp));
2789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2790        res.getRole().add(parseCodeableConcept(xpp));
2791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2792        res.setReference(parseReference(xpp));
2793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
2794        res.setUserId(parseIdentifier(xpp));
2795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
2796        res.setAltIdElement(parseString(xpp));
2797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2798        res.setNameElement(parseString(xpp));
2799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
2800        res.setRequestorElement(parseBoolean(xpp));
2801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2802        res.setLocation(parseReference(xpp));
2803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
2804        res.getPolicy().add(parseUri(xpp));
2805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
2806        res.setMedia(parseCoding(xpp));
2807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
2808        res.setNetwork(parseAuditEventAuditEventAgentNetworkComponent(xpp, owner));
2809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
2810        res.getPurposeOfUse().add(parseCodeableConcept(xpp));
2811      } else if (!parseBackboneElementContent(eventType, xpp, res))
2812        return false;
2813    return true;
2814  }
2815
2816  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAuditEventAgentNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2817    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
2818    parseBackboneAttributes(xpp, res);
2819    next(xpp);
2820    int eventType = nextNoWhitespace(xpp);
2821    while (eventType != XmlPullParser.END_TAG) {
2822  if (!parseAuditEventAuditEventAgentNetworkComponentContent(eventType, xpp, owner, res))
2823        unknownContent(xpp);
2824      eventType = nextNoWhitespace(xpp);
2825    }
2826    next(xpp);
2827    parseElementClose(res);
2828    return res;
2829  }
2830
2831  protected boolean parseAuditEventAuditEventAgentNetworkComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentNetworkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2832      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
2833        res.setAddressElement(parseString(xpp));
2834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2835        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventAgentNetworkType.NULL, new AuditEvent.AuditEventAgentNetworkTypeEnumFactory()));
2836      } else if (!parseBackboneElementContent(eventType, xpp, res))
2837        return false;
2838    return true;
2839  }
2840
2841  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2842    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
2843    parseBackboneAttributes(xpp, res);
2844    next(xpp);
2845    int eventType = nextNoWhitespace(xpp);
2846    while (eventType != XmlPullParser.END_TAG) {
2847  if (!parseAuditEventAuditEventSourceComponentContent(eventType, xpp, owner, res))
2848        unknownContent(xpp);
2849      eventType = nextNoWhitespace(xpp);
2850    }
2851    next(xpp);
2852    parseElementClose(res);
2853    return res;
2854  }
2855
2856  protected boolean parseAuditEventAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2857      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
2858        res.setSiteElement(parseString(xpp));
2859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2860        res.setIdentifier(parseIdentifier(xpp));
2861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2862        res.getType().add(parseCoding(xpp));
2863      } else if (!parseBackboneElementContent(eventType, xpp, res))
2864        return false;
2865    return true;
2866  }
2867
2868  protected AuditEvent.AuditEventEntityComponent parseAuditEventAuditEventEntityComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2869    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
2870    parseBackboneAttributes(xpp, res);
2871    next(xpp);
2872    int eventType = nextNoWhitespace(xpp);
2873    while (eventType != XmlPullParser.END_TAG) {
2874  if (!parseAuditEventAuditEventEntityComponentContent(eventType, xpp, owner, res))
2875        unknownContent(xpp);
2876      eventType = nextNoWhitespace(xpp);
2877    }
2878    next(xpp);
2879    parseElementClose(res);
2880    return res;
2881  }
2882
2883  protected boolean parseAuditEventAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2884      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2885        res.setIdentifier(parseIdentifier(xpp));
2886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2887        res.setReference(parseReference(xpp));
2888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2889        res.setType(parseCoding(xpp));
2890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2891        res.setRole(parseCoding(xpp));
2892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
2893        res.setLifecycle(parseCoding(xpp));
2894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
2895        res.getSecurityLabel().add(parseCoding(xpp));
2896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2897        res.setNameElement(parseString(xpp));
2898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2899        res.setDescriptionElement(parseString(xpp));
2900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
2901        res.setQueryElement(parseBase64Binary(xpp));
2902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2903        res.getDetail().add(parseAuditEventAuditEventEntityDetailComponent(xpp, owner));
2904      } else if (!parseBackboneElementContent(eventType, xpp, res))
2905        return false;
2906    return true;
2907  }
2908
2909  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventAuditEventEntityDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2910    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
2911    parseBackboneAttributes(xpp, res);
2912    next(xpp);
2913    int eventType = nextNoWhitespace(xpp);
2914    while (eventType != XmlPullParser.END_TAG) {
2915  if (!parseAuditEventAuditEventEntityDetailComponentContent(eventType, xpp, owner, res))
2916        unknownContent(xpp);
2917      eventType = nextNoWhitespace(xpp);
2918    }
2919    next(xpp);
2920    parseElementClose(res);
2921    return res;
2922  }
2923
2924  protected boolean parseAuditEventAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2925      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2926        res.setTypeElement(parseString(xpp));
2927      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2928        res.setValue(parseType("value", xpp));
2929      } else if (!parseBackboneElementContent(eventType, xpp, res))
2930        return false;
2931    return true;
2932  }
2933
2934  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2935    Basic res = new Basic();
2936    parseDomainResourceAttributes(xpp, res);
2937    next(xpp);
2938    int eventType = nextNoWhitespace(xpp);
2939    while (eventType != XmlPullParser.END_TAG) {
2940  if (!parseBasicContent(eventType, xpp, res))
2941        unknownContent(xpp);
2942      eventType = nextNoWhitespace(xpp);
2943    }
2944    next(xpp);
2945    parseElementClose(res);
2946    return res;
2947  }
2948
2949  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
2950      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2951        res.getIdentifier().add(parseIdentifier(xpp));
2952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2953        res.setCode(parseCodeableConcept(xpp));
2954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2955        res.setSubject(parseReference(xpp));
2956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2957        res.setCreatedElement(parseDate(xpp));
2958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2959        res.setAuthor(parseReference(xpp));
2960      } else if (!parseDomainResourceContent(eventType, xpp, res))
2961        return false;
2962    return true;
2963  }
2964
2965  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2966    Binary res = new Binary();
2967    parseResourceAttributes(xpp, res);
2968    next(xpp);
2969    int eventType = nextNoWhitespace(xpp);
2970    while (eventType != XmlPullParser.END_TAG) {
2971  if (!parseBinaryContent(eventType, xpp, res))
2972        unknownContent(xpp);
2973      eventType = nextNoWhitespace(xpp);
2974    }
2975    next(xpp);
2976    parseElementClose(res);
2977    return res;
2978  }
2979
2980  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
2981      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
2982        res.setContentTypeElement(parseCode(xpp));
2983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
2984        res.setSecurityContext(parseReference(xpp));
2985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
2986        res.setContentElement(parseBase64Binary(xpp));
2987      } else if (!parseResourceContent(eventType, xpp, res))
2988        return false;
2989    return true;
2990  }
2991
2992  protected BiologicallyDerivedProduct parseBiologicallyDerivedProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2993    BiologicallyDerivedProduct res = new BiologicallyDerivedProduct();
2994    parseDomainResourceAttributes(xpp, res);
2995    next(xpp);
2996    int eventType = nextNoWhitespace(xpp);
2997    while (eventType != XmlPullParser.END_TAG) {
2998  if (!parseBiologicallyDerivedProductContent(eventType, xpp, res))
2999        unknownContent(xpp);
3000      eventType = nextNoWhitespace(xpp);
3001    }
3002    next(xpp);
3003    parseElementClose(res);
3004    return res;
3005  }
3006
3007  protected boolean parseBiologicallyDerivedProductContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
3008      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3009        res.getIdentifier().add(parseIdentifier(xpp));
3010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCategory")) {
3011        res.setProductCategoryElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductCategory.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory()));
3012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCode")) {
3013        res.setProductCode(parseCodeableConcept(xpp));
3014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3015        res.setStatusElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStatus.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory()));
3016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3017        res.getRequest().add(parseReference(xpp));
3018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3019        res.setQuantityElement(parseInteger(xpp));
3020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
3021        res.setParent(parseReference(xpp));
3022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
3023        res.setCollection(parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(xpp, res));
3024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
3025        res.getProcessing().add(parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(xpp, res));
3026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulation")) {
3027        res.setManipulation(parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(xpp, res));
3028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("storage")) {
3029        res.getStorage().add(parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(xpp, res));
3030      } else if (!parseDomainResourceContent(eventType, xpp, res))
3031        return false;
3032    return true;
3033  }
3034
3035  protected BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3036    BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent();
3037    parseBackboneAttributes(xpp, res);
3038    next(xpp);
3039    int eventType = nextNoWhitespace(xpp);
3040    while (eventType != XmlPullParser.END_TAG) {
3041  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(eventType, xpp, owner, res))
3042        unknownContent(xpp);
3043      eventType = nextNoWhitespace(xpp);
3044    }
3045    next(xpp);
3046    parseElementClose(res);
3047    return res;
3048  }
3049
3050  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3051      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
3052        res.setCollector(parseReference(xpp));
3053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
3054        res.setSource(parseReference(xpp));
3055      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
3056        res.setCollected(parseType("collected", xpp));
3057      } else if (!parseBackboneElementContent(eventType, xpp, res))
3058        return false;
3059    return true;
3060  }
3061
3062  protected BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3063    BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent();
3064    parseBackboneAttributes(xpp, res);
3065    next(xpp);
3066    int eventType = nextNoWhitespace(xpp);
3067    while (eventType != XmlPullParser.END_TAG) {
3068  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(eventType, xpp, owner, res))
3069        unknownContent(xpp);
3070      eventType = nextNoWhitespace(xpp);
3071    }
3072    next(xpp);
3073    parseElementClose(res);
3074    return res;
3075  }
3076
3077  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3078      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3079        res.setDescriptionElement(parseString(xpp));
3080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
3081        res.setProcedure(parseCodeableConcept(xpp));
3082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
3083        res.setAdditive(parseReference(xpp));
3084      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3085        res.setTime(parseType("time", xpp));
3086      } else if (!parseBackboneElementContent(eventType, xpp, res))
3087        return false;
3088    return true;
3089  }
3090
3091  protected BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3092    BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent();
3093    parseBackboneAttributes(xpp, res);
3094    next(xpp);
3095    int eventType = nextNoWhitespace(xpp);
3096    while (eventType != XmlPullParser.END_TAG) {
3097  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(eventType, xpp, owner, res))
3098        unknownContent(xpp);
3099      eventType = nextNoWhitespace(xpp);
3100    }
3101    next(xpp);
3102    parseElementClose(res);
3103    return res;
3104  }
3105
3106  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3107      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3108        res.setDescriptionElement(parseString(xpp));
3109      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3110        res.setTime(parseType("time", xpp));
3111      } else if (!parseBackboneElementContent(eventType, xpp, res))
3112        return false;
3113    return true;
3114  }
3115
3116  protected BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3117    BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent();
3118    parseBackboneAttributes(xpp, res);
3119    next(xpp);
3120    int eventType = nextNoWhitespace(xpp);
3121    while (eventType != XmlPullParser.END_TAG) {
3122  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(eventType, xpp, owner, res))
3123        unknownContent(xpp);
3124      eventType = nextNoWhitespace(xpp);
3125    }
3126    next(xpp);
3127    parseElementClose(res);
3128    return res;
3129  }
3130
3131  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3132      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3133        res.setDescriptionElement(parseString(xpp));
3134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperature")) {
3135        res.setTemperatureElement(parseDecimal(xpp));
3136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scale")) {
3137        res.setScaleElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScale.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory()));
3138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
3139        res.setDuration(parsePeriod(xpp));
3140      } else if (!parseBackboneElementContent(eventType, xpp, res))
3141        return false;
3142    return true;
3143  }
3144
3145  protected BodyStructure parseBodyStructure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3146    BodyStructure res = new BodyStructure();
3147    parseDomainResourceAttributes(xpp, res);
3148    next(xpp);
3149    int eventType = nextNoWhitespace(xpp);
3150    while (eventType != XmlPullParser.END_TAG) {
3151  if (!parseBodyStructureContent(eventType, xpp, res))
3152        unknownContent(xpp);
3153      eventType = nextNoWhitespace(xpp);
3154    }
3155    next(xpp);
3156    parseElementClose(res);
3157    return res;
3158  }
3159
3160  protected boolean parseBodyStructureContent(int eventType, XmlPullParser xpp, BodyStructure res) throws XmlPullParserException, IOException, FHIRFormatError {
3161      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3162        res.getIdentifier().add(parseIdentifier(xpp));
3163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
3164        res.setActiveElement(parseBoolean(xpp));
3165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("morphology")) {
3166        res.setMorphology(parseCodeableConcept(xpp));
3167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3168        res.setLocation(parseCodeableConcept(xpp));
3169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationQualifier")) {
3170        res.getLocationQualifier().add(parseCodeableConcept(xpp));
3171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3172        res.setDescriptionElement(parseString(xpp));
3173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
3174        res.getImage().add(parseAttachment(xpp));
3175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3176        res.setPatient(parseReference(xpp));
3177      } else if (!parseDomainResourceContent(eventType, xpp, res))
3178        return false;
3179    return true;
3180  }
3181
3182  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3183    Bundle res = new Bundle();
3184    parseResourceAttributes(xpp, res);
3185    next(xpp);
3186    int eventType = nextNoWhitespace(xpp);
3187    while (eventType != XmlPullParser.END_TAG) {
3188  if (!parseBundleContent(eventType, xpp, res))
3189        unknownContent(xpp);
3190      eventType = nextNoWhitespace(xpp);
3191    }
3192    next(xpp);
3193    parseElementClose(res);
3194    return res;
3195  }
3196
3197  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
3198      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3199        res.setIdentifier(parseIdentifier(xpp));
3200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3201        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
3202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
3203        res.setTimestampElement(parseInstant(xpp));
3204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
3205        res.setTotalElement(parseUnsignedInt(xpp));
3206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3207        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
3208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
3209        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
3210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
3211        res.setSignature(parseSignature(xpp));
3212      } else if (!parseResourceContent(eventType, xpp, res))
3213        return false;
3214    return true;
3215  }
3216
3217  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3218    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
3219    parseBackboneAttributes(xpp, res);
3220    next(xpp);
3221    int eventType = nextNoWhitespace(xpp);
3222    while (eventType != XmlPullParser.END_TAG) {
3223  if (!parseBundleBundleLinkComponentContent(eventType, xpp, owner, res))
3224        unknownContent(xpp);
3225      eventType = nextNoWhitespace(xpp);
3226    }
3227    next(xpp);
3228    parseElementClose(res);
3229    return res;
3230  }
3231
3232  protected boolean parseBundleBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3233      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
3234        res.setRelationElement(parseString(xpp));
3235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3236        res.setUrlElement(parseUri(xpp));
3237      } else if (!parseBackboneElementContent(eventType, xpp, res))
3238        return false;
3239    return true;
3240  }
3241
3242  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3243    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
3244    parseBackboneAttributes(xpp, res);
3245    next(xpp);
3246    int eventType = nextNoWhitespace(xpp);
3247    while (eventType != XmlPullParser.END_TAG) {
3248  if (!parseBundleBundleEntryComponentContent(eventType, xpp, owner, res))
3249        unknownContent(xpp);
3250      eventType = nextNoWhitespace(xpp);
3251    }
3252    next(xpp);
3253    parseElementClose(res);
3254    return res;
3255  }
3256
3257  protected boolean parseBundleBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3258      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3259        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
3260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
3261        res.setFullUrlElement(parseUri(xpp));
3262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3263        res.setResource(parseResourceContained(xpp));
3264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
3265        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
3266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3267        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
3268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3269        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
3270      } else if (!parseBackboneElementContent(eventType, xpp, res))
3271        return false;
3272    return true;
3273  }
3274
3275  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3276    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
3277    parseBackboneAttributes(xpp, res);
3278    next(xpp);
3279    int eventType = nextNoWhitespace(xpp);
3280    while (eventType != XmlPullParser.END_TAG) {
3281  if (!parseBundleBundleEntrySearchComponentContent(eventType, xpp, owner, res))
3282        unknownContent(xpp);
3283      eventType = nextNoWhitespace(xpp);
3284    }
3285    next(xpp);
3286    parseElementClose(res);
3287    return res;
3288  }
3289
3290  protected boolean parseBundleBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3291      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3292        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
3293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
3294        res.setScoreElement(parseDecimal(xpp));
3295      } else if (!parseBackboneElementContent(eventType, xpp, res))
3296        return false;
3297    return true;
3298  }
3299
3300  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3301    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
3302    parseBackboneAttributes(xpp, res);
3303    next(xpp);
3304    int eventType = nextNoWhitespace(xpp);
3305    while (eventType != XmlPullParser.END_TAG) {
3306  if (!parseBundleBundleEntryRequestComponentContent(eventType, xpp, owner, res))
3307        unknownContent(xpp);
3308      eventType = nextNoWhitespace(xpp);
3309    }
3310    next(xpp);
3311    parseElementClose(res);
3312    return res;
3313  }
3314
3315  protected boolean parseBundleBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
3317        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
3318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3319        res.setUrlElement(parseUri(xpp));
3320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
3321        res.setIfNoneMatchElement(parseString(xpp));
3322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
3323        res.setIfModifiedSinceElement(parseInstant(xpp));
3324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
3325        res.setIfMatchElement(parseString(xpp));
3326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
3327        res.setIfNoneExistElement(parseString(xpp));
3328      } else if (!parseBackboneElementContent(eventType, xpp, res))
3329        return false;
3330    return true;
3331  }
3332
3333  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3334    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
3335    parseBackboneAttributes(xpp, res);
3336    next(xpp);
3337    int eventType = nextNoWhitespace(xpp);
3338    while (eventType != XmlPullParser.END_TAG) {
3339  if (!parseBundleBundleEntryResponseComponentContent(eventType, xpp, owner, res))
3340        unknownContent(xpp);
3341      eventType = nextNoWhitespace(xpp);
3342    }
3343    next(xpp);
3344    parseElementClose(res);
3345    return res;
3346  }
3347
3348  protected boolean parseBundleBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3349      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3350        res.setStatusElement(parseString(xpp));
3351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3352        res.setLocationElement(parseUri(xpp));
3353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
3354        res.setEtagElement(parseString(xpp));
3355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
3356        res.setLastModifiedElement(parseInstant(xpp));
3357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
3358        res.setOutcome(parseResourceContained(xpp));
3359      } else if (!parseBackboneElementContent(eventType, xpp, res))
3360        return false;
3361    return true;
3362  }
3363
3364  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3365    CapabilityStatement res = new CapabilityStatement();
3366    parseDomainResourceAttributes(xpp, res);
3367    next(xpp);
3368    int eventType = nextNoWhitespace(xpp);
3369    while (eventType != XmlPullParser.END_TAG) {
3370  if (!parseCapabilityStatementContent(eventType, xpp, res))
3371        unknownContent(xpp);
3372      eventType = nextNoWhitespace(xpp);
3373    }
3374    next(xpp);
3375    parseElementClose(res);
3376    return res;
3377  }
3378
3379  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
3380      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3381        res.setUrlElement(parseUri(xpp));
3382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3383        res.setVersionElement(parseString(xpp));
3384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3385        res.setNameElement(parseString(xpp));
3386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3387        res.setTitleElement(parseString(xpp));
3388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3389        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
3390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3391        res.setExperimentalElement(parseBoolean(xpp));
3392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3393        res.setDateElement(parseDateTime(xpp));
3394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3395        res.setPublisherElement(parseString(xpp));
3396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3397        res.getContact().add(parseContactDetail(xpp));
3398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3399        res.setDescriptionElement(parseMarkdown(xpp));
3400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3401        res.getUseContext().add(parseUsageContext(xpp));
3402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
3403        res.getJurisdiction().add(parseCodeableConcept(xpp));
3404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
3405        res.setPurposeElement(parseMarkdown(xpp));
3406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3407        res.setCopyrightElement(parseMarkdown(xpp));
3408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3409        res.setKindElement(parseEnumeration(xpp, CapabilityStatement.CapabilityStatementKind.NULL, new CapabilityStatement.CapabilityStatementKindEnumFactory()));
3410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
3411        res.getInstantiates().add(parseCanonical(xpp));
3412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
3413        res.setSoftware(parseCapabilityStatementCapabilityStatementSoftwareComponent(xpp, res));
3414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
3415        res.setImplementation(parseCapabilityStatementCapabilityStatementImplementationComponent(xpp, res));
3416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
3417        res.setFhirVersionElement(parseId(xpp));
3418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
3419        res.getFormat().add(parseCode(xpp));
3420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
3421        res.getPatchFormat().add(parseCode(xpp));
3422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
3423        res.getImplementationGuide().add(parseCanonical(xpp));
3424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
3425        res.getRest().add(parseCapabilityStatementCapabilityStatementRestComponent(xpp, res));
3426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
3427        res.getMessaging().add(parseCapabilityStatementCapabilityStatementMessagingComponent(xpp, res));
3428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
3429        res.getDocument().add(parseCapabilityStatementCapabilityStatementDocumentComponent(xpp, res));
3430      } else if (!parseDomainResourceContent(eventType, xpp, res))
3431        return false;
3432    return true;
3433  }
3434
3435  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementCapabilityStatementSoftwareComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3436    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
3437    parseBackboneAttributes(xpp, res);
3438    next(xpp);
3439    int eventType = nextNoWhitespace(xpp);
3440    while (eventType != XmlPullParser.END_TAG) {
3441  if (!parseCapabilityStatementCapabilityStatementSoftwareComponentContent(eventType, xpp, owner, res))
3442        unknownContent(xpp);
3443      eventType = nextNoWhitespace(xpp);
3444    }
3445    next(xpp);
3446    parseElementClose(res);
3447    return res;
3448  }
3449
3450  protected boolean parseCapabilityStatementCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3451      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3452        res.setNameElement(parseString(xpp));
3453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3454        res.setVersionElement(parseString(xpp));
3455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
3456        res.setReleaseDateElement(parseDateTime(xpp));
3457      } else if (!parseBackboneElementContent(eventType, xpp, res))
3458        return false;
3459    return true;
3460  }
3461
3462  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementCapabilityStatementImplementationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3463    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
3464    parseBackboneAttributes(xpp, res);
3465    next(xpp);
3466    int eventType = nextNoWhitespace(xpp);
3467    while (eventType != XmlPullParser.END_TAG) {
3468  if (!parseCapabilityStatementCapabilityStatementImplementationComponentContent(eventType, xpp, owner, res))
3469        unknownContent(xpp);
3470      eventType = nextNoWhitespace(xpp);
3471    }
3472    next(xpp);
3473    parseElementClose(res);
3474    return res;
3475  }
3476
3477  protected boolean parseCapabilityStatementCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3478      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3479        res.setDescriptionElement(parseString(xpp));
3480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3481        res.setUrlElement(parseUrl(xpp));
3482      } else if (!parseBackboneElementContent(eventType, xpp, res))
3483        return false;
3484    return true;
3485  }
3486
3487  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementCapabilityStatementRestComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3488    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
3489    parseBackboneAttributes(xpp, res);
3490    next(xpp);
3491    int eventType = nextNoWhitespace(xpp);
3492    while (eventType != XmlPullParser.END_TAG) {
3493  if (!parseCapabilityStatementCapabilityStatementRestComponentContent(eventType, xpp, owner, res))
3494        unknownContent(xpp);
3495      eventType = nextNoWhitespace(xpp);
3496    }
3497    next(xpp);
3498    parseElementClose(res);
3499    return res;
3500  }
3501
3502  protected boolean parseCapabilityStatementCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3503      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3504        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
3505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3506        res.setDocumentationElement(parseString(xpp));
3507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
3508        res.setSecurity(parseCapabilityStatementCapabilityStatementRestSecurityComponent(xpp, owner));
3509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3510        res.getResource().add(parseCapabilityStatementCapabilityStatementRestResourceComponent(xpp, owner));
3511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3512        res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp, owner));
3513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3514        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3516        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3518        res.getCompartment().add(parseCanonical(xpp));
3519      } else if (!parseBackboneElementContent(eventType, xpp, res))
3520        return false;
3521    return true;
3522  }
3523
3524  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementCapabilityStatementRestSecurityComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3525    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
3526    parseBackboneAttributes(xpp, res);
3527    next(xpp);
3528    int eventType = nextNoWhitespace(xpp);
3529    while (eventType != XmlPullParser.END_TAG) {
3530  if (!parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(eventType, xpp, owner, res))
3531        unknownContent(xpp);
3532      eventType = nextNoWhitespace(xpp);
3533    }
3534    next(xpp);
3535    parseElementClose(res);
3536    return res;
3537  }
3538
3539  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3540      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3541        res.setCorsElement(parseBoolean(xpp));
3542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3543        res.getService().add(parseCodeableConcept(xpp));
3544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3545        res.setDescriptionElement(parseString(xpp));
3546      } else if (!parseBackboneElementContent(eventType, xpp, res))
3547        return false;
3548    return true;
3549  }
3550
3551  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementCapabilityStatementRestResourceComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3552    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
3553    parseBackboneAttributes(xpp, res);
3554    next(xpp);
3555    int eventType = nextNoWhitespace(xpp);
3556    while (eventType != XmlPullParser.END_TAG) {
3557  if (!parseCapabilityStatementCapabilityStatementRestResourceComponentContent(eventType, xpp, owner, res))
3558        unknownContent(xpp);
3559      eventType = nextNoWhitespace(xpp);
3560    }
3561    next(xpp);
3562    parseElementClose(res);
3563    return res;
3564  }
3565
3566  protected boolean parseCapabilityStatementCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3567      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3568        res.setTypeElement(parseCode(xpp));
3569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3570        res.setProfileElement(parseCanonical(xpp));
3571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedProfile")) {
3572        res.getSupportedProfile().add(parseCanonical(xpp));
3573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3574        res.setDocumentationElement(parseMarkdown(xpp));
3575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3576        res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp, owner));
3577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3578        res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
3579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3580        res.setReadHistoryElement(parseBoolean(xpp));
3581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3582        res.setUpdateCreateElement(parseBoolean(xpp));
3583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3584        res.setConditionalCreateElement(parseBoolean(xpp));
3585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
3586        res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
3587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3588        res.setConditionalUpdateElement(parseBoolean(xpp));
3589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3590        res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
3591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
3592        res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
3593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3594        res.getSearchInclude().add(parseString(xpp));
3595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3596        res.getSearchRevInclude().add(parseString(xpp));
3597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3598        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3600        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3601      } else if (!parseBackboneElementContent(eventType, xpp, res))
3602        return false;
3603    return true;
3604  }
3605
3606  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3607    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
3608    parseBackboneAttributes(xpp, res);
3609    next(xpp);
3610    int eventType = nextNoWhitespace(xpp);
3611    while (eventType != XmlPullParser.END_TAG) {
3612  if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, owner, res))
3613        unknownContent(xpp);
3614      eventType = nextNoWhitespace(xpp);
3615    }
3616    next(xpp);
3617    parseElementClose(res);
3618    return res;
3619  }
3620
3621  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3622      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3623        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
3624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3625        res.setDocumentationElement(parseString(xpp));
3626      } else if (!parseBackboneElementContent(eventType, xpp, res))
3627        return false;
3628    return true;
3629  }
3630
3631  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3632    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
3633    parseBackboneAttributes(xpp, res);
3634    next(xpp);
3635    int eventType = nextNoWhitespace(xpp);
3636    while (eventType != XmlPullParser.END_TAG) {
3637  if (!parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, owner, res))
3638        unknownContent(xpp);
3639      eventType = nextNoWhitespace(xpp);
3640    }
3641    next(xpp);
3642    parseElementClose(res);
3643    return res;
3644  }
3645
3646  protected boolean parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3647      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3648        res.setNameElement(parseString(xpp));
3649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3650        res.setDefinitionElement(parseCanonical(xpp));
3651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3652        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3654        res.setDocumentationElement(parseString(xpp));
3655      } else if (!parseBackboneElementContent(eventType, xpp, res))
3656        return false;
3657    return true;
3658  }
3659
3660  protected CapabilityStatement.CapabilityStatementRestResourceOperationComponent parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3661    CapabilityStatement.CapabilityStatementRestResourceOperationComponent res = new CapabilityStatement.CapabilityStatementRestResourceOperationComponent();
3662    parseBackboneAttributes(xpp, res);
3663    next(xpp);
3664    int eventType = nextNoWhitespace(xpp);
3665    while (eventType != XmlPullParser.END_TAG) {
3666  if (!parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(eventType, xpp, owner, res))
3667        unknownContent(xpp);
3668      eventType = nextNoWhitespace(xpp);
3669    }
3670    next(xpp);
3671    parseElementClose(res);
3672    return res;
3673  }
3674
3675  protected boolean parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3676      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3677        res.setNameElement(parseString(xpp));
3678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3679        res.setDefinitionElement(parseCanonical(xpp));
3680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3681        res.setDocumentationElement(parseMarkdown(xpp));
3682      } else if (!parseBackboneElementContent(eventType, xpp, res))
3683        return false;
3684    return true;
3685  }
3686
3687  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3688    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
3689    parseBackboneAttributes(xpp, res);
3690    next(xpp);
3691    int eventType = nextNoWhitespace(xpp);
3692    while (eventType != XmlPullParser.END_TAG) {
3693  if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, owner, res))
3694        unknownContent(xpp);
3695      eventType = nextNoWhitespace(xpp);
3696    }
3697    next(xpp);
3698    parseElementClose(res);
3699    return res;
3700  }
3701
3702  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3703      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3704        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
3705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3706        res.setDocumentationElement(parseString(xpp));
3707      } else if (!parseBackboneElementContent(eventType, xpp, res))
3708        return false;
3709    return true;
3710  }
3711
3712  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementCapabilityStatementMessagingComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3713    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
3714    parseBackboneAttributes(xpp, res);
3715    next(xpp);
3716    int eventType = nextNoWhitespace(xpp);
3717    while (eventType != XmlPullParser.END_TAG) {
3718  if (!parseCapabilityStatementCapabilityStatementMessagingComponentContent(eventType, xpp, owner, res))
3719        unknownContent(xpp);
3720      eventType = nextNoWhitespace(xpp);
3721    }
3722    next(xpp);
3723    parseElementClose(res);
3724    return res;
3725  }
3726
3727  protected boolean parseCapabilityStatementCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3729        res.getEndpoint().add(parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(xpp, owner));
3730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3731        res.setReliableCacheElement(parseUnsignedInt(xpp));
3732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3733        res.setDocumentationElement(parseString(xpp));
3734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
3735        res.getSupportedMessage().add(parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(xpp, owner));
3736      } else if (!parseBackboneElementContent(eventType, xpp, res))
3737        return false;
3738    return true;
3739  }
3740
3741  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3742    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
3743    parseBackboneAttributes(xpp, res);
3744    next(xpp);
3745    int eventType = nextNoWhitespace(xpp);
3746    while (eventType != XmlPullParser.END_TAG) {
3747  if (!parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, owner, res))
3748        unknownContent(xpp);
3749      eventType = nextNoWhitespace(xpp);
3750    }
3751    next(xpp);
3752    parseElementClose(res);
3753    return res;
3754  }
3755
3756  protected boolean parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3757      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3758        res.setProtocol(parseCoding(xpp));
3759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3760        res.setAddressElement(parseUrl(xpp));
3761      } else if (!parseBackboneElementContent(eventType, xpp, res))
3762        return false;
3763    return true;
3764  }
3765
3766  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3767    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
3768    parseBackboneAttributes(xpp, res);
3769    next(xpp);
3770    int eventType = nextNoWhitespace(xpp);
3771    while (eventType != XmlPullParser.END_TAG) {
3772  if (!parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, owner, res))
3773        unknownContent(xpp);
3774      eventType = nextNoWhitespace(xpp);
3775    }
3776    next(xpp);
3777    parseElementClose(res);
3778    return res;
3779  }
3780
3781  protected boolean parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3782      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3783        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3785        res.setDefinitionElement(parseCanonical(xpp));
3786      } else if (!parseBackboneElementContent(eventType, xpp, res))
3787        return false;
3788    return true;
3789  }
3790
3791  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementCapabilityStatementDocumentComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3792    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
3793    parseBackboneAttributes(xpp, res);
3794    next(xpp);
3795    int eventType = nextNoWhitespace(xpp);
3796    while (eventType != XmlPullParser.END_TAG) {
3797  if (!parseCapabilityStatementCapabilityStatementDocumentComponentContent(eventType, xpp, owner, res))
3798        unknownContent(xpp);
3799      eventType = nextNoWhitespace(xpp);
3800    }
3801    next(xpp);
3802    parseElementClose(res);
3803    return res;
3804  }
3805
3806  protected boolean parseCapabilityStatementCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3808        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
3809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3810        res.setDocumentationElement(parseString(xpp));
3811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3812        res.setProfileElement(parseCanonical(xpp));
3813      } else if (!parseBackboneElementContent(eventType, xpp, res))
3814        return false;
3815    return true;
3816  }
3817
3818  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3819    CarePlan res = new CarePlan();
3820    parseDomainResourceAttributes(xpp, res);
3821    next(xpp);
3822    int eventType = nextNoWhitespace(xpp);
3823    while (eventType != XmlPullParser.END_TAG) {
3824  if (!parseCarePlanContent(eventType, xpp, res))
3825        unknownContent(xpp);
3826      eventType = nextNoWhitespace(xpp);
3827    }
3828    next(xpp);
3829    parseElementClose(res);
3830    return res;
3831  }
3832
3833  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
3834      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3835        res.getIdentifier().add(parseIdentifier(xpp));
3836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
3837        res.getInstantiates().add(parseUri(xpp));
3838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3839        res.getBasedOn().add(parseReference(xpp));
3840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
3841        res.getReplaces().add(parseReference(xpp));
3842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3843        res.getPartOf().add(parseReference(xpp));
3844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3845        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
3846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
3847        res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
3848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3849        res.getCategory().add(parseCodeableConcept(xpp));
3850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3851        res.setTitleElement(parseString(xpp));
3852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3853        res.setDescriptionElement(parseString(xpp));
3854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3855        res.setSubject(parseReference(xpp));
3856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3857        res.setContext(parseReference(xpp));
3858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3859        res.setPeriod(parsePeriod(xpp));
3860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3861        res.getAuthor().add(parseReference(xpp));
3862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3863        res.getCareTeam().add(parseReference(xpp));
3864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
3865        res.getAddresses().add(parseReference(xpp));
3866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
3867        res.getSupportingInfo().add(parseReference(xpp));
3868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3869        res.getGoal().add(parseReference(xpp));
3870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
3871        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
3872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3873        res.getNote().add(parseAnnotation(xpp));
3874      } else if (!parseDomainResourceContent(eventType, xpp, res))
3875        return false;
3876    return true;
3877  }
3878
3879  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3880    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
3881    parseBackboneAttributes(xpp, res);
3882    next(xpp);
3883    int eventType = nextNoWhitespace(xpp);
3884    while (eventType != XmlPullParser.END_TAG) {
3885  if (!parseCarePlanCarePlanActivityComponentContent(eventType, xpp, owner, res))
3886        unknownContent(xpp);
3887      eventType = nextNoWhitespace(xpp);
3888    }
3889    next(xpp);
3890    parseElementClose(res);
3891    return res;
3892  }
3893
3894  protected boolean parseCarePlanCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3895      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCodeableConcept")) {
3896        res.getOutcomeCodeableConcept().add(parseCodeableConcept(xpp));
3897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
3898        res.getOutcomeReference().add(parseReference(xpp));
3899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
3900        res.getProgress().add(parseAnnotation(xpp));
3901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3902        res.setReference(parseReference(xpp));
3903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3904        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
3905      } else if (!parseBackboneElementContent(eventType, xpp, res))
3906        return false;
3907    return true;
3908  }
3909
3910  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3911    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
3912    parseBackboneAttributes(xpp, res);
3913    next(xpp);
3914    int eventType = nextNoWhitespace(xpp);
3915    while (eventType != XmlPullParser.END_TAG) {
3916  if (!parseCarePlanCarePlanActivityDetailComponentContent(eventType, xpp, owner, res))
3917        unknownContent(xpp);
3918      eventType = nextNoWhitespace(xpp);
3919    }
3920    next(xpp);
3921    parseElementClose(res);
3922    return res;
3923  }
3924
3925  protected boolean parseCarePlanCarePlanActivityDetailComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3926      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3927        res.setKindElement(parseEnumeration(xpp, CarePlan.CarePlanActivityKind.NULL, new CarePlan.CarePlanActivityKindEnumFactory()));
3928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
3929        res.setInstantiatesElement(parseUri(xpp));
3930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3931        res.setCode(parseCodeableConcept(xpp));
3932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3933        res.getReasonCode().add(parseCodeableConcept(xpp));
3934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3935        res.getReasonReference().add(parseReference(xpp));
3936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3937        res.getGoal().add(parseReference(xpp));
3938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3939        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
3940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
3941        res.setStatusReasonElement(parseString(xpp));
3942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
3943        res.setDoNotPerformElement(parseBoolean(xpp));
3944      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
3945        res.setScheduled(parseType("scheduled", xpp));
3946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3947        res.setLocation(parseReference(xpp));
3948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
3949        res.getPerformer().add(parseReference(xpp));
3950      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
3951        res.setProduct(parseType("product", xpp));
3952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
3953        res.setDailyAmount(parseSimpleQuantity(xpp));
3954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3955        res.setQuantity(parseSimpleQuantity(xpp));
3956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3957        res.setDescriptionElement(parseString(xpp));
3958      } else if (!parseBackboneElementContent(eventType, xpp, res))
3959        return false;
3960    return true;
3961  }
3962
3963  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3964    CareTeam res = new CareTeam();
3965    parseDomainResourceAttributes(xpp, res);
3966    next(xpp);
3967    int eventType = nextNoWhitespace(xpp);
3968    while (eventType != XmlPullParser.END_TAG) {
3969  if (!parseCareTeamContent(eventType, xpp, res))
3970        unknownContent(xpp);
3971      eventType = nextNoWhitespace(xpp);
3972    }
3973    next(xpp);
3974    parseElementClose(res);
3975    return res;
3976  }
3977
3978  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
3979      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3980        res.getIdentifier().add(parseIdentifier(xpp));
3981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3982        res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
3983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3984        res.getCategory().add(parseCodeableConcept(xpp));
3985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3986        res.setNameElement(parseString(xpp));
3987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3988        res.setSubject(parseReference(xpp));
3989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3990        res.setContext(parseReference(xpp));
3991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3992        res.setPeriod(parsePeriod(xpp));
3993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3994        res.getParticipant().add(parseCareTeamCareTeamParticipantComponent(xpp, res));
3995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3996        res.getReasonCode().add(parseCodeableConcept(xpp));
3997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3998        res.getReasonReference().add(parseReference(xpp));
3999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
4000        res.getManagingOrganization().add(parseReference(xpp));
4001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
4002        res.getTelecom().add(parseContactPoint(xpp));
4003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4004        res.getNote().add(parseAnnotation(xpp));
4005      } else if (!parseDomainResourceContent(eventType, xpp, res))
4006        return false;
4007    return true;
4008  }
4009
4010  protected CareTeam.CareTeamParticipantComponent parseCareTeamCareTeamParticipantComponent(XmlPullParser xpp, CareTeam owner) throws XmlPullParserException, IOException, FHIRFormatError {
4011    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
4012    parseBackboneAttributes(xpp, res);
4013    next(xpp);
4014    int eventType = nextNoWhitespace(xpp);
4015    while (eventType != XmlPullParser.END_TAG) {
4016  if (!parseCareTeamCareTeamParticipantComponentContent(eventType, xpp, owner, res))
4017        unknownContent(xpp);
4018      eventType = nextNoWhitespace(xpp);
4019    }
4020    next(xpp);
4021    parseElementClose(res);
4022    return res;
4023  }
4024
4025  protected boolean parseCareTeamCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam owner, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4026      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4027        res.setRole(parseCodeableConcept(xpp));
4028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
4029        res.setMember(parseReference(xpp));
4030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
4031        res.setOnBehalfOf(parseReference(xpp));
4032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4033        res.setPeriod(parsePeriod(xpp));
4034      } else if (!parseBackboneElementContent(eventType, xpp, res))
4035        return false;
4036    return true;
4037  }
4038
4039  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4040    ChargeItem res = new ChargeItem();
4041    parseDomainResourceAttributes(xpp, res);
4042    next(xpp);
4043    int eventType = nextNoWhitespace(xpp);
4044    while (eventType != XmlPullParser.END_TAG) {
4045  if (!parseChargeItemContent(eventType, xpp, res))
4046        unknownContent(xpp);
4047      eventType = nextNoWhitespace(xpp);
4048    }
4049    next(xpp);
4050    parseElementClose(res);
4051    return res;
4052  }
4053
4054  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
4055      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4056        res.getIdentifier().add(parseIdentifier(xpp));
4057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4058        res.getDefinition().add(parseUri(xpp));
4059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4060        res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
4061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4062        res.getPartOf().add(parseReference(xpp));
4063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4064        res.setCode(parseCodeableConcept(xpp));
4065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4066        res.setSubject(parseReference(xpp));
4067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4068        res.setContext(parseReference(xpp));
4069      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
4070        res.setOccurrence(parseType("occurrence", xpp));
4071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
4072        res.getParticipant().add(parseChargeItemChargeItemParticipantComponent(xpp, res));
4073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
4074        res.setPerformingOrganization(parseReference(xpp));
4075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
4076        res.setRequestingOrganization(parseReference(xpp));
4077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costCenter")) {
4078        res.setCostCenter(parseReference(xpp));
4079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4080        res.setQuantity(parseQuantity(xpp));
4081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
4082        res.getBodysite().add(parseCodeableConcept(xpp));
4083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factorOverride")) {
4084        res.setFactorOverrideElement(parseDecimal(xpp));
4085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceOverride")) {
4086        res.setPriceOverride(parseMoney(xpp));
4087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
4088        res.setOverrideReasonElement(parseString(xpp));
4089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4090        res.setEnterer(parseReference(xpp));
4091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
4092        res.setEnteredDateElement(parseDateTime(xpp));
4093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4094        res.getReason().add(parseCodeableConcept(xpp));
4095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4096        res.getService().add(parseReference(xpp));
4097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
4098        res.getAccount().add(parseReference(xpp));
4099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4100        res.getNote().add(parseAnnotation(xpp));
4101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
4102        res.getSupportingInformation().add(parseReference(xpp));
4103      } else if (!parseDomainResourceContent(eventType, xpp, res))
4104        return false;
4105    return true;
4106  }
4107
4108  protected ChargeItem.ChargeItemParticipantComponent parseChargeItemChargeItemParticipantComponent(XmlPullParser xpp, ChargeItem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4109    ChargeItem.ChargeItemParticipantComponent res = new ChargeItem.ChargeItemParticipantComponent();
4110    parseBackboneAttributes(xpp, res);
4111    next(xpp);
4112    int eventType = nextNoWhitespace(xpp);
4113    while (eventType != XmlPullParser.END_TAG) {
4114  if (!parseChargeItemChargeItemParticipantComponentContent(eventType, xpp, owner, res))
4115        unknownContent(xpp);
4116      eventType = nextNoWhitespace(xpp);
4117    }
4118    next(xpp);
4119    parseElementClose(res);
4120    return res;
4121  }
4122
4123  protected boolean parseChargeItemChargeItemParticipantComponentContent(int eventType, XmlPullParser xpp, ChargeItem owner, ChargeItem.ChargeItemParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4125        res.setRole(parseCodeableConcept(xpp));
4126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4127        res.setActor(parseReference(xpp));
4128      } else if (!parseBackboneElementContent(eventType, xpp, res))
4129        return false;
4130    return true;
4131  }
4132
4133  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4134    Claim res = new Claim();
4135    parseDomainResourceAttributes(xpp, res);
4136    next(xpp);
4137    int eventType = nextNoWhitespace(xpp);
4138    while (eventType != XmlPullParser.END_TAG) {
4139  if (!parseClaimContent(eventType, xpp, res))
4140        unknownContent(xpp);
4141      eventType = nextNoWhitespace(xpp);
4142    }
4143    next(xpp);
4144    parseElementClose(res);
4145    return res;
4146  }
4147
4148  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
4149      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4150        res.getIdentifier().add(parseIdentifier(xpp));
4151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4152        res.setStatusElement(parseEnumeration(xpp, Claim.ClaimStatus.NULL, new Claim.ClaimStatusEnumFactory()));
4153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4154        res.setType(parseCodeableConcept(xpp));
4155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4156        res.getSubType().add(parseCodeableConcept(xpp));
4157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4158        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
4159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4160        res.setPatient(parseReference(xpp));
4161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
4162        res.setBillablePeriod(parsePeriod(xpp));
4163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4164        res.setCreatedElement(parseDateTime(xpp));
4165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4166        res.setEnterer(parseReference(xpp));
4167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4168        res.setInsurer(parseReference(xpp));
4169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4170        res.setProvider(parseReference(xpp));
4171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4172        res.setPriority(parseCodeableConcept(xpp));
4173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
4174        res.setFundsReserve(parseCodeableConcept(xpp));
4175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
4176        res.getRelated().add(parseClaimRelatedClaimComponent(xpp, res));
4177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
4178        res.setPrescription(parseReference(xpp));
4179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
4180        res.setOriginalPrescription(parseReference(xpp));
4181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
4182        res.setPayee(parseClaimPayeeComponent(xpp, res));
4183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
4184        res.setReferral(parseReference(xpp));
4185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
4186        res.setFacility(parseReference(xpp));
4187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
4188        res.getCareTeam().add(parseClaimCareTeamComponent(xpp, res));
4189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
4190        res.getInformation().add(parseClaimSpecialConditionComponent(xpp, res));
4191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
4192        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
4193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
4194        res.getProcedure().add(parseClaimProcedureComponent(xpp, res));
4195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4196        res.getInsurance().add(parseClaimInsuranceComponent(xpp, res));
4197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
4198        res.setAccident(parseClaimAccidentComponent(xpp, res));
4199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4200        res.getItem().add(parseClaimItemComponent(xpp, res));
4201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4202        res.setTotal(parseMoney(xpp));
4203      } else if (!parseDomainResourceContent(eventType, xpp, res))
4204        return false;
4205    return true;
4206  }
4207
4208  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4209    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
4210    parseBackboneAttributes(xpp, res);
4211    next(xpp);
4212    int eventType = nextNoWhitespace(xpp);
4213    while (eventType != XmlPullParser.END_TAG) {
4214  if (!parseClaimRelatedClaimComponentContent(eventType, xpp, owner, res))
4215        unknownContent(xpp);
4216      eventType = nextNoWhitespace(xpp);
4217    }
4218    next(xpp);
4219    parseElementClose(res);
4220    return res;
4221  }
4222
4223  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4224      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
4225        res.setClaim(parseReference(xpp));
4226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
4227        res.setRelationship(parseCodeableConcept(xpp));
4228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
4229        res.setReference(parseIdentifier(xpp));
4230      } else if (!parseBackboneElementContent(eventType, xpp, res))
4231        return false;
4232    return true;
4233  }
4234
4235  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4236    Claim.PayeeComponent res = new Claim.PayeeComponent();
4237    parseBackboneAttributes(xpp, res);
4238    next(xpp);
4239    int eventType = nextNoWhitespace(xpp);
4240    while (eventType != XmlPullParser.END_TAG) {
4241  if (!parseClaimPayeeComponentContent(eventType, xpp, owner, res))
4242        unknownContent(xpp);
4243      eventType = nextNoWhitespace(xpp);
4244    }
4245    next(xpp);
4246    parseElementClose(res);
4247    return res;
4248  }
4249
4250  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4252        res.setType(parseCodeableConcept(xpp));
4253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
4254        res.setResource(parseCoding(xpp));
4255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
4256        res.setParty(parseReference(xpp));
4257      } else if (!parseBackboneElementContent(eventType, xpp, res))
4258        return false;
4259    return true;
4260  }
4261
4262  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4263    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
4264    parseBackboneAttributes(xpp, res);
4265    next(xpp);
4266    int eventType = nextNoWhitespace(xpp);
4267    while (eventType != XmlPullParser.END_TAG) {
4268  if (!parseClaimCareTeamComponentContent(eventType, xpp, owner, res))
4269        unknownContent(xpp);
4270      eventType = nextNoWhitespace(xpp);
4271    }
4272    next(xpp);
4273    parseElementClose(res);
4274    return res;
4275  }
4276
4277  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4278      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4279        res.setSequenceElement(parsePositiveInt(xpp));
4280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4281        res.setProvider(parseReference(xpp));
4282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
4283        res.setResponsibleElement(parseBoolean(xpp));
4284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4285        res.setRole(parseCodeableConcept(xpp));
4286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
4287        res.setQualification(parseCodeableConcept(xpp));
4288      } else if (!parseBackboneElementContent(eventType, xpp, res))
4289        return false;
4290    return true;
4291  }
4292
4293  protected Claim.SpecialConditionComponent parseClaimSpecialConditionComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4294    Claim.SpecialConditionComponent res = new Claim.SpecialConditionComponent();
4295    parseBackboneAttributes(xpp, res);
4296    next(xpp);
4297    int eventType = nextNoWhitespace(xpp);
4298    while (eventType != XmlPullParser.END_TAG) {
4299  if (!parseClaimSpecialConditionComponentContent(eventType, xpp, owner, res))
4300        unknownContent(xpp);
4301      eventType = nextNoWhitespace(xpp);
4302    }
4303    next(xpp);
4304    parseElementClose(res);
4305    return res;
4306  }
4307
4308  protected boolean parseClaimSpecialConditionComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SpecialConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4309      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4310        res.setSequenceElement(parsePositiveInt(xpp));
4311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4312        res.setCategory(parseCodeableConcept(xpp));
4313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4314        res.setCode(parseCodeableConcept(xpp));
4315      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
4316        res.setTiming(parseType("timing", xpp));
4317      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
4318        res.setValue(parseType("value", xpp));
4319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4320        res.setReason(parseCodeableConcept(xpp));
4321      } else if (!parseBackboneElementContent(eventType, xpp, res))
4322        return false;
4323    return true;
4324  }
4325
4326  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4327    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
4328    parseBackboneAttributes(xpp, res);
4329    next(xpp);
4330    int eventType = nextNoWhitespace(xpp);
4331    while (eventType != XmlPullParser.END_TAG) {
4332  if (!parseClaimDiagnosisComponentContent(eventType, xpp, owner, res))
4333        unknownContent(xpp);
4334      eventType = nextNoWhitespace(xpp);
4335    }
4336    next(xpp);
4337    parseElementClose(res);
4338    return res;
4339  }
4340
4341  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4342      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4343        res.setSequenceElement(parsePositiveInt(xpp));
4344      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
4345        res.setDiagnosis(parseType("diagnosis", xpp));
4346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4347        res.getType().add(parseCodeableConcept(xpp));
4348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
4349        res.setPackageCode(parseCodeableConcept(xpp));
4350      } else if (!parseBackboneElementContent(eventType, xpp, res))
4351        return false;
4352    return true;
4353  }
4354
4355  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4356    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
4357    parseBackboneAttributes(xpp, res);
4358    next(xpp);
4359    int eventType = nextNoWhitespace(xpp);
4360    while (eventType != XmlPullParser.END_TAG) {
4361  if (!parseClaimProcedureComponentContent(eventType, xpp, owner, res))
4362        unknownContent(xpp);
4363      eventType = nextNoWhitespace(xpp);
4364    }
4365    next(xpp);
4366    parseElementClose(res);
4367    return res;
4368  }
4369
4370  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4371      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4372        res.setSequenceElement(parsePositiveInt(xpp));
4373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4374        res.setDateElement(parseDateTime(xpp));
4375      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
4376        res.setProcedure(parseType("procedure", xpp));
4377      } else if (!parseBackboneElementContent(eventType, xpp, res))
4378        return false;
4379    return true;
4380  }
4381
4382  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4383    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
4384    parseBackboneAttributes(xpp, res);
4385    next(xpp);
4386    int eventType = nextNoWhitespace(xpp);
4387    while (eventType != XmlPullParser.END_TAG) {
4388  if (!parseClaimInsuranceComponentContent(eventType, xpp, owner, res))
4389        unknownContent(xpp);
4390      eventType = nextNoWhitespace(xpp);
4391    }
4392    next(xpp);
4393    parseElementClose(res);
4394    return res;
4395  }
4396
4397  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4398      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4399        res.setSequenceElement(parsePositiveInt(xpp));
4400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
4401        res.setFocalElement(parseBoolean(xpp));
4402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4403        res.setIdentifier(parseIdentifier(xpp));
4404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4405        res.setCoverage(parseReference(xpp));
4406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
4407        res.setBusinessArrangementElement(parseString(xpp));
4408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4409        res.getPreAuthRef().add(parseString(xpp));
4410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
4411        res.setClaimResponse(parseReference(xpp));
4412      } else if (!parseBackboneElementContent(eventType, xpp, res))
4413        return false;
4414    return true;
4415  }
4416
4417  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4418    Claim.AccidentComponent res = new Claim.AccidentComponent();
4419    parseBackboneAttributes(xpp, res);
4420    next(xpp);
4421    int eventType = nextNoWhitespace(xpp);
4422    while (eventType != XmlPullParser.END_TAG) {
4423  if (!parseClaimAccidentComponentContent(eventType, xpp, owner, res))
4424        unknownContent(xpp);
4425      eventType = nextNoWhitespace(xpp);
4426    }
4427    next(xpp);
4428    parseElementClose(res);
4429    return res;
4430  }
4431
4432  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4433      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4434        res.setDateElement(parseDate(xpp));
4435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4436        res.setType(parseCodeableConcept(xpp));
4437      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4438        res.setLocation(parseType("location", xpp));
4439      } else if (!parseBackboneElementContent(eventType, xpp, res))
4440        return false;
4441    return true;
4442  }
4443
4444  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4445    Claim.ItemComponent res = new Claim.ItemComponent();
4446    parseBackboneAttributes(xpp, res);
4447    next(xpp);
4448    int eventType = nextNoWhitespace(xpp);
4449    while (eventType != XmlPullParser.END_TAG) {
4450  if (!parseClaimItemComponentContent(eventType, xpp, owner, res))
4451        unknownContent(xpp);
4452      eventType = nextNoWhitespace(xpp);
4453    }
4454    next(xpp);
4455    parseElementClose(res);
4456    return res;
4457  }
4458
4459  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4460      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4461        res.setSequenceElement(parsePositiveInt(xpp));
4462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
4463        res.getCareTeamSequence().add(parsePositiveInt(xpp));
4464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
4465        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
4466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
4467        res.getProcedureSequence().add(parsePositiveInt(xpp));
4468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
4469        res.getInformationSequence().add(parsePositiveInt(xpp));
4470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4471        res.setRevenue(parseCodeableConcept(xpp));
4472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4473        res.setCategory(parseCodeableConcept(xpp));
4474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4475        res.setService(parseCodeableConcept(xpp));
4476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4477        res.getModifier().add(parseCodeableConcept(xpp));
4478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4479        res.getProgramCode().add(parseCodeableConcept(xpp));
4480      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
4481        res.setServiced(parseType("serviced", xpp));
4482      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4483        res.setLocation(parseType("location", xpp));
4484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4485        res.setQuantity(parseSimpleQuantity(xpp));
4486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4487        res.setUnitPrice(parseMoney(xpp));
4488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4489        res.setFactorElement(parseDecimal(xpp));
4490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4491        res.setNet(parseMoney(xpp));
4492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4493        res.getUdi().add(parseReference(xpp));
4494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4495        res.setBodySite(parseCodeableConcept(xpp));
4496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
4497        res.getSubSite().add(parseCodeableConcept(xpp));
4498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4499        res.getEncounter().add(parseReference(xpp));
4500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4501        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
4502      } else if (!parseBackboneElementContent(eventType, xpp, res))
4503        return false;
4504    return true;
4505  }
4506
4507  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4508    Claim.DetailComponent res = new Claim.DetailComponent();
4509    parseBackboneAttributes(xpp, res);
4510    next(xpp);
4511    int eventType = nextNoWhitespace(xpp);
4512    while (eventType != XmlPullParser.END_TAG) {
4513  if (!parseClaimDetailComponentContent(eventType, xpp, owner, res))
4514        unknownContent(xpp);
4515      eventType = nextNoWhitespace(xpp);
4516    }
4517    next(xpp);
4518    parseElementClose(res);
4519    return res;
4520  }
4521
4522  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4523      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4524        res.setSequenceElement(parsePositiveInt(xpp));
4525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4526        res.setRevenue(parseCodeableConcept(xpp));
4527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4528        res.setCategory(parseCodeableConcept(xpp));
4529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4530        res.setService(parseCodeableConcept(xpp));
4531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4532        res.getModifier().add(parseCodeableConcept(xpp));
4533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4534        res.getProgramCode().add(parseCodeableConcept(xpp));
4535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4536        res.setQuantity(parseSimpleQuantity(xpp));
4537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4538        res.setUnitPrice(parseMoney(xpp));
4539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4540        res.setFactorElement(parseDecimal(xpp));
4541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4542        res.setNet(parseMoney(xpp));
4543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4544        res.getUdi().add(parseReference(xpp));
4545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4546        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
4547      } else if (!parseBackboneElementContent(eventType, xpp, res))
4548        return false;
4549    return true;
4550  }
4551
4552  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4553    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
4554    parseBackboneAttributes(xpp, res);
4555    next(xpp);
4556    int eventType = nextNoWhitespace(xpp);
4557    while (eventType != XmlPullParser.END_TAG) {
4558  if (!parseClaimSubDetailComponentContent(eventType, xpp, owner, res))
4559        unknownContent(xpp);
4560      eventType = nextNoWhitespace(xpp);
4561    }
4562    next(xpp);
4563    parseElementClose(res);
4564    return res;
4565  }
4566
4567  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4569        res.setSequenceElement(parsePositiveInt(xpp));
4570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4571        res.setRevenue(parseCodeableConcept(xpp));
4572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4573        res.setCategory(parseCodeableConcept(xpp));
4574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4575        res.setService(parseCodeableConcept(xpp));
4576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4577        res.getModifier().add(parseCodeableConcept(xpp));
4578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4579        res.getProgramCode().add(parseCodeableConcept(xpp));
4580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4581        res.setQuantity(parseSimpleQuantity(xpp));
4582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4583        res.setUnitPrice(parseMoney(xpp));
4584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4585        res.setFactorElement(parseDecimal(xpp));
4586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4587        res.setNet(parseMoney(xpp));
4588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4589        res.getUdi().add(parseReference(xpp));
4590      } else if (!parseBackboneElementContent(eventType, xpp, res))
4591        return false;
4592    return true;
4593  }
4594
4595  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4596    ClaimResponse res = new ClaimResponse();
4597    parseDomainResourceAttributes(xpp, res);
4598    next(xpp);
4599    int eventType = nextNoWhitespace(xpp);
4600    while (eventType != XmlPullParser.END_TAG) {
4601  if (!parseClaimResponseContent(eventType, xpp, res))
4602        unknownContent(xpp);
4603      eventType = nextNoWhitespace(xpp);
4604    }
4605    next(xpp);
4606    parseElementClose(res);
4607    return res;
4608  }
4609
4610  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
4611      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4612        res.getIdentifier().add(parseIdentifier(xpp));
4613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4614        res.setStatusElement(parseEnumeration(xpp, ClaimResponse.ClaimResponseStatus.NULL, new ClaimResponse.ClaimResponseStatusEnumFactory()));
4615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4616        res.setType(parseCodeableConcept(xpp));
4617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4618        res.getSubType().add(parseCodeableConcept(xpp));
4619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4620        res.setUseElement(parseEnumeration(xpp, ClaimResponse.Use.NULL, new ClaimResponse.UseEnumFactory()));
4621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4622        res.setPatient(parseReference(xpp));
4623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4624        res.setCreatedElement(parseDateTime(xpp));
4625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4626        res.setInsurer(parseReference(xpp));
4627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
4628        res.setRequestProvider(parseReference(xpp));
4629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4630        res.setRequest(parseReference(xpp));
4631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4632        res.setOutcomeElement(parseEnumeration(xpp, ClaimResponse.RemittanceOutcome.NULL, new ClaimResponse.RemittanceOutcomeEnumFactory()));
4633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4634        res.setDispositionElement(parseString(xpp));
4635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
4636        res.setPayeeType(parseCodeableConcept(xpp));
4637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4638        res.getItem().add(parseClaimResponseItemComponent(xpp, res));
4639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
4640        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
4641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
4642        res.getError().add(parseClaimResponseErrorComponent(xpp, res));
4643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4644        res.getTotal().add(parseClaimResponseTotalComponent(xpp, res));
4645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
4646        res.setPayment(parseClaimResponsePaymentComponent(xpp, res));
4647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reserved")) {
4648        res.setReserved(parseCoding(xpp));
4649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
4650        res.setForm(parseCodeableConcept(xpp));
4651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
4652        res.getProcessNote().add(parseClaimResponseNoteComponent(xpp, res));
4653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
4654        res.getCommunicationRequest().add(parseReference(xpp));
4655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4656        res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp, res));
4657      } else if (!parseDomainResourceContent(eventType, xpp, res))
4658        return false;
4659    return true;
4660  }
4661
4662  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4663    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
4664    parseBackboneAttributes(xpp, res);
4665    next(xpp);
4666    int eventType = nextNoWhitespace(xpp);
4667    while (eventType != XmlPullParser.END_TAG) {
4668  if (!parseClaimResponseItemComponentContent(eventType, xpp, owner, res))
4669        unknownContent(xpp);
4670      eventType = nextNoWhitespace(xpp);
4671    }
4672    next(xpp);
4673    parseElementClose(res);
4674    return res;
4675  }
4676
4677  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4678      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
4679        res.setItemSequenceElement(parsePositiveInt(xpp));
4680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4681        res.getNoteNumber().add(parsePositiveInt(xpp));
4682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4683        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4685        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
4686      } else if (!parseBackboneElementContent(eventType, xpp, res))
4687        return false;
4688    return true;
4689  }
4690
4691  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4692    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
4693    parseBackboneAttributes(xpp, res);
4694    next(xpp);
4695    int eventType = nextNoWhitespace(xpp);
4696    while (eventType != XmlPullParser.END_TAG) {
4697  if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, owner, res))
4698        unknownContent(xpp);
4699      eventType = nextNoWhitespace(xpp);
4700    }
4701    next(xpp);
4702    parseElementClose(res);
4703    return res;
4704  }
4705
4706  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4707      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4708        res.setCategory(parseCodeableConcept(xpp));
4709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4710        res.setReason(parseCodeableConcept(xpp));
4711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4712        res.setAmount(parseMoney(xpp));
4713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4714        res.setValueElement(parseDecimal(xpp));
4715      } else if (!parseBackboneElementContent(eventType, xpp, res))
4716        return false;
4717    return true;
4718  }
4719
4720  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4721    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
4722    parseBackboneAttributes(xpp, res);
4723    next(xpp);
4724    int eventType = nextNoWhitespace(xpp);
4725    while (eventType != XmlPullParser.END_TAG) {
4726  if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, owner, res))
4727        unknownContent(xpp);
4728      eventType = nextNoWhitespace(xpp);
4729    }
4730    next(xpp);
4731    parseElementClose(res);
4732    return res;
4733  }
4734
4735  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4736      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
4737        res.setDetailSequenceElement(parsePositiveInt(xpp));
4738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4739        res.getNoteNumber().add(parsePositiveInt(xpp));
4740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4741        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4743        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
4744      } else if (!parseBackboneElementContent(eventType, xpp, res))
4745        return false;
4746    return true;
4747  }
4748
4749  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4750    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
4751    parseBackboneAttributes(xpp, res);
4752    next(xpp);
4753    int eventType = nextNoWhitespace(xpp);
4754    while (eventType != XmlPullParser.END_TAG) {
4755  if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, owner, res))
4756        unknownContent(xpp);
4757      eventType = nextNoWhitespace(xpp);
4758    }
4759    next(xpp);
4760    parseElementClose(res);
4761    return res;
4762  }
4763
4764  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4765      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
4766        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
4767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4768        res.getNoteNumber().add(parsePositiveInt(xpp));
4769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4770        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4771      } else if (!parseBackboneElementContent(eventType, xpp, res))
4772        return false;
4773    return true;
4774  }
4775
4776  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4777    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
4778    parseBackboneAttributes(xpp, res);
4779    next(xpp);
4780    int eventType = nextNoWhitespace(xpp);
4781    while (eventType != XmlPullParser.END_TAG) {
4782  if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, owner, res))
4783        unknownContent(xpp);
4784      eventType = nextNoWhitespace(xpp);
4785    }
4786    next(xpp);
4787    parseElementClose(res);
4788    return res;
4789  }
4790
4791  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4792      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
4793        res.getItemSequence().add(parsePositiveInt(xpp));
4794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
4795        res.getDetailSequence().add(parsePositiveInt(xpp));
4796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequence")) {
4797        res.getSubdetailSequence().add(parsePositiveInt(xpp));
4798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4799        res.setService(parseCodeableConcept(xpp));
4800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4801        res.getModifier().add(parseCodeableConcept(xpp));
4802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
4803        res.setFee(parseMoney(xpp));
4804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4805        res.getNoteNumber().add(parsePositiveInt(xpp));
4806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4807        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4808      } else if (!parseBackboneElementContent(eventType, xpp, res))
4809        return false;
4810    return true;
4811  }
4812
4813  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4814    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
4815    parseBackboneAttributes(xpp, res);
4816    next(xpp);
4817    int eventType = nextNoWhitespace(xpp);
4818    while (eventType != XmlPullParser.END_TAG) {
4819  if (!parseClaimResponseErrorComponentContent(eventType, xpp, owner, res))
4820        unknownContent(xpp);
4821      eventType = nextNoWhitespace(xpp);
4822    }
4823    next(xpp);
4824    parseElementClose(res);
4825    return res;
4826  }
4827
4828  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4829      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
4830        res.setItemSequenceElement(parsePositiveInt(xpp));
4831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
4832        res.setDetailSequenceElement(parsePositiveInt(xpp));
4833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
4834        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
4835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4836        res.setCode(parseCodeableConcept(xpp));
4837      } else if (!parseBackboneElementContent(eventType, xpp, res))
4838        return false;
4839    return true;
4840  }
4841
4842  protected ClaimResponse.TotalComponent parseClaimResponseTotalComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4843    ClaimResponse.TotalComponent res = new ClaimResponse.TotalComponent();
4844    parseBackboneAttributes(xpp, res);
4845    next(xpp);
4846    int eventType = nextNoWhitespace(xpp);
4847    while (eventType != XmlPullParser.END_TAG) {
4848  if (!parseClaimResponseTotalComponentContent(eventType, xpp, owner, res))
4849        unknownContent(xpp);
4850      eventType = nextNoWhitespace(xpp);
4851    }
4852    next(xpp);
4853    parseElementClose(res);
4854    return res;
4855  }
4856
4857  protected boolean parseClaimResponseTotalComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4858      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4859        res.setCategory(parseCodeableConcept(xpp));
4860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4861        res.setAmount(parseMoney(xpp));
4862      } else if (!parseBackboneElementContent(eventType, xpp, res))
4863        return false;
4864    return true;
4865  }
4866
4867  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4868    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
4869    parseBackboneAttributes(xpp, res);
4870    next(xpp);
4871    int eventType = nextNoWhitespace(xpp);
4872    while (eventType != XmlPullParser.END_TAG) {
4873  if (!parseClaimResponsePaymentComponentContent(eventType, xpp, owner, res))
4874        unknownContent(xpp);
4875      eventType = nextNoWhitespace(xpp);
4876    }
4877    next(xpp);
4878    parseElementClose(res);
4879    return res;
4880  }
4881
4882  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4883      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4884        res.setType(parseCodeableConcept(xpp));
4885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
4886        res.setAdjustment(parseMoney(xpp));
4887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
4888        res.setAdjustmentReason(parseCodeableConcept(xpp));
4889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4890        res.setDateElement(parseDate(xpp));
4891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4892        res.setAmount(parseMoney(xpp));
4893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4894        res.setIdentifier(parseIdentifier(xpp));
4895      } else if (!parseBackboneElementContent(eventType, xpp, res))
4896        return false;
4897    return true;
4898  }
4899
4900  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4901    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
4902    parseBackboneAttributes(xpp, res);
4903    next(xpp);
4904    int eventType = nextNoWhitespace(xpp);
4905    while (eventType != XmlPullParser.END_TAG) {
4906  if (!parseClaimResponseNoteComponentContent(eventType, xpp, owner, res))
4907        unknownContent(xpp);
4908      eventType = nextNoWhitespace(xpp);
4909    }
4910    next(xpp);
4911    parseElementClose(res);
4912    return res;
4913  }
4914
4915  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4916      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
4917        res.setNumberElement(parsePositiveInt(xpp));
4918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4919        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
4920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
4921        res.setTextElement(parseString(xpp));
4922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4923        res.setLanguage(parseCodeableConcept(xpp));
4924      } else if (!parseBackboneElementContent(eventType, xpp, res))
4925        return false;
4926    return true;
4927  }
4928
4929  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4930    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
4931    parseBackboneAttributes(xpp, res);
4932    next(xpp);
4933    int eventType = nextNoWhitespace(xpp);
4934    while (eventType != XmlPullParser.END_TAG) {
4935  if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, owner, res))
4936        unknownContent(xpp);
4937      eventType = nextNoWhitespace(xpp);
4938    }
4939    next(xpp);
4940    parseElementClose(res);
4941    return res;
4942  }
4943
4944  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4945      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4946        res.setSequenceElement(parsePositiveInt(xpp));
4947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
4948        res.setFocalElement(parseBoolean(xpp));
4949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4950        res.setCoverage(parseReference(xpp));
4951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
4952        res.setBusinessArrangementElement(parseString(xpp));
4953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4954        res.getPreAuthRef().add(parseString(xpp));
4955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
4956        res.setClaimResponse(parseReference(xpp));
4957      } else if (!parseBackboneElementContent(eventType, xpp, res))
4958        return false;
4959    return true;
4960  }
4961
4962  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4963    ClinicalImpression res = new ClinicalImpression();
4964    parseDomainResourceAttributes(xpp, res);
4965    next(xpp);
4966    int eventType = nextNoWhitespace(xpp);
4967    while (eventType != XmlPullParser.END_TAG) {
4968  if (!parseClinicalImpressionContent(eventType, xpp, res))
4969        unknownContent(xpp);
4970      eventType = nextNoWhitespace(xpp);
4971    }
4972    next(xpp);
4973    parseElementClose(res);
4974    return res;
4975  }
4976
4977  protected boolean parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression res) throws XmlPullParserException, IOException, FHIRFormatError {
4978      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4979        res.getIdentifier().add(parseIdentifier(xpp));
4980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4981        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
4982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4983        res.setCode(parseCodeableConcept(xpp));
4984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4985        res.setDescriptionElement(parseString(xpp));
4986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4987        res.setSubject(parseReference(xpp));
4988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4989        res.setContext(parseReference(xpp));
4990      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
4991        res.setEffective(parseType("effective", xpp));
4992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4993        res.setDateElement(parseDateTime(xpp));
4994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
4995        res.setAssessor(parseReference(xpp));
4996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
4997        res.setPrevious(parseReference(xpp));
4998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
4999        res.getProblem().add(parseReference(xpp));
5000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigation")) {
5001        res.getInvestigation().add(parseClinicalImpressionClinicalImpressionInvestigationComponent(xpp, res));
5002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
5003        res.getProtocol().add(parseUri(xpp));
5004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5005        res.setSummaryElement(parseString(xpp));
5006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
5007        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
5008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
5009        res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
5010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
5011        res.getPrognosisReference().add(parseReference(xpp));
5012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5013        res.getAction().add(parseReference(xpp));
5014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5015        res.getNote().add(parseAnnotation(xpp));
5016      } else if (!parseDomainResourceContent(eventType, xpp, res))
5017        return false;
5018    return true;
5019  }
5020
5021  protected ClinicalImpression.ClinicalImpressionInvestigationComponent parseClinicalImpressionClinicalImpressionInvestigationComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5022    ClinicalImpression.ClinicalImpressionInvestigationComponent res = new ClinicalImpression.ClinicalImpressionInvestigationComponent();
5023    parseBackboneAttributes(xpp, res);
5024    next(xpp);
5025    int eventType = nextNoWhitespace(xpp);
5026    while (eventType != XmlPullParser.END_TAG) {
5027  if (!parseClinicalImpressionClinicalImpressionInvestigationComponentContent(eventType, xpp, owner, res))
5028        unknownContent(xpp);
5029      eventType = nextNoWhitespace(xpp);
5030    }
5031    next(xpp);
5032    parseElementClose(res);
5033    return res;
5034  }
5035
5036  protected boolean parseClinicalImpressionClinicalImpressionInvestigationComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionInvestigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5037      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5038        res.setCode(parseCodeableConcept(xpp));
5039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
5040        res.getItem().add(parseReference(xpp));
5041      } else if (!parseBackboneElementContent(eventType, xpp, res))
5042        return false;
5043    return true;
5044  }
5045
5046  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5047    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
5048    parseBackboneAttributes(xpp, res);
5049    next(xpp);
5050    int eventType = nextNoWhitespace(xpp);
5051    while (eventType != XmlPullParser.END_TAG) {
5052  if (!parseClinicalImpressionClinicalImpressionFindingComponentContent(eventType, xpp, owner, res))
5053        unknownContent(xpp);
5054      eventType = nextNoWhitespace(xpp);
5055    }
5056    next(xpp);
5057    parseElementClose(res);
5058    return res;
5059  }
5060
5061  protected boolean parseClinicalImpressionClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5062      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemCodeableConcept")) {
5063        res.setItemCodeableConcept(parseCodeableConcept(xpp));
5064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemReference")) {
5065        res.setItemReference(parseReference(xpp));
5066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
5067        res.setBasisElement(parseString(xpp));
5068      } else if (!parseBackboneElementContent(eventType, xpp, res))
5069        return false;
5070    return true;
5071  }
5072
5073  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5074    CodeSystem res = new CodeSystem();
5075    parseDomainResourceAttributes(xpp, res);
5076    next(xpp);
5077    int eventType = nextNoWhitespace(xpp);
5078    while (eventType != XmlPullParser.END_TAG) {
5079  if (!parseCodeSystemContent(eventType, xpp, res))
5080        unknownContent(xpp);
5081      eventType = nextNoWhitespace(xpp);
5082    }
5083    next(xpp);
5084    parseElementClose(res);
5085    return res;
5086  }
5087
5088  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
5089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5090        res.setUrlElement(parseUri(xpp));
5091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5092        res.setIdentifier(parseIdentifier(xpp));
5093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5094        res.setVersionElement(parseString(xpp));
5095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5096        res.setNameElement(parseString(xpp));
5097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5098        res.setTitleElement(parseString(xpp));
5099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5100        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5102        res.setExperimentalElement(parseBoolean(xpp));
5103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5104        res.setDateElement(parseDateTime(xpp));
5105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5106        res.setPublisherElement(parseString(xpp));
5107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5108        res.getContact().add(parseContactDetail(xpp));
5109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5110        res.setDescriptionElement(parseMarkdown(xpp));
5111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5112        res.getUseContext().add(parseUsageContext(xpp));
5113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5114        res.getJurisdiction().add(parseCodeableConcept(xpp));
5115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5116        res.setPurposeElement(parseMarkdown(xpp));
5117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5118        res.setCopyrightElement(parseMarkdown(xpp));
5119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
5120        res.setCaseSensitiveElement(parseBoolean(xpp));
5121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
5122        res.setValueSetElement(parseCanonical(xpp));
5123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
5124        res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
5125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
5126        res.setCompositionalElement(parseBoolean(xpp));
5127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
5128        res.setVersionNeededElement(parseBoolean(xpp));
5129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
5130        res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
5131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplements")) {
5132        res.setSupplementsElement(parseCanonical(xpp));
5133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
5134        res.setCountElement(parseUnsignedInt(xpp));
5135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
5136        res.getFilter().add(parseCodeSystemCodeSystemFilterComponent(xpp, res));
5137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5138        res.getProperty().add(parseCodeSystemPropertyComponent(xpp, res));
5139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5140        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, res));
5141      } else if (!parseDomainResourceContent(eventType, xpp, res))
5142        return false;
5143    return true;
5144  }
5145
5146  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemCodeSystemFilterComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5147    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
5148    parseBackboneAttributes(xpp, res);
5149    next(xpp);
5150    int eventType = nextNoWhitespace(xpp);
5151    while (eventType != XmlPullParser.END_TAG) {
5152  if (!parseCodeSystemCodeSystemFilterComponentContent(eventType, xpp, owner, res))
5153        unknownContent(xpp);
5154      eventType = nextNoWhitespace(xpp);
5155    }
5156    next(xpp);
5157    parseElementClose(res);
5158    return res;
5159  }
5160
5161  protected boolean parseCodeSystemCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5162      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5163        res.setCodeElement(parseCode(xpp));
5164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5165        res.setDescriptionElement(parseString(xpp));
5166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
5167        res.getOperator().add(parseEnumeration(xpp, CodeSystem.FilterOperator.NULL, new CodeSystem.FilterOperatorEnumFactory()));
5168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5169        res.setValueElement(parseString(xpp));
5170      } else if (!parseBackboneElementContent(eventType, xpp, res))
5171        return false;
5172    return true;
5173  }
5174
5175  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5176    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
5177    parseBackboneAttributes(xpp, res);
5178    next(xpp);
5179    int eventType = nextNoWhitespace(xpp);
5180    while (eventType != XmlPullParser.END_TAG) {
5181  if (!parseCodeSystemPropertyComponentContent(eventType, xpp, owner, res))
5182        unknownContent(xpp);
5183      eventType = nextNoWhitespace(xpp);
5184    }
5185    next(xpp);
5186    parseElementClose(res);
5187    return res;
5188  }
5189
5190  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5191      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5192        res.setCodeElement(parseCode(xpp));
5193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
5194        res.setUriElement(parseUri(xpp));
5195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5196        res.setDescriptionElement(parseString(xpp));
5197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5198        res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
5199      } else if (!parseBackboneElementContent(eventType, xpp, res))
5200        return false;
5201    return true;
5202  }
5203
5204  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5205    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
5206    parseBackboneAttributes(xpp, res);
5207    next(xpp);
5208    int eventType = nextNoWhitespace(xpp);
5209    while (eventType != XmlPullParser.END_TAG) {
5210  if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, owner, res))
5211        unknownContent(xpp);
5212      eventType = nextNoWhitespace(xpp);
5213    }
5214    next(xpp);
5215    parseElementClose(res);
5216    return res;
5217  }
5218
5219  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5220      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5221        res.setCodeElement(parseCode(xpp));
5222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5223        res.setDisplayElement(parseString(xpp));
5224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
5225        res.setDefinitionElement(parseString(xpp));
5226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
5227        res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp, owner));
5228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5229        res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp, owner));
5230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5231        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, owner));
5232      } else if (!parseBackboneElementContent(eventType, xpp, res))
5233        return false;
5234    return true;
5235  }
5236
5237  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5238    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
5239    parseBackboneAttributes(xpp, res);
5240    next(xpp);
5241    int eventType = nextNoWhitespace(xpp);
5242    while (eventType != XmlPullParser.END_TAG) {
5243  if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, owner, res))
5244        unknownContent(xpp);
5245      eventType = nextNoWhitespace(xpp);
5246    }
5247    next(xpp);
5248    parseElementClose(res);
5249    return res;
5250  }
5251
5252  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5254        res.setLanguageElement(parseCode(xpp));
5255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
5256        res.setUse(parseCoding(xpp));
5257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5258        res.setValueElement(parseString(xpp));
5259      } else if (!parseBackboneElementContent(eventType, xpp, res))
5260        return false;
5261    return true;
5262  }
5263
5264  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5265    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
5266    parseBackboneAttributes(xpp, res);
5267    next(xpp);
5268    int eventType = nextNoWhitespace(xpp);
5269    while (eventType != XmlPullParser.END_TAG) {
5270  if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, owner, res))
5271        unknownContent(xpp);
5272      eventType = nextNoWhitespace(xpp);
5273    }
5274    next(xpp);
5275    parseElementClose(res);
5276    return res;
5277  }
5278
5279  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5280      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5281        res.setCodeElement(parseCode(xpp));
5282      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
5283        res.setValue(parseType("value", xpp));
5284      } else if (!parseBackboneElementContent(eventType, xpp, res))
5285        return false;
5286    return true;
5287  }
5288
5289  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5290    Communication res = new Communication();
5291    parseDomainResourceAttributes(xpp, res);
5292    next(xpp);
5293    int eventType = nextNoWhitespace(xpp);
5294    while (eventType != XmlPullParser.END_TAG) {
5295  if (!parseCommunicationContent(eventType, xpp, res))
5296        unknownContent(xpp);
5297      eventType = nextNoWhitespace(xpp);
5298    }
5299    next(xpp);
5300    parseElementClose(res);
5301    return res;
5302  }
5303
5304  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
5305      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5306        res.getIdentifier().add(parseIdentifier(xpp));
5307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
5308        res.getInstantiates().add(parseUri(xpp));
5309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5310        res.getBasedOn().add(parseReference(xpp));
5311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5312        res.getPartOf().add(parseReference(xpp));
5313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inResponseTo")) {
5314        res.getInResponseTo().add(parseReference(xpp));
5315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5316        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
5317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5318        res.setStatusReason(parseCodeableConcept(xpp));
5319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5320        res.getCategory().add(parseCodeableConcept(xpp));
5321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5322        res.setPriorityElement(parseEnumeration(xpp, Communication.CommunicationPriority.NULL, new Communication.CommunicationPriorityEnumFactory()));
5323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5324        res.getMedium().add(parseCodeableConcept(xpp));
5325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5326        res.setSubject(parseReference(xpp));
5327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5328        res.getRecipient().add(parseReference(xpp));
5329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5330        res.setTopic(parseCodeableConcept(xpp));
5331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5332        res.getAbout().add(parseReference(xpp));
5333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5334        res.setContext(parseReference(xpp));
5335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
5336        res.setSentElement(parseDateTime(xpp));
5337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
5338        res.setReceivedElement(parseDateTime(xpp));
5339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5340        res.setSender(parseReference(xpp));
5341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5342        res.getReasonCode().add(parseCodeableConcept(xpp));
5343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5344        res.getReasonReference().add(parseReference(xpp));
5345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5346        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
5347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5348        res.getNote().add(parseAnnotation(xpp));
5349      } else if (!parseDomainResourceContent(eventType, xpp, res))
5350        return false;
5351    return true;
5352  }
5353
5354  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
5355    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
5356    parseBackboneAttributes(xpp, res);
5357    next(xpp);
5358    int eventType = nextNoWhitespace(xpp);
5359    while (eventType != XmlPullParser.END_TAG) {
5360  if (!parseCommunicationCommunicationPayloadComponentContent(eventType, xpp, owner, res))
5361        unknownContent(xpp);
5362      eventType = nextNoWhitespace(xpp);
5363    }
5364    next(xpp);
5365    parseElementClose(res);
5366    return res;
5367  }
5368
5369  protected boolean parseCommunicationCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication owner, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5370      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5371        res.setContent(parseType("content", xpp));
5372      } else if (!parseBackboneElementContent(eventType, xpp, res))
5373        return false;
5374    return true;
5375  }
5376
5377  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5378    CommunicationRequest res = new CommunicationRequest();
5379    parseDomainResourceAttributes(xpp, res);
5380    next(xpp);
5381    int eventType = nextNoWhitespace(xpp);
5382    while (eventType != XmlPullParser.END_TAG) {
5383  if (!parseCommunicationRequestContent(eventType, xpp, res))
5384        unknownContent(xpp);
5385      eventType = nextNoWhitespace(xpp);
5386    }
5387    next(xpp);
5388    parseElementClose(res);
5389    return res;
5390  }
5391
5392  protected boolean parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
5393      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5394        res.getIdentifier().add(parseIdentifier(xpp));
5395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5396        res.getBasedOn().add(parseReference(xpp));
5397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
5398        res.getReplaces().add(parseReference(xpp));
5399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
5400        res.setGroupIdentifier(parseIdentifier(xpp));
5401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5402        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
5403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5404        res.getCategory().add(parseCodeableConcept(xpp));
5405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5406        res.setPriorityElement(parseEnumeration(xpp, CommunicationRequest.CommunicationPriority.NULL, new CommunicationRequest.CommunicationPriorityEnumFactory()));
5407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5408        res.getMedium().add(parseCodeableConcept(xpp));
5409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5410        res.setSubject(parseReference(xpp));
5411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5412        res.getRecipient().add(parseReference(xpp));
5413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5414        res.getAbout().add(parseReference(xpp));
5415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5416        res.setContext(parseReference(xpp));
5417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5418        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
5419      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
5420        res.setOccurrence(parseType("occurrence", xpp));
5421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
5422        res.setAuthoredOnElement(parseDateTime(xpp));
5423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
5424        res.setRequester(parseReference(xpp));
5425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5426        res.setSender(parseReference(xpp));
5427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5428        res.getReasonCode().add(parseCodeableConcept(xpp));
5429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5430        res.getReasonReference().add(parseReference(xpp));
5431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5432        res.getNote().add(parseAnnotation(xpp));
5433      } else if (!parseDomainResourceContent(eventType, xpp, res))
5434        return false;
5435    return true;
5436  }
5437
5438  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
5439    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
5440    parseBackboneAttributes(xpp, res);
5441    next(xpp);
5442    int eventType = nextNoWhitespace(xpp);
5443    while (eventType != XmlPullParser.END_TAG) {
5444  if (!parseCommunicationRequestCommunicationRequestPayloadComponentContent(eventType, xpp, owner, res))
5445        unknownContent(xpp);
5446      eventType = nextNoWhitespace(xpp);
5447    }
5448    next(xpp);
5449    parseElementClose(res);
5450    return res;
5451  }
5452
5453  protected boolean parseCommunicationRequestCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5454      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5455        res.setContent(parseType("content", xpp));
5456      } else if (!parseBackboneElementContent(eventType, xpp, res))
5457        return false;
5458    return true;
5459  }
5460
5461  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5462    CompartmentDefinition res = new CompartmentDefinition();
5463    parseDomainResourceAttributes(xpp, res);
5464    next(xpp);
5465    int eventType = nextNoWhitespace(xpp);
5466    while (eventType != XmlPullParser.END_TAG) {
5467  if (!parseCompartmentDefinitionContent(eventType, xpp, res))
5468        unknownContent(xpp);
5469      eventType = nextNoWhitespace(xpp);
5470    }
5471    next(xpp);
5472    parseElementClose(res);
5473    return res;
5474  }
5475
5476  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
5477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5478        res.setUrlElement(parseUri(xpp));
5479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5480        res.setNameElement(parseString(xpp));
5481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5482        res.setTitleElement(parseString(xpp));
5483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5484        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5486        res.setExperimentalElement(parseBoolean(xpp));
5487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5488        res.setDateElement(parseDateTime(xpp));
5489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5490        res.setPublisherElement(parseString(xpp));
5491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5492        res.getContact().add(parseContactDetail(xpp));
5493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5494        res.setDescriptionElement(parseMarkdown(xpp));
5495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5496        res.getUseContext().add(parseUsageContext(xpp));
5497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5498        res.getJurisdiction().add(parseCodeableConcept(xpp));
5499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5500        res.setPurposeElement(parseMarkdown(xpp));
5501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5502        res.setCodeElement(parseEnumeration(xpp, CompartmentDefinition.CompartmentType.NULL, new CompartmentDefinition.CompartmentTypeEnumFactory()));
5503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
5504        res.setSearchElement(parseBoolean(xpp));
5505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
5506        res.getResource().add(parseCompartmentDefinitionCompartmentDefinitionResourceComponent(xpp, res));
5507      } else if (!parseDomainResourceContent(eventType, xpp, res))
5508        return false;
5509    return true;
5510  }
5511
5512  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionCompartmentDefinitionResourceComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5513    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
5514    parseBackboneAttributes(xpp, res);
5515    next(xpp);
5516    int eventType = nextNoWhitespace(xpp);
5517    while (eventType != XmlPullParser.END_TAG) {
5518  if (!parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(eventType, xpp, owner, res))
5519        unknownContent(xpp);
5520      eventType = nextNoWhitespace(xpp);
5521    }
5522    next(xpp);
5523    parseElementClose(res);
5524    return res;
5525  }
5526
5527  protected boolean parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition owner, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5528      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5529        res.setCodeElement(parseCode(xpp));
5530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
5531        res.getParam().add(parseString(xpp));
5532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
5533        res.setDocumentationElement(parseString(xpp));
5534      } else if (!parseBackboneElementContent(eventType, xpp, res))
5535        return false;
5536    return true;
5537  }
5538
5539  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5540    Composition res = new Composition();
5541    parseDomainResourceAttributes(xpp, res);
5542    next(xpp);
5543    int eventType = nextNoWhitespace(xpp);
5544    while (eventType != XmlPullParser.END_TAG) {
5545  if (!parseCompositionContent(eventType, xpp, res))
5546        unknownContent(xpp);
5547      eventType = nextNoWhitespace(xpp);
5548    }
5549    next(xpp);
5550    parseElementClose(res);
5551    return res;
5552  }
5553
5554  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
5555      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5556        res.setIdentifier(parseIdentifier(xpp));
5557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5558        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
5559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5560        res.setType(parseCodeableConcept(xpp));
5561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
5562        res.setClass_(parseCodeableConcept(xpp));
5563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5564        res.setSubject(parseReference(xpp));
5565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5566        res.setEncounter(parseReference(xpp));
5567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5568        res.setDateElement(parseDateTime(xpp));
5569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5570        res.getAuthor().add(parseReference(xpp));
5571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5572        res.setTitleElement(parseString(xpp));
5573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
5574        res.setConfidentialityElement(parseEnumeration(xpp, Composition.DocumentConfidentiality.NULL, new Composition.DocumentConfidentialityEnumFactory()));
5575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
5576        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
5577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5578        res.setCustodian(parseReference(xpp));
5579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5580        res.getRelatesTo().add(parseCompositionCompositionRelatesToComponent(xpp, res));
5581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5582        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
5583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5584        res.getSection().add(parseCompositionSectionComponent(xpp, res));
5585      } else if (!parseDomainResourceContent(eventType, xpp, res))
5586        return false;
5587    return true;
5588  }
5589
5590  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5591    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
5592    parseBackboneAttributes(xpp, res);
5593    next(xpp);
5594    int eventType = nextNoWhitespace(xpp);
5595    while (eventType != XmlPullParser.END_TAG) {
5596  if (!parseCompositionCompositionAttesterComponentContent(eventType, xpp, owner, res))
5597        unknownContent(xpp);
5598      eventType = nextNoWhitespace(xpp);
5599    }
5600    next(xpp);
5601    parseElementClose(res);
5602    return res;
5603  }
5604
5605  protected boolean parseCompositionCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5606      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5607        res.setModeElement(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
5608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5609        res.setTimeElement(parseDateTime(xpp));
5610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5611        res.setParty(parseReference(xpp));
5612      } else if (!parseBackboneElementContent(eventType, xpp, res))
5613        return false;
5614    return true;
5615  }
5616
5617  protected Composition.CompositionRelatesToComponent parseCompositionCompositionRelatesToComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5618    Composition.CompositionRelatesToComponent res = new Composition.CompositionRelatesToComponent();
5619    parseBackboneAttributes(xpp, res);
5620    next(xpp);
5621    int eventType = nextNoWhitespace(xpp);
5622    while (eventType != XmlPullParser.END_TAG) {
5623  if (!parseCompositionCompositionRelatesToComponentContent(eventType, xpp, owner, res))
5624        unknownContent(xpp);
5625      eventType = nextNoWhitespace(xpp);
5626    }
5627    next(xpp);
5628    parseElementClose(res);
5629    return res;
5630  }
5631
5632  protected boolean parseCompositionCompositionRelatesToComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5634        res.setCodeElement(parseEnumeration(xpp, Composition.DocumentRelationshipType.NULL, new Composition.DocumentRelationshipTypeEnumFactory()));
5635      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5636        res.setTarget(parseType("target", xpp));
5637      } else if (!parseBackboneElementContent(eventType, xpp, res))
5638        return false;
5639    return true;
5640  }
5641
5642  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5643    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
5644    parseBackboneAttributes(xpp, res);
5645    next(xpp);
5646    int eventType = nextNoWhitespace(xpp);
5647    while (eventType != XmlPullParser.END_TAG) {
5648  if (!parseCompositionCompositionEventComponentContent(eventType, xpp, owner, res))
5649        unknownContent(xpp);
5650      eventType = nextNoWhitespace(xpp);
5651    }
5652    next(xpp);
5653    parseElementClose(res);
5654    return res;
5655  }
5656
5657  protected boolean parseCompositionCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5658      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5659        res.getCode().add(parseCodeableConcept(xpp));
5660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5661        res.setPeriod(parsePeriod(xpp));
5662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5663        res.getDetail().add(parseReference(xpp));
5664      } else if (!parseBackboneElementContent(eventType, xpp, res))
5665        return false;
5666    return true;
5667  }
5668
5669  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5670    Composition.SectionComponent res = new Composition.SectionComponent();
5671    parseBackboneAttributes(xpp, res);
5672    next(xpp);
5673    int eventType = nextNoWhitespace(xpp);
5674    while (eventType != XmlPullParser.END_TAG) {
5675  if (!parseCompositionSectionComponentContent(eventType, xpp, owner, res))
5676        unknownContent(xpp);
5677      eventType = nextNoWhitespace(xpp);
5678    }
5679    next(xpp);
5680    parseElementClose(res);
5681    return res;
5682  }
5683
5684  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5685      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5686        res.setTitleElement(parseString(xpp));
5687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5688        res.setCode(parseCodeableConcept(xpp));
5689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5690        res.getAuthor().add(parseReference(xpp));
5691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5692        res.setText(parseNarrative(xpp));
5693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5694        res.setModeElement(parseEnumeration(xpp, Composition.SectionMode.NULL, new Composition.SectionModeEnumFactory()));
5695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
5696        res.setOrderedBy(parseCodeableConcept(xpp));
5697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
5698        res.getEntry().add(parseReference(xpp));
5699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
5700        res.setEmptyReason(parseCodeableConcept(xpp));
5701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5702        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
5703      } else if (!parseBackboneElementContent(eventType, xpp, res))
5704        return false;
5705    return true;
5706  }
5707
5708  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5709    ConceptMap res = new ConceptMap();
5710    parseDomainResourceAttributes(xpp, res);
5711    next(xpp);
5712    int eventType = nextNoWhitespace(xpp);
5713    while (eventType != XmlPullParser.END_TAG) {
5714  if (!parseConceptMapContent(eventType, xpp, res))
5715        unknownContent(xpp);
5716      eventType = nextNoWhitespace(xpp);
5717    }
5718    next(xpp);
5719    parseElementClose(res);
5720    return res;
5721  }
5722
5723  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
5724      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5725        res.setUrlElement(parseUri(xpp));
5726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5727        res.setIdentifier(parseIdentifier(xpp));
5728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5729        res.setVersionElement(parseString(xpp));
5730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5731        res.setNameElement(parseString(xpp));
5732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5733        res.setTitleElement(parseString(xpp));
5734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5735        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5737        res.setExperimentalElement(parseBoolean(xpp));
5738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5739        res.setDateElement(parseDateTime(xpp));
5740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5741        res.setPublisherElement(parseString(xpp));
5742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5743        res.getContact().add(parseContactDetail(xpp));
5744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5745        res.setDescriptionElement(parseMarkdown(xpp));
5746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5747        res.getUseContext().add(parseUsageContext(xpp));
5748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5749        res.getJurisdiction().add(parseCodeableConcept(xpp));
5750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5751        res.setPurposeElement(parseMarkdown(xpp));
5752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5753        res.setCopyrightElement(parseMarkdown(xpp));
5754      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
5755        res.setSource(parseType("source", xpp));
5756      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5757        res.setTarget(parseType("target", xpp));
5758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
5759        res.getGroup().add(parseConceptMapConceptMapGroupComponent(xpp, res));
5760      } else if (!parseDomainResourceContent(eventType, xpp, res))
5761        return false;
5762    return true;
5763  }
5764
5765  protected ConceptMap.ConceptMapGroupComponent parseConceptMapConceptMapGroupComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5766    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
5767    parseBackboneAttributes(xpp, res);
5768    next(xpp);
5769    int eventType = nextNoWhitespace(xpp);
5770    while (eventType != XmlPullParser.END_TAG) {
5771  if (!parseConceptMapConceptMapGroupComponentContent(eventType, xpp, owner, res))
5772        unknownContent(xpp);
5773      eventType = nextNoWhitespace(xpp);
5774    }
5775    next(xpp);
5776    parseElementClose(res);
5777    return res;
5778  }
5779
5780  protected boolean parseConceptMapConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5781      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
5782        res.setSourceElement(parseUri(xpp));
5783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceVersion")) {
5784        res.setSourceVersionElement(parseString(xpp));
5785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5786        res.setTargetElement(parseUri(xpp));
5787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetVersion")) {
5788        res.setTargetVersionElement(parseString(xpp));
5789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
5790        res.getElement().add(parseConceptMapSourceElementComponent(xpp, owner));
5791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
5792        res.setUnmapped(parseConceptMapConceptMapGroupUnmappedComponent(xpp, owner));
5793      } else if (!parseBackboneElementContent(eventType, xpp, res))
5794        return false;
5795    return true;
5796  }
5797
5798  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5799    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
5800    parseBackboneAttributes(xpp, res);
5801    next(xpp);
5802    int eventType = nextNoWhitespace(xpp);
5803    while (eventType != XmlPullParser.END_TAG) {
5804  if (!parseConceptMapSourceElementComponentContent(eventType, xpp, owner, res))
5805        unknownContent(xpp);
5806      eventType = nextNoWhitespace(xpp);
5807    }
5808    next(xpp);
5809    parseElementClose(res);
5810    return res;
5811  }
5812
5813  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5814      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5815        res.setCodeElement(parseCode(xpp));
5816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5817        res.setDisplayElement(parseString(xpp));
5818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5819        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
5820      } else if (!parseBackboneElementContent(eventType, xpp, res))
5821        return false;
5822    return true;
5823  }
5824
5825  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5826    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
5827    parseBackboneAttributes(xpp, res);
5828    next(xpp);
5829    int eventType = nextNoWhitespace(xpp);
5830    while (eventType != XmlPullParser.END_TAG) {
5831  if (!parseConceptMapTargetElementComponentContent(eventType, xpp, owner, res))
5832        unknownContent(xpp);
5833      eventType = nextNoWhitespace(xpp);
5834    }
5835    next(xpp);
5836    parseElementClose(res);
5837    return res;
5838  }
5839
5840  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5841      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5842        res.setCodeElement(parseCode(xpp));
5843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5844        res.setDisplayElement(parseString(xpp));
5845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
5846        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
5847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
5848        res.setCommentElement(parseString(xpp));
5849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
5850        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
5851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
5852        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
5853      } else if (!parseBackboneElementContent(eventType, xpp, res))
5854        return false;
5855    return true;
5856  }
5857
5858  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5859    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
5860    parseBackboneAttributes(xpp, res);
5861    next(xpp);
5862    int eventType = nextNoWhitespace(xpp);
5863    while (eventType != XmlPullParser.END_TAG) {
5864  if (!parseConceptMapOtherElementComponentContent(eventType, xpp, owner, res))
5865        unknownContent(xpp);
5866      eventType = nextNoWhitespace(xpp);
5867    }
5868    next(xpp);
5869    parseElementClose(res);
5870    return res;
5871  }
5872
5873  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5874      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5875        res.setPropertyElement(parseUri(xpp));
5876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
5877        res.setSystemElement(parseCanonical(xpp));
5878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5879        res.setValueElement(parseString(xpp));
5880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5881        res.setDisplayElement(parseString(xpp));
5882      } else if (!parseBackboneElementContent(eventType, xpp, res))
5883        return false;
5884    return true;
5885  }
5886
5887  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapConceptMapGroupUnmappedComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5888    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
5889    parseBackboneAttributes(xpp, res);
5890    next(xpp);
5891    int eventType = nextNoWhitespace(xpp);
5892    while (eventType != XmlPullParser.END_TAG) {
5893  if (!parseConceptMapConceptMapGroupUnmappedComponentContent(eventType, xpp, owner, res))
5894        unknownContent(xpp);
5895      eventType = nextNoWhitespace(xpp);
5896    }
5897    next(xpp);
5898    parseElementClose(res);
5899    return res;
5900  }
5901
5902  protected boolean parseConceptMapConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5904        res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
5905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5906        res.setCodeElement(parseCode(xpp));
5907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5908        res.setDisplayElement(parseString(xpp));
5909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5910        res.setUrlElement(parseCanonical(xpp));
5911      } else if (!parseBackboneElementContent(eventType, xpp, res))
5912        return false;
5913    return true;
5914  }
5915
5916  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5917    Condition res = new Condition();
5918    parseDomainResourceAttributes(xpp, res);
5919    next(xpp);
5920    int eventType = nextNoWhitespace(xpp);
5921    while (eventType != XmlPullParser.END_TAG) {
5922  if (!parseConditionContent(eventType, xpp, res))
5923        unknownContent(xpp);
5924      eventType = nextNoWhitespace(xpp);
5925    }
5926    next(xpp);
5927    parseElementClose(res);
5928    return res;
5929  }
5930
5931  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
5932      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5933        res.getIdentifier().add(parseIdentifier(xpp));
5934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
5935        res.setClinicalStatusElement(parseEnumeration(xpp, Condition.ConditionClinicalStatus.NULL, new Condition.ConditionClinicalStatusEnumFactory()));
5936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
5937        res.setVerificationStatusElement(parseEnumeration(xpp, Condition.ConditionVerificationStatus.NULL, new Condition.ConditionVerificationStatusEnumFactory()));
5938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5939        res.getCategory().add(parseCodeableConcept(xpp));
5940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
5941        res.setSeverity(parseCodeableConcept(xpp));
5942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5943        res.setCode(parseCodeableConcept(xpp));
5944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5945        res.getBodySite().add(parseCodeableConcept(xpp));
5946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5947        res.setSubject(parseReference(xpp));
5948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5949        res.setContext(parseReference(xpp));
5950      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
5951        res.setOnset(parseType("onset", xpp));
5952      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
5953        res.setAbatement(parseType("abatement", xpp));
5954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertedDate")) {
5955        res.setAssertedDateElement(parseDateTime(xpp));
5956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
5957        res.setRecorder(parseReference(xpp));
5958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
5959        res.setAsserter(parseReference(xpp));
5960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
5961        res.getStage().add(parseConditionConditionStageComponent(xpp, res));
5962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
5963        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
5964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5965        res.getNote().add(parseAnnotation(xpp));
5966      } else if (!parseDomainResourceContent(eventType, xpp, res))
5967        return false;
5968    return true;
5969  }
5970
5971  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5972    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
5973    parseBackboneAttributes(xpp, res);
5974    next(xpp);
5975    int eventType = nextNoWhitespace(xpp);
5976    while (eventType != XmlPullParser.END_TAG) {
5977  if (!parseConditionConditionStageComponentContent(eventType, xpp, owner, res))
5978        unknownContent(xpp);
5979      eventType = nextNoWhitespace(xpp);
5980    }
5981    next(xpp);
5982    parseElementClose(res);
5983    return res;
5984  }
5985
5986  protected boolean parseConditionConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5987      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5988        res.setSummary(parseCodeableConcept(xpp));
5989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
5990        res.getAssessment().add(parseReference(xpp));
5991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5992        res.setType(parseCodeableConcept(xpp));
5993      } else if (!parseBackboneElementContent(eventType, xpp, res))
5994        return false;
5995    return true;
5996  }
5997
5998  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5999    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
6000    parseBackboneAttributes(xpp, res);
6001    next(xpp);
6002    int eventType = nextNoWhitespace(xpp);
6003    while (eventType != XmlPullParser.END_TAG) {
6004  if (!parseConditionConditionEvidenceComponentContent(eventType, xpp, owner, res))
6005        unknownContent(xpp);
6006      eventType = nextNoWhitespace(xpp);
6007    }
6008    next(xpp);
6009    parseElementClose(res);
6010    return res;
6011  }
6012
6013  protected boolean parseConditionConditionEvidenceComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6014      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6015        res.getCode().add(parseCodeableConcept(xpp));
6016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6017        res.getDetail().add(parseReference(xpp));
6018      } else if (!parseBackboneElementContent(eventType, xpp, res))
6019        return false;
6020    return true;
6021  }
6022
6023  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6024    Consent res = new Consent();
6025    parseDomainResourceAttributes(xpp, res);
6026    next(xpp);
6027    int eventType = nextNoWhitespace(xpp);
6028    while (eventType != XmlPullParser.END_TAG) {
6029  if (!parseConsentContent(eventType, xpp, res))
6030        unknownContent(xpp);
6031      eventType = nextNoWhitespace(xpp);
6032    }
6033    next(xpp);
6034    parseElementClose(res);
6035    return res;
6036  }
6037
6038  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
6039      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6040        res.getIdentifier().add(parseIdentifier(xpp));
6041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6042        res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
6043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6044        res.setScope(parseCodeableConcept(xpp));
6045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6046        res.getCategory().add(parseCodeableConcept(xpp));
6047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6048        res.setPatient(parseReference(xpp));
6049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
6050        res.setDateTimeElement(parseDateTime(xpp));
6051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6052        res.getPerformer().add(parseReference(xpp));
6053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
6054        res.getOrganization().add(parseReference(xpp));
6055      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6056        res.setSource(parseType("source", xpp));
6057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
6058        res.getPolicy().add(parseConsentConsentPolicyComponent(xpp, res));
6059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyRule")) {
6060        res.setPolicyRule(parseCodeableConcept(xpp));
6061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verification")) {
6062        res.getVerification().add(parseConsentConsentVerificationComponent(xpp, res));
6063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6064        res.setProvision(parseConsentprovisionComponent(xpp, res));
6065      } else if (!parseDomainResourceContent(eventType, xpp, res))
6066        return false;
6067    return true;
6068  }
6069
6070  protected Consent.ConsentPolicyComponent parseConsentConsentPolicyComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6071    Consent.ConsentPolicyComponent res = new Consent.ConsentPolicyComponent();
6072    parseBackboneAttributes(xpp, res);
6073    next(xpp);
6074    int eventType = nextNoWhitespace(xpp);
6075    while (eventType != XmlPullParser.END_TAG) {
6076  if (!parseConsentConsentPolicyComponentContent(eventType, xpp, owner, res))
6077        unknownContent(xpp);
6078      eventType = nextNoWhitespace(xpp);
6079    }
6080    next(xpp);
6081    parseElementClose(res);
6082    return res;
6083  }
6084
6085  protected boolean parseConsentConsentPolicyComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentPolicyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6086      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6087        res.setAuthorityElement(parseUri(xpp));
6088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6089        res.setUriElement(parseUri(xpp));
6090      } else if (!parseBackboneElementContent(eventType, xpp, res))
6091        return false;
6092    return true;
6093  }
6094
6095  protected Consent.ConsentVerificationComponent parseConsentConsentVerificationComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6096    Consent.ConsentVerificationComponent res = new Consent.ConsentVerificationComponent();
6097    parseBackboneAttributes(xpp, res);
6098    next(xpp);
6099    int eventType = nextNoWhitespace(xpp);
6100    while (eventType != XmlPullParser.END_TAG) {
6101  if (!parseConsentConsentVerificationComponentContent(eventType, xpp, owner, res))
6102        unknownContent(xpp);
6103      eventType = nextNoWhitespace(xpp);
6104    }
6105    next(xpp);
6106    parseElementClose(res);
6107    return res;
6108  }
6109
6110  protected boolean parseConsentConsentVerificationComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentVerificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6111      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verified")) {
6112        res.setVerifiedElement(parseBoolean(xpp));
6113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verifiedWith")) {
6114        res.setVerifiedWith(parseReference(xpp));
6115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationDate")) {
6116        res.setVerificationDateElement(parseDateTime(xpp));
6117      } else if (!parseBackboneElementContent(eventType, xpp, res))
6118        return false;
6119    return true;
6120  }
6121
6122  protected Consent.provisionComponent parseConsentprovisionComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6123    Consent.provisionComponent res = new Consent.provisionComponent();
6124    parseBackboneAttributes(xpp, res);
6125    next(xpp);
6126    int eventType = nextNoWhitespace(xpp);
6127    while (eventType != XmlPullParser.END_TAG) {
6128  if (!parseConsentprovisionComponentContent(eventType, xpp, owner, res))
6129        unknownContent(xpp);
6130      eventType = nextNoWhitespace(xpp);
6131    }
6132    next(xpp);
6133    parseElementClose(res);
6134    return res;
6135  }
6136
6137  protected boolean parseConsentprovisionComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6138      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6139        res.setTypeElement(parseEnumeration(xpp, Consent.ConsentProvisionType.NULL, new Consent.ConsentProvisionTypeEnumFactory()));
6140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6141        res.setPeriod(parsePeriod(xpp));
6142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6143        res.getActor().add(parseConsentprovisionActorComponent(xpp, owner));
6144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6145        res.getAction().add(parseCodeableConcept(xpp));
6146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6147        res.getSecurityLabel().add(parseCoding(xpp));
6148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6149        res.getPurpose().add(parseCoding(xpp));
6150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6151        res.getClass_().add(parseCoding(xpp));
6152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6153        res.getCode().add(parseCodeableConcept(xpp));
6154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
6155        res.setDataPeriod(parsePeriod(xpp));
6156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
6157        res.getData().add(parseConsentprovisionDataComponent(xpp, owner));
6158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6159        res.getProvision().add(parseConsentprovisionComponent(xpp, owner));
6160      } else if (!parseBackboneElementContent(eventType, xpp, res))
6161        return false;
6162    return true;
6163  }
6164
6165  protected Consent.provisionActorComponent parseConsentprovisionActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6166    Consent.provisionActorComponent res = new Consent.provisionActorComponent();
6167    parseBackboneAttributes(xpp, res);
6168    next(xpp);
6169    int eventType = nextNoWhitespace(xpp);
6170    while (eventType != XmlPullParser.END_TAG) {
6171  if (!parseConsentprovisionActorComponentContent(eventType, xpp, owner, res))
6172        unknownContent(xpp);
6173      eventType = nextNoWhitespace(xpp);
6174    }
6175    next(xpp);
6176    parseElementClose(res);
6177    return res;
6178  }
6179
6180  protected boolean parseConsentprovisionActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6181      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6182        res.setRole(parseCodeableConcept(xpp));
6183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6184        res.setReference(parseReference(xpp));
6185      } else if (!parseBackboneElementContent(eventType, xpp, res))
6186        return false;
6187    return true;
6188  }
6189
6190  protected Consent.provisionDataComponent parseConsentprovisionDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6191    Consent.provisionDataComponent res = new Consent.provisionDataComponent();
6192    parseBackboneAttributes(xpp, res);
6193    next(xpp);
6194    int eventType = nextNoWhitespace(xpp);
6195    while (eventType != XmlPullParser.END_TAG) {
6196  if (!parseConsentprovisionDataComponentContent(eventType, xpp, owner, res))
6197        unknownContent(xpp);
6198      eventType = nextNoWhitespace(xpp);
6199    }
6200    next(xpp);
6201    parseElementClose(res);
6202    return res;
6203  }
6204
6205  protected boolean parseConsentprovisionDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6206      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
6207        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
6208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6209        res.setReference(parseReference(xpp));
6210      } else if (!parseBackboneElementContent(eventType, xpp, res))
6211        return false;
6212    return true;
6213  }
6214
6215  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6216    Contract res = new Contract();
6217    parseDomainResourceAttributes(xpp, res);
6218    next(xpp);
6219    int eventType = nextNoWhitespace(xpp);
6220    while (eventType != XmlPullParser.END_TAG) {
6221  if (!parseContractContent(eventType, xpp, res))
6222        unknownContent(xpp);
6223      eventType = nextNoWhitespace(xpp);
6224    }
6225    next(xpp);
6226    parseElementClose(res);
6227    return res;
6228  }
6229
6230  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
6231      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6232        res.getIdentifier().add(parseIdentifier(xpp));
6233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6234        res.setStatusElement(parseEnumeration(xpp, Contract.ContractStatus.NULL, new Contract.ContractStatusEnumFactory()));
6235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
6236        res.setContentDerivative(parseCodeableConcept(xpp));
6237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6238        res.setIssuedElement(parseDateTime(xpp));
6239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6240        res.setApplies(parsePeriod(xpp));
6241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6242        res.getSubject().add(parseReference(xpp));
6243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6244        res.getAuthority().add(parseReference(xpp));
6245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
6246        res.getDomain().add(parseReference(xpp));
6247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6248        res.setType(parseCodeableConcept(xpp));
6249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6250        res.getSubType().add(parseCodeableConcept(xpp));
6251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
6252        res.getTerm().add(parseContractTermComponent(xpp, res));
6253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
6254        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
6255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
6256        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
6257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
6258        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
6259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
6260        res.setRule(parseContractComputableLanguageComponent(xpp, res));
6261      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "legallyBinding")) {
6262        res.setLegallyBinding(parseType("legallyBinding", xpp));
6263      } else if (!parseDomainResourceContent(eventType, xpp, res))
6264        return false;
6265    return true;
6266  }
6267
6268  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6269    Contract.TermComponent res = new Contract.TermComponent();
6270    parseBackboneAttributes(xpp, res);
6271    next(xpp);
6272    int eventType = nextNoWhitespace(xpp);
6273    while (eventType != XmlPullParser.END_TAG) {
6274  if (!parseContractTermComponentContent(eventType, xpp, owner, res))
6275        unknownContent(xpp);
6276      eventType = nextNoWhitespace(xpp);
6277    }
6278    next(xpp);
6279    parseElementClose(res);
6280    return res;
6281  }
6282
6283  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6284      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6285        res.setIdentifier(parseIdentifier(xpp));
6286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6287        res.setIssuedElement(parseDateTime(xpp));
6288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6289        res.setApplies(parsePeriod(xpp));
6290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6291        res.setType(parseCodeableConcept(xpp));
6292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6293        res.setSubType(parseCodeableConcept(xpp));
6294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offer")) {
6295        res.setOffer(parseContractContractOfferComponent(xpp, owner));
6296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asset")) {
6297        res.getAsset().add(parseContractContractAssetComponent(xpp, owner));
6298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
6299        res.getAgent().add(parseContractAgentComponent(xpp, owner));
6300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6301        res.getAction().add(parseCodeableConcept(xpp));
6302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
6303        res.getActionReason().add(parseCodeableConcept(xpp));
6304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6305        res.getGroup().add(parseContractTermComponent(xpp, owner));
6306      } else if (!parseBackboneElementContent(eventType, xpp, res))
6307        return false;
6308    return true;
6309  }
6310
6311  protected Contract.ContractOfferComponent parseContractContractOfferComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6312    Contract.ContractOfferComponent res = new Contract.ContractOfferComponent();
6313    parseBackboneAttributes(xpp, res);
6314    next(xpp);
6315    int eventType = nextNoWhitespace(xpp);
6316    while (eventType != XmlPullParser.END_TAG) {
6317  if (!parseContractContractOfferComponentContent(eventType, xpp, owner, res))
6318        unknownContent(xpp);
6319      eventType = nextNoWhitespace(xpp);
6320    }
6321    next(xpp);
6322    parseElementClose(res);
6323    return res;
6324  }
6325
6326  protected boolean parseContractContractOfferComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractOfferComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
6328        res.setTopic(parseReference(xpp));
6329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6330        res.setType(parseCodeableConcept(xpp));
6331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
6332        res.setDecision(parseCodeableConcept(xpp));
6333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6334        res.setTextElement(parseString(xpp));
6335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6336        res.setLinkIdElement(parseString(xpp));
6337      } else if (!parseBackboneElementContent(eventType, xpp, res))
6338        return false;
6339    return true;
6340  }
6341
6342  protected Contract.ContractAssetComponent parseContractContractAssetComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6343    Contract.ContractAssetComponent res = new Contract.ContractAssetComponent();
6344    parseBackboneAttributes(xpp, res);
6345    next(xpp);
6346    int eventType = nextNoWhitespace(xpp);
6347    while (eventType != XmlPullParser.END_TAG) {
6348  if (!parseContractContractAssetComponentContent(eventType, xpp, owner, res))
6349        unknownContent(xpp);
6350      eventType = nextNoWhitespace(xpp);
6351    }
6352    next(xpp);
6353    parseElementClose(res);
6354    return res;
6355  }
6356
6357  protected boolean parseContractContractAssetComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractAssetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6358      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6359        res.setClass_(parseCoding(xpp));
6360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6361        res.setCode(parseCoding(xpp));
6362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6363        res.setPeriod(parsePeriod(xpp));
6364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
6365        res.setDataPeriod(parsePeriod(xpp));
6366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
6367        res.getData().add(parseContractAssetDataComponent(xpp, owner));
6368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
6369        res.getValuedItem().add(parseContractValuedItemComponent(xpp, owner));
6370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6371        res.getSecurityLabel().add(parseCoding(xpp));
6372      } else if (!parseBackboneElementContent(eventType, xpp, res))
6373        return false;
6374    return true;
6375  }
6376
6377  protected Contract.AssetDataComponent parseContractAssetDataComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6378    Contract.AssetDataComponent res = new Contract.AssetDataComponent();
6379    parseBackboneAttributes(xpp, res);
6380    next(xpp);
6381    int eventType = nextNoWhitespace(xpp);
6382    while (eventType != XmlPullParser.END_TAG) {
6383  if (!parseContractAssetDataComponentContent(eventType, xpp, owner, res))
6384        unknownContent(xpp);
6385      eventType = nextNoWhitespace(xpp);
6386    }
6387    next(xpp);
6388    parseElementClose(res);
6389    return res;
6390  }
6391
6392  protected boolean parseContractAssetDataComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AssetDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6393      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
6394        res.setMeaningElement(parseEnumeration(xpp, Contract.ContractDataMeaning.NULL, new Contract.ContractDataMeaningEnumFactory()));
6395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6396        res.setReference(parseReference(xpp));
6397      } else if (!parseBackboneElementContent(eventType, xpp, res))
6398        return false;
6399    return true;
6400  }
6401
6402  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6403    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
6404    parseBackboneAttributes(xpp, res);
6405    next(xpp);
6406    int eventType = nextNoWhitespace(xpp);
6407    while (eventType != XmlPullParser.END_TAG) {
6408  if (!parseContractValuedItemComponentContent(eventType, xpp, owner, res))
6409        unknownContent(xpp);
6410      eventType = nextNoWhitespace(xpp);
6411    }
6412    next(xpp);
6413    parseElementClose(res);
6414    return res;
6415  }
6416
6417  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6418      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
6419        res.setEntity(parseType("entity", xpp));
6420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6421        res.setIdentifier(parseIdentifier(xpp));
6422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
6423        res.setEffectiveTimeElement(parseDateTime(xpp));
6424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6425        res.setQuantity(parseSimpleQuantity(xpp));
6426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6427        res.setUnitPrice(parseMoney(xpp));
6428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6429        res.setFactorElement(parseDecimal(xpp));
6430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6431        res.setPointsElement(parseDecimal(xpp));
6432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6433        res.setNet(parseMoney(xpp));
6434      } else if (!parseBackboneElementContent(eventType, xpp, res))
6435        return false;
6436    return true;
6437  }
6438
6439  protected Contract.AgentComponent parseContractAgentComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6440    Contract.AgentComponent res = new Contract.AgentComponent();
6441    parseBackboneAttributes(xpp, res);
6442    next(xpp);
6443    int eventType = nextNoWhitespace(xpp);
6444    while (eventType != XmlPullParser.END_TAG) {
6445  if (!parseContractAgentComponentContent(eventType, xpp, owner, res))
6446        unknownContent(xpp);
6447      eventType = nextNoWhitespace(xpp);
6448    }
6449    next(xpp);
6450    parseElementClose(res);
6451    return res;
6452  }
6453
6454  protected boolean parseContractAgentComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6456        res.setActor(parseReference(xpp));
6457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6458        res.getRole().add(parseCodeableConcept(xpp));
6459      } else if (!parseBackboneElementContent(eventType, xpp, res))
6460        return false;
6461    return true;
6462  }
6463
6464  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6465    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
6466    parseBackboneAttributes(xpp, res);
6467    next(xpp);
6468    int eventType = nextNoWhitespace(xpp);
6469    while (eventType != XmlPullParser.END_TAG) {
6470  if (!parseContractSignatoryComponentContent(eventType, xpp, owner, res))
6471        unknownContent(xpp);
6472      eventType = nextNoWhitespace(xpp);
6473    }
6474    next(xpp);
6475    parseElementClose(res);
6476    return res;
6477  }
6478
6479  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6480      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6481        res.setType(parseCoding(xpp));
6482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
6483        res.setParty(parseReference(xpp));
6484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
6485        res.getSignature().add(parseSignature(xpp));
6486      } else if (!parseBackboneElementContent(eventType, xpp, res))
6487        return false;
6488    return true;
6489  }
6490
6491  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6492    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
6493    parseBackboneAttributes(xpp, res);
6494    next(xpp);
6495    int eventType = nextNoWhitespace(xpp);
6496    while (eventType != XmlPullParser.END_TAG) {
6497  if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, owner, res))
6498        unknownContent(xpp);
6499      eventType = nextNoWhitespace(xpp);
6500    }
6501    next(xpp);
6502    parseElementClose(res);
6503    return res;
6504  }
6505
6506  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6507      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6508        res.setContent(parseType("content", xpp));
6509      } else if (!parseBackboneElementContent(eventType, xpp, res))
6510        return false;
6511    return true;
6512  }
6513
6514  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6515    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
6516    parseBackboneAttributes(xpp, res);
6517    next(xpp);
6518    int eventType = nextNoWhitespace(xpp);
6519    while (eventType != XmlPullParser.END_TAG) {
6520  if (!parseContractLegalLanguageComponentContent(eventType, xpp, owner, res))
6521        unknownContent(xpp);
6522      eventType = nextNoWhitespace(xpp);
6523    }
6524    next(xpp);
6525    parseElementClose(res);
6526    return res;
6527  }
6528
6529  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6530      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6531        res.setContent(parseType("content", xpp));
6532      } else if (!parseBackboneElementContent(eventType, xpp, res))
6533        return false;
6534    return true;
6535  }
6536
6537  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6538    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
6539    parseBackboneAttributes(xpp, res);
6540    next(xpp);
6541    int eventType = nextNoWhitespace(xpp);
6542    while (eventType != XmlPullParser.END_TAG) {
6543  if (!parseContractComputableLanguageComponentContent(eventType, xpp, owner, res))
6544        unknownContent(xpp);
6545      eventType = nextNoWhitespace(xpp);
6546    }
6547    next(xpp);
6548    parseElementClose(res);
6549    return res;
6550  }
6551
6552  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6553      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6554        res.setContent(parseType("content", xpp));
6555      } else if (!parseBackboneElementContent(eventType, xpp, res))
6556        return false;
6557    return true;
6558  }
6559
6560  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6561    Coverage res = new Coverage();
6562    parseDomainResourceAttributes(xpp, res);
6563    next(xpp);
6564    int eventType = nextNoWhitespace(xpp);
6565    while (eventType != XmlPullParser.END_TAG) {
6566  if (!parseCoverageContent(eventType, xpp, res))
6567        unknownContent(xpp);
6568      eventType = nextNoWhitespace(xpp);
6569    }
6570    next(xpp);
6571    parseElementClose(res);
6572    return res;
6573  }
6574
6575  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
6576      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6577        res.getIdentifier().add(parseIdentifier(xpp));
6578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6579        res.setStatusElement(parseEnumeration(xpp, Coverage.CoverageStatus.NULL, new Coverage.CoverageStatusEnumFactory()));
6580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6581        res.setType(parseCodeableConcept(xpp));
6582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
6583        res.setPolicyHolder(parseReference(xpp));
6584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
6585        res.setSubscriber(parseReference(xpp));
6586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
6587        res.setSubscriberIdElement(parseString(xpp));
6588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
6589        res.setBeneficiary(parseReference(xpp));
6590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
6591        res.setDependentElement(parseString(xpp));
6592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6593        res.setRelationship(parseCodeableConcept(xpp));
6594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6595        res.setPeriod(parsePeriod(xpp));
6596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payor")) {
6597        res.getPayor().add(parseReference(xpp));
6598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6599        res.getClass_().add(parseCoverageClassComponent(xpp, res));
6600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
6601        res.setOrderElement(parsePositiveInt(xpp));
6602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
6603        res.setNetworkElement(parseString(xpp));
6604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copay")) {
6605        res.getCopay().add(parseCoverageCoPayComponent(xpp, res));
6606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
6607        res.getContract().add(parseReference(xpp));
6608      } else if (!parseDomainResourceContent(eventType, xpp, res))
6609        return false;
6610    return true;
6611  }
6612
6613  protected Coverage.ClassComponent parseCoverageClassComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
6614    Coverage.ClassComponent res = new Coverage.ClassComponent();
6615    parseBackboneAttributes(xpp, res);
6616    next(xpp);
6617    int eventType = nextNoWhitespace(xpp);
6618    while (eventType != XmlPullParser.END_TAG) {
6619  if (!parseCoverageClassComponentContent(eventType, xpp, owner, res))
6620        unknownContent(xpp);
6621      eventType = nextNoWhitespace(xpp);
6622    }
6623    next(xpp);
6624    parseElementClose(res);
6625    return res;
6626  }
6627
6628  protected boolean parseCoverageClassComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.ClassComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6630        res.setType(parseCoding(xpp));
6631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6632        res.setValueElement(parseString(xpp));
6633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6634        res.setNameElement(parseString(xpp));
6635      } else if (!parseBackboneElementContent(eventType, xpp, res))
6636        return false;
6637    return true;
6638  }
6639
6640  protected Coverage.CoPayComponent parseCoverageCoPayComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
6641    Coverage.CoPayComponent res = new Coverage.CoPayComponent();
6642    parseBackboneAttributes(xpp, res);
6643    next(xpp);
6644    int eventType = nextNoWhitespace(xpp);
6645    while (eventType != XmlPullParser.END_TAG) {
6646  if (!parseCoverageCoPayComponentContent(eventType, xpp, owner, res))
6647        unknownContent(xpp);
6648      eventType = nextNoWhitespace(xpp);
6649    }
6650    next(xpp);
6651    parseElementClose(res);
6652    return res;
6653  }
6654
6655  protected boolean parseCoverageCoPayComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.CoPayComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6656      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6657        res.setType(parseCoding(xpp));
6658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6659        res.setValue(parseQuantity(xpp));
6660      } else if (!parseBackboneElementContent(eventType, xpp, res))
6661        return false;
6662    return true;
6663  }
6664
6665  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6666    DetectedIssue res = new DetectedIssue();
6667    parseDomainResourceAttributes(xpp, res);
6668    next(xpp);
6669    int eventType = nextNoWhitespace(xpp);
6670    while (eventType != XmlPullParser.END_TAG) {
6671  if (!parseDetectedIssueContent(eventType, xpp, res))
6672        unknownContent(xpp);
6673      eventType = nextNoWhitespace(xpp);
6674    }
6675    next(xpp);
6676    parseElementClose(res);
6677    return res;
6678  }
6679
6680  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
6681      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6682        res.getIdentifier().add(parseIdentifier(xpp));
6683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6684        res.setStatusElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueStatus.NULL, new DetectedIssue.DetectedIssueStatusEnumFactory()));
6685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6686        res.setCategory(parseCodeableConcept(xpp));
6687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
6688        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
6689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6690        res.setPatient(parseReference(xpp));
6691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6692        res.setDateElement(parseDateTime(xpp));
6693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6694        res.setAuthor(parseReference(xpp));
6695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
6696        res.getImplicated().add(parseReference(xpp));
6697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6698        res.setDetailElement(parseString(xpp));
6699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6700        res.setReferenceElement(parseUri(xpp));
6701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
6702        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
6703      } else if (!parseDomainResourceContent(eventType, xpp, res))
6704        return false;
6705    return true;
6706  }
6707
6708  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
6709    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
6710    parseBackboneAttributes(xpp, res);
6711    next(xpp);
6712    int eventType = nextNoWhitespace(xpp);
6713    while (eventType != XmlPullParser.END_TAG) {
6714  if (!parseDetectedIssueDetectedIssueMitigationComponentContent(eventType, xpp, owner, res))
6715        unknownContent(xpp);
6716      eventType = nextNoWhitespace(xpp);
6717    }
6718    next(xpp);
6719    parseElementClose(res);
6720    return res;
6721  }
6722
6723  protected boolean parseDetectedIssueDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6724      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6725        res.setAction(parseCodeableConcept(xpp));
6726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6727        res.setDateElement(parseDateTime(xpp));
6728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6729        res.setAuthor(parseReference(xpp));
6730      } else if (!parseBackboneElementContent(eventType, xpp, res))
6731        return false;
6732    return true;
6733  }
6734
6735  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6736    Device res = new Device();
6737    parseDomainResourceAttributes(xpp, res);
6738    next(xpp);
6739    int eventType = nextNoWhitespace(xpp);
6740    while (eventType != XmlPullParser.END_TAG) {
6741  if (!parseDeviceContent(eventType, xpp, res))
6742        unknownContent(xpp);
6743      eventType = nextNoWhitespace(xpp);
6744    }
6745    next(xpp);
6746    parseElementClose(res);
6747    return res;
6748  }
6749
6750  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
6751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6752        res.getIdentifier().add(parseIdentifier(xpp));
6753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6754        res.setUdi(parseDeviceDeviceUdiComponent(xpp, res));
6755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6756        res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
6757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6758        res.setType(parseCodeableConcept(xpp));
6759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
6760        res.setLotNumberElement(parseString(xpp));
6761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
6762        res.setManufacturerElement(parseString(xpp));
6763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
6764        res.setManufactureDateElement(parseDateTime(xpp));
6765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
6766        res.setExpirationDateElement(parseDateTime(xpp));
6767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("model")) {
6768        res.setModelElement(parseString(xpp));
6769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6770        res.setVersionElement(parseString(xpp));
6771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6772        res.setPatient(parseReference(xpp));
6773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
6774        res.setOwner(parseReference(xpp));
6775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6776        res.getContact().add(parseContactPoint(xpp));
6777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
6778        res.setLocation(parseReference(xpp));
6779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6780        res.setUrlElement(parseUri(xpp));
6781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6782        res.getNote().add(parseAnnotation(xpp));
6783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
6784        res.getSafety().add(parseCodeableConcept(xpp));
6785      } else if (!parseDomainResourceContent(eventType, xpp, res))
6786        return false;
6787    return true;
6788  }
6789
6790  protected Device.DeviceUdiComponent parseDeviceDeviceUdiComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
6791    Device.DeviceUdiComponent res = new Device.DeviceUdiComponent();
6792    parseBackboneAttributes(xpp, res);
6793    next(xpp);
6794    int eventType = nextNoWhitespace(xpp);
6795    while (eventType != XmlPullParser.END_TAG) {
6796  if (!parseDeviceDeviceUdiComponentContent(eventType, xpp, owner, res))
6797        unknownContent(xpp);
6798      eventType = nextNoWhitespace(xpp);
6799    }
6800    next(xpp);
6801    parseElementClose(res);
6802    return res;
6803  }
6804
6805  protected boolean parseDeviceDeviceUdiComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceUdiComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6806      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
6807        res.setDeviceIdentifierElement(parseString(xpp));
6808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6809        res.setNameElement(parseString(xpp));
6810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6811        res.setJurisdictionElement(parseUri(xpp));
6812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
6813        res.setCarrierHRFElement(parseString(xpp));
6814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
6815        res.setCarrierAIDCElement(parseBase64Binary(xpp));
6816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
6817        res.setIssuerElement(parseUri(xpp));
6818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
6819        res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
6820      } else if (!parseBackboneElementContent(eventType, xpp, res))
6821        return false;
6822    return true;
6823  }
6824
6825  protected DeviceComponent parseDeviceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6826    DeviceComponent res = new DeviceComponent();
6827    parseDomainResourceAttributes(xpp, res);
6828    next(xpp);
6829    int eventType = nextNoWhitespace(xpp);
6830    while (eventType != XmlPullParser.END_TAG) {
6831  if (!parseDeviceComponentContent(eventType, xpp, res))
6832        unknownContent(xpp);
6833      eventType = nextNoWhitespace(xpp);
6834    }
6835    next(xpp);
6836    parseElementClose(res);
6837    return res;
6838  }
6839
6840  protected boolean parseDeviceComponentContent(int eventType, XmlPullParser xpp, DeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6841      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6842        res.getIdentifier().add(parseIdentifier(xpp));
6843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6844        res.setType(parseCodeableConcept(xpp));
6845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastSystemChange")) {
6846        res.setLastSystemChangeElement(parseInstant(xpp));
6847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6848        res.setSource(parseReference(xpp));
6849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
6850        res.setParent(parseReference(xpp));
6851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
6852        res.getOperationalStatus().add(parseCodeableConcept(xpp));
6853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterGroup")) {
6854        res.setParameterGroup(parseCodeableConcept(xpp));
6855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPrinciple")) {
6856        res.setMeasurementPrincipleElement(parseEnumeration(xpp, DeviceComponent.MeasmntPrinciple.NULL, new DeviceComponent.MeasmntPrincipleEnumFactory()));
6857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpecification")) {
6858        res.getProductionSpecification().add(parseDeviceComponentDeviceComponentProductionSpecificationComponent(xpp, res));
6859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
6860        res.setLanguageCode(parseCodeableConcept(xpp));
6861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
6862        res.getProperty().add(parseDeviceComponentDeviceComponentPropertyComponent(xpp, res));
6863      } else if (!parseDomainResourceContent(eventType, xpp, res))
6864        return false;
6865    return true;
6866  }
6867
6868  protected DeviceComponent.DeviceComponentProductionSpecificationComponent parseDeviceComponentDeviceComponentProductionSpecificationComponent(XmlPullParser xpp, DeviceComponent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6869    DeviceComponent.DeviceComponentProductionSpecificationComponent res = new DeviceComponent.DeviceComponentProductionSpecificationComponent();
6870    parseBackboneAttributes(xpp, res);
6871    next(xpp);
6872    int eventType = nextNoWhitespace(xpp);
6873    while (eventType != XmlPullParser.END_TAG) {
6874  if (!parseDeviceComponentDeviceComponentProductionSpecificationComponentContent(eventType, xpp, owner, res))
6875        unknownContent(xpp);
6876      eventType = nextNoWhitespace(xpp);
6877    }
6878    next(xpp);
6879    parseElementClose(res);
6880    return res;
6881  }
6882
6883  protected boolean parseDeviceComponentDeviceComponentProductionSpecificationComponentContent(int eventType, XmlPullParser xpp, DeviceComponent owner, DeviceComponent.DeviceComponentProductionSpecificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6884      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specType")) {
6885        res.setSpecType(parseCodeableConcept(xpp));
6886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("componentId")) {
6887        res.setComponentId(parseIdentifier(xpp));
6888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpec")) {
6889        res.setProductionSpecElement(parseString(xpp));
6890      } else if (!parseBackboneElementContent(eventType, xpp, res))
6891        return false;
6892    return true;
6893  }
6894
6895  protected DeviceComponent.DeviceComponentPropertyComponent parseDeviceComponentDeviceComponentPropertyComponent(XmlPullParser xpp, DeviceComponent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6896    DeviceComponent.DeviceComponentPropertyComponent res = new DeviceComponent.DeviceComponentPropertyComponent();
6897    parseBackboneAttributes(xpp, res);
6898    next(xpp);
6899    int eventType = nextNoWhitespace(xpp);
6900    while (eventType != XmlPullParser.END_TAG) {
6901  if (!parseDeviceComponentDeviceComponentPropertyComponentContent(eventType, xpp, owner, res))
6902        unknownContent(xpp);
6903      eventType = nextNoWhitespace(xpp);
6904    }
6905    next(xpp);
6906    parseElementClose(res);
6907    return res;
6908  }
6909
6910  protected boolean parseDeviceComponentDeviceComponentPropertyComponentContent(int eventType, XmlPullParser xpp, DeviceComponent owner, DeviceComponent.DeviceComponentPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6911      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6912        res.setType(parseCodeableConcept(xpp));
6913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
6914        res.getValueQuantity().add(parseQuantity(xpp));
6915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
6916        res.getValueCode().add(parseCodeableConcept(xpp));
6917      } else if (!parseBackboneElementContent(eventType, xpp, res))
6918        return false;
6919    return true;
6920  }
6921
6922  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6923    DeviceMetric res = new DeviceMetric();
6924    parseDomainResourceAttributes(xpp, res);
6925    next(xpp);
6926    int eventType = nextNoWhitespace(xpp);
6927    while (eventType != XmlPullParser.END_TAG) {
6928  if (!parseDeviceMetricContent(eventType, xpp, res))
6929        unknownContent(xpp);
6930      eventType = nextNoWhitespace(xpp);
6931    }
6932    next(xpp);
6933    parseElementClose(res);
6934    return res;
6935  }
6936
6937  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
6938      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6939        res.getIdentifier().add(parseIdentifier(xpp));
6940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6941        res.setType(parseCodeableConcept(xpp));
6942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
6943        res.setUnit(parseCodeableConcept(xpp));
6944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6945        res.setSource(parseReference(xpp));
6946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
6947        res.setParent(parseReference(xpp));
6948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
6949        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
6950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
6951        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
6952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6953        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
6954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
6955        res.setMeasurementPeriod(parseTiming(xpp));
6956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
6957        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
6958      } else if (!parseDomainResourceContent(eventType, xpp, res))
6959        return false;
6960    return true;
6961  }
6962
6963  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
6964    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
6965    parseBackboneAttributes(xpp, res);
6966    next(xpp);
6967    int eventType = nextNoWhitespace(xpp);
6968    while (eventType != XmlPullParser.END_TAG) {
6969  if (!parseDeviceMetricDeviceMetricCalibrationComponentContent(eventType, xpp, owner, res))
6970        unknownContent(xpp);
6971      eventType = nextNoWhitespace(xpp);
6972    }
6973    next(xpp);
6974    parseElementClose(res);
6975    return res;
6976  }
6977
6978  protected boolean parseDeviceMetricDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric owner, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6979      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6980        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
6981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
6982        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
6983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
6984        res.setTimeElement(parseInstant(xpp));
6985      } else if (!parseBackboneElementContent(eventType, xpp, res))
6986        return false;
6987    return true;
6988  }
6989
6990  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6991    DeviceRequest res = new DeviceRequest();
6992    parseDomainResourceAttributes(xpp, res);
6993    next(xpp);
6994    int eventType = nextNoWhitespace(xpp);
6995    while (eventType != XmlPullParser.END_TAG) {
6996  if (!parseDeviceRequestContent(eventType, xpp, res))
6997        unknownContent(xpp);
6998      eventType = nextNoWhitespace(xpp);
6999    }
7000    next(xpp);
7001    parseElementClose(res);
7002    return res;
7003  }
7004
7005  protected boolean parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7006      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7007        res.getIdentifier().add(parseIdentifier(xpp));
7008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
7009        res.getInstantiates().add(parseUri(xpp));
7010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
7011        res.getBasedOn().add(parseReference(xpp));
7012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorRequest")) {
7013        res.getPriorRequest().add(parseReference(xpp));
7014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
7015        res.setGroupIdentifier(parseIdentifier(xpp));
7016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7017        res.setStatusElement(parseEnumeration(xpp, DeviceRequest.DeviceRequestStatus.NULL, new DeviceRequest.DeviceRequestStatusEnumFactory()));
7018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
7019        res.setIntent(parseCodeableConcept(xpp));
7020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7021        res.setPriorityElement(parseEnumeration(xpp, DeviceRequest.RequestPriority.NULL, new DeviceRequest.RequestPriorityEnumFactory()));
7022      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "code")) {
7023        res.setCode(parseType("code", xpp));
7024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
7025        res.getParameter().add(parseDeviceRequestDeviceRequestParameterComponent(xpp, res));
7026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7027        res.setSubject(parseReference(xpp));
7028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
7029        res.setContext(parseReference(xpp));
7030      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
7031        res.setOccurrence(parseType("occurrence", xpp));
7032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
7033        res.setAuthoredOnElement(parseDateTime(xpp));
7034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
7035        res.setRequester(parseReference(xpp));
7036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
7037        res.setPerformerType(parseCodeableConcept(xpp));
7038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7039        res.setPerformer(parseReference(xpp));
7040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
7041        res.getReasonCode().add(parseCodeableConcept(xpp));
7042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
7043        res.getReasonReference().add(parseReference(xpp));
7044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7045        res.getInsurance().add(parseReference(xpp));
7046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
7047        res.getSupportingInfo().add(parseReference(xpp));
7048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7049        res.getNote().add(parseAnnotation(xpp));
7050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
7051        res.getRelevantHistory().add(parseReference(xpp));
7052      } else if (!parseDomainResourceContent(eventType, xpp, res))
7053        return false;
7054    return true;
7055  }
7056
7057  protected DeviceRequest.DeviceRequestParameterComponent parseDeviceRequestDeviceRequestParameterComponent(XmlPullParser xpp, DeviceRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7058    DeviceRequest.DeviceRequestParameterComponent res = new DeviceRequest.DeviceRequestParameterComponent();
7059    parseBackboneAttributes(xpp, res);
7060    next(xpp);
7061    int eventType = nextNoWhitespace(xpp);
7062    while (eventType != XmlPullParser.END_TAG) {
7063  if (!parseDeviceRequestDeviceRequestParameterComponentContent(eventType, xpp, owner, res))
7064        unknownContent(xpp);
7065      eventType = nextNoWhitespace(xpp);
7066    }
7067    next(xpp);
7068    parseElementClose(res);
7069    return res;
7070  }
7071
7072  protected boolean parseDeviceRequestDeviceRequestParameterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest owner, DeviceRequest.DeviceRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7074        res.setCode(parseCodeableConcept(xpp));
7075      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7076        res.setValue(parseType("value", xpp));
7077      } else if (!parseBackboneElementContent(eventType, xpp, res))
7078        return false;
7079    return true;
7080  }
7081
7082  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7083    DeviceUseStatement res = new DeviceUseStatement();
7084    parseDomainResourceAttributes(xpp, res);
7085    next(xpp);
7086    int eventType = nextNoWhitespace(xpp);
7087    while (eventType != XmlPullParser.END_TAG) {
7088  if (!parseDeviceUseStatementContent(eventType, xpp, res))
7089        unknownContent(xpp);
7090      eventType = nextNoWhitespace(xpp);
7091    }
7092    next(xpp);
7093    parseElementClose(res);
7094    return res;
7095  }
7096
7097  protected boolean parseDeviceUseStatementContent(int eventType, XmlPullParser xpp, DeviceUseStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
7098      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7099        res.getIdentifier().add(parseIdentifier(xpp));
7100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
7101        res.getBasedOn().add(parseReference(xpp));
7102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7103        res.setStatusElement(parseEnumeration(xpp, DeviceUseStatement.DeviceUseStatementStatus.NULL, new DeviceUseStatement.DeviceUseStatementStatusEnumFactory()));
7104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7105        res.setSubject(parseReference(xpp));
7106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
7107        res.getDerivedFrom().add(parseReference(xpp));
7108      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
7109        res.setTiming(parseType("timing", xpp));
7110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
7111        res.setRecordedOnElement(parseDateTime(xpp));
7112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
7113        res.setSource(parseReference(xpp));
7114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
7115        res.setDevice(parseReference(xpp));
7116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
7117        res.getReasonCode().add(parseCodeableConcept(xpp));
7118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
7119        res.getReasonReference().add(parseReference(xpp));
7120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
7121        res.setBodySite(parseCodeableConcept(xpp));
7122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7123        res.getNote().add(parseAnnotation(xpp));
7124      } else if (!parseDomainResourceContent(eventType, xpp, res))
7125        return false;
7126    return true;
7127  }
7128
7129  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7130    DiagnosticReport res = new DiagnosticReport();
7131    parseDomainResourceAttributes(xpp, res);
7132    next(xpp);
7133    int eventType = nextNoWhitespace(xpp);
7134    while (eventType != XmlPullParser.END_TAG) {
7135  if (!parseDiagnosticReportContent(eventType, xpp, res))
7136        unknownContent(xpp);
7137      eventType = nextNoWhitespace(xpp);
7138    }
7139    next(xpp);
7140    parseElementClose(res);
7141    return res;
7142  }
7143
7144  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
7145      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7146        res.getIdentifier().add(parseIdentifier(xpp));
7147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
7148        res.getBasedOn().add(parseReference(xpp));
7149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7150        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
7151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7152        res.setCategory(parseCodeableConcept(xpp));
7153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7154        res.setCode(parseCodeableConcept(xpp));
7155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7156        res.setSubject(parseReference(xpp));
7157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
7158        res.setContext(parseReference(xpp));
7159      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
7160        res.setEffective(parseType("effective", xpp));
7161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
7162        res.setIssuedElement(parseInstant(xpp));
7163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7164        res.getPerformer().add(parseReference(xpp));
7165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsInterpreter")) {
7166        res.getResultsInterpreter().add(parseReference(xpp));
7167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
7168        res.getSpecimen().add(parseReference(xpp));
7169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
7170        res.getResult().add(parseReference(xpp));
7171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
7172        res.getImagingStudy().add(parseReference(xpp));
7173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
7174        res.getMedia().add(parseDiagnosticReportDiagnosticReportMediaComponent(xpp, res));
7175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
7176        res.setConclusionElement(parseString(xpp));
7177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codedDiagnosis")) {
7178        res.getCodedDiagnosis().add(parseCodeableConcept(xpp));
7179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
7180        res.getPresentedForm().add(parseAttachment(xpp));
7181      } else if (!parseDomainResourceContent(eventType, xpp, res))
7182        return false;
7183    return true;
7184  }
7185
7186  protected DiagnosticReport.DiagnosticReportMediaComponent parseDiagnosticReportDiagnosticReportMediaComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
7187    DiagnosticReport.DiagnosticReportMediaComponent res = new DiagnosticReport.DiagnosticReportMediaComponent();
7188    parseBackboneAttributes(xpp, res);
7189    next(xpp);
7190    int eventType = nextNoWhitespace(xpp);
7191    while (eventType != XmlPullParser.END_TAG) {
7192  if (!parseDiagnosticReportDiagnosticReportMediaComponentContent(eventType, xpp, owner, res))
7193        unknownContent(xpp);
7194      eventType = nextNoWhitespace(xpp);
7195    }
7196    next(xpp);
7197    parseElementClose(res);
7198    return res;
7199  }
7200
7201  protected boolean parseDiagnosticReportDiagnosticReportMediaComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportMediaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7202      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
7203        res.setCommentElement(parseString(xpp));
7204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
7205        res.setLink(parseReference(xpp));
7206      } else if (!parseBackboneElementContent(eventType, xpp, res))
7207        return false;
7208    return true;
7209  }
7210
7211  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7212    DocumentManifest res = new DocumentManifest();
7213    parseDomainResourceAttributes(xpp, res);
7214    next(xpp);
7215    int eventType = nextNoWhitespace(xpp);
7216    while (eventType != XmlPullParser.END_TAG) {
7217  if (!parseDocumentManifestContent(eventType, xpp, res))
7218        unknownContent(xpp);
7219      eventType = nextNoWhitespace(xpp);
7220    }
7221    next(xpp);
7222    parseElementClose(res);
7223    return res;
7224  }
7225
7226  protected boolean parseDocumentManifestContent(int eventType, XmlPullParser xpp, DocumentManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
7227      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
7228        res.setMasterIdentifier(parseIdentifier(xpp));
7229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7230        res.getIdentifier().add(parseIdentifier(xpp));
7231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7232        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
7233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7234        res.setType(parseCodeableConcept(xpp));
7235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7236        res.setSubject(parseReference(xpp));
7237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7238        res.setCreatedElement(parseDateTime(xpp));
7239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
7240        res.getAgent().add(parseDocumentManifestDocumentManifestAgentComponent(xpp, res));
7241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
7242        res.getRecipient().add(parseReference(xpp));
7243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
7244        res.setSourceElement(parseUri(xpp));
7245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7246        res.setDescriptionElement(parseString(xpp));
7247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
7248        res.getContent().add(parseReference(xpp));
7249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
7250        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
7251      } else if (!parseDomainResourceContent(eventType, xpp, res))
7252        return false;
7253    return true;
7254  }
7255
7256  protected DocumentManifest.DocumentManifestAgentComponent parseDocumentManifestDocumentManifestAgentComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7257    DocumentManifest.DocumentManifestAgentComponent res = new DocumentManifest.DocumentManifestAgentComponent();
7258    parseBackboneAttributes(xpp, res);
7259    next(xpp);
7260    int eventType = nextNoWhitespace(xpp);
7261    while (eventType != XmlPullParser.END_TAG) {
7262  if (!parseDocumentManifestDocumentManifestAgentComponentContent(eventType, xpp, owner, res))
7263        unknownContent(xpp);
7264      eventType = nextNoWhitespace(xpp);
7265    }
7266    next(xpp);
7267    parseElementClose(res);
7268    return res;
7269  }
7270
7271  protected boolean parseDocumentManifestDocumentManifestAgentComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7272      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7273        res.setType(parseCodeableConcept(xpp));
7274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
7275        res.setWho(parseReference(xpp));
7276      } else if (!parseBackboneElementContent(eventType, xpp, res))
7277        return false;
7278    return true;
7279  }
7280
7281  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7282    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
7283    parseBackboneAttributes(xpp, res);
7284    next(xpp);
7285    int eventType = nextNoWhitespace(xpp);
7286    while (eventType != XmlPullParser.END_TAG) {
7287  if (!parseDocumentManifestDocumentManifestRelatedComponentContent(eventType, xpp, owner, res))
7288        unknownContent(xpp);
7289      eventType = nextNoWhitespace(xpp);
7290    }
7291    next(xpp);
7292    parseElementClose(res);
7293    return res;
7294  }
7295
7296  protected boolean parseDocumentManifestDocumentManifestRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7298        res.setIdentifier(parseIdentifier(xpp));
7299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
7300        res.setRef(parseReference(xpp));
7301      } else if (!parseBackboneElementContent(eventType, xpp, res))
7302        return false;
7303    return true;
7304  }
7305
7306  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7307    DocumentReference res = new DocumentReference();
7308    parseDomainResourceAttributes(xpp, res);
7309    next(xpp);
7310    int eventType = nextNoWhitespace(xpp);
7311    while (eventType != XmlPullParser.END_TAG) {
7312  if (!parseDocumentReferenceContent(eventType, xpp, res))
7313        unknownContent(xpp);
7314      eventType = nextNoWhitespace(xpp);
7315    }
7316    next(xpp);
7317    parseElementClose(res);
7318    return res;
7319  }
7320
7321  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
7322      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
7323        res.setMasterIdentifier(parseIdentifier(xpp));
7324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7325        res.getIdentifier().add(parseIdentifier(xpp));
7326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7327        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
7328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
7329        res.setDocStatusElement(parseEnumeration(xpp, DocumentReference.ReferredDocumentStatus.NULL, new DocumentReference.ReferredDocumentStatusEnumFactory()));
7330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7331        res.setType(parseCodeableConcept(xpp));
7332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7333        res.setClass_(parseCodeableConcept(xpp));
7334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7335        res.setSubject(parseReference(xpp));
7336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7337        res.setCreatedElement(parseDateTime(xpp));
7338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7339        res.setDateElement(parseInstant(xpp));
7340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
7341        res.getAgent().add(parseDocumentReferenceDocumentReferenceAgentComponent(xpp, res));
7342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
7343        res.setAuthenticator(parseReference(xpp));
7344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
7345        res.setCustodian(parseReference(xpp));
7346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
7347        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
7348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7349        res.setDescriptionElement(parseString(xpp));
7350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
7351        res.getSecurityLabel().add(parseCodeableConcept(xpp));
7352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
7353        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
7354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
7355        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
7356      } else if (!parseDomainResourceContent(eventType, xpp, res))
7357        return false;
7358    return true;
7359  }
7360
7361  protected DocumentReference.DocumentReferenceAgentComponent parseDocumentReferenceDocumentReferenceAgentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7362    DocumentReference.DocumentReferenceAgentComponent res = new DocumentReference.DocumentReferenceAgentComponent();
7363    parseBackboneAttributes(xpp, res);
7364    next(xpp);
7365    int eventType = nextNoWhitespace(xpp);
7366    while (eventType != XmlPullParser.END_TAG) {
7367  if (!parseDocumentReferenceDocumentReferenceAgentComponentContent(eventType, xpp, owner, res))
7368        unknownContent(xpp);
7369      eventType = nextNoWhitespace(xpp);
7370    }
7371    next(xpp);
7372    parseElementClose(res);
7373    return res;
7374  }
7375
7376  protected boolean parseDocumentReferenceDocumentReferenceAgentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7377      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7378        res.setType(parseCodeableConcept(xpp));
7379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
7380        res.setWho(parseReference(xpp));
7381      } else if (!parseBackboneElementContent(eventType, xpp, res))
7382        return false;
7383    return true;
7384  }
7385
7386  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7387    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
7388    parseBackboneAttributes(xpp, res);
7389    next(xpp);
7390    int eventType = nextNoWhitespace(xpp);
7391    while (eventType != XmlPullParser.END_TAG) {
7392  if (!parseDocumentReferenceDocumentReferenceRelatesToComponentContent(eventType, xpp, owner, res))
7393        unknownContent(xpp);
7394      eventType = nextNoWhitespace(xpp);
7395    }
7396    next(xpp);
7397    parseElementClose(res);
7398    return res;
7399  }
7400
7401  protected boolean parseDocumentReferenceDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7402      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7403        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
7404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7405        res.setTarget(parseReference(xpp));
7406      } else if (!parseBackboneElementContent(eventType, xpp, res))
7407        return false;
7408    return true;
7409  }
7410
7411  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7412    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
7413    parseBackboneAttributes(xpp, res);
7414    next(xpp);
7415    int eventType = nextNoWhitespace(xpp);
7416    while (eventType != XmlPullParser.END_TAG) {
7417  if (!parseDocumentReferenceDocumentReferenceContentComponentContent(eventType, xpp, owner, res))
7418        unknownContent(xpp);
7419      eventType = nextNoWhitespace(xpp);
7420    }
7421    next(xpp);
7422    parseElementClose(res);
7423    return res;
7424  }
7425
7426  protected boolean parseDocumentReferenceDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7427      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
7428        res.setAttachment(parseAttachment(xpp));
7429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
7430        res.setFormat(parseCoding(xpp));
7431      } else if (!parseBackboneElementContent(eventType, xpp, res))
7432        return false;
7433    return true;
7434  }
7435
7436  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7437    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
7438    parseBackboneAttributes(xpp, res);
7439    next(xpp);
7440    int eventType = nextNoWhitespace(xpp);
7441    while (eventType != XmlPullParser.END_TAG) {
7442  if (!parseDocumentReferenceDocumentReferenceContextComponentContent(eventType, xpp, owner, res))
7443        unknownContent(xpp);
7444      eventType = nextNoWhitespace(xpp);
7445    }
7446    next(xpp);
7447    parseElementClose(res);
7448    return res;
7449  }
7450
7451  protected boolean parseDocumentReferenceDocumentReferenceContextComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7452      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7453        res.setEncounter(parseReference(xpp));
7454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
7455        res.getEvent().add(parseCodeableConcept(xpp));
7456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7457        res.setPeriod(parsePeriod(xpp));
7458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
7459        res.setFacilityType(parseCodeableConcept(xpp));
7460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
7461        res.setPracticeSetting(parseCodeableConcept(xpp));
7462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
7463        res.setSourcePatientInfo(parseReference(xpp));
7464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
7465        res.getRelated().add(parseDocumentReferenceDocumentReferenceContextRelatedComponent(xpp, owner));
7466      } else if (!parseBackboneElementContent(eventType, xpp, res))
7467        return false;
7468    return true;
7469  }
7470
7471  protected DocumentReference.DocumentReferenceContextRelatedComponent parseDocumentReferenceDocumentReferenceContextRelatedComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7472    DocumentReference.DocumentReferenceContextRelatedComponent res = new DocumentReference.DocumentReferenceContextRelatedComponent();
7473    parseBackboneAttributes(xpp, res);
7474    next(xpp);
7475    int eventType = nextNoWhitespace(xpp);
7476    while (eventType != XmlPullParser.END_TAG) {
7477  if (!parseDocumentReferenceDocumentReferenceContextRelatedComponentContent(eventType, xpp, owner, res))
7478        unknownContent(xpp);
7479      eventType = nextNoWhitespace(xpp);
7480    }
7481    next(xpp);
7482    parseElementClose(res);
7483    return res;
7484  }
7485
7486  protected boolean parseDocumentReferenceDocumentReferenceContextRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7487      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7488        res.setIdentifier(parseIdentifier(xpp));
7489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
7490        res.setRef(parseReference(xpp));
7491      } else if (!parseBackboneElementContent(eventType, xpp, res))
7492        return false;
7493    return true;
7494  }
7495
7496  protected EligibilityRequest parseEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7497    EligibilityRequest res = new EligibilityRequest();
7498    parseDomainResourceAttributes(xpp, res);
7499    next(xpp);
7500    int eventType = nextNoWhitespace(xpp);
7501    while (eventType != XmlPullParser.END_TAG) {
7502  if (!parseEligibilityRequestContent(eventType, xpp, res))
7503        unknownContent(xpp);
7504      eventType = nextNoWhitespace(xpp);
7505    }
7506    next(xpp);
7507    parseElementClose(res);
7508    return res;
7509  }
7510
7511  protected boolean parseEligibilityRequestContent(int eventType, XmlPullParser xpp, EligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7512      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7513        res.getIdentifier().add(parseIdentifier(xpp));
7514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7515        res.setStatusElement(parseEnumeration(xpp, EligibilityRequest.EligibilityRequestStatus.NULL, new EligibilityRequest.EligibilityRequestStatusEnumFactory()));
7516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7517        res.setPriority(parseCodeableConcept(xpp));
7518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7519        res.setPatient(parseReference(xpp));
7520      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7521        res.setServiced(parseType("serviced", xpp));
7522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7523        res.setCreatedElement(parseDateTime(xpp));
7524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
7525        res.setEnterer(parseReference(xpp));
7526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7527        res.setProvider(parseReference(xpp));
7528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7529        res.setInsurer(parseReference(xpp));
7530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7531        res.setFacility(parseReference(xpp));
7532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7533        res.setCoverage(parseReference(xpp));
7534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
7535        res.setBusinessArrangementElement(parseString(xpp));
7536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitCategory")) {
7537        res.setBenefitCategory(parseCodeableConcept(xpp));
7538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitSubCategory")) {
7539        res.setBenefitSubCategory(parseCodeableConcept(xpp));
7540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorization")) {
7541        res.getAuthorization().add(parseEligibilityRequestAuthorizationComponent(xpp, res));
7542      } else if (!parseDomainResourceContent(eventType, xpp, res))
7543        return false;
7544    return true;
7545  }
7546
7547  protected EligibilityRequest.AuthorizationComponent parseEligibilityRequestAuthorizationComponent(XmlPullParser xpp, EligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7548    EligibilityRequest.AuthorizationComponent res = new EligibilityRequest.AuthorizationComponent();
7549    parseBackboneAttributes(xpp, res);
7550    next(xpp);
7551    int eventType = nextNoWhitespace(xpp);
7552    while (eventType != XmlPullParser.END_TAG) {
7553  if (!parseEligibilityRequestAuthorizationComponentContent(eventType, xpp, owner, res))
7554        unknownContent(xpp);
7555      eventType = nextNoWhitespace(xpp);
7556    }
7557    next(xpp);
7558    parseElementClose(res);
7559    return res;
7560  }
7561
7562  protected boolean parseEligibilityRequestAuthorizationComponentContent(int eventType, XmlPullParser xpp, EligibilityRequest owner, EligibilityRequest.AuthorizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7563      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
7564        res.setSequenceElement(parsePositiveInt(xpp));
7565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
7566        res.setService(parseCodeableConcept(xpp));
7567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7568        res.getModifier().add(parseCodeableConcept(xpp));
7569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7570        res.setQuantity(parseSimpleQuantity(xpp));
7571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
7572        res.setUnitPrice(parseMoney(xpp));
7573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7574        res.setFacility(parseReference(xpp));
7575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7576        res.getDiagnosis().add(parseEligibilityRequestDiagnosisComponent(xpp, owner));
7577      } else if (!parseBackboneElementContent(eventType, xpp, res))
7578        return false;
7579    return true;
7580  }
7581
7582  protected EligibilityRequest.DiagnosisComponent parseEligibilityRequestDiagnosisComponent(XmlPullParser xpp, EligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7583    EligibilityRequest.DiagnosisComponent res = new EligibilityRequest.DiagnosisComponent();
7584    parseBackboneAttributes(xpp, res);
7585    next(xpp);
7586    int eventType = nextNoWhitespace(xpp);
7587    while (eventType != XmlPullParser.END_TAG) {
7588  if (!parseEligibilityRequestDiagnosisComponentContent(eventType, xpp, owner, res))
7589        unknownContent(xpp);
7590      eventType = nextNoWhitespace(xpp);
7591    }
7592    next(xpp);
7593    parseElementClose(res);
7594    return res;
7595  }
7596
7597  protected boolean parseEligibilityRequestDiagnosisComponentContent(int eventType, XmlPullParser xpp, EligibilityRequest owner, EligibilityRequest.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7598      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
7599        res.setDiagnosis(parseType("diagnosis", xpp));
7600      } else if (!parseBackboneElementContent(eventType, xpp, res))
7601        return false;
7602    return true;
7603  }
7604
7605  protected EligibilityResponse parseEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7606    EligibilityResponse res = new EligibilityResponse();
7607    parseDomainResourceAttributes(xpp, res);
7608    next(xpp);
7609    int eventType = nextNoWhitespace(xpp);
7610    while (eventType != XmlPullParser.END_TAG) {
7611  if (!parseEligibilityResponseContent(eventType, xpp, res))
7612        unknownContent(xpp);
7613      eventType = nextNoWhitespace(xpp);
7614    }
7615    next(xpp);
7616    parseElementClose(res);
7617    return res;
7618  }
7619
7620  protected boolean parseEligibilityResponseContent(int eventType, XmlPullParser xpp, EligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7621      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7622        res.getIdentifier().add(parseIdentifier(xpp));
7623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7624        res.setStatusElement(parseEnumeration(xpp, EligibilityResponse.EligibilityResponseStatus.NULL, new EligibilityResponse.EligibilityResponseStatusEnumFactory()));
7625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7626        res.setCreatedElement(parseDateTime(xpp));
7627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
7628        res.setRequestProvider(parseReference(xpp));
7629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7630        res.setRequest(parseReference(xpp));
7631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7632        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
7633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7634        res.setDispositionElement(parseString(xpp));
7635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7636        res.setInsurer(parseReference(xpp));
7637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
7638        res.setInforceElement(parseBoolean(xpp));
7639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7640        res.getInsurance().add(parseEligibilityResponseInsuranceComponent(xpp, res));
7641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
7642        res.setPreAuthRefElement(parseString(xpp));
7643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorization")) {
7644        res.getAuthorization().add(parseEligibilityResponseAuthorizationComponent(xpp, res));
7645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
7646        res.setForm(parseCodeableConcept(xpp));
7647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
7648        res.getError().add(parseEligibilityResponseErrorsComponent(xpp, res));
7649      } else if (!parseDomainResourceContent(eventType, xpp, res))
7650        return false;
7651    return true;
7652  }
7653
7654  protected EligibilityResponse.InsuranceComponent parseEligibilityResponseInsuranceComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7655    EligibilityResponse.InsuranceComponent res = new EligibilityResponse.InsuranceComponent();
7656    parseBackboneAttributes(xpp, res);
7657    next(xpp);
7658    int eventType = nextNoWhitespace(xpp);
7659    while (eventType != XmlPullParser.END_TAG) {
7660  if (!parseEligibilityResponseInsuranceComponentContent(eventType, xpp, owner, res))
7661        unknownContent(xpp);
7662      eventType = nextNoWhitespace(xpp);
7663    }
7664    next(xpp);
7665    parseElementClose(res);
7666    return res;
7667  }
7668
7669  protected boolean parseEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7670      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7671        res.setCoverage(parseReference(xpp));
7672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
7673        res.setContract(parseReference(xpp));
7674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
7675        res.getBenefitBalance().add(parseEligibilityResponseBenefitsComponent(xpp, owner));
7676      } else if (!parseBackboneElementContent(eventType, xpp, res))
7677        return false;
7678    return true;
7679  }
7680
7681  protected EligibilityResponse.BenefitsComponent parseEligibilityResponseBenefitsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7682    EligibilityResponse.BenefitsComponent res = new EligibilityResponse.BenefitsComponent();
7683    parseBackboneAttributes(xpp, res);
7684    next(xpp);
7685    int eventType = nextNoWhitespace(xpp);
7686    while (eventType != XmlPullParser.END_TAG) {
7687  if (!parseEligibilityResponseBenefitsComponentContent(eventType, xpp, owner, res))
7688        unknownContent(xpp);
7689      eventType = nextNoWhitespace(xpp);
7690    }
7691    next(xpp);
7692    parseElementClose(res);
7693    return res;
7694  }
7695
7696  protected boolean parseEligibilityResponseBenefitsComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.BenefitsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7697      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7698        res.setCategory(parseCodeableConcept(xpp));
7699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
7700        res.setSubCategory(parseCodeableConcept(xpp));
7701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
7702        res.setExcludedElement(parseBoolean(xpp));
7703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7704        res.setNameElement(parseString(xpp));
7705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7706        res.setDescriptionElement(parseString(xpp));
7707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7708        res.setNetwork(parseCodeableConcept(xpp));
7709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
7710        res.setUnit(parseCodeableConcept(xpp));
7711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
7712        res.setTerm(parseCodeableConcept(xpp));
7713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
7714        res.getFinancial().add(parseEligibilityResponseBenefitComponent(xpp, owner));
7715      } else if (!parseBackboneElementContent(eventType, xpp, res))
7716        return false;
7717    return true;
7718  }
7719
7720  protected EligibilityResponse.BenefitComponent parseEligibilityResponseBenefitComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7721    EligibilityResponse.BenefitComponent res = new EligibilityResponse.BenefitComponent();
7722    parseBackboneAttributes(xpp, res);
7723    next(xpp);
7724    int eventType = nextNoWhitespace(xpp);
7725    while (eventType != XmlPullParser.END_TAG) {
7726  if (!parseEligibilityResponseBenefitComponentContent(eventType, xpp, owner, res))
7727        unknownContent(xpp);
7728      eventType = nextNoWhitespace(xpp);
7729    }
7730    next(xpp);
7731    parseElementClose(res);
7732    return res;
7733  }
7734
7735  protected boolean parseEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7736      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7737        res.setType(parseCodeableConcept(xpp));
7738      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
7739        res.setAllowed(parseType("allowed", xpp));
7740      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
7741        res.setUsed(parseType("used", xpp));
7742      } else if (!parseBackboneElementContent(eventType, xpp, res))
7743        return false;
7744    return true;
7745  }
7746
7747  protected EligibilityResponse.AuthorizationComponent parseEligibilityResponseAuthorizationComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7748    EligibilityResponse.AuthorizationComponent res = new EligibilityResponse.AuthorizationComponent();
7749    parseBackboneAttributes(xpp, res);
7750    next(xpp);
7751    int eventType = nextNoWhitespace(xpp);
7752    while (eventType != XmlPullParser.END_TAG) {
7753  if (!parseEligibilityResponseAuthorizationComponentContent(eventType, xpp, owner, res))
7754        unknownContent(xpp);
7755      eventType = nextNoWhitespace(xpp);
7756    }
7757    next(xpp);
7758    parseElementClose(res);
7759    return res;
7760  }
7761
7762  protected boolean parseEligibilityResponseAuthorizationComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.AuthorizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7763      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationSequence")) {
7764        res.setAuthorizationSequenceElement(parsePositiveInt(xpp));
7765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
7766        res.setRequiredElement(parseBoolean(xpp));
7767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7768        res.getNote().add(parseAnnotation(xpp));
7769      } else if (!parseBackboneElementContent(eventType, xpp, res))
7770        return false;
7771    return true;
7772  }
7773
7774  protected EligibilityResponse.ErrorsComponent parseEligibilityResponseErrorsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7775    EligibilityResponse.ErrorsComponent res = new EligibilityResponse.ErrorsComponent();
7776    parseBackboneAttributes(xpp, res);
7777    next(xpp);
7778    int eventType = nextNoWhitespace(xpp);
7779    while (eventType != XmlPullParser.END_TAG) {
7780  if (!parseEligibilityResponseErrorsComponentContent(eventType, xpp, owner, res))
7781        unknownContent(xpp);
7782      eventType = nextNoWhitespace(xpp);
7783    }
7784    next(xpp);
7785    parseElementClose(res);
7786    return res;
7787  }
7788
7789  protected boolean parseEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7790      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7791        res.setCode(parseCodeableConcept(xpp));
7792      } else if (!parseBackboneElementContent(eventType, xpp, res))
7793        return false;
7794    return true;
7795  }
7796
7797  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7798    Encounter res = new Encounter();
7799    parseDomainResourceAttributes(xpp, res);
7800    next(xpp);
7801    int eventType = nextNoWhitespace(xpp);
7802    while (eventType != XmlPullParser.END_TAG) {
7803  if (!parseEncounterContent(eventType, xpp, res))
7804        unknownContent(xpp);
7805      eventType = nextNoWhitespace(xpp);
7806    }
7807    next(xpp);
7808    parseElementClose(res);
7809    return res;
7810  }
7811
7812  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
7813      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7814        res.getIdentifier().add(parseIdentifier(xpp));
7815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7816        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
7817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
7818        res.getStatusHistory().add(parseEncounterStatusHistoryComponent(xpp, res));
7819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7820        res.setClass_(parseCoding(xpp));
7821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classHistory")) {
7822        res.getClassHistory().add(parseEncounterClassHistoryComponent(xpp, res));
7823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7824        res.getType().add(parseCodeableConcept(xpp));
7825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
7826        res.setServiceType(parseCodeableConcept(xpp));
7827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7828        res.setPriority(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("episodeOfCare")) {
7832        res.getEpisodeOfCare().add(parseReference(xpp));
7833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
7834        res.getBasedOn().add(parseReference(xpp));
7835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
7836        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
7837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
7838        res.setAppointment(parseReference(xpp));
7839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7840        res.setPeriod(parsePeriod(xpp));
7841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
7842        res.setLength(parseDuration(xpp));
7843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7844        res.getReason().add(parseCodeableConcept(xpp));
7845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7846        res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp, res));
7847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
7848        res.getAccount().add(parseReference(xpp));
7849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
7850        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
7851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7852        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
7853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
7854        res.setServiceProvider(parseReference(xpp));
7855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
7856        res.setPartOf(parseReference(xpp));
7857      } else if (!parseDomainResourceContent(eventType, xpp, res))
7858        return false;
7859    return true;
7860  }
7861
7862  protected Encounter.StatusHistoryComponent parseEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7863    Encounter.StatusHistoryComponent res = new Encounter.StatusHistoryComponent();
7864    parseBackboneAttributes(xpp, res);
7865    next(xpp);
7866    int eventType = nextNoWhitespace(xpp);
7867    while (eventType != XmlPullParser.END_TAG) {
7868  if (!parseEncounterStatusHistoryComponentContent(eventType, xpp, owner, res))
7869        unknownContent(xpp);
7870      eventType = nextNoWhitespace(xpp);
7871    }
7872    next(xpp);
7873    parseElementClose(res);
7874    return res;
7875  }
7876
7877  protected boolean parseEncounterStatusHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.StatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7879        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
7880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7881        res.setPeriod(parsePeriod(xpp));
7882      } else if (!parseBackboneElementContent(eventType, xpp, res))
7883        return false;
7884    return true;
7885  }
7886
7887  protected Encounter.ClassHistoryComponent parseEncounterClassHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7888    Encounter.ClassHistoryComponent res = new Encounter.ClassHistoryComponent();
7889    parseBackboneAttributes(xpp, res);
7890    next(xpp);
7891    int eventType = nextNoWhitespace(xpp);
7892    while (eventType != XmlPullParser.END_TAG) {
7893  if (!parseEncounterClassHistoryComponentContent(eventType, xpp, owner, res))
7894        unknownContent(xpp);
7895      eventType = nextNoWhitespace(xpp);
7896    }
7897    next(xpp);
7898    parseElementClose(res);
7899    return res;
7900  }
7901
7902  protected boolean parseEncounterClassHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.ClassHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7904        res.setClass_(parseCoding(xpp));
7905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7906        res.setPeriod(parsePeriod(xpp));
7907      } else if (!parseBackboneElementContent(eventType, xpp, res))
7908        return false;
7909    return true;
7910  }
7911
7912  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7913    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
7914    parseBackboneAttributes(xpp, res);
7915    next(xpp);
7916    int eventType = nextNoWhitespace(xpp);
7917    while (eventType != XmlPullParser.END_TAG) {
7918  if (!parseEncounterEncounterParticipantComponentContent(eventType, xpp, owner, res))
7919        unknownContent(xpp);
7920      eventType = nextNoWhitespace(xpp);
7921    }
7922    next(xpp);
7923    parseElementClose(res);
7924    return res;
7925  }
7926
7927  protected boolean parseEncounterEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7928      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7929        res.getType().add(parseCodeableConcept(xpp));
7930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7931        res.setPeriod(parsePeriod(xpp));
7932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
7933        res.setIndividual(parseReference(xpp));
7934      } else if (!parseBackboneElementContent(eventType, xpp, res))
7935        return false;
7936    return true;
7937  }
7938
7939  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7940    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
7941    parseBackboneAttributes(xpp, res);
7942    next(xpp);
7943    int eventType = nextNoWhitespace(xpp);
7944    while (eventType != XmlPullParser.END_TAG) {
7945  if (!parseEncounterDiagnosisComponentContent(eventType, xpp, owner, res))
7946        unknownContent(xpp);
7947      eventType = nextNoWhitespace(xpp);
7948    }
7949    next(xpp);
7950    parseElementClose(res);
7951    return res;
7952  }
7953
7954  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7955      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
7956        res.setCondition(parseReference(xpp));
7957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7958        res.setRole(parseCodeableConcept(xpp));
7959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
7960        res.setRankElement(parsePositiveInt(xpp));
7961      } else if (!parseBackboneElementContent(eventType, xpp, res))
7962        return false;
7963    return true;
7964  }
7965
7966  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7967    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
7968    parseBackboneAttributes(xpp, res);
7969    next(xpp);
7970    int eventType = nextNoWhitespace(xpp);
7971    while (eventType != XmlPullParser.END_TAG) {
7972  if (!parseEncounterEncounterHospitalizationComponentContent(eventType, xpp, owner, res))
7973        unknownContent(xpp);
7974      eventType = nextNoWhitespace(xpp);
7975    }
7976    next(xpp);
7977    parseElementClose(res);
7978    return res;
7979  }
7980
7981  protected boolean parseEncounterEncounterHospitalizationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterHospitalizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7982      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
7983        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
7984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
7985        res.setOrigin(parseReference(xpp));
7986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
7987        res.setAdmitSource(parseCodeableConcept(xpp));
7988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
7989        res.setReAdmission(parseCodeableConcept(xpp));
7990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
7991        res.getDietPreference().add(parseCodeableConcept(xpp));
7992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
7993        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
7994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
7995        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
7996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
7997        res.setDestination(parseReference(xpp));
7998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
7999        res.setDischargeDisposition(parseCodeableConcept(xpp));
8000      } else if (!parseBackboneElementContent(eventType, xpp, res))
8001        return false;
8002    return true;
8003  }
8004
8005  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8006    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
8007    parseBackboneAttributes(xpp, res);
8008    next(xpp);
8009    int eventType = nextNoWhitespace(xpp);
8010    while (eventType != XmlPullParser.END_TAG) {
8011  if (!parseEncounterEncounterLocationComponentContent(eventType, xpp, owner, res))
8012        unknownContent(xpp);
8013      eventType = nextNoWhitespace(xpp);
8014    }
8015    next(xpp);
8016    parseElementClose(res);
8017    return res;
8018  }
8019
8020  protected boolean parseEncounterEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8021      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8022        res.setLocation(parseReference(xpp));
8023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8024        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
8025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8026        res.setPeriod(parsePeriod(xpp));
8027      } else if (!parseBackboneElementContent(eventType, xpp, res))
8028        return false;
8029    return true;
8030  }
8031
8032  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8033    Endpoint res = new Endpoint();
8034    parseDomainResourceAttributes(xpp, res);
8035    next(xpp);
8036    int eventType = nextNoWhitespace(xpp);
8037    while (eventType != XmlPullParser.END_TAG) {
8038  if (!parseEndpointContent(eventType, xpp, res))
8039        unknownContent(xpp);
8040      eventType = nextNoWhitespace(xpp);
8041    }
8042    next(xpp);
8043    parseElementClose(res);
8044    return res;
8045  }
8046
8047  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
8048      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8049        res.getIdentifier().add(parseIdentifier(xpp));
8050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8051        res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
8052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
8053        res.setConnectionType(parseCoding(xpp));
8054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8055        res.setNameElement(parseString(xpp));
8056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
8057        res.setManagingOrganization(parseReference(xpp));
8058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8059        res.getContact().add(parseContactPoint(xpp));
8060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8061        res.setPeriod(parsePeriod(xpp));
8062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadType")) {
8063        res.getPayloadType().add(parseCodeableConcept(xpp));
8064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadMimeType")) {
8065        res.getPayloadMimeType().add(parseCode(xpp));
8066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
8067        res.setAddressElement(parseUrl(xpp));
8068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
8069        res.getHeader().add(parseString(xpp));
8070      } else if (!parseDomainResourceContent(eventType, xpp, res))
8071        return false;
8072    return true;
8073  }
8074
8075  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8076    EnrollmentRequest res = new EnrollmentRequest();
8077    parseDomainResourceAttributes(xpp, res);
8078    next(xpp);
8079    int eventType = nextNoWhitespace(xpp);
8080    while (eventType != XmlPullParser.END_TAG) {
8081  if (!parseEnrollmentRequestContent(eventType, xpp, res))
8082        unknownContent(xpp);
8083      eventType = nextNoWhitespace(xpp);
8084    }
8085    next(xpp);
8086    parseElementClose(res);
8087    return res;
8088  }
8089
8090  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
8091      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8092        res.getIdentifier().add(parseIdentifier(xpp));
8093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8094        res.setStatusElement(parseEnumeration(xpp, EnrollmentRequest.EnrollmentRequestStatus.NULL, new EnrollmentRequest.EnrollmentRequestStatusEnumFactory()));
8095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8096        res.setCreatedElement(parseDateTime(xpp));
8097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
8098        res.setInsurer(parseReference(xpp));
8099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8100        res.setProvider(parseReference(xpp));
8101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("candidate")) {
8102        res.setCandidate(parseReference(xpp));
8103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
8104        res.setCoverage(parseReference(xpp));
8105      } else if (!parseDomainResourceContent(eventType, xpp, res))
8106        return false;
8107    return true;
8108  }
8109
8110  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8111    EnrollmentResponse res = new EnrollmentResponse();
8112    parseDomainResourceAttributes(xpp, res);
8113    next(xpp);
8114    int eventType = nextNoWhitespace(xpp);
8115    while (eventType != XmlPullParser.END_TAG) {
8116  if (!parseEnrollmentResponseContent(eventType, xpp, res))
8117        unknownContent(xpp);
8118      eventType = nextNoWhitespace(xpp);
8119    }
8120    next(xpp);
8121    parseElementClose(res);
8122    return res;
8123  }
8124
8125  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
8126      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8127        res.getIdentifier().add(parseIdentifier(xpp));
8128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8129        res.setStatusElement(parseEnumeration(xpp, EnrollmentResponse.EnrollmentResponseStatus.NULL, new EnrollmentResponse.EnrollmentResponseStatusEnumFactory()));
8130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8131        res.setRequest(parseReference(xpp));
8132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8133        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
8134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8135        res.setDispositionElement(parseString(xpp));
8136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8137        res.setCreatedElement(parseDateTime(xpp));
8138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8139        res.setOrganization(parseReference(xpp));
8140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
8141        res.setRequestProvider(parseReference(xpp));
8142      } else if (!parseDomainResourceContent(eventType, xpp, res))
8143        return false;
8144    return true;
8145  }
8146
8147  protected EntryDefinition parseEntryDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8148    EntryDefinition res = new EntryDefinition();
8149    parseDomainResourceAttributes(xpp, res);
8150    next(xpp);
8151    int eventType = nextNoWhitespace(xpp);
8152    while (eventType != XmlPullParser.END_TAG) {
8153  if (!parseEntryDefinitionContent(eventType, xpp, res))
8154        unknownContent(xpp);
8155      eventType = nextNoWhitespace(xpp);
8156    }
8157    next(xpp);
8158    parseElementClose(res);
8159    return res;
8160  }
8161
8162  protected boolean parseEntryDefinitionContent(int eventType, XmlPullParser xpp, EntryDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
8163      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8164        res.setType(parseCodeableConcept(xpp));
8165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8166        res.setPurpose(parseCodeableConcept(xpp));
8167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedItem")) {
8168        res.setReferencedItem(parseReference(xpp));
8169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8170        res.setIdentifier(parseIdentifier(xpp));
8171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalIdentifier")) {
8172        res.getAdditionalIdentifier().add(parseIdentifier(xpp));
8173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
8174        res.getClassification().add(parseCodeableConcept(xpp));
8175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8176        res.setStatus(parseCodeableConcept(xpp));
8177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
8178        res.setValidityPeriod(parsePeriod(xpp));
8179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
8180        res.setLastUpdatedElement(parseDateTime(xpp));
8181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalCharacteristic")) {
8182        res.getAdditionalCharacteristic().add(parseCodeableConcept(xpp));
8183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalClassification")) {
8184        res.getAdditionalClassification().add(parseCodeableConcept(xpp));
8185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedEntry")) {
8186        res.getRelatedEntry().add(parseEntryDefinitionEntryDefinitionRelatedEntryComponent(xpp, res));
8187      } else if (!parseDomainResourceContent(eventType, xpp, res))
8188        return false;
8189    return true;
8190  }
8191
8192  protected EntryDefinition.EntryDefinitionRelatedEntryComponent parseEntryDefinitionEntryDefinitionRelatedEntryComponent(XmlPullParser xpp, EntryDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8193    EntryDefinition.EntryDefinitionRelatedEntryComponent res = new EntryDefinition.EntryDefinitionRelatedEntryComponent();
8194    parseBackboneAttributes(xpp, res);
8195    next(xpp);
8196    int eventType = nextNoWhitespace(xpp);
8197    while (eventType != XmlPullParser.END_TAG) {
8198  if (!parseEntryDefinitionEntryDefinitionRelatedEntryComponentContent(eventType, xpp, owner, res))
8199        unknownContent(xpp);
8200      eventType = nextNoWhitespace(xpp);
8201    }
8202    next(xpp);
8203    parseElementClose(res);
8204    return res;
8205  }
8206
8207  protected boolean parseEntryDefinitionEntryDefinitionRelatedEntryComponentContent(int eventType, XmlPullParser xpp, EntryDefinition owner, EntryDefinition.EntryDefinitionRelatedEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8208      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationtype")) {
8209        res.setRelationtype(parseCodeableConcept(xpp));
8210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8211        res.setItem(parseReference(xpp));
8212      } else if (!parseBackboneElementContent(eventType, xpp, res))
8213        return false;
8214    return true;
8215  }
8216
8217  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8218    EpisodeOfCare res = new EpisodeOfCare();
8219    parseDomainResourceAttributes(xpp, res);
8220    next(xpp);
8221    int eventType = nextNoWhitespace(xpp);
8222    while (eventType != XmlPullParser.END_TAG) {
8223  if (!parseEpisodeOfCareContent(eventType, xpp, res))
8224        unknownContent(xpp);
8225      eventType = nextNoWhitespace(xpp);
8226    }
8227    next(xpp);
8228    parseElementClose(res);
8229    return res;
8230  }
8231
8232  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
8233      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8234        res.getIdentifier().add(parseIdentifier(xpp));
8235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8236        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
8237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
8238        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
8239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8240        res.getType().add(parseCodeableConcept(xpp));
8241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
8242        res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp, res));
8243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8244        res.setPatient(parseReference(xpp));
8245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
8246        res.setManagingOrganization(parseReference(xpp));
8247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8248        res.setPeriod(parsePeriod(xpp));
8249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
8250        res.getReferralRequest().add(parseReference(xpp));
8251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
8252        res.setCareManager(parseReference(xpp));
8253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
8254        res.getTeam().add(parseReference(xpp));
8255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
8256        res.getAccount().add(parseReference(xpp));
8257      } else if (!parseDomainResourceContent(eventType, xpp, res))
8258        return false;
8259    return true;
8260  }
8261
8262  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
8263    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
8264    parseBackboneAttributes(xpp, res);
8265    next(xpp);
8266    int eventType = nextNoWhitespace(xpp);
8267    while (eventType != XmlPullParser.END_TAG) {
8268  if (!parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, owner, res))
8269        unknownContent(xpp);
8270      eventType = nextNoWhitespace(xpp);
8271    }
8272    next(xpp);
8273    parseElementClose(res);
8274    return res;
8275  }
8276
8277  protected boolean parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8278      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8279        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
8280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8281        res.setPeriod(parsePeriod(xpp));
8282      } else if (!parseBackboneElementContent(eventType, xpp, res))
8283        return false;
8284    return true;
8285  }
8286
8287  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
8288    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
8289    parseBackboneAttributes(xpp, res);
8290    next(xpp);
8291    int eventType = nextNoWhitespace(xpp);
8292    while (eventType != XmlPullParser.END_TAG) {
8293  if (!parseEpisodeOfCareDiagnosisComponentContent(eventType, xpp, owner, res))
8294        unknownContent(xpp);
8295      eventType = nextNoWhitespace(xpp);
8296    }
8297    next(xpp);
8298    parseElementClose(res);
8299    return res;
8300  }
8301
8302  protected boolean parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8303      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
8304        res.setCondition(parseReference(xpp));
8305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8306        res.setRole(parseCodeableConcept(xpp));
8307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
8308        res.setRankElement(parsePositiveInt(xpp));
8309      } else if (!parseBackboneElementContent(eventType, xpp, res))
8310        return false;
8311    return true;
8312  }
8313
8314  protected EventDefinition parseEventDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8315    EventDefinition res = new EventDefinition();
8316    parseDomainResourceAttributes(xpp, res);
8317    next(xpp);
8318    int eventType = nextNoWhitespace(xpp);
8319    while (eventType != XmlPullParser.END_TAG) {
8320  if (!parseEventDefinitionContent(eventType, xpp, res))
8321        unknownContent(xpp);
8322      eventType = nextNoWhitespace(xpp);
8323    }
8324    next(xpp);
8325    parseElementClose(res);
8326    return res;
8327  }
8328
8329  protected boolean parseEventDefinitionContent(int eventType, XmlPullParser xpp, EventDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
8330      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8331        res.setUrlElement(parseUri(xpp));
8332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8333        res.getIdentifier().add(parseIdentifier(xpp));
8334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8335        res.setVersionElement(parseString(xpp));
8336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8337        res.setNameElement(parseString(xpp));
8338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8339        res.setTitleElement(parseString(xpp));
8340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
8341        res.setSubtitleElement(parseString(xpp));
8342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8343        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8345        res.setExperimentalElement(parseBoolean(xpp));
8346      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
8347        res.setSubject(parseType("subject", xpp));
8348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8349        res.setDateElement(parseDateTime(xpp));
8350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8351        res.setPublisherElement(parseString(xpp));
8352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8353        res.getContact().add(parseContactDetail(xpp));
8354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8355        res.setDescriptionElement(parseMarkdown(xpp));
8356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8357        res.getUseContext().add(parseUsageContext(xpp));
8358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8359        res.getJurisdiction().add(parseCodeableConcept(xpp));
8360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8361        res.setPurposeElement(parseMarkdown(xpp));
8362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
8363        res.setUsageElement(parseString(xpp));
8364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
8365        res.setCopyrightElement(parseMarkdown(xpp));
8366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
8367        res.setApprovalDateElement(parseDate(xpp));
8368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
8369        res.setLastReviewDateElement(parseDate(xpp));
8370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
8371        res.setEffectivePeriod(parsePeriod(xpp));
8372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
8373        res.getTopic().add(parseCodeableConcept(xpp));
8374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
8375        res.getContributor().add(parseContributor(xpp));
8376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
8377        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
8378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
8379        res.setTrigger(parseTriggerDefinition(xpp));
8380      } else if (!parseDomainResourceContent(eventType, xpp, res))
8381        return false;
8382    return true;
8383  }
8384
8385  protected ExampleScenario parseExampleScenario(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8386    ExampleScenario res = new ExampleScenario();
8387    parseDomainResourceAttributes(xpp, res);
8388    next(xpp);
8389    int eventType = nextNoWhitespace(xpp);
8390    while (eventType != XmlPullParser.END_TAG) {
8391  if (!parseExampleScenarioContent(eventType, xpp, res))
8392        unknownContent(xpp);
8393      eventType = nextNoWhitespace(xpp);
8394    }
8395    next(xpp);
8396    parseElementClose(res);
8397    return res;
8398  }
8399
8400  protected boolean parseExampleScenarioContent(int eventType, XmlPullParser xpp, ExampleScenario res) throws XmlPullParserException, IOException, FHIRFormatError {
8401      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8402        res.setUrlElement(parseUri(xpp));
8403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8404        res.getIdentifier().add(parseIdentifier(xpp));
8405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8406        res.setVersionElement(parseString(xpp));
8407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8408        res.setNameElement(parseString(xpp));
8409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8410        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8412        res.setExperimentalElement(parseBoolean(xpp));
8413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8414        res.setDateElement(parseDateTime(xpp));
8415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8416        res.setPublisherElement(parseString(xpp));
8417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8418        res.getContact().add(parseContactDetail(xpp));
8419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8420        res.getUseContext().add(parseUsageContext(xpp));
8421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8422        res.getJurisdiction().add(parseCodeableConcept(xpp));
8423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
8424        res.setCopyrightElement(parseMarkdown(xpp));
8425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8426        res.setPurposeElement(parseMarkdown(xpp));
8427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
8428        res.getActor().add(parseExampleScenarioExampleScenarioActorComponent(xpp, res));
8429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
8430        res.getInstance().add(parseExampleScenarioExampleScenarioInstanceComponent(xpp, res));
8431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
8432        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, res));
8433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workflow")) {
8434        res.getWorkflow().add(parseCanonical(xpp));
8435      } else if (!parseDomainResourceContent(eventType, xpp, res))
8436        return false;
8437    return true;
8438  }
8439
8440  protected ExampleScenario.ExampleScenarioActorComponent parseExampleScenarioExampleScenarioActorComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
8441    ExampleScenario.ExampleScenarioActorComponent res = new ExampleScenario.ExampleScenarioActorComponent();
8442    parseBackboneAttributes(xpp, res);
8443    next(xpp);
8444    int eventType = nextNoWhitespace(xpp);
8445    while (eventType != XmlPullParser.END_TAG) {
8446  if (!parseExampleScenarioExampleScenarioActorComponentContent(eventType, xpp, owner, res))
8447        unknownContent(xpp);
8448      eventType = nextNoWhitespace(xpp);
8449    }
8450    next(xpp);
8451    parseElementClose(res);
8452    return res;
8453  }
8454
8455  protected boolean parseExampleScenarioExampleScenarioActorComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8456      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actorId")) {
8457        res.setActorIdElement(parseString(xpp));
8458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8459        res.setTypeElement(parseEnumeration(xpp, ExampleScenario.ExampleScenarioActorType.NULL, new ExampleScenario.ExampleScenarioActorTypeEnumFactory()));
8460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8461        res.setNameElement(parseString(xpp));
8462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8463        res.setDescriptionElement(parseMarkdown(xpp));
8464      } else if (!parseBackboneElementContent(eventType, xpp, res))
8465        return false;
8466    return true;
8467  }
8468
8469  protected ExampleScenario.ExampleScenarioInstanceComponent parseExampleScenarioExampleScenarioInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
8470    ExampleScenario.ExampleScenarioInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceComponent();
8471    parseBackboneAttributes(xpp, res);
8472    next(xpp);
8473    int eventType = nextNoWhitespace(xpp);
8474    while (eventType != XmlPullParser.END_TAG) {
8475  if (!parseExampleScenarioExampleScenarioInstanceComponentContent(eventType, xpp, owner, res))
8476        unknownContent(xpp);
8477      eventType = nextNoWhitespace(xpp);
8478    }
8479    next(xpp);
8480    parseElementClose(res);
8481    return res;
8482  }
8483
8484  protected boolean parseExampleScenarioExampleScenarioInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8485      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
8486        res.setResourceIdElement(parseString(xpp));
8487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
8488        res.setResourceTypeElement(parseEnumeration(xpp, ExampleScenario.FHIRResourceType.NULL, new ExampleScenario.FHIRResourceTypeEnumFactory()));
8489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8490        res.setNameElement(parseString(xpp));
8491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8492        res.setDescriptionElement(parseMarkdown(xpp));
8493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8494        res.getVersion().add(parseExampleScenarioExampleScenarioInstanceVersionComponent(xpp, owner));
8495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedInstance")) {
8496        res.getContainedInstance().add(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
8497      } else if (!parseBackboneElementContent(eventType, xpp, res))
8498        return false;
8499    return true;
8500  }
8501
8502  protected ExampleScenario.ExampleScenarioInstanceVersionComponent parseExampleScenarioExampleScenarioInstanceVersionComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
8503    ExampleScenario.ExampleScenarioInstanceVersionComponent res = new ExampleScenario.ExampleScenarioInstanceVersionComponent();
8504    parseBackboneAttributes(xpp, res);
8505    next(xpp);
8506    int eventType = nextNoWhitespace(xpp);
8507    while (eventType != XmlPullParser.END_TAG) {
8508  if (!parseExampleScenarioExampleScenarioInstanceVersionComponentContent(eventType, xpp, owner, res))
8509        unknownContent(xpp);
8510      eventType = nextNoWhitespace(xpp);
8511    }
8512    next(xpp);
8513    parseElementClose(res);
8514    return res;
8515  }
8516
8517  protected boolean parseExampleScenarioExampleScenarioInstanceVersionComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8518      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
8519        res.setVersionIdElement(parseString(xpp));
8520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8521        res.setDescriptionElement(parseMarkdown(xpp));
8522      } else if (!parseBackboneElementContent(eventType, xpp, res))
8523        return false;
8524    return true;
8525  }
8526
8527  protected ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
8528    ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent();
8529    parseBackboneAttributes(xpp, res);
8530    next(xpp);
8531    int eventType = nextNoWhitespace(xpp);
8532    while (eventType != XmlPullParser.END_TAG) {
8533  if (!parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(eventType, xpp, owner, res))
8534        unknownContent(xpp);
8535      eventType = nextNoWhitespace(xpp);
8536    }
8537    next(xpp);
8538    parseElementClose(res);
8539    return res;
8540  }
8541
8542  protected boolean parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8543      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
8544        res.setResourceIdElement(parseString(xpp));
8545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
8546        res.setVersionIdElement(parseString(xpp));
8547      } else if (!parseBackboneElementContent(eventType, xpp, res))
8548        return false;
8549    return true;
8550  }
8551
8552  protected ExampleScenario.ExampleScenarioProcessComponent parseExampleScenarioExampleScenarioProcessComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
8553    ExampleScenario.ExampleScenarioProcessComponent res = new ExampleScenario.ExampleScenarioProcessComponent();
8554    parseBackboneAttributes(xpp, res);
8555    next(xpp);
8556    int eventType = nextNoWhitespace(xpp);
8557    while (eventType != XmlPullParser.END_TAG) {
8558  if (!parseExampleScenarioExampleScenarioProcessComponentContent(eventType, xpp, owner, res))
8559        unknownContent(xpp);
8560      eventType = nextNoWhitespace(xpp);
8561    }
8562    next(xpp);
8563    parseElementClose(res);
8564    return res;
8565  }
8566
8567  protected boolean parseExampleScenarioExampleScenarioProcessComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8569        res.setTitleElement(parseString(xpp));
8570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8571        res.setDescriptionElement(parseMarkdown(xpp));
8572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preConditions")) {
8573        res.setPreConditionsElement(parseMarkdown(xpp));
8574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postConditions")) {
8575        res.setPostConditionsElement(parseMarkdown(xpp));
8576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
8577        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
8578      } else if (!parseBackboneElementContent(eventType, xpp, res))
8579        return false;
8580    return true;
8581  }
8582
8583  protected ExampleScenario.ExampleScenarioProcessStepComponent parseExampleScenarioExampleScenarioProcessStepComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
8584    ExampleScenario.ExampleScenarioProcessStepComponent res = new ExampleScenario.ExampleScenarioProcessStepComponent();
8585    parseBackboneAttributes(xpp, res);
8586    next(xpp);
8587    int eventType = nextNoWhitespace(xpp);
8588    while (eventType != XmlPullParser.END_TAG) {
8589  if (!parseExampleScenarioExampleScenarioProcessStepComponentContent(eventType, xpp, owner, res))
8590        unknownContent(xpp);
8591      eventType = nextNoWhitespace(xpp);
8592    }
8593    next(xpp);
8594    parseElementClose(res);
8595    return res;
8596  }
8597
8598  protected boolean parseExampleScenarioExampleScenarioProcessStepComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8599      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
8600        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, owner));
8601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pause")) {
8602        res.setPauseElement(parseBoolean(xpp));
8603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
8604        res.setOperation(parseExampleScenarioExampleScenarioProcessStepOperationComponent(xpp, owner));
8605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternative")) {
8606        res.setAlternative(parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(xpp, owner));
8607      } else if (!parseBackboneElementContent(eventType, xpp, res))
8608        return false;
8609    return true;
8610  }
8611
8612  protected ExampleScenario.ExampleScenarioProcessStepOperationComponent parseExampleScenarioExampleScenarioProcessStepOperationComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
8613    ExampleScenario.ExampleScenarioProcessStepOperationComponent res = new ExampleScenario.ExampleScenarioProcessStepOperationComponent();
8614    parseBackboneAttributes(xpp, res);
8615    next(xpp);
8616    int eventType = nextNoWhitespace(xpp);
8617    while (eventType != XmlPullParser.END_TAG) {
8618  if (!parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(eventType, xpp, owner, res))
8619        unknownContent(xpp);
8620      eventType = nextNoWhitespace(xpp);
8621    }
8622    next(xpp);
8623    parseElementClose(res);
8624    return res;
8625  }
8626
8627  protected boolean parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8628      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
8629        res.setNumberElement(parseString(xpp));
8630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8631        res.setTypeElement(parseString(xpp));
8632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8633        res.setNameElement(parseString(xpp));
8634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiator")) {
8635        res.setInitiatorElement(parseString(xpp));
8636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
8637        res.setReceiverElement(parseString(xpp));
8638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8639        res.setDescriptionElement(parseMarkdown(xpp));
8640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiatorActive")) {
8641        res.setInitiatorActiveElement(parseBoolean(xpp));
8642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiverActive")) {
8643        res.setReceiverActiveElement(parseBoolean(xpp));
8644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8645        res.setRequest(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
8646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
8647        res.setResponse(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
8648      } else if (!parseBackboneElementContent(eventType, xpp, res))
8649        return false;
8650    return true;
8651  }
8652
8653  protected ExampleScenario.ExampleScenarioProcessStepAlternativeComponent parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
8654    ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res = new ExampleScenario.ExampleScenarioProcessStepAlternativeComponent();
8655    parseBackboneAttributes(xpp, res);
8656    next(xpp);
8657    int eventType = nextNoWhitespace(xpp);
8658    while (eventType != XmlPullParser.END_TAG) {
8659  if (!parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(eventType, xpp, owner, res))
8660        unknownContent(xpp);
8661      eventType = nextNoWhitespace(xpp);
8662    }
8663    next(xpp);
8664    parseElementClose(res);
8665    return res;
8666  }
8667
8668  protected boolean parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8669      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8670        res.setNameElement(parseString(xpp));
8671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
8672        res.getOption().add(parseExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(xpp, owner));
8673      } else if (!parseBackboneElementContent(eventType, xpp, res))
8674        return false;
8675    return true;
8676  }
8677
8678  protected ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent parseExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
8679    ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent res = new ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent();
8680    parseBackboneAttributes(xpp, res);
8681    next(xpp);
8682    int eventType = nextNoWhitespace(xpp);
8683    while (eventType != XmlPullParser.END_TAG) {
8684  if (!parseExampleScenarioExampleScenarioProcessStepAlternativeOptionComponentContent(eventType, xpp, owner, res))
8685        unknownContent(xpp);
8686      eventType = nextNoWhitespace(xpp);
8687    }
8688    next(xpp);
8689    parseElementClose(res);
8690    return res;
8691  }
8692
8693  protected boolean parseExampleScenarioExampleScenarioProcessStepAlternativeOptionComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8694      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8695        res.setDescriptionElement(parseMarkdown(xpp));
8696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
8697        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
8698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pause")) {
8699        res.getPause().add(parseBoolean(xpp));
8700      } else if (!parseBackboneElementContent(eventType, xpp, res))
8701        return false;
8702    return true;
8703  }
8704
8705  protected ExpansionProfile parseExpansionProfile(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8706    ExpansionProfile res = new ExpansionProfile();
8707    parseDomainResourceAttributes(xpp, res);
8708    next(xpp);
8709    int eventType = nextNoWhitespace(xpp);
8710    while (eventType != XmlPullParser.END_TAG) {
8711  if (!parseExpansionProfileContent(eventType, xpp, res))
8712        unknownContent(xpp);
8713      eventType = nextNoWhitespace(xpp);
8714    }
8715    next(xpp);
8716    parseElementClose(res);
8717    return res;
8718  }
8719
8720  protected boolean parseExpansionProfileContent(int eventType, XmlPullParser xpp, ExpansionProfile res) throws XmlPullParserException, IOException, FHIRFormatError {
8721      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8722        res.setUrlElement(parseUri(xpp));
8723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8724        res.setIdentifier(parseIdentifier(xpp));
8725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8726        res.setVersionElement(parseString(xpp));
8727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8728        res.setNameElement(parseString(xpp));
8729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8730        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8732        res.setExperimentalElement(parseBoolean(xpp));
8733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8734        res.setDateElement(parseDateTime(xpp));
8735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8736        res.setPublisherElement(parseString(xpp));
8737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8738        res.getContact().add(parseContactDetail(xpp));
8739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8740        res.setDescriptionElement(parseMarkdown(xpp));
8741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8742        res.getUseContext().add(parseUsageContext(xpp));
8743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8744        res.getJurisdiction().add(parseCodeableConcept(xpp));
8745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixedVersion")) {
8746        res.getFixedVersion().add(parseExpansionProfileExpansionProfileFixedVersionComponent(xpp, res));
8747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludedSystem")) {
8748        res.setExcludedSystem(parseExpansionProfileExpansionProfileExcludedSystemComponent(xpp, res));
8749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDesignations")) {
8750        res.setIncludeDesignationsElement(parseBoolean(xpp));
8751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
8752        res.setDesignation(parseExpansionProfileExpansionProfileDesignationComponent(xpp, res));
8753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDefinition")) {
8754        res.setIncludeDefinitionElement(parseBoolean(xpp));
8755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activeOnly")) {
8756        res.setActiveOnlyElement(parseBoolean(xpp));
8757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNested")) {
8758        res.setExcludeNestedElement(parseBoolean(xpp));
8759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNotForUI")) {
8760        res.setExcludeNotForUIElement(parseBoolean(xpp));
8761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludePostCoordinated")) {
8762        res.setExcludePostCoordinatedElement(parseBoolean(xpp));
8763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("displayLanguage")) {
8764        res.setDisplayLanguageElement(parseCode(xpp));
8765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limitedExpansion")) {
8766        res.setLimitedExpansionElement(parseBoolean(xpp));
8767      } else if (!parseDomainResourceContent(eventType, xpp, res))
8768        return false;
8769    return true;
8770  }
8771
8772  protected ExpansionProfile.ExpansionProfileFixedVersionComponent parseExpansionProfileExpansionProfileFixedVersionComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
8773    ExpansionProfile.ExpansionProfileFixedVersionComponent res = new ExpansionProfile.ExpansionProfileFixedVersionComponent();
8774    parseBackboneAttributes(xpp, res);
8775    next(xpp);
8776    int eventType = nextNoWhitespace(xpp);
8777    while (eventType != XmlPullParser.END_TAG) {
8778  if (!parseExpansionProfileExpansionProfileFixedVersionComponentContent(eventType, xpp, owner, res))
8779        unknownContent(xpp);
8780      eventType = nextNoWhitespace(xpp);
8781    }
8782    next(xpp);
8783    parseElementClose(res);
8784    return res;
8785  }
8786
8787  protected boolean parseExpansionProfileExpansionProfileFixedVersionComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileFixedVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8788      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
8789        res.setSystemElement(parseUri(xpp));
8790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8791        res.setVersionElement(parseString(xpp));
8792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
8793        res.setModeElement(parseEnumeration(xpp, ExpansionProfile.SystemVersionProcessingMode.NULL, new ExpansionProfile.SystemVersionProcessingModeEnumFactory()));
8794      } else if (!parseBackboneElementContent(eventType, xpp, res))
8795        return false;
8796    return true;
8797  }
8798
8799  protected ExpansionProfile.ExpansionProfileExcludedSystemComponent parseExpansionProfileExpansionProfileExcludedSystemComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
8800    ExpansionProfile.ExpansionProfileExcludedSystemComponent res = new ExpansionProfile.ExpansionProfileExcludedSystemComponent();
8801    parseBackboneAttributes(xpp, res);
8802    next(xpp);
8803    int eventType = nextNoWhitespace(xpp);
8804    while (eventType != XmlPullParser.END_TAG) {
8805  if (!parseExpansionProfileExpansionProfileExcludedSystemComponentContent(eventType, xpp, owner, res))
8806        unknownContent(xpp);
8807      eventType = nextNoWhitespace(xpp);
8808    }
8809    next(xpp);
8810    parseElementClose(res);
8811    return res;
8812  }
8813
8814  protected boolean parseExpansionProfileExpansionProfileExcludedSystemComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileExcludedSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8815      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
8816        res.setSystemElement(parseUri(xpp));
8817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8818        res.setVersionElement(parseString(xpp));
8819      } else if (!parseBackboneElementContent(eventType, xpp, res))
8820        return false;
8821    return true;
8822  }
8823
8824  protected ExpansionProfile.ExpansionProfileDesignationComponent parseExpansionProfileExpansionProfileDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
8825    ExpansionProfile.ExpansionProfileDesignationComponent res = new ExpansionProfile.ExpansionProfileDesignationComponent();
8826    parseBackboneAttributes(xpp, res);
8827    next(xpp);
8828    int eventType = nextNoWhitespace(xpp);
8829    while (eventType != XmlPullParser.END_TAG) {
8830  if (!parseExpansionProfileExpansionProfileDesignationComponentContent(eventType, xpp, owner, res))
8831        unknownContent(xpp);
8832      eventType = nextNoWhitespace(xpp);
8833    }
8834    next(xpp);
8835    parseElementClose(res);
8836    return res;
8837  }
8838
8839  protected boolean parseExpansionProfileExpansionProfileDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8840      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
8841        res.setInclude(parseExpansionProfileDesignationIncludeComponent(xpp, owner));
8842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
8843        res.setExclude(parseExpansionProfileDesignationExcludeComponent(xpp, owner));
8844      } else if (!parseBackboneElementContent(eventType, xpp, res))
8845        return false;
8846    return true;
8847  }
8848
8849  protected ExpansionProfile.DesignationIncludeComponent parseExpansionProfileDesignationIncludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
8850    ExpansionProfile.DesignationIncludeComponent res = new ExpansionProfile.DesignationIncludeComponent();
8851    parseBackboneAttributes(xpp, res);
8852    next(xpp);
8853    int eventType = nextNoWhitespace(xpp);
8854    while (eventType != XmlPullParser.END_TAG) {
8855  if (!parseExpansionProfileDesignationIncludeComponentContent(eventType, xpp, owner, res))
8856        unknownContent(xpp);
8857      eventType = nextNoWhitespace(xpp);
8858    }
8859    next(xpp);
8860    parseElementClose(res);
8861    return res;
8862  }
8863
8864  protected boolean parseExpansionProfileDesignationIncludeComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationIncludeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8865      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
8866        res.getDesignation().add(parseExpansionProfileDesignationIncludeDesignationComponent(xpp, owner));
8867      } else if (!parseBackboneElementContent(eventType, xpp, res))
8868        return false;
8869    return true;
8870  }
8871
8872  protected ExpansionProfile.DesignationIncludeDesignationComponent parseExpansionProfileDesignationIncludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
8873    ExpansionProfile.DesignationIncludeDesignationComponent res = new ExpansionProfile.DesignationIncludeDesignationComponent();
8874    parseBackboneAttributes(xpp, res);
8875    next(xpp);
8876    int eventType = nextNoWhitespace(xpp);
8877    while (eventType != XmlPullParser.END_TAG) {
8878  if (!parseExpansionProfileDesignationIncludeDesignationComponentContent(eventType, xpp, owner, res))
8879        unknownContent(xpp);
8880      eventType = nextNoWhitespace(xpp);
8881    }
8882    next(xpp);
8883    parseElementClose(res);
8884    return res;
8885  }
8886
8887  protected boolean parseExpansionProfileDesignationIncludeDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationIncludeDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8888      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
8889        res.setLanguageElement(parseCode(xpp));
8890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
8891        res.setUse(parseCoding(xpp));
8892      } else if (!parseBackboneElementContent(eventType, xpp, res))
8893        return false;
8894    return true;
8895  }
8896
8897  protected ExpansionProfile.DesignationExcludeComponent parseExpansionProfileDesignationExcludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
8898    ExpansionProfile.DesignationExcludeComponent res = new ExpansionProfile.DesignationExcludeComponent();
8899    parseBackboneAttributes(xpp, res);
8900    next(xpp);
8901    int eventType = nextNoWhitespace(xpp);
8902    while (eventType != XmlPullParser.END_TAG) {
8903  if (!parseExpansionProfileDesignationExcludeComponentContent(eventType, xpp, owner, res))
8904        unknownContent(xpp);
8905      eventType = nextNoWhitespace(xpp);
8906    }
8907    next(xpp);
8908    parseElementClose(res);
8909    return res;
8910  }
8911
8912  protected boolean parseExpansionProfileDesignationExcludeComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationExcludeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8913      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
8914        res.getDesignation().add(parseExpansionProfileDesignationExcludeDesignationComponent(xpp, owner));
8915      } else if (!parseBackboneElementContent(eventType, xpp, res))
8916        return false;
8917    return true;
8918  }
8919
8920  protected ExpansionProfile.DesignationExcludeDesignationComponent parseExpansionProfileDesignationExcludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
8921    ExpansionProfile.DesignationExcludeDesignationComponent res = new ExpansionProfile.DesignationExcludeDesignationComponent();
8922    parseBackboneAttributes(xpp, res);
8923    next(xpp);
8924    int eventType = nextNoWhitespace(xpp);
8925    while (eventType != XmlPullParser.END_TAG) {
8926  if (!parseExpansionProfileDesignationExcludeDesignationComponentContent(eventType, xpp, owner, res))
8927        unknownContent(xpp);
8928      eventType = nextNoWhitespace(xpp);
8929    }
8930    next(xpp);
8931    parseElementClose(res);
8932    return res;
8933  }
8934
8935  protected boolean parseExpansionProfileDesignationExcludeDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationExcludeDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8936      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
8937        res.setLanguageElement(parseCode(xpp));
8938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
8939        res.setUse(parseCoding(xpp));
8940      } else if (!parseBackboneElementContent(eventType, xpp, res))
8941        return false;
8942    return true;
8943  }
8944
8945  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8946    ExplanationOfBenefit res = new ExplanationOfBenefit();
8947    parseDomainResourceAttributes(xpp, res);
8948    next(xpp);
8949    int eventType = nextNoWhitespace(xpp);
8950    while (eventType != XmlPullParser.END_TAG) {
8951  if (!parseExplanationOfBenefitContent(eventType, xpp, res))
8952        unknownContent(xpp);
8953      eventType = nextNoWhitespace(xpp);
8954    }
8955    next(xpp);
8956    parseElementClose(res);
8957    return res;
8958  }
8959
8960  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
8961      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8962        res.getIdentifier().add(parseIdentifier(xpp));
8963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8964        res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
8965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8966        res.setType(parseCodeableConcept(xpp));
8967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
8968        res.getSubType().add(parseCodeableConcept(xpp));
8969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
8970        res.setUseElement(parseEnumeration(xpp, ExplanationOfBenefit.Use.NULL, new ExplanationOfBenefit.UseEnumFactory()));
8971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8972        res.setPatient(parseReference(xpp));
8973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
8974        res.setBillablePeriod(parsePeriod(xpp));
8975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8976        res.setCreatedElement(parseDateTime(xpp));
8977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
8978        res.setEnterer(parseReference(xpp));
8979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
8980        res.setInsurer(parseReference(xpp));
8981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8982        res.setProvider(parseReference(xpp));
8983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
8984        res.setReferral(parseReference(xpp));
8985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
8986        res.setFacility(parseReference(xpp));
8987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
8988        res.setClaim(parseReference(xpp));
8989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
8990        res.setClaimResponse(parseReference(xpp));
8991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8992        res.setOutcomeElement(parseEnumeration(xpp, ExplanationOfBenefit.RemittanceOutcome.NULL, new ExplanationOfBenefit.RemittanceOutcomeEnumFactory()));
8993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8994        res.setDispositionElement(parseString(xpp));
8995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8996        res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp, res));
8997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
8998        res.setPrescription(parseReference(xpp));
8999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
9000        res.setOriginalPrescription(parseReference(xpp));
9001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
9002        res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp, res));
9003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
9004        res.getInformation().add(parseExplanationOfBenefitSupportingInformationComponent(xpp, res));
9005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
9006        res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp, res));
9007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
9008        res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp, res));
9009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
9010        res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp, res));
9011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
9012        res.setPrecedenceElement(parsePositiveInt(xpp));
9013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
9014        res.setInsurance(parseExplanationOfBenefitInsuranceComponent(xpp, res));
9015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
9016        res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp, res));
9017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
9018        res.getItem().add(parseExplanationOfBenefitItemComponent(xpp, res));
9019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
9020        res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp, res));
9021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
9022        res.getTotal().add(parseExplanationOfBenefitTotalComponent(xpp, res));
9023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
9024        res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp, res));
9025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
9026        res.setForm(parseCodeableConcept(xpp));
9027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
9028        res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp, res));
9029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
9030        res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp, res));
9031      } else if (!parseDomainResourceContent(eventType, xpp, res))
9032        return false;
9033    return true;
9034  }
9035
9036  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9037    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
9038    parseBackboneAttributes(xpp, res);
9039    next(xpp);
9040    int eventType = nextNoWhitespace(xpp);
9041    while (eventType != XmlPullParser.END_TAG) {
9042  if (!parseExplanationOfBenefitRelatedClaimComponentContent(eventType, xpp, owner, res))
9043        unknownContent(xpp);
9044      eventType = nextNoWhitespace(xpp);
9045    }
9046    next(xpp);
9047    parseElementClose(res);
9048    return res;
9049  }
9050
9051  protected boolean parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9052      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
9053        res.setClaim(parseReference(xpp));
9054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
9055        res.setRelationship(parseCodeableConcept(xpp));
9056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
9057        res.setReference(parseIdentifier(xpp));
9058      } else if (!parseBackboneElementContent(eventType, xpp, res))
9059        return false;
9060    return true;
9061  }
9062
9063  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9064    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
9065    parseBackboneAttributes(xpp, res);
9066    next(xpp);
9067    int eventType = nextNoWhitespace(xpp);
9068    while (eventType != XmlPullParser.END_TAG) {
9069  if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, owner, res))
9070        unknownContent(xpp);
9071      eventType = nextNoWhitespace(xpp);
9072    }
9073    next(xpp);
9074    parseElementClose(res);
9075    return res;
9076  }
9077
9078  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9079      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9080        res.setType(parseCodeableConcept(xpp));
9081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
9082        res.setResource(parseCoding(xpp));
9083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
9084        res.setParty(parseReference(xpp));
9085      } else if (!parseBackboneElementContent(eventType, xpp, res))
9086        return false;
9087    return true;
9088  }
9089
9090  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9091    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
9092    parseBackboneAttributes(xpp, res);
9093    next(xpp);
9094    int eventType = nextNoWhitespace(xpp);
9095    while (eventType != XmlPullParser.END_TAG) {
9096  if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, owner, res))
9097        unknownContent(xpp);
9098      eventType = nextNoWhitespace(xpp);
9099    }
9100    next(xpp);
9101    parseElementClose(res);
9102    return res;
9103  }
9104
9105  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9106      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9107        res.setSequenceElement(parsePositiveInt(xpp));
9108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9109        res.setCategory(parseCodeableConcept(xpp));
9110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9111        res.setCode(parseCodeableConcept(xpp));
9112      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
9113        res.setTiming(parseType("timing", xpp));
9114      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9115        res.setValue(parseType("value", xpp));
9116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9117        res.setReason(parseCoding(xpp));
9118      } else if (!parseBackboneElementContent(eventType, xpp, res))
9119        return false;
9120    return true;
9121  }
9122
9123  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9124    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
9125    parseBackboneAttributes(xpp, res);
9126    next(xpp);
9127    int eventType = nextNoWhitespace(xpp);
9128    while (eventType != XmlPullParser.END_TAG) {
9129  if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, owner, res))
9130        unknownContent(xpp);
9131      eventType = nextNoWhitespace(xpp);
9132    }
9133    next(xpp);
9134    parseElementClose(res);
9135    return res;
9136  }
9137
9138  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9139      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9140        res.setSequenceElement(parsePositiveInt(xpp));
9141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9142        res.setProvider(parseReference(xpp));
9143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
9144        res.setResponsibleElement(parseBoolean(xpp));
9145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9146        res.setRole(parseCodeableConcept(xpp));
9147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
9148        res.setQualification(parseCodeableConcept(xpp));
9149      } else if (!parseBackboneElementContent(eventType, xpp, res))
9150        return false;
9151    return true;
9152  }
9153
9154  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9155    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
9156    parseBackboneAttributes(xpp, res);
9157    next(xpp);
9158    int eventType = nextNoWhitespace(xpp);
9159    while (eventType != XmlPullParser.END_TAG) {
9160  if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, owner, res))
9161        unknownContent(xpp);
9162      eventType = nextNoWhitespace(xpp);
9163    }
9164    next(xpp);
9165    parseElementClose(res);
9166    return res;
9167  }
9168
9169  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9170      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9171        res.setSequenceElement(parsePositiveInt(xpp));
9172      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
9173        res.setDiagnosis(parseType("diagnosis", xpp));
9174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9175        res.getType().add(parseCodeableConcept(xpp));
9176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
9177        res.setPackageCode(parseCodeableConcept(xpp));
9178      } else if (!parseBackboneElementContent(eventType, xpp, res))
9179        return false;
9180    return true;
9181  }
9182
9183  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9184    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
9185    parseBackboneAttributes(xpp, res);
9186    next(xpp);
9187    int eventType = nextNoWhitespace(xpp);
9188    while (eventType != XmlPullParser.END_TAG) {
9189  if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, owner, res))
9190        unknownContent(xpp);
9191      eventType = nextNoWhitespace(xpp);
9192    }
9193    next(xpp);
9194    parseElementClose(res);
9195    return res;
9196  }
9197
9198  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9199      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9200        res.setSequenceElement(parsePositiveInt(xpp));
9201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9202        res.setDateElement(parseDateTime(xpp));
9203      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
9204        res.setProcedure(parseType("procedure", xpp));
9205      } else if (!parseBackboneElementContent(eventType, xpp, res))
9206        return false;
9207    return true;
9208  }
9209
9210  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9211    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
9212    parseBackboneAttributes(xpp, res);
9213    next(xpp);
9214    int eventType = nextNoWhitespace(xpp);
9215    while (eventType != XmlPullParser.END_TAG) {
9216  if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, owner, res))
9217        unknownContent(xpp);
9218      eventType = nextNoWhitespace(xpp);
9219    }
9220    next(xpp);
9221    parseElementClose(res);
9222    return res;
9223  }
9224
9225  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9226      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
9227        res.setCoverage(parseReference(xpp));
9228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
9229        res.getPreAuthRef().add(parseString(xpp));
9230      } else if (!parseBackboneElementContent(eventType, xpp, res))
9231        return false;
9232    return true;
9233  }
9234
9235  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9236    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
9237    parseBackboneAttributes(xpp, res);
9238    next(xpp);
9239    int eventType = nextNoWhitespace(xpp);
9240    while (eventType != XmlPullParser.END_TAG) {
9241  if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, owner, res))
9242        unknownContent(xpp);
9243      eventType = nextNoWhitespace(xpp);
9244    }
9245    next(xpp);
9246    parseElementClose(res);
9247    return res;
9248  }
9249
9250  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9252        res.setDateElement(parseDate(xpp));
9253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9254        res.setType(parseCodeableConcept(xpp));
9255      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
9256        res.setLocation(parseType("location", xpp));
9257      } else if (!parseBackboneElementContent(eventType, xpp, res))
9258        return false;
9259    return true;
9260  }
9261
9262  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9263    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
9264    parseBackboneAttributes(xpp, res);
9265    next(xpp);
9266    int eventType = nextNoWhitespace(xpp);
9267    while (eventType != XmlPullParser.END_TAG) {
9268  if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, owner, res))
9269        unknownContent(xpp);
9270      eventType = nextNoWhitespace(xpp);
9271    }
9272    next(xpp);
9273    parseElementClose(res);
9274    return res;
9275  }
9276
9277  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9278      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9279        res.setSequenceElement(parsePositiveInt(xpp));
9280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
9281        res.getCareTeamSequence().add(parsePositiveInt(xpp));
9282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
9283        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
9284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
9285        res.getProcedureSequence().add(parsePositiveInt(xpp));
9286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
9287        res.getInformationSequence().add(parsePositiveInt(xpp));
9288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
9289        res.setRevenue(parseCodeableConcept(xpp));
9290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9291        res.setCategory(parseCodeableConcept(xpp));
9292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
9293        res.setService(parseCodeableConcept(xpp));
9294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
9295        res.getModifier().add(parseCodeableConcept(xpp));
9296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
9297        res.getProgramCode().add(parseCodeableConcept(xpp));
9298      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
9299        res.setServiced(parseType("serviced", xpp));
9300      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
9301        res.setLocation(parseType("location", xpp));
9302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9303        res.setQuantity(parseSimpleQuantity(xpp));
9304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
9305        res.setUnitPrice(parseMoney(xpp));
9306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
9307        res.setFactorElement(parseDecimal(xpp));
9308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
9309        res.setNet(parseMoney(xpp));
9310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
9311        res.getUdi().add(parseReference(xpp));
9312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
9313        res.setBodySite(parseCodeableConcept(xpp));
9314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
9315        res.getSubSite().add(parseCodeableConcept(xpp));
9316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9317        res.getEncounter().add(parseReference(xpp));
9318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
9319        res.getNoteNumber().add(parsePositiveInt(xpp));
9320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
9321        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
9322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
9323        res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp, owner));
9324      } else if (!parseBackboneElementContent(eventType, xpp, res))
9325        return false;
9326    return true;
9327  }
9328
9329  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9330    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
9331    parseBackboneAttributes(xpp, res);
9332    next(xpp);
9333    int eventType = nextNoWhitespace(xpp);
9334    while (eventType != XmlPullParser.END_TAG) {
9335  if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, owner, res))
9336        unknownContent(xpp);
9337      eventType = nextNoWhitespace(xpp);
9338    }
9339    next(xpp);
9340    parseElementClose(res);
9341    return res;
9342  }
9343
9344  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9345      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9346        res.setCategory(parseCodeableConcept(xpp));
9347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9348        res.setReason(parseCodeableConcept(xpp));
9349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
9350        res.setAmount(parseMoney(xpp));
9351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9352        res.setValueElement(parseDecimal(xpp));
9353      } else if (!parseBackboneElementContent(eventType, xpp, res))
9354        return false;
9355    return true;
9356  }
9357
9358  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9359    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
9360    parseBackboneAttributes(xpp, res);
9361    next(xpp);
9362    int eventType = nextNoWhitespace(xpp);
9363    while (eventType != XmlPullParser.END_TAG) {
9364  if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, owner, res))
9365        unknownContent(xpp);
9366      eventType = nextNoWhitespace(xpp);
9367    }
9368    next(xpp);
9369    parseElementClose(res);
9370    return res;
9371  }
9372
9373  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9374      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9375        res.setSequenceElement(parsePositiveInt(xpp));
9376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
9377        res.setRevenue(parseCodeableConcept(xpp));
9378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9379        res.setCategory(parseCodeableConcept(xpp));
9380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
9381        res.setService(parseCodeableConcept(xpp));
9382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
9383        res.getModifier().add(parseCodeableConcept(xpp));
9384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
9385        res.getProgramCode().add(parseCodeableConcept(xpp));
9386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9387        res.setQuantity(parseSimpleQuantity(xpp));
9388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
9389        res.setUnitPrice(parseMoney(xpp));
9390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
9391        res.setFactorElement(parseDecimal(xpp));
9392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
9393        res.setNet(parseMoney(xpp));
9394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
9395        res.getUdi().add(parseReference(xpp));
9396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
9397        res.getNoteNumber().add(parsePositiveInt(xpp));
9398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
9399        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
9400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
9401        res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp, owner));
9402      } else if (!parseBackboneElementContent(eventType, xpp, res))
9403        return false;
9404    return true;
9405  }
9406
9407  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9408    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
9409    parseBackboneAttributes(xpp, res);
9410    next(xpp);
9411    int eventType = nextNoWhitespace(xpp);
9412    while (eventType != XmlPullParser.END_TAG) {
9413  if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, owner, res))
9414        unknownContent(xpp);
9415      eventType = nextNoWhitespace(xpp);
9416    }
9417    next(xpp);
9418    parseElementClose(res);
9419    return res;
9420  }
9421
9422  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9423      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9424        res.setSequenceElement(parsePositiveInt(xpp));
9425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
9426        res.setRevenue(parseCodeableConcept(xpp));
9427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9428        res.setCategory(parseCodeableConcept(xpp));
9429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
9430        res.setService(parseCodeableConcept(xpp));
9431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
9432        res.getModifier().add(parseCodeableConcept(xpp));
9433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
9434        res.getProgramCode().add(parseCodeableConcept(xpp));
9435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9436        res.setQuantity(parseSimpleQuantity(xpp));
9437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
9438        res.setUnitPrice(parseMoney(xpp));
9439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
9440        res.setFactorElement(parseDecimal(xpp));
9441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
9442        res.setNet(parseMoney(xpp));
9443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
9444        res.getUdi().add(parseReference(xpp));
9445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
9446        res.getNoteNumber().add(parsePositiveInt(xpp));
9447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
9448        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
9449      } else if (!parseBackboneElementContent(eventType, xpp, res))
9450        return false;
9451    return true;
9452  }
9453
9454  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9455    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
9456    parseBackboneAttributes(xpp, res);
9457    next(xpp);
9458    int eventType = nextNoWhitespace(xpp);
9459    while (eventType != XmlPullParser.END_TAG) {
9460  if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, owner, res))
9461        unknownContent(xpp);
9462      eventType = nextNoWhitespace(xpp);
9463    }
9464    next(xpp);
9465    parseElementClose(res);
9466    return res;
9467  }
9468
9469  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9470      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
9471        res.getItemSequence().add(parsePositiveInt(xpp));
9472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
9473        res.getDetailSequence().add(parsePositiveInt(xpp));
9474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
9475        res.getSubDetailSequence().add(parsePositiveInt(xpp));
9476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
9477        res.setService(parseCodeableConcept(xpp));
9478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
9479        res.getModifier().add(parseCodeableConcept(xpp));
9480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
9481        res.setFee(parseMoney(xpp));
9482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
9483        res.getNoteNumber().add(parsePositiveInt(xpp));
9484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
9485        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
9486      } else if (!parseBackboneElementContent(eventType, xpp, res))
9487        return false;
9488    return true;
9489  }
9490
9491  protected ExplanationOfBenefit.TotalComponent parseExplanationOfBenefitTotalComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9492    ExplanationOfBenefit.TotalComponent res = new ExplanationOfBenefit.TotalComponent();
9493    parseBackboneAttributes(xpp, res);
9494    next(xpp);
9495    int eventType = nextNoWhitespace(xpp);
9496    while (eventType != XmlPullParser.END_TAG) {
9497  if (!parseExplanationOfBenefitTotalComponentContent(eventType, xpp, owner, res))
9498        unknownContent(xpp);
9499      eventType = nextNoWhitespace(xpp);
9500    }
9501    next(xpp);
9502    parseElementClose(res);
9503    return res;
9504  }
9505
9506  protected boolean parseExplanationOfBenefitTotalComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9507      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9508        res.setCategory(parseCodeableConcept(xpp));
9509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
9510        res.setAmount(parseMoney(xpp));
9511      } else if (!parseBackboneElementContent(eventType, xpp, res))
9512        return false;
9513    return true;
9514  }
9515
9516  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9517    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
9518    parseBackboneAttributes(xpp, res);
9519    next(xpp);
9520    int eventType = nextNoWhitespace(xpp);
9521    while (eventType != XmlPullParser.END_TAG) {
9522  if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, owner, res))
9523        unknownContent(xpp);
9524      eventType = nextNoWhitespace(xpp);
9525    }
9526    next(xpp);
9527    parseElementClose(res);
9528    return res;
9529  }
9530
9531  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9532      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9533        res.setType(parseCodeableConcept(xpp));
9534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
9535        res.setAdjustment(parseMoney(xpp));
9536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
9537        res.setAdjustmentReason(parseCodeableConcept(xpp));
9538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9539        res.setDateElement(parseDate(xpp));
9540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
9541        res.setAmount(parseMoney(xpp));
9542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9543        res.setIdentifier(parseIdentifier(xpp));
9544      } else if (!parseBackboneElementContent(eventType, xpp, res))
9545        return false;
9546    return true;
9547  }
9548
9549  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9550    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
9551    parseBackboneAttributes(xpp, res);
9552    next(xpp);
9553    int eventType = nextNoWhitespace(xpp);
9554    while (eventType != XmlPullParser.END_TAG) {
9555  if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, owner, res))
9556        unknownContent(xpp);
9557      eventType = nextNoWhitespace(xpp);
9558    }
9559    next(xpp);
9560    parseElementClose(res);
9561    return res;
9562  }
9563
9564  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9565      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9566        res.setNumberElement(parsePositiveInt(xpp));
9567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9568        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
9569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
9570        res.setTextElement(parseString(xpp));
9571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
9572        res.setLanguage(parseCodeableConcept(xpp));
9573      } else if (!parseBackboneElementContent(eventType, xpp, res))
9574        return false;
9575    return true;
9576  }
9577
9578  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9579    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
9580    parseBackboneAttributes(xpp, res);
9581    next(xpp);
9582    int eventType = nextNoWhitespace(xpp);
9583    while (eventType != XmlPullParser.END_TAG) {
9584  if (!parseExplanationOfBenefitBenefitBalanceComponentContent(eventType, xpp, owner, res))
9585        unknownContent(xpp);
9586      eventType = nextNoWhitespace(xpp);
9587    }
9588    next(xpp);
9589    parseElementClose(res);
9590    return res;
9591  }
9592
9593  protected boolean parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9594      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9595        res.setCategory(parseCodeableConcept(xpp));
9596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
9597        res.setSubCategory(parseCodeableConcept(xpp));
9598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
9599        res.setExcludedElement(parseBoolean(xpp));
9600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9601        res.setNameElement(parseString(xpp));
9602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9603        res.setDescriptionElement(parseString(xpp));
9604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
9605        res.setNetwork(parseCodeableConcept(xpp));
9606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
9607        res.setUnit(parseCodeableConcept(xpp));
9608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
9609        res.setTerm(parseCodeableConcept(xpp));
9610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
9611        res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp, owner));
9612      } else if (!parseBackboneElementContent(eventType, xpp, res))
9613        return false;
9614    return true;
9615  }
9616
9617  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9618    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
9619    parseBackboneAttributes(xpp, res);
9620    next(xpp);
9621    int eventType = nextNoWhitespace(xpp);
9622    while (eventType != XmlPullParser.END_TAG) {
9623  if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, owner, res))
9624        unknownContent(xpp);
9625      eventType = nextNoWhitespace(xpp);
9626    }
9627    next(xpp);
9628    parseElementClose(res);
9629    return res;
9630  }
9631
9632  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9634        res.setType(parseCodeableConcept(xpp));
9635      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
9636        res.setAllowed(parseType("allowed", xpp));
9637      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
9638        res.setUsed(parseType("used", xpp));
9639      } else if (!parseBackboneElementContent(eventType, xpp, res))
9640        return false;
9641    return true;
9642  }
9643
9644  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9645    FamilyMemberHistory res = new FamilyMemberHistory();
9646    parseDomainResourceAttributes(xpp, res);
9647    next(xpp);
9648    int eventType = nextNoWhitespace(xpp);
9649    while (eventType != XmlPullParser.END_TAG) {
9650  if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
9651        unknownContent(xpp);
9652      eventType = nextNoWhitespace(xpp);
9653    }
9654    next(xpp);
9655    parseElementClose(res);
9656    return res;
9657  }
9658
9659  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
9660      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9661        res.getIdentifier().add(parseIdentifier(xpp));
9662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
9663        res.getInstantiates().add(parseUri(xpp));
9664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9665        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
9666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
9667        res.setDataAbsentReason(parseCodeableConcept(xpp));
9668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9669        res.setPatient(parseReference(xpp));
9670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9671        res.setDateElement(parseDateTime(xpp));
9672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9673        res.setNameElement(parseString(xpp));
9674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
9675        res.setRelationship(parseCodeableConcept(xpp));
9676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
9677        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
9678      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
9679        res.setBorn(parseType("born", xpp));
9680      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
9681        res.setAge(parseType("age", xpp));
9682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
9683        res.setEstimatedAgeElement(parseBoolean(xpp));
9684      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
9685        res.setDeceased(parseType("deceased", xpp));
9686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
9687        res.getReasonCode().add(parseCodeableConcept(xpp));
9688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
9689        res.getReasonReference().add(parseReference(xpp));
9690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9691        res.getNote().add(parseAnnotation(xpp));
9692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
9693        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
9694      } else if (!parseDomainResourceContent(eventType, xpp, res))
9695        return false;
9696    return true;
9697  }
9698
9699  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
9700    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
9701    parseBackboneAttributes(xpp, res);
9702    next(xpp);
9703    int eventType = nextNoWhitespace(xpp);
9704    while (eventType != XmlPullParser.END_TAG) {
9705  if (!parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(eventType, xpp, owner, res))
9706        unknownContent(xpp);
9707      eventType = nextNoWhitespace(xpp);
9708    }
9709    next(xpp);
9710    parseElementClose(res);
9711    return res;
9712  }
9713
9714  protected boolean parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory owner, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9715      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9716        res.setCode(parseCodeableConcept(xpp));
9717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9718        res.setOutcome(parseCodeableConcept(xpp));
9719      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
9720        res.setOnset(parseType("onset", xpp));
9721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9722        res.getNote().add(parseAnnotation(xpp));
9723      } else if (!parseBackboneElementContent(eventType, xpp, res))
9724        return false;
9725    return true;
9726  }
9727
9728  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9729    Flag res = new Flag();
9730    parseDomainResourceAttributes(xpp, res);
9731    next(xpp);
9732    int eventType = nextNoWhitespace(xpp);
9733    while (eventType != XmlPullParser.END_TAG) {
9734  if (!parseFlagContent(eventType, xpp, res))
9735        unknownContent(xpp);
9736      eventType = nextNoWhitespace(xpp);
9737    }
9738    next(xpp);
9739    parseElementClose(res);
9740    return res;
9741  }
9742
9743  protected boolean parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
9744      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9745        res.getIdentifier().add(parseIdentifier(xpp));
9746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9747        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
9748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9749        res.getCategory().add(parseCodeableConcept(xpp));
9750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9751        res.setCode(parseCodeableConcept(xpp));
9752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9753        res.setSubject(parseReference(xpp));
9754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9755        res.setPeriod(parsePeriod(xpp));
9756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9757        res.setEncounter(parseReference(xpp));
9758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9759        res.setAuthor(parseReference(xpp));
9760      } else if (!parseDomainResourceContent(eventType, xpp, res))
9761        return false;
9762    return true;
9763  }
9764
9765  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9766    Goal res = new Goal();
9767    parseDomainResourceAttributes(xpp, res);
9768    next(xpp);
9769    int eventType = nextNoWhitespace(xpp);
9770    while (eventType != XmlPullParser.END_TAG) {
9771  if (!parseGoalContent(eventType, xpp, res))
9772        unknownContent(xpp);
9773      eventType = nextNoWhitespace(xpp);
9774    }
9775    next(xpp);
9776    parseElementClose(res);
9777    return res;
9778  }
9779
9780  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
9781      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9782        res.getIdentifier().add(parseIdentifier(xpp));
9783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9784        res.setStatusElement(parseEnumeration(xpp, Goal.GoalStatus.NULL, new Goal.GoalStatusEnumFactory()));
9785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9786        res.getCategory().add(parseCodeableConcept(xpp));
9787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
9788        res.setPriority(parseCodeableConcept(xpp));
9789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9790        res.setDescription(parseCodeableConcept(xpp));
9791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9792        res.setSubject(parseReference(xpp));
9793      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
9794        res.setStart(parseType("start", xpp));
9795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
9796        res.setTarget(parseGoalGoalTargetComponent(xpp, res));
9797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
9798        res.setStatusDateElement(parseDate(xpp));
9799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
9800        res.setStatusReasonElement(parseString(xpp));
9801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expressedBy")) {
9802        res.setExpressedBy(parseReference(xpp));
9803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
9804        res.getAddresses().add(parseReference(xpp));
9805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9806        res.getNote().add(parseAnnotation(xpp));
9807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCode")) {
9808        res.getOutcomeCode().add(parseCodeableConcept(xpp));
9809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
9810        res.getOutcomeReference().add(parseReference(xpp));
9811      } else if (!parseDomainResourceContent(eventType, xpp, res))
9812        return false;
9813    return true;
9814  }
9815
9816  protected Goal.GoalTargetComponent parseGoalGoalTargetComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
9817    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
9818    parseBackboneAttributes(xpp, res);
9819    next(xpp);
9820    int eventType = nextNoWhitespace(xpp);
9821    while (eventType != XmlPullParser.END_TAG) {
9822  if (!parseGoalGoalTargetComponentContent(eventType, xpp, owner, res))
9823        unknownContent(xpp);
9824      eventType = nextNoWhitespace(xpp);
9825    }
9826    next(xpp);
9827    parseElementClose(res);
9828    return res;
9829  }
9830
9831  protected boolean parseGoalGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal owner, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9832      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
9833        res.setMeasure(parseCodeableConcept(xpp));
9834      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
9835        res.setDetail(parseType("detail", xpp));
9836      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
9837        res.setDue(parseType("due", xpp));
9838      } else if (!parseBackboneElementContent(eventType, xpp, res))
9839        return false;
9840    return true;
9841  }
9842
9843  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9844    GraphDefinition res = new GraphDefinition();
9845    parseDomainResourceAttributes(xpp, res);
9846    next(xpp);
9847    int eventType = nextNoWhitespace(xpp);
9848    while (eventType != XmlPullParser.END_TAG) {
9849  if (!parseGraphDefinitionContent(eventType, xpp, res))
9850        unknownContent(xpp);
9851      eventType = nextNoWhitespace(xpp);
9852    }
9853    next(xpp);
9854    parseElementClose(res);
9855    return res;
9856  }
9857
9858  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
9859      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9860        res.setUrlElement(parseUri(xpp));
9861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9862        res.setVersionElement(parseString(xpp));
9863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9864        res.setNameElement(parseString(xpp));
9865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9866        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9868        res.setExperimentalElement(parseBoolean(xpp));
9869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9870        res.setDateElement(parseDateTime(xpp));
9871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9872        res.setPublisherElement(parseString(xpp));
9873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9874        res.getContact().add(parseContactDetail(xpp));
9875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9876        res.setDescriptionElement(parseMarkdown(xpp));
9877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9878        res.getUseContext().add(parseUsageContext(xpp));
9879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9880        res.getJurisdiction().add(parseCodeableConcept(xpp));
9881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9882        res.setPurposeElement(parseMarkdown(xpp));
9883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
9884        res.setStartElement(parseCode(xpp));
9885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
9886        res.setProfileElement(parseCanonical(xpp));
9887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9888        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, res));
9889      } else if (!parseDomainResourceContent(eventType, xpp, res))
9890        return false;
9891    return true;
9892  }
9893
9894  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionGraphDefinitionLinkComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9895    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
9896    parseBackboneAttributes(xpp, res);
9897    next(xpp);
9898    int eventType = nextNoWhitespace(xpp);
9899    while (eventType != XmlPullParser.END_TAG) {
9900  if (!parseGraphDefinitionGraphDefinitionLinkComponentContent(eventType, xpp, owner, res))
9901        unknownContent(xpp);
9902      eventType = nextNoWhitespace(xpp);
9903    }
9904    next(xpp);
9905    parseElementClose(res);
9906    return res;
9907  }
9908
9909  protected boolean parseGraphDefinitionGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9910      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
9911        res.setPathElement(parseString(xpp));
9912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
9913        res.setSliceNameElement(parseString(xpp));
9914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
9915        res.setMinElement(parseInteger(xpp));
9916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
9917        res.setMaxElement(parseString(xpp));
9918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9919        res.setDescriptionElement(parseString(xpp));
9920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
9921        res.getTarget().add(parseGraphDefinitionGraphDefinitionLinkTargetComponent(xpp, owner));
9922      } else if (!parseBackboneElementContent(eventType, xpp, res))
9923        return false;
9924    return true;
9925  }
9926
9927  protected GraphDefinition.GraphDefinitionLinkTargetComponent parseGraphDefinitionGraphDefinitionLinkTargetComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9928    GraphDefinition.GraphDefinitionLinkTargetComponent res = new GraphDefinition.GraphDefinitionLinkTargetComponent();
9929    parseBackboneAttributes(xpp, res);
9930    next(xpp);
9931    int eventType = nextNoWhitespace(xpp);
9932    while (eventType != XmlPullParser.END_TAG) {
9933  if (!parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(eventType, xpp, owner, res))
9934        unknownContent(xpp);
9935      eventType = nextNoWhitespace(xpp);
9936    }
9937    next(xpp);
9938    parseElementClose(res);
9939    return res;
9940  }
9941
9942  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9943      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9944        res.setTypeElement(parseCode(xpp));
9945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
9946        res.setParamsElement(parseString(xpp));
9947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
9948        res.setProfileElement(parseCanonical(xpp));
9949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
9950        res.getCompartment().add(parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(xpp, owner));
9951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9952        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, owner));
9953      } else if (!parseBackboneElementContent(eventType, xpp, res))
9954        return false;
9955    return true;
9956  }
9957
9958  protected GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9959    GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent();
9960    parseBackboneAttributes(xpp, res);
9961    next(xpp);
9962    int eventType = nextNoWhitespace(xpp);
9963    while (eventType != XmlPullParser.END_TAG) {
9964  if (!parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(eventType, xpp, owner, res))
9965        unknownContent(xpp);
9966      eventType = nextNoWhitespace(xpp);
9967    }
9968    next(xpp);
9969    parseElementClose(res);
9970    return res;
9971  }
9972
9973  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9974      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9975        res.setUseElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentUse.NULL, new GraphDefinition.GraphCompartmentUseEnumFactory()));
9976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9977        res.setCodeElement(parseEnumeration(xpp, GraphDefinition.CompartmentCode.NULL, new GraphDefinition.CompartmentCodeEnumFactory()));
9978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
9979        res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
9980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
9981        res.setExpressionElement(parseString(xpp));
9982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9983        res.setDescriptionElement(parseString(xpp));
9984      } else if (!parseBackboneElementContent(eventType, xpp, res))
9985        return false;
9986    return true;
9987  }
9988
9989  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9990    Group res = new Group();
9991    parseDomainResourceAttributes(xpp, res);
9992    next(xpp);
9993    int eventType = nextNoWhitespace(xpp);
9994    while (eventType != XmlPullParser.END_TAG) {
9995  if (!parseGroupContent(eventType, xpp, res))
9996        unknownContent(xpp);
9997      eventType = nextNoWhitespace(xpp);
9998    }
9999    next(xpp);
10000    parseElementClose(res);
10001    return res;
10002  }
10003
10004  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
10005      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10006        res.getIdentifier().add(parseIdentifier(xpp));
10007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10008        res.setActiveElement(parseBoolean(xpp));
10009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10010        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
10011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
10012        res.setActualElement(parseBoolean(xpp));
10013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10014        res.setCode(parseCodeableConcept(xpp));
10015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10016        res.setNameElement(parseString(xpp));
10017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10018        res.setQuantityElement(parseUnsignedInt(xpp));
10019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
10020        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
10021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
10022        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
10023      } else if (!parseDomainResourceContent(eventType, xpp, res))
10024        return false;
10025    return true;
10026  }
10027
10028  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
10029    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
10030    parseBackboneAttributes(xpp, res);
10031    next(xpp);
10032    int eventType = nextNoWhitespace(xpp);
10033    while (eventType != XmlPullParser.END_TAG) {
10034  if (!parseGroupGroupCharacteristicComponentContent(eventType, xpp, owner, res))
10035        unknownContent(xpp);
10036      eventType = nextNoWhitespace(xpp);
10037    }
10038    next(xpp);
10039    parseElementClose(res);
10040    return res;
10041  }
10042
10043  protected boolean parseGroupGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10044      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10045        res.setCode(parseCodeableConcept(xpp));
10046      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
10047        res.setValue(parseType("value", xpp));
10048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
10049        res.setExcludeElement(parseBoolean(xpp));
10050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10051        res.setPeriod(parsePeriod(xpp));
10052      } else if (!parseBackboneElementContent(eventType, xpp, res))
10053        return false;
10054    return true;
10055  }
10056
10057  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
10058    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
10059    parseBackboneAttributes(xpp, res);
10060    next(xpp);
10061    int eventType = nextNoWhitespace(xpp);
10062    while (eventType != XmlPullParser.END_TAG) {
10063  if (!parseGroupGroupMemberComponentContent(eventType, xpp, owner, res))
10064        unknownContent(xpp);
10065      eventType = nextNoWhitespace(xpp);
10066    }
10067    next(xpp);
10068    parseElementClose(res);
10069    return res;
10070  }
10071
10072  protected boolean parseGroupGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
10074        res.setEntity(parseReference(xpp));
10075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10076        res.setPeriod(parsePeriod(xpp));
10077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
10078        res.setInactiveElement(parseBoolean(xpp));
10079      } else if (!parseBackboneElementContent(eventType, xpp, res))
10080        return false;
10081    return true;
10082  }
10083
10084  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10085    GuidanceResponse res = new GuidanceResponse();
10086    parseDomainResourceAttributes(xpp, res);
10087    next(xpp);
10088    int eventType = nextNoWhitespace(xpp);
10089    while (eventType != XmlPullParser.END_TAG) {
10090  if (!parseGuidanceResponseContent(eventType, xpp, res))
10091        unknownContent(xpp);
10092      eventType = nextNoWhitespace(xpp);
10093    }
10094    next(xpp);
10095    parseElementClose(res);
10096    return res;
10097  }
10098
10099  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
10100      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
10101        res.setRequestIdElement(parseId(xpp));
10102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10103        res.getIdentifier().add(parseIdentifier(xpp));
10104      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "module")) {
10105        res.setModule(parseType("module", xpp));
10106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10107        res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
10108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10109        res.setSubject(parseReference(xpp));
10110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
10111        res.setContext(parseReference(xpp));
10112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
10113        res.setOccurrenceDateTimeElement(parseDateTime(xpp));
10114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
10115        res.setPerformer(parseReference(xpp));
10116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10117        res.getReasonCode().add(parseCodeableConcept(xpp));
10118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10119        res.getReasonReference().add(parseReference(xpp));
10120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10121        res.getNote().add(parseAnnotation(xpp));
10122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
10123        res.getEvaluationMessage().add(parseReference(xpp));
10124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
10125        res.setOutputParameters(parseReference(xpp));
10126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
10127        res.setResult(parseReference(xpp));
10128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
10129        res.getDataRequirement().add(parseDataRequirement(xpp));
10130      } else if (!parseDomainResourceContent(eventType, xpp, res))
10131        return false;
10132    return true;
10133  }
10134
10135  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10136    HealthcareService res = new HealthcareService();
10137    parseDomainResourceAttributes(xpp, res);
10138    next(xpp);
10139    int eventType = nextNoWhitespace(xpp);
10140    while (eventType != XmlPullParser.END_TAG) {
10141  if (!parseHealthcareServiceContent(eventType, xpp, res))
10142        unknownContent(xpp);
10143      eventType = nextNoWhitespace(xpp);
10144    }
10145    next(xpp);
10146    parseElementClose(res);
10147    return res;
10148  }
10149
10150  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
10151      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10152        res.getIdentifier().add(parseIdentifier(xpp));
10153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10154        res.setActiveElement(parseBoolean(xpp));
10155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
10156        res.setProvidedBy(parseReference(xpp));
10157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10158        res.getCategory().add(parseCodeableConcept(xpp));
10159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10160        res.getType().add(parseCodeableConcept(xpp));
10161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
10162        res.getSpecialty().add(parseCodeableConcept(xpp));
10163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10164        res.getLocation().add(parseReference(xpp));
10165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10166        res.setNameElement(parseString(xpp));
10167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
10168        res.setCommentElement(parseString(xpp));
10169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
10170        res.setExtraDetailsElement(parseString(xpp));
10171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
10172        res.setPhoto(parseAttachment(xpp));
10173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10174        res.getTelecom().add(parseContactPoint(xpp));
10175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
10176        res.getCoverageArea().add(parseReference(xpp));
10177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
10178        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
10179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
10180        res.setEligibility(parseCodeableConcept(xpp));
10181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibilityNote")) {
10182        res.setEligibilityNoteElement(parseString(xpp));
10183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programName")) {
10184        res.getProgramName().add(parseString(xpp));
10185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
10186        res.getCharacteristic().add(parseCodeableConcept(xpp));
10187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
10188        res.getReferralMethod().add(parseCodeableConcept(xpp));
10189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
10190        res.setAppointmentRequiredElement(parseBoolean(xpp));
10191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
10192        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
10193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
10194        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
10195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
10196        res.setAvailabilityExceptionsElement(parseString(xpp));
10197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10198        res.getEndpoint().add(parseReference(xpp));
10199      } else if (!parseDomainResourceContent(eventType, xpp, res))
10200        return false;
10201    return true;
10202  }
10203
10204  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
10205    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
10206    parseBackboneAttributes(xpp, res);
10207    next(xpp);
10208    int eventType = nextNoWhitespace(xpp);
10209    while (eventType != XmlPullParser.END_TAG) {
10210  if (!parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(eventType, xpp, owner, res))
10211        unknownContent(xpp);
10212      eventType = nextNoWhitespace(xpp);
10213    }
10214    next(xpp);
10215    parseElementClose(res);
10216    return res;
10217  }
10218
10219  protected boolean parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10220      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
10221        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
10222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
10223        res.setAllDayElement(parseBoolean(xpp));
10224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
10225        res.setAvailableStartTimeElement(parseTime(xpp));
10226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
10227        res.setAvailableEndTimeElement(parseTime(xpp));
10228      } else if (!parseBackboneElementContent(eventType, xpp, res))
10229        return false;
10230    return true;
10231  }
10232
10233  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
10234    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
10235    parseBackboneAttributes(xpp, res);
10236    next(xpp);
10237    int eventType = nextNoWhitespace(xpp);
10238    while (eventType != XmlPullParser.END_TAG) {
10239  if (!parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(eventType, xpp, owner, res))
10240        unknownContent(xpp);
10241      eventType = nextNoWhitespace(xpp);
10242    }
10243    next(xpp);
10244    parseElementClose(res);
10245    return res;
10246  }
10247
10248  protected boolean parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10249      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10250        res.setDescriptionElement(parseString(xpp));
10251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
10252        res.setDuring(parsePeriod(xpp));
10253      } else if (!parseBackboneElementContent(eventType, xpp, res))
10254        return false;
10255    return true;
10256  }
10257
10258  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10259    ImagingStudy res = new ImagingStudy();
10260    parseDomainResourceAttributes(xpp, res);
10261    next(xpp);
10262    int eventType = nextNoWhitespace(xpp);
10263    while (eventType != XmlPullParser.END_TAG) {
10264  if (!parseImagingStudyContent(eventType, xpp, res))
10265        unknownContent(xpp);
10266      eventType = nextNoWhitespace(xpp);
10267    }
10268    next(xpp);
10269    parseElementClose(res);
10270    return res;
10271  }
10272
10273  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
10274      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10275        res.getIdentifier().add(parseIdentifier(xpp));
10276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10277        res.setStatusElement(parseEnumeration(xpp, ImagingStudy.ImagingStudyStatus.NULL, new ImagingStudy.ImagingStudyStatusEnumFactory()));
10278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
10279        res.getModality().add(parseCoding(xpp));
10280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10281        res.setSubject(parseReference(xpp));
10282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
10283        res.setContext(parseReference(xpp));
10284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
10285        res.setStartedElement(parseDateTime(xpp));
10286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
10287        res.getBasedOn().add(parseReference(xpp));
10288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
10289        res.setReferrer(parseReference(xpp));
10290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
10291        res.getInterpreter().add(parseReference(xpp));
10292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10293        res.getEndpoint().add(parseReference(xpp));
10294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
10295        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
10296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
10297        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
10298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureReference")) {
10299        res.setProcedureReference(parseReference(xpp));
10300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureCode")) {
10301        res.getProcedureCode().add(parseCodeableConcept(xpp));
10302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10303        res.setLocation(parseReference(xpp));
10304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10305        res.getReasonCode().add(parseCodeableConcept(xpp));
10306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10307        res.getReasonReference().add(parseReference(xpp));
10308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10309        res.getNote().add(parseAnnotation(xpp));
10310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
10311        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
10312      } else if (!parseDomainResourceContent(eventType, xpp, res))
10313        return false;
10314    return true;
10315  }
10316
10317  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
10318    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
10319    parseBackboneAttributes(xpp, res);
10320    next(xpp);
10321    int eventType = nextNoWhitespace(xpp);
10322    while (eventType != XmlPullParser.END_TAG) {
10323  if (!parseImagingStudyImagingStudySeriesComponentContent(eventType, xpp, owner, res))
10324        unknownContent(xpp);
10325      eventType = nextNoWhitespace(xpp);
10326    }
10327    next(xpp);
10328    parseElementClose(res);
10329    return res;
10330  }
10331
10332  protected boolean parseImagingStudyImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10333      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10334        res.setIdentifier(parseIdentifier(xpp));
10335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
10336        res.setNumberElement(parseUnsignedInt(xpp));
10337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
10338        res.setModality(parseCoding(xpp));
10339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10340        res.setDescriptionElement(parseString(xpp));
10341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
10342        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
10343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10344        res.getEndpoint().add(parseReference(xpp));
10345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10346        res.setBodySite(parseCoding(xpp));
10347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
10348        res.setLaterality(parseCoding(xpp));
10349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
10350        res.getSpecimen().add(parseReference(xpp));
10351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
10352        res.setStartedElement(parseDateTime(xpp));
10353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
10354        res.getPerformer().add(parseImagingStudyImagingStudySeriesPerformerComponent(xpp, owner));
10355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
10356        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
10357      } else if (!parseBackboneElementContent(eventType, xpp, res))
10358        return false;
10359    return true;
10360  }
10361
10362  protected ImagingStudy.ImagingStudySeriesPerformerComponent parseImagingStudyImagingStudySeriesPerformerComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
10363    ImagingStudy.ImagingStudySeriesPerformerComponent res = new ImagingStudy.ImagingStudySeriesPerformerComponent();
10364    parseBackboneAttributes(xpp, res);
10365    next(xpp);
10366    int eventType = nextNoWhitespace(xpp);
10367    while (eventType != XmlPullParser.END_TAG) {
10368  if (!parseImagingStudyImagingStudySeriesPerformerComponentContent(eventType, xpp, owner, res))
10369        unknownContent(xpp);
10370      eventType = nextNoWhitespace(xpp);
10371    }
10372    next(xpp);
10373    parseElementClose(res);
10374    return res;
10375  }
10376
10377  protected boolean parseImagingStudyImagingStudySeriesPerformerComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
10379        res.setFunction(parseCodeableConcept(xpp));
10380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
10381        res.setActor(parseReference(xpp));
10382      } else if (!parseBackboneElementContent(eventType, xpp, res))
10383        return false;
10384    return true;
10385  }
10386
10387  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
10388    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
10389    parseBackboneAttributes(xpp, res);
10390    next(xpp);
10391    int eventType = nextNoWhitespace(xpp);
10392    while (eventType != XmlPullParser.END_TAG) {
10393  if (!parseImagingStudyImagingStudySeriesInstanceComponentContent(eventType, xpp, owner, res))
10394        unknownContent(xpp);
10395      eventType = nextNoWhitespace(xpp);
10396    }
10397    next(xpp);
10398    parseElementClose(res);
10399    return res;
10400  }
10401
10402  protected boolean parseImagingStudyImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10403      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10404        res.setIdentifier(parseIdentifier(xpp));
10405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
10406        res.setNumberElement(parseUnsignedInt(xpp));
10407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
10408        res.setSopClass(parseCoding(xpp));
10409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10410        res.setTitleElement(parseString(xpp));
10411      } else if (!parseBackboneElementContent(eventType, xpp, res))
10412        return false;
10413    return true;
10414  }
10415
10416  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10417    Immunization res = new Immunization();
10418    parseDomainResourceAttributes(xpp, res);
10419    next(xpp);
10420    int eventType = nextNoWhitespace(xpp);
10421    while (eventType != XmlPullParser.END_TAG) {
10422  if (!parseImmunizationContent(eventType, xpp, res))
10423        unknownContent(xpp);
10424      eventType = nextNoWhitespace(xpp);
10425    }
10426    next(xpp);
10427    parseElementClose(res);
10428    return res;
10429  }
10430
10431  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
10432      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10433        res.getIdentifier().add(parseIdentifier(xpp));
10434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10435        res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatus.NULL, new Immunization.ImmunizationStatusEnumFactory()));
10436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
10437        res.setStatusReason(parseCodeableConcept(xpp));
10438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
10439        res.setVaccineCode(parseCodeableConcept(xpp));
10440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10441        res.setPatient(parseReference(xpp));
10442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10443        res.setEncounter(parseReference(xpp));
10444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10445        res.setDateElement(parseDateTime(xpp));
10446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
10447        res.setPrimarySourceElement(parseBoolean(xpp));
10448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportOrigin")) {
10449        res.setReportOrigin(parseCodeableConcept(xpp));
10450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10451        res.setLocation(parseReference(xpp));
10452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
10453        res.setManufacturer(parseReference(xpp));
10454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
10455        res.setLotNumberElement(parseString(xpp));
10456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
10457        res.setExpirationDateElement(parseDate(xpp));
10458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
10459        res.setSite(parseCodeableConcept(xpp));
10460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
10461        res.setRoute(parseCodeableConcept(xpp));
10462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
10463        res.setDoseQuantity(parseSimpleQuantity(xpp));
10464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
10465        res.getPerformer().add(parseImmunizationImmunizationPerformerComponent(xpp, res));
10466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10467        res.getNote().add(parseAnnotation(xpp));
10468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10469        res.getReasonCode().add(parseCodeableConcept(xpp));
10470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10471        res.getReasonReference().add(parseReference(xpp));
10472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isPotent")) {
10473        res.setIsPotentElement(parseBoolean(xpp));
10474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subpotentReason")) {
10475        res.getSubpotentReason().add(parseCodeableConcept(xpp));
10476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("education")) {
10477        res.getEducation().add(parseImmunizationImmunizationEducationComponent(xpp, res));
10478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programEligibility")) {
10479        res.getProgramEligibility().add(parseCodeableConcept(xpp));
10480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundingSource")) {
10481        res.setFundingSource(parseCodeableConcept(xpp));
10482      } else if (!parseDomainResourceContent(eventType, xpp, res))
10483        return false;
10484    return true;
10485  }
10486
10487  protected Immunization.ImmunizationPerformerComponent parseImmunizationImmunizationPerformerComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
10488    Immunization.ImmunizationPerformerComponent res = new Immunization.ImmunizationPerformerComponent();
10489    parseBackboneAttributes(xpp, res);
10490    next(xpp);
10491    int eventType = nextNoWhitespace(xpp);
10492    while (eventType != XmlPullParser.END_TAG) {
10493  if (!parseImmunizationImmunizationPerformerComponentContent(eventType, xpp, owner, res))
10494        unknownContent(xpp);
10495      eventType = nextNoWhitespace(xpp);
10496    }
10497    next(xpp);
10498    parseElementClose(res);
10499    return res;
10500  }
10501
10502  protected boolean parseImmunizationImmunizationPerformerComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10503      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
10504        res.setFunction(parseCodeableConcept(xpp));
10505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
10506        res.setActor(parseReference(xpp));
10507      } else if (!parseBackboneElementContent(eventType, xpp, res))
10508        return false;
10509    return true;
10510  }
10511
10512  protected Immunization.ImmunizationEducationComponent parseImmunizationImmunizationEducationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
10513    Immunization.ImmunizationEducationComponent res = new Immunization.ImmunizationEducationComponent();
10514    parseBackboneAttributes(xpp, res);
10515    next(xpp);
10516    int eventType = nextNoWhitespace(xpp);
10517    while (eventType != XmlPullParser.END_TAG) {
10518  if (!parseImmunizationImmunizationEducationComponentContent(eventType, xpp, owner, res))
10519        unknownContent(xpp);
10520      eventType = nextNoWhitespace(xpp);
10521    }
10522    next(xpp);
10523    parseElementClose(res);
10524    return res;
10525  }
10526
10527  protected boolean parseImmunizationImmunizationEducationComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationEducationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10528      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentType")) {
10529        res.setDocumentTypeElement(parseString(xpp));
10530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
10531        res.setReferenceElement(parseUri(xpp));
10532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
10533        res.setPublicationDateElement(parseDateTime(xpp));
10534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationDate")) {
10535        res.setPresentationDateElement(parseDateTime(xpp));
10536      } else if (!parseBackboneElementContent(eventType, xpp, res))
10537        return false;
10538    return true;
10539  }
10540
10541  protected ImmunizationEvaluation parseImmunizationEvaluation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10542    ImmunizationEvaluation res = new ImmunizationEvaluation();
10543    parseDomainResourceAttributes(xpp, res);
10544    next(xpp);
10545    int eventType = nextNoWhitespace(xpp);
10546    while (eventType != XmlPullParser.END_TAG) {
10547  if (!parseImmunizationEvaluationContent(eventType, xpp, res))
10548        unknownContent(xpp);
10549      eventType = nextNoWhitespace(xpp);
10550    }
10551    next(xpp);
10552    parseElementClose(res);
10553    return res;
10554  }
10555
10556  protected boolean parseImmunizationEvaluationContent(int eventType, XmlPullParser xpp, ImmunizationEvaluation res) throws XmlPullParserException, IOException, FHIRFormatError {
10557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10558        res.getIdentifier().add(parseIdentifier(xpp));
10559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10560        res.setStatusElement(parseEnumeration(xpp, ImmunizationEvaluation.ImmunizationEvaluationStatus.NULL, new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory()));
10561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10562        res.setPatient(parseReference(xpp));
10563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10564        res.setDateElement(parseDateTime(xpp));
10565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
10566        res.setAuthority(parseReference(xpp));
10567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
10568        res.getTargetDisease().add(parseCodeableConcept(xpp));
10569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immunizationEvent")) {
10570        res.setImmunizationEvent(parseReference(xpp));
10571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
10572        res.setDoseStatus(parseCodeableConcept(xpp));
10573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
10574        res.getDoseStatusReason().add(parseCodeableConcept(xpp));
10575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10576        res.setDescriptionElement(parseString(xpp));
10577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
10578        res.setSeriesElement(parseString(xpp));
10579      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
10580        res.setDoseNumber(parseType("doseNumber", xpp));
10581      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
10582        res.setSeriesDoses(parseType("seriesDoses", xpp));
10583      } else if (!parseDomainResourceContent(eventType, xpp, res))
10584        return false;
10585    return true;
10586  }
10587
10588  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10589    ImmunizationRecommendation res = new ImmunizationRecommendation();
10590    parseDomainResourceAttributes(xpp, res);
10591    next(xpp);
10592    int eventType = nextNoWhitespace(xpp);
10593    while (eventType != XmlPullParser.END_TAG) {
10594  if (!parseImmunizationRecommendationContent(eventType, xpp, res))
10595        unknownContent(xpp);
10596      eventType = nextNoWhitespace(xpp);
10597    }
10598    next(xpp);
10599    parseElementClose(res);
10600    return res;
10601  }
10602
10603  protected boolean parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
10604      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10605        res.getIdentifier().add(parseIdentifier(xpp));
10606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10607        res.setPatient(parseReference(xpp));
10608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10609        res.setDateElement(parseDateTime(xpp));
10610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
10611        res.setAuthority(parseReference(xpp));
10612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
10613        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
10614      } else if (!parseDomainResourceContent(eventType, xpp, res))
10615        return false;
10616    return true;
10617  }
10618
10619  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
10620    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
10621    parseBackboneAttributes(xpp, res);
10622    next(xpp);
10623    int eventType = nextNoWhitespace(xpp);
10624    while (eventType != XmlPullParser.END_TAG) {
10625  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(eventType, xpp, owner, res))
10626        unknownContent(xpp);
10627      eventType = nextNoWhitespace(xpp);
10628    }
10629    next(xpp);
10630    parseElementClose(res);
10631    return res;
10632  }
10633
10634  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10635      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
10636        res.getVaccineCode().add(parseCodeableConcept(xpp));
10637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
10638        res.setTargetDisease(parseCodeableConcept(xpp));
10639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindicatedVaccineCode")) {
10640        res.getContraindicatedVaccineCode().add(parseCodeableConcept(xpp));
10641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
10642        res.setForecastStatus(parseCodeableConcept(xpp));
10643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastReason")) {
10644        res.getForecastReason().add(parseCodeableConcept(xpp));
10645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
10646        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
10647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10648        res.setDescriptionElement(parseString(xpp));
10649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
10650        res.setSeriesElement(parseString(xpp));
10651      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
10652        res.setDoseNumber(parseType("doseNumber", xpp));
10653      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
10654        res.setSeriesDoses(parseType("seriesDoses", xpp));
10655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
10656        res.getSupportingImmunization().add(parseReference(xpp));
10657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
10658        res.getSupportingPatientInformation().add(parseReference(xpp));
10659      } else if (!parseBackboneElementContent(eventType, xpp, res))
10660        return false;
10661    return true;
10662  }
10663
10664  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
10665    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
10666    parseBackboneAttributes(xpp, res);
10667    next(xpp);
10668    int eventType = nextNoWhitespace(xpp);
10669    while (eventType != XmlPullParser.END_TAG) {
10670  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, owner, res))
10671        unknownContent(xpp);
10672      eventType = nextNoWhitespace(xpp);
10673    }
10674    next(xpp);
10675    parseElementClose(res);
10676    return res;
10677  }
10678
10679  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10680      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10681        res.setCode(parseCodeableConcept(xpp));
10682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10683        res.setValueElement(parseDateTime(xpp));
10684      } else if (!parseBackboneElementContent(eventType, xpp, res))
10685        return false;
10686    return true;
10687  }
10688
10689  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10690    ImplementationGuide res = new ImplementationGuide();
10691    parseDomainResourceAttributes(xpp, res);
10692    next(xpp);
10693    int eventType = nextNoWhitespace(xpp);
10694    while (eventType != XmlPullParser.END_TAG) {
10695  if (!parseImplementationGuideContent(eventType, xpp, res))
10696        unknownContent(xpp);
10697      eventType = nextNoWhitespace(xpp);
10698    }
10699    next(xpp);
10700    parseElementClose(res);
10701    return res;
10702  }
10703
10704  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
10705      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10706        res.setUrlElement(parseUri(xpp));
10707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10708        res.setVersionElement(parseString(xpp));
10709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10710        res.setNameElement(parseString(xpp));
10711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10712        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10714        res.setExperimentalElement(parseBoolean(xpp));
10715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10716        res.setDateElement(parseDateTime(xpp));
10717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10718        res.setPublisherElement(parseString(xpp));
10719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10720        res.getContact().add(parseContactDetail(xpp));
10721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10722        res.setDescriptionElement(parseMarkdown(xpp));
10723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10724        res.getUseContext().add(parseUsageContext(xpp));
10725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10726        res.getJurisdiction().add(parseCodeableConcept(xpp));
10727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
10728        res.setCopyrightElement(parseMarkdown(xpp));
10729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
10730        res.setFhirVersionElement(parseId(xpp));
10731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
10732        res.getDependsOn().add(parseImplementationGuideImplementationGuideDependsOnComponent(xpp, res));
10733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
10734        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
10735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
10736        res.setDefinition(parseImplementationGuideImplementationGuideDefinitionComponent(xpp, res));
10737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifest")) {
10738        res.setManifest(parseImplementationGuideImplementationGuideManifestComponent(xpp, res));
10739      } else if (!parseDomainResourceContent(eventType, xpp, res))
10740        return false;
10741    return true;
10742  }
10743
10744  protected ImplementationGuide.ImplementationGuideDependsOnComponent parseImplementationGuideImplementationGuideDependsOnComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10745    ImplementationGuide.ImplementationGuideDependsOnComponent res = new ImplementationGuide.ImplementationGuideDependsOnComponent();
10746    parseBackboneAttributes(xpp, res);
10747    next(xpp);
10748    int eventType = nextNoWhitespace(xpp);
10749    while (eventType != XmlPullParser.END_TAG) {
10750  if (!parseImplementationGuideImplementationGuideDependsOnComponentContent(eventType, xpp, owner, res))
10751        unknownContent(xpp);
10752      eventType = nextNoWhitespace(xpp);
10753    }
10754    next(xpp);
10755    parseElementClose(res);
10756    return res;
10757  }
10758
10759  protected boolean parseImplementationGuideImplementationGuideDependsOnComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDependsOnComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10760      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
10761        res.setUriElement(parseCanonical(xpp));
10762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10763        res.setVersionElement(parseString(xpp));
10764      } else if (!parseBackboneElementContent(eventType, xpp, res))
10765        return false;
10766    return true;
10767  }
10768
10769  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10770    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
10771    parseBackboneAttributes(xpp, res);
10772    next(xpp);
10773    int eventType = nextNoWhitespace(xpp);
10774    while (eventType != XmlPullParser.END_TAG) {
10775  if (!parseImplementationGuideImplementationGuideGlobalComponentContent(eventType, xpp, owner, res))
10776        unknownContent(xpp);
10777      eventType = nextNoWhitespace(xpp);
10778    }
10779    next(xpp);
10780    parseElementClose(res);
10781    return res;
10782  }
10783
10784  protected boolean parseImplementationGuideImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10785      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10786        res.setTypeElement(parseCode(xpp));
10787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10788        res.setProfileElement(parseCanonical(xpp));
10789      } else if (!parseBackboneElementContent(eventType, xpp, res))
10790        return false;
10791    return true;
10792  }
10793
10794  protected ImplementationGuide.ImplementationGuideDefinitionComponent parseImplementationGuideImplementationGuideDefinitionComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10795    ImplementationGuide.ImplementationGuideDefinitionComponent res = new ImplementationGuide.ImplementationGuideDefinitionComponent();
10796    parseBackboneAttributes(xpp, res);
10797    next(xpp);
10798    int eventType = nextNoWhitespace(xpp);
10799    while (eventType != XmlPullParser.END_TAG) {
10800  if (!parseImplementationGuideImplementationGuideDefinitionComponentContent(eventType, xpp, owner, res))
10801        unknownContent(xpp);
10802      eventType = nextNoWhitespace(xpp);
10803    }
10804    next(xpp);
10805    parseElementClose(res);
10806    return res;
10807  }
10808
10809  protected boolean parseImplementationGuideImplementationGuideDefinitionComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10810      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
10811        res.getPackage().add(parseImplementationGuideImplementationGuideDefinitionPackageComponent(xpp, owner));
10812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
10813        res.getResource().add(parseImplementationGuideImplementationGuideDefinitionResourceComponent(xpp, owner));
10814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
10815        res.setPage(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
10816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
10817        res.getParameter().add(parseImplementationGuideImplementationGuideDefinitionParameterComponent(xpp, owner));
10818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("template")) {
10819        res.getTemplate().add(parseImplementationGuideImplementationGuideDefinitionTemplateComponent(xpp, owner));
10820      } else if (!parseBackboneElementContent(eventType, xpp, res))
10821        return false;
10822    return true;
10823  }
10824
10825  protected ImplementationGuide.ImplementationGuideDefinitionPackageComponent parseImplementationGuideImplementationGuideDefinitionPackageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10826    ImplementationGuide.ImplementationGuideDefinitionPackageComponent res = new ImplementationGuide.ImplementationGuideDefinitionPackageComponent();
10827    parseBackboneAttributes(xpp, res);
10828    next(xpp);
10829    int eventType = nextNoWhitespace(xpp);
10830    while (eventType != XmlPullParser.END_TAG) {
10831  if (!parseImplementationGuideImplementationGuideDefinitionPackageComponentContent(eventType, xpp, owner, res))
10832        unknownContent(xpp);
10833      eventType = nextNoWhitespace(xpp);
10834    }
10835    next(xpp);
10836    parseElementClose(res);
10837    return res;
10838  }
10839
10840  protected boolean parseImplementationGuideImplementationGuideDefinitionPackageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionPackageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10841      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10842        res.setNameElement(parseString(xpp));
10843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10844        res.setDescriptionElement(parseString(xpp));
10845      } else if (!parseBackboneElementContent(eventType, xpp, res))
10846        return false;
10847    return true;
10848  }
10849
10850  protected ImplementationGuide.ImplementationGuideDefinitionResourceComponent parseImplementationGuideImplementationGuideDefinitionResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10851    ImplementationGuide.ImplementationGuideDefinitionResourceComponent res = new ImplementationGuide.ImplementationGuideDefinitionResourceComponent();
10852    parseBackboneAttributes(xpp, res);
10853    next(xpp);
10854    int eventType = nextNoWhitespace(xpp);
10855    while (eventType != XmlPullParser.END_TAG) {
10856  if (!parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(eventType, xpp, owner, res))
10857        unknownContent(xpp);
10858      eventType = nextNoWhitespace(xpp);
10859    }
10860    next(xpp);
10861    parseElementClose(res);
10862    return res;
10863  }
10864
10865  protected boolean parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10866      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
10867        res.setReference(parseReference(xpp));
10868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10869        res.setNameElement(parseString(xpp));
10870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10871        res.setDescriptionElement(parseString(xpp));
10872      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
10873        res.setExample(parseType("example", xpp));
10874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
10875        res.setPackageElement(parseId(xpp));
10876      } else if (!parseBackboneElementContent(eventType, xpp, res))
10877        return false;
10878    return true;
10879  }
10880
10881  protected ImplementationGuide.ImplementationGuideDefinitionPageComponent parseImplementationGuideImplementationGuideDefinitionPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10882    ImplementationGuide.ImplementationGuideDefinitionPageComponent res = new ImplementationGuide.ImplementationGuideDefinitionPageComponent();
10883    parseBackboneAttributes(xpp, res);
10884    next(xpp);
10885    int eventType = nextNoWhitespace(xpp);
10886    while (eventType != XmlPullParser.END_TAG) {
10887  if (!parseImplementationGuideImplementationGuideDefinitionPageComponentContent(eventType, xpp, owner, res))
10888        unknownContent(xpp);
10889      eventType = nextNoWhitespace(xpp);
10890    }
10891    next(xpp);
10892    parseElementClose(res);
10893    return res;
10894  }
10895
10896  protected boolean parseImplementationGuideImplementationGuideDefinitionPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10897      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "name")) {
10898        res.setName(parseType("name", xpp));
10899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10900        res.setTitleElement(parseString(xpp));
10901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generation")) {
10902        res.setGenerationElement(parseEnumeration(xpp, ImplementationGuide.GuidePageGeneration.NULL, new ImplementationGuide.GuidePageGenerationEnumFactory()));
10903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
10904        res.getPage().add(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
10905      } else if (!parseBackboneElementContent(eventType, xpp, res))
10906        return false;
10907    return true;
10908  }
10909
10910  protected ImplementationGuide.ImplementationGuideDefinitionParameterComponent parseImplementationGuideImplementationGuideDefinitionParameterComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10911    ImplementationGuide.ImplementationGuideDefinitionParameterComponent res = new ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
10912    parseBackboneAttributes(xpp, res);
10913    next(xpp);
10914    int eventType = nextNoWhitespace(xpp);
10915    while (eventType != XmlPullParser.END_TAG) {
10916  if (!parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(eventType, xpp, owner, res))
10917        unknownContent(xpp);
10918      eventType = nextNoWhitespace(xpp);
10919    }
10920    next(xpp);
10921    parseElementClose(res);
10922    return res;
10923  }
10924
10925  protected boolean parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10926      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10927        res.setCodeElement(parseEnumeration(xpp, ImplementationGuide.GuideParameterCode.NULL, new ImplementationGuide.GuideParameterCodeEnumFactory()));
10928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10929        res.setValueElement(parseString(xpp));
10930      } else if (!parseBackboneElementContent(eventType, xpp, res))
10931        return false;
10932    return true;
10933  }
10934
10935  protected ImplementationGuide.ImplementationGuideDefinitionTemplateComponent parseImplementationGuideImplementationGuideDefinitionTemplateComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10936    ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res = new ImplementationGuide.ImplementationGuideDefinitionTemplateComponent();
10937    parseBackboneAttributes(xpp, res);
10938    next(xpp);
10939    int eventType = nextNoWhitespace(xpp);
10940    while (eventType != XmlPullParser.END_TAG) {
10941  if (!parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(eventType, xpp, owner, res))
10942        unknownContent(xpp);
10943      eventType = nextNoWhitespace(xpp);
10944    }
10945    next(xpp);
10946    parseElementClose(res);
10947    return res;
10948  }
10949
10950  protected boolean parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10951      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10952        res.setCodeElement(parseCode(xpp));
10953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
10954        res.setSourceElement(parseString(xpp));
10955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
10956        res.setScopeElement(parseString(xpp));
10957      } else if (!parseBackboneElementContent(eventType, xpp, res))
10958        return false;
10959    return true;
10960  }
10961
10962  protected ImplementationGuide.ImplementationGuideManifestComponent parseImplementationGuideImplementationGuideManifestComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10963    ImplementationGuide.ImplementationGuideManifestComponent res = new ImplementationGuide.ImplementationGuideManifestComponent();
10964    parseBackboneAttributes(xpp, res);
10965    next(xpp);
10966    int eventType = nextNoWhitespace(xpp);
10967    while (eventType != XmlPullParser.END_TAG) {
10968  if (!parseImplementationGuideImplementationGuideManifestComponentContent(eventType, xpp, owner, res))
10969        unknownContent(xpp);
10970      eventType = nextNoWhitespace(xpp);
10971    }
10972    next(xpp);
10973    parseElementClose(res);
10974    return res;
10975  }
10976
10977  protected boolean parseImplementationGuideImplementationGuideManifestComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideManifestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10978      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rendering")) {
10979        res.setRenderingElement(parseUrl(xpp));
10980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
10981        res.getResource().add(parseImplementationGuideImplementationGuideManifestResourceComponent(xpp, owner));
10982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
10983        res.getPage().add(parseImplementationGuideImplementationGuideManifestPageComponent(xpp, owner));
10984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
10985        res.getImage().add(parseString(xpp));
10986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
10987        res.getOther().add(parseString(xpp));
10988      } else if (!parseBackboneElementContent(eventType, xpp, res))
10989        return false;
10990    return true;
10991  }
10992
10993  protected ImplementationGuide.ImplementationGuideManifestResourceComponent parseImplementationGuideImplementationGuideManifestResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10994    ImplementationGuide.ImplementationGuideManifestResourceComponent res = new ImplementationGuide.ImplementationGuideManifestResourceComponent();
10995    parseBackboneAttributes(xpp, res);
10996    next(xpp);
10997    int eventType = nextNoWhitespace(xpp);
10998    while (eventType != XmlPullParser.END_TAG) {
10999  if (!parseImplementationGuideImplementationGuideManifestResourceComponentContent(eventType, xpp, owner, res))
11000        unknownContent(xpp);
11001      eventType = nextNoWhitespace(xpp);
11002    }
11003    next(xpp);
11004    parseElementClose(res);
11005    return res;
11006  }
11007
11008  protected boolean parseImplementationGuideImplementationGuideManifestResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideManifestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11009      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11010        res.setReference(parseReference(xpp));
11011      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
11012        res.setExample(parseType("example", xpp));
11013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativePath")) {
11014        res.setRelativePathElement(parseUrl(xpp));
11015      } else if (!parseBackboneElementContent(eventType, xpp, res))
11016        return false;
11017    return true;
11018  }
11019
11020  protected ImplementationGuide.ImplementationGuideManifestPageComponent parseImplementationGuideImplementationGuideManifestPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11021    ImplementationGuide.ImplementationGuideManifestPageComponent res = new ImplementationGuide.ImplementationGuideManifestPageComponent();
11022    parseBackboneAttributes(xpp, res);
11023    next(xpp);
11024    int eventType = nextNoWhitespace(xpp);
11025    while (eventType != XmlPullParser.END_TAG) {
11026  if (!parseImplementationGuideImplementationGuideManifestPageComponentContent(eventType, xpp, owner, res))
11027        unknownContent(xpp);
11028      eventType = nextNoWhitespace(xpp);
11029    }
11030    next(xpp);
11031    parseElementClose(res);
11032    return res;
11033  }
11034
11035  protected boolean parseImplementationGuideImplementationGuideManifestPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideManifestPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11036      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11037        res.setNameElement(parseString(xpp));
11038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11039        res.setTitleElement(parseString(xpp));
11040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("anchor")) {
11041        res.getAnchor().add(parseString(xpp));
11042      } else if (!parseBackboneElementContent(eventType, xpp, res))
11043        return false;
11044    return true;
11045  }
11046
11047  protected Invoice parseInvoice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11048    Invoice res = new Invoice();
11049    parseDomainResourceAttributes(xpp, res);
11050    next(xpp);
11051    int eventType = nextNoWhitespace(xpp);
11052    while (eventType != XmlPullParser.END_TAG) {
11053  if (!parseInvoiceContent(eventType, xpp, res))
11054        unknownContent(xpp);
11055      eventType = nextNoWhitespace(xpp);
11056    }
11057    next(xpp);
11058    parseElementClose(res);
11059    return res;
11060  }
11061
11062  protected boolean parseInvoiceContent(int eventType, XmlPullParser xpp, Invoice res) throws XmlPullParserException, IOException, FHIRFormatError {
11063      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11064        res.getIdentifier().add(parseIdentifier(xpp));
11065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11066        res.setStatusElement(parseEnumeration(xpp, Invoice.InvoiceStatus.NULL, new Invoice.InvoiceStatusEnumFactory()));
11067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelledReason")) {
11068        res.setCancelledReasonElement(parseString(xpp));
11069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11070        res.setType(parseCodeableConcept(xpp));
11071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11072        res.setSubject(parseReference(xpp));
11073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
11074        res.setRecipient(parseReference(xpp));
11075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11076        res.setDateElement(parseDateTime(xpp));
11077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
11078        res.getParticipant().add(parseInvoiceInvoiceParticipantComponent(xpp, res));
11079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
11080        res.setIssuer(parseReference(xpp));
11081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
11082        res.setAccount(parseReference(xpp));
11083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lineItem")) {
11084        res.getLineItem().add(parseInvoiceInvoiceLineItemComponent(xpp, res));
11085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalPriceComponent")) {
11086        res.getTotalPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, res));
11087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalNet")) {
11088        res.setTotalNet(parseMoney(xpp));
11089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalGross")) {
11090        res.setTotalGross(parseMoney(xpp));
11091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentTerms")) {
11092        res.setPaymentTermsElement(parseMarkdown(xpp));
11093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11094        res.getNote().add(parseAnnotation(xpp));
11095      } else if (!parseDomainResourceContent(eventType, xpp, res))
11096        return false;
11097    return true;
11098  }
11099
11100  protected Invoice.InvoiceParticipantComponent parseInvoiceInvoiceParticipantComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
11101    Invoice.InvoiceParticipantComponent res = new Invoice.InvoiceParticipantComponent();
11102    parseBackboneAttributes(xpp, res);
11103    next(xpp);
11104    int eventType = nextNoWhitespace(xpp);
11105    while (eventType != XmlPullParser.END_TAG) {
11106  if (!parseInvoiceInvoiceParticipantComponentContent(eventType, xpp, owner, res))
11107        unknownContent(xpp);
11108      eventType = nextNoWhitespace(xpp);
11109    }
11110    next(xpp);
11111    parseElementClose(res);
11112    return res;
11113  }
11114
11115  protected boolean parseInvoiceInvoiceParticipantComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11116      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
11117        res.setRole(parseCodeableConcept(xpp));
11118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11119        res.setActor(parseReference(xpp));
11120      } else if (!parseBackboneElementContent(eventType, xpp, res))
11121        return false;
11122    return true;
11123  }
11124
11125  protected Invoice.InvoiceLineItemComponent parseInvoiceInvoiceLineItemComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
11126    Invoice.InvoiceLineItemComponent res = new Invoice.InvoiceLineItemComponent();
11127    parseBackboneAttributes(xpp, res);
11128    next(xpp);
11129    int eventType = nextNoWhitespace(xpp);
11130    while (eventType != XmlPullParser.END_TAG) {
11131  if (!parseInvoiceInvoiceLineItemComponentContent(eventType, xpp, owner, res))
11132        unknownContent(xpp);
11133      eventType = nextNoWhitespace(xpp);
11134    }
11135    next(xpp);
11136    parseElementClose(res);
11137    return res;
11138  }
11139
11140  protected boolean parseInvoiceInvoiceLineItemComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11141      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
11142        res.setSequenceElement(parsePositiveInt(xpp));
11143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chargeItem")) {
11144        res.setChargeItem(parseReference(xpp));
11145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
11146        res.getPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, owner));
11147      } else if (!parseBackboneElementContent(eventType, xpp, res))
11148        return false;
11149    return true;
11150  }
11151
11152  protected Invoice.InvoiceLineItemPriceComponentComponent parseInvoiceInvoiceLineItemPriceComponentComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
11153    Invoice.InvoiceLineItemPriceComponentComponent res = new Invoice.InvoiceLineItemPriceComponentComponent();
11154    parseBackboneAttributes(xpp, res);
11155    next(xpp);
11156    int eventType = nextNoWhitespace(xpp);
11157    while (eventType != XmlPullParser.END_TAG) {
11158  if (!parseInvoiceInvoiceLineItemPriceComponentComponentContent(eventType, xpp, owner, res))
11159        unknownContent(xpp);
11160      eventType = nextNoWhitespace(xpp);
11161    }
11162    next(xpp);
11163    parseElementClose(res);
11164    return res;
11165  }
11166
11167  protected boolean parseInvoiceInvoiceLineItemPriceComponentComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11168      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11169        res.setTypeElement(parseEnumeration(xpp, Invoice.InvoicePriceComponentType.NULL, new Invoice.InvoicePriceComponentTypeEnumFactory()));
11170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11171        res.setCode(parseCodeableConcept(xpp));
11172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
11173        res.setFactor(parseMoney(xpp));
11174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
11175        res.setAmountElement(parseDecimal(xpp));
11176      } else if (!parseBackboneElementContent(eventType, xpp, res))
11177        return false;
11178    return true;
11179  }
11180
11181  protected ItemInstance parseItemInstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11182    ItemInstance res = new ItemInstance();
11183    parseDomainResourceAttributes(xpp, res);
11184    next(xpp);
11185    int eventType = nextNoWhitespace(xpp);
11186    while (eventType != XmlPullParser.END_TAG) {
11187  if (!parseItemInstanceContent(eventType, xpp, res))
11188        unknownContent(xpp);
11189      eventType = nextNoWhitespace(xpp);
11190    }
11191    next(xpp);
11192    parseElementClose(res);
11193    return res;
11194  }
11195
11196  protected boolean parseItemInstanceContent(int eventType, XmlPullParser xpp, ItemInstance res) throws XmlPullParserException, IOException, FHIRFormatError {
11197      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
11198        res.setCountElement(parseInteger(xpp));
11199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11200        res.setLocation(parseReference(xpp));
11201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11202        res.setSubject(parseReference(xpp));
11203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
11204        res.setManufactureDateElement(parseDateTime(xpp));
11205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiryDate")) {
11206        res.setExpiryDateElement(parseDateTime(xpp));
11207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currentSWVersion")) {
11208        res.setCurrentSWVersionElement(parseString(xpp));
11209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
11210        res.setLotNumberElement(parseString(xpp));
11211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
11212        res.setSerialNumberElement(parseString(xpp));
11213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
11214        res.setCarrierAIDCElement(parseString(xpp));
11215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
11216        res.setCarrierHRFElement(parseString(xpp));
11217      } else if (!parseDomainResourceContent(eventType, xpp, res))
11218        return false;
11219    return true;
11220  }
11221
11222  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11223    Library res = new Library();
11224    parseDomainResourceAttributes(xpp, res);
11225    next(xpp);
11226    int eventType = nextNoWhitespace(xpp);
11227    while (eventType != XmlPullParser.END_TAG) {
11228  if (!parseLibraryContent(eventType, xpp, res))
11229        unknownContent(xpp);
11230      eventType = nextNoWhitespace(xpp);
11231    }
11232    next(xpp);
11233    parseElementClose(res);
11234    return res;
11235  }
11236
11237  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
11238      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11239        res.setUrlElement(parseUri(xpp));
11240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11241        res.getIdentifier().add(parseIdentifier(xpp));
11242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11243        res.setVersionElement(parseString(xpp));
11244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11245        res.setNameElement(parseString(xpp));
11246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11247        res.setTitleElement(parseString(xpp));
11248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
11249        res.setSubtitleElement(parseString(xpp));
11250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11251        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11253        res.setExperimentalElement(parseBoolean(xpp));
11254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11255        res.setType(parseCodeableConcept(xpp));
11256      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
11257        res.setSubject(parseType("subject", xpp));
11258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11259        res.setDateElement(parseDateTime(xpp));
11260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11261        res.setPublisherElement(parseString(xpp));
11262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11263        res.getContact().add(parseContactDetail(xpp));
11264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11265        res.setDescriptionElement(parseMarkdown(xpp));
11266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11267        res.getUseContext().add(parseUsageContext(xpp));
11268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11269        res.getJurisdiction().add(parseCodeableConcept(xpp));
11270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
11271        res.setPurposeElement(parseMarkdown(xpp));
11272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
11273        res.setUsageElement(parseString(xpp));
11274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11275        res.setCopyrightElement(parseMarkdown(xpp));
11276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
11277        res.setApprovalDateElement(parseDate(xpp));
11278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
11279        res.setLastReviewDateElement(parseDate(xpp));
11280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
11281        res.setEffectivePeriod(parsePeriod(xpp));
11282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
11283        res.getTopic().add(parseCodeableConcept(xpp));
11284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
11285        res.getContributor().add(parseContributor(xpp));
11286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
11287        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
11288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
11289        res.getParameter().add(parseParameterDefinition(xpp));
11290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
11291        res.getDataRequirement().add(parseDataRequirement(xpp));
11292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
11293        res.getContent().add(parseAttachment(xpp));
11294      } else if (!parseDomainResourceContent(eventType, xpp, res))
11295        return false;
11296    return true;
11297  }
11298
11299  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11300    Linkage res = new Linkage();
11301    parseDomainResourceAttributes(xpp, res);
11302    next(xpp);
11303    int eventType = nextNoWhitespace(xpp);
11304    while (eventType != XmlPullParser.END_TAG) {
11305  if (!parseLinkageContent(eventType, xpp, res))
11306        unknownContent(xpp);
11307      eventType = nextNoWhitespace(xpp);
11308    }
11309    next(xpp);
11310    parseElementClose(res);
11311    return res;
11312  }
11313
11314  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
11315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
11316        res.setActiveElement(parseBoolean(xpp));
11317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
11318        res.setAuthor(parseReference(xpp));
11319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
11320        res.getItem().add(parseLinkageLinkageItemComponent(xpp, res));
11321      } else if (!parseDomainResourceContent(eventType, xpp, res))
11322        return false;
11323    return true;
11324  }
11325
11326  protected Linkage.LinkageItemComponent parseLinkageLinkageItemComponent(XmlPullParser xpp, Linkage owner) throws XmlPullParserException, IOException, FHIRFormatError {
11327    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
11328    parseBackboneAttributes(xpp, res);
11329    next(xpp);
11330    int eventType = nextNoWhitespace(xpp);
11331    while (eventType != XmlPullParser.END_TAG) {
11332  if (!parseLinkageLinkageItemComponentContent(eventType, xpp, owner, res))
11333        unknownContent(xpp);
11334      eventType = nextNoWhitespace(xpp);
11335    }
11336    next(xpp);
11337    parseElementClose(res);
11338    return res;
11339  }
11340
11341  protected boolean parseLinkageLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage owner, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11342      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11343        res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
11344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
11345        res.setResource(parseReference(xpp));
11346      } else if (!parseBackboneElementContent(eventType, xpp, res))
11347        return false;
11348    return true;
11349  }
11350
11351  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11352    ListResource res = new ListResource();
11353    parseDomainResourceAttributes(xpp, res);
11354    next(xpp);
11355    int eventType = nextNoWhitespace(xpp);
11356    while (eventType != XmlPullParser.END_TAG) {
11357  if (!parseListResourceContent(eventType, xpp, res))
11358        unknownContent(xpp);
11359      eventType = nextNoWhitespace(xpp);
11360    }
11361    next(xpp);
11362    parseElementClose(res);
11363    return res;
11364  }
11365
11366  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
11367      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11368        res.getIdentifier().add(parseIdentifier(xpp));
11369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11370        res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
11371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
11372        res.setModeElement(parseEnumeration(xpp, ListResource.ListMode.NULL, new ListResource.ListModeEnumFactory()));
11373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11374        res.setTitleElement(parseString(xpp));
11375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11376        res.setCode(parseCodeableConcept(xpp));
11377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11378        res.setSubject(parseReference(xpp));
11379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11380        res.setEncounter(parseReference(xpp));
11381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11382        res.setDateElement(parseDateTime(xpp));
11383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
11384        res.setSource(parseReference(xpp));
11385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
11386        res.setOrderedBy(parseCodeableConcept(xpp));
11387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11388        res.getNote().add(parseAnnotation(xpp));
11389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
11390        res.getEntry().add(parseListResourceListEntryComponent(xpp, res));
11391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
11392        res.setEmptyReason(parseCodeableConcept(xpp));
11393      } else if (!parseDomainResourceContent(eventType, xpp, res))
11394        return false;
11395    return true;
11396  }
11397
11398  protected ListResource.ListEntryComponent parseListResourceListEntryComponent(XmlPullParser xpp, ListResource owner) throws XmlPullParserException, IOException, FHIRFormatError {
11399    ListResource.ListEntryComponent res = new ListResource.ListEntryComponent();
11400    parseBackboneAttributes(xpp, res);
11401    next(xpp);
11402    int eventType = nextNoWhitespace(xpp);
11403    while (eventType != XmlPullParser.END_TAG) {
11404  if (!parseListResourceListEntryComponentContent(eventType, xpp, owner, res))
11405        unknownContent(xpp);
11406      eventType = nextNoWhitespace(xpp);
11407    }
11408    next(xpp);
11409    parseElementClose(res);
11410    return res;
11411  }
11412
11413  protected boolean parseListResourceListEntryComponentContent(int eventType, XmlPullParser xpp, ListResource owner, ListResource.ListEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11414      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
11415        res.setFlag(parseCodeableConcept(xpp));
11416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
11417        res.setDeletedElement(parseBoolean(xpp));
11418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11419        res.setDateElement(parseDateTime(xpp));
11420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
11421        res.setItem(parseReference(xpp));
11422      } else if (!parseBackboneElementContent(eventType, xpp, res))
11423        return false;
11424    return true;
11425  }
11426
11427  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11428    Location res = new Location();
11429    parseDomainResourceAttributes(xpp, res);
11430    next(xpp);
11431    int eventType = nextNoWhitespace(xpp);
11432    while (eventType != XmlPullParser.END_TAG) {
11433  if (!parseLocationContent(eventType, xpp, res))
11434        unknownContent(xpp);
11435      eventType = nextNoWhitespace(xpp);
11436    }
11437    next(xpp);
11438    parseElementClose(res);
11439    return res;
11440  }
11441
11442  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
11443      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11444        res.getIdentifier().add(parseIdentifier(xpp));
11445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11446        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
11447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
11448        res.setOperationalStatus(parseCoding(xpp));
11449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11450        res.setNameElement(parseString(xpp));
11451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
11452        res.getAlias().add(parseString(xpp));
11453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11454        res.setDescriptionElement(parseString(xpp));
11455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
11456        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
11457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11458        res.getType().add(parseCodeableConcept(xpp));
11459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
11460        res.getTelecom().add(parseContactPoint(xpp));
11461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
11462        res.setAddress(parseAddress(xpp));
11463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
11464        res.setPhysicalType(parseCodeableConcept(xpp));
11465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
11466        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
11467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
11468        res.setManagingOrganization(parseReference(xpp));
11469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11470        res.setPartOf(parseReference(xpp));
11471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hoursOfOperation")) {
11472        res.getHoursOfOperation().add(parseLocationLocationHoursOfOperationComponent(xpp, res));
11473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
11474        res.setAvailabilityExceptionsElement(parseString(xpp));
11475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11476        res.getEndpoint().add(parseReference(xpp));
11477      } else if (!parseDomainResourceContent(eventType, xpp, res))
11478        return false;
11479    return true;
11480  }
11481
11482  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
11483    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
11484    parseBackboneAttributes(xpp, res);
11485    next(xpp);
11486    int eventType = nextNoWhitespace(xpp);
11487    while (eventType != XmlPullParser.END_TAG) {
11488  if (!parseLocationLocationPositionComponentContent(eventType, xpp, owner, res))
11489        unknownContent(xpp);
11490      eventType = nextNoWhitespace(xpp);
11491    }
11492    next(xpp);
11493    parseElementClose(res);
11494    return res;
11495  }
11496
11497  protected boolean parseLocationLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11498      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
11499        res.setLongitudeElement(parseDecimal(xpp));
11500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
11501        res.setLatitudeElement(parseDecimal(xpp));
11502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
11503        res.setAltitudeElement(parseDecimal(xpp));
11504      } else if (!parseBackboneElementContent(eventType, xpp, res))
11505        return false;
11506    return true;
11507  }
11508
11509  protected Location.LocationHoursOfOperationComponent parseLocationLocationHoursOfOperationComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
11510    Location.LocationHoursOfOperationComponent res = new Location.LocationHoursOfOperationComponent();
11511    parseBackboneAttributes(xpp, res);
11512    next(xpp);
11513    int eventType = nextNoWhitespace(xpp);
11514    while (eventType != XmlPullParser.END_TAG) {
11515  if (!parseLocationLocationHoursOfOperationComponentContent(eventType, xpp, owner, res))
11516        unknownContent(xpp);
11517      eventType = nextNoWhitespace(xpp);
11518    }
11519    next(xpp);
11520    parseElementClose(res);
11521    return res;
11522  }
11523
11524  protected boolean parseLocationLocationHoursOfOperationComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationHoursOfOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11525      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
11526        res.getDaysOfWeek().add(parseEnumeration(xpp, Location.DaysOfWeek.NULL, new Location.DaysOfWeekEnumFactory()));
11527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
11528        res.setAllDayElement(parseBoolean(xpp));
11529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("openingTime")) {
11530        res.setOpeningTimeElement(parseTime(xpp));
11531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closingTime")) {
11532        res.setClosingTimeElement(parseTime(xpp));
11533      } else if (!parseBackboneElementContent(eventType, xpp, res))
11534        return false;
11535    return true;
11536  }
11537
11538  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11539    Measure res = new Measure();
11540    parseDomainResourceAttributes(xpp, res);
11541    next(xpp);
11542    int eventType = nextNoWhitespace(xpp);
11543    while (eventType != XmlPullParser.END_TAG) {
11544  if (!parseMeasureContent(eventType, xpp, res))
11545        unknownContent(xpp);
11546      eventType = nextNoWhitespace(xpp);
11547    }
11548    next(xpp);
11549    parseElementClose(res);
11550    return res;
11551  }
11552
11553  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
11554      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11555        res.setUrlElement(parseUri(xpp));
11556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11557        res.getIdentifier().add(parseIdentifier(xpp));
11558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11559        res.setVersionElement(parseString(xpp));
11560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11561        res.setNameElement(parseString(xpp));
11562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11563        res.setTitleElement(parseString(xpp));
11564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
11565        res.setSubtitleElement(parseString(xpp));
11566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11567        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11569        res.setExperimentalElement(parseBoolean(xpp));
11570      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
11571        res.setSubject(parseType("subject", xpp));
11572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11573        res.setDateElement(parseDateTime(xpp));
11574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11575        res.setPublisherElement(parseString(xpp));
11576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11577        res.getContact().add(parseContactDetail(xpp));
11578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11579        res.setDescriptionElement(parseMarkdown(xpp));
11580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11581        res.getUseContext().add(parseUsageContext(xpp));
11582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11583        res.getJurisdiction().add(parseCodeableConcept(xpp));
11584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
11585        res.setPurposeElement(parseMarkdown(xpp));
11586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
11587        res.setUsageElement(parseString(xpp));
11588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11589        res.setCopyrightElement(parseMarkdown(xpp));
11590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
11591        res.setApprovalDateElement(parseDate(xpp));
11592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
11593        res.setLastReviewDateElement(parseDate(xpp));
11594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
11595        res.setEffectivePeriod(parsePeriod(xpp));
11596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
11597        res.getTopic().add(parseCodeableConcept(xpp));
11598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
11599        res.getContributor().add(parseContributor(xpp));
11600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
11601        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
11602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
11603        res.getLibrary().add(parseCanonical(xpp));
11604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
11605        res.setDisclaimerElement(parseMarkdown(xpp));
11606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
11607        res.setScoring(parseCodeableConcept(xpp));
11608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
11609        res.setCompositeScoring(parseCodeableConcept(xpp));
11610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11611        res.getType().add(parseCodeableConcept(xpp));
11612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
11613        res.setRiskAdjustmentElement(parseString(xpp));
11614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
11615        res.setRateAggregationElement(parseString(xpp));
11616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
11617        res.setRationaleElement(parseMarkdown(xpp));
11618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
11619        res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
11620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
11621        res.setImprovementNotationElement(parseString(xpp));
11622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
11623        res.getDefinition().add(parseMarkdown(xpp));
11624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
11625        res.setGuidanceElement(parseMarkdown(xpp));
11626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("set")) {
11627        res.setSetElement(parseString(xpp));
11628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
11629        res.getGroup().add(parseMeasureMeasureGroupComponent(xpp, res));
11630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
11631        res.getSupplementalData().add(parseMeasureMeasureSupplementalDataComponent(xpp, res));
11632      } else if (!parseDomainResourceContent(eventType, xpp, res))
11633        return false;
11634    return true;
11635  }
11636
11637  protected Measure.MeasureGroupComponent parseMeasureMeasureGroupComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
11638    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
11639    parseBackboneAttributes(xpp, res);
11640    next(xpp);
11641    int eventType = nextNoWhitespace(xpp);
11642    while (eventType != XmlPullParser.END_TAG) {
11643  if (!parseMeasureMeasureGroupComponentContent(eventType, xpp, owner, res))
11644        unknownContent(xpp);
11645      eventType = nextNoWhitespace(xpp);
11646    }
11647    next(xpp);
11648    parseElementClose(res);
11649    return res;
11650  }
11651
11652  protected boolean parseMeasureMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11653      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11654        res.setCode(parseCodeableConcept(xpp));
11655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11656        res.setDescriptionElement(parseString(xpp));
11657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
11658        res.getPopulation().add(parseMeasureMeasureGroupPopulationComponent(xpp, owner));
11659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
11660        res.getStratifier().add(parseMeasureMeasureGroupStratifierComponent(xpp, owner));
11661      } else if (!parseBackboneElementContent(eventType, xpp, res))
11662        return false;
11663    return true;
11664  }
11665
11666  protected Measure.MeasureGroupPopulationComponent parseMeasureMeasureGroupPopulationComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
11667    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
11668    parseBackboneAttributes(xpp, res);
11669    next(xpp);
11670    int eventType = nextNoWhitespace(xpp);
11671    while (eventType != XmlPullParser.END_TAG) {
11672  if (!parseMeasureMeasureGroupPopulationComponentContent(eventType, xpp, owner, res))
11673        unknownContent(xpp);
11674      eventType = nextNoWhitespace(xpp);
11675    }
11676    next(xpp);
11677    parseElementClose(res);
11678    return res;
11679  }
11680
11681  protected boolean parseMeasureMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11682      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11683        res.setCode(parseCodeableConcept(xpp));
11684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11685        res.setDescriptionElement(parseString(xpp));
11686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
11687        res.setCriteriaElement(parseString(xpp));
11688      } else if (!parseBackboneElementContent(eventType, xpp, res))
11689        return false;
11690    return true;
11691  }
11692
11693  protected Measure.MeasureGroupStratifierComponent parseMeasureMeasureGroupStratifierComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
11694    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
11695    parseBackboneAttributes(xpp, res);
11696    next(xpp);
11697    int eventType = nextNoWhitespace(xpp);
11698    while (eventType != XmlPullParser.END_TAG) {
11699  if (!parseMeasureMeasureGroupStratifierComponentContent(eventType, xpp, owner, res))
11700        unknownContent(xpp);
11701      eventType = nextNoWhitespace(xpp);
11702    }
11703    next(xpp);
11704    parseElementClose(res);
11705    return res;
11706  }
11707
11708  protected boolean parseMeasureMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11709      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11710        res.setCode(parseCodeableConcept(xpp));
11711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11712        res.setDescriptionElement(parseString(xpp));
11713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
11714        res.setCriteriaElement(parseString(xpp));
11715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
11716        res.setPathElement(parseString(xpp));
11717      } else if (!parseBackboneElementContent(eventType, xpp, res))
11718        return false;
11719    return true;
11720  }
11721
11722  protected Measure.MeasureSupplementalDataComponent parseMeasureMeasureSupplementalDataComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
11723    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
11724    parseBackboneAttributes(xpp, res);
11725    next(xpp);
11726    int eventType = nextNoWhitespace(xpp);
11727    while (eventType != XmlPullParser.END_TAG) {
11728  if (!parseMeasureMeasureSupplementalDataComponentContent(eventType, xpp, owner, res))
11729        unknownContent(xpp);
11730      eventType = nextNoWhitespace(xpp);
11731    }
11732    next(xpp);
11733    parseElementClose(res);
11734    return res;
11735  }
11736
11737  protected boolean parseMeasureMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11738      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11739        res.setCode(parseCodeableConcept(xpp));
11740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
11741        res.getUsage().add(parseCodeableConcept(xpp));
11742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11743        res.setDescriptionElement(parseString(xpp));
11744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
11745        res.setCriteriaElement(parseString(xpp));
11746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
11747        res.setPathElement(parseString(xpp));
11748      } else if (!parseBackboneElementContent(eventType, xpp, res))
11749        return false;
11750    return true;
11751  }
11752
11753  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11754    MeasureReport res = new MeasureReport();
11755    parseDomainResourceAttributes(xpp, res);
11756    next(xpp);
11757    int eventType = nextNoWhitespace(xpp);
11758    while (eventType != XmlPullParser.END_TAG) {
11759  if (!parseMeasureReportContent(eventType, xpp, res))
11760        unknownContent(xpp);
11761      eventType = nextNoWhitespace(xpp);
11762    }
11763    next(xpp);
11764    parseElementClose(res);
11765    return res;
11766  }
11767
11768  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
11769      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11770        res.getIdentifier().add(parseIdentifier(xpp));
11771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11772        res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
11773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11774        res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
11775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
11776        res.setMeasureElement(parseCanonical(xpp));
11777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11778        res.setSubject(parseReference(xpp));
11779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11780        res.setDateElement(parseDateTime(xpp));
11781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
11782        res.setReporter(parseReference(xpp));
11783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11784        res.setPeriod(parsePeriod(xpp));
11785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
11786        res.getGroup().add(parseMeasureReportMeasureReportGroupComponent(xpp, res));
11787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResources")) {
11788        res.setEvaluatedResources(parseReference(xpp));
11789      } else if (!parseDomainResourceContent(eventType, xpp, res))
11790        return false;
11791    return true;
11792  }
11793
11794  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportMeasureReportGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
11795    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
11796    parseBackboneAttributes(xpp, res);
11797    next(xpp);
11798    int eventType = nextNoWhitespace(xpp);
11799    while (eventType != XmlPullParser.END_TAG) {
11800  if (!parseMeasureReportMeasureReportGroupComponentContent(eventType, xpp, owner, res))
11801        unknownContent(xpp);
11802      eventType = nextNoWhitespace(xpp);
11803    }
11804    next(xpp);
11805    parseElementClose(res);
11806    return res;
11807  }
11808
11809  protected boolean parseMeasureReportMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11810      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11811        res.setCode(parseCodeableConcept(xpp));
11812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
11813        res.getPopulation().add(parseMeasureReportMeasureReportGroupPopulationComponent(xpp, owner));
11814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
11815        res.setMeasureScore(parseQuantity(xpp));
11816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
11817        res.getStratifier().add(parseMeasureReportMeasureReportGroupStratifierComponent(xpp, owner));
11818      } else if (!parseBackboneElementContent(eventType, xpp, res))
11819        return false;
11820    return true;
11821  }
11822
11823  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportMeasureReportGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
11824    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
11825    parseBackboneAttributes(xpp, res);
11826    next(xpp);
11827    int eventType = nextNoWhitespace(xpp);
11828    while (eventType != XmlPullParser.END_TAG) {
11829  if (!parseMeasureReportMeasureReportGroupPopulationComponentContent(eventType, xpp, owner, res))
11830        unknownContent(xpp);
11831      eventType = nextNoWhitespace(xpp);
11832    }
11833    next(xpp);
11834    parseElementClose(res);
11835    return res;
11836  }
11837
11838  protected boolean parseMeasureReportMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11839      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11840        res.setCode(parseCodeableConcept(xpp));
11841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
11842        res.setCountElement(parseInteger(xpp));
11843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjects")) {
11844        res.setSubjects(parseReference(xpp));
11845      } else if (!parseBackboneElementContent(eventType, xpp, res))
11846        return false;
11847    return true;
11848  }
11849
11850  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportMeasureReportGroupStratifierComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
11851    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
11852    parseBackboneAttributes(xpp, res);
11853    next(xpp);
11854    int eventType = nextNoWhitespace(xpp);
11855    while (eventType != XmlPullParser.END_TAG) {
11856  if (!parseMeasureReportMeasureReportGroupStratifierComponentContent(eventType, xpp, owner, res))
11857        unknownContent(xpp);
11858      eventType = nextNoWhitespace(xpp);
11859    }
11860    next(xpp);
11861    parseElementClose(res);
11862    return res;
11863  }
11864
11865  protected boolean parseMeasureReportMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11866      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11867        res.setCode(parseCodeableConcept(xpp));
11868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
11869        res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp, owner));
11870      } else if (!parseBackboneElementContent(eventType, xpp, res))
11871        return false;
11872    return true;
11873  }
11874
11875  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
11876    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
11877    parseBackboneAttributes(xpp, res);
11878    next(xpp);
11879    int eventType = nextNoWhitespace(xpp);
11880    while (eventType != XmlPullParser.END_TAG) {
11881  if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, owner, res))
11882        unknownContent(xpp);
11883      eventType = nextNoWhitespace(xpp);
11884    }
11885    next(xpp);
11886    parseElementClose(res);
11887    return res;
11888  }
11889
11890  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11891      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11892        res.setValue(parseCodeableConcept(xpp));
11893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
11894        res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp, owner));
11895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
11896        res.setMeasureScore(parseQuantity(xpp));
11897      } else if (!parseBackboneElementContent(eventType, xpp, res))
11898        return false;
11899    return true;
11900  }
11901
11902  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
11903    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
11904    parseBackboneAttributes(xpp, res);
11905    next(xpp);
11906    int eventType = nextNoWhitespace(xpp);
11907    while (eventType != XmlPullParser.END_TAG) {
11908  if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, owner, res))
11909        unknownContent(xpp);
11910      eventType = nextNoWhitespace(xpp);
11911    }
11912    next(xpp);
11913    parseElementClose(res);
11914    return res;
11915  }
11916
11917  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11919        res.setCode(parseCodeableConcept(xpp));
11920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
11921        res.setCountElement(parseInteger(xpp));
11922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjects")) {
11923        res.setSubjects(parseReference(xpp));
11924      } else if (!parseBackboneElementContent(eventType, xpp, res))
11925        return false;
11926    return true;
11927  }
11928
11929  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11930    Media res = new Media();
11931    parseDomainResourceAttributes(xpp, res);
11932    next(xpp);
11933    int eventType = nextNoWhitespace(xpp);
11934    while (eventType != XmlPullParser.END_TAG) {
11935  if (!parseMediaContent(eventType, xpp, res))
11936        unknownContent(xpp);
11937      eventType = nextNoWhitespace(xpp);
11938    }
11939    next(xpp);
11940    parseElementClose(res);
11941    return res;
11942  }
11943
11944  protected boolean parseMediaContent(int eventType, XmlPullParser xpp, Media res) throws XmlPullParserException, IOException, FHIRFormatError {
11945      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11946        res.getIdentifier().add(parseIdentifier(xpp));
11947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11948        res.getBasedOn().add(parseReference(xpp));
11949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11950        res.getPartOf().add(parseReference(xpp));
11951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11952        res.setStatusElement(parseEnumeration(xpp, Media.MediaStatus.NULL, new Media.MediaStatusEnumFactory()));
11953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11954        res.setType(parseCodeableConcept(xpp));
11955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
11956        res.setModality(parseCodeableConcept(xpp));
11957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
11958        res.setView(parseCodeableConcept(xpp));
11959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11960        res.setSubject(parseReference(xpp));
11961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11962        res.setContext(parseReference(xpp));
11963      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "created")) {
11964        res.setCreated(parseType("created", xpp));
11965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
11966        res.setIssuedElement(parseInstant(xpp));
11967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
11968        res.setOperator(parseReference(xpp));
11969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11970        res.getReasonCode().add(parseCodeableConcept(xpp));
11971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
11972        res.setBodySite(parseCodeableConcept(xpp));
11973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
11974        res.setDeviceNameElement(parseString(xpp));
11975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
11976        res.setDevice(parseReference(xpp));
11977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
11978        res.setHeightElement(parsePositiveInt(xpp));
11979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
11980        res.setWidthElement(parsePositiveInt(xpp));
11981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
11982        res.setFramesElement(parsePositiveInt(xpp));
11983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
11984        res.setDurationElement(parseDecimal(xpp));
11985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
11986        res.setContent(parseAttachment(xpp));
11987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11988        res.getNote().add(parseAnnotation(xpp));
11989      } else if (!parseDomainResourceContent(eventType, xpp, res))
11990        return false;
11991    return true;
11992  }
11993
11994  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11995    Medication res = new Medication();
11996    parseDomainResourceAttributes(xpp, res);
11997    next(xpp);
11998    int eventType = nextNoWhitespace(xpp);
11999    while (eventType != XmlPullParser.END_TAG) {
12000  if (!parseMedicationContent(eventType, xpp, res))
12001        unknownContent(xpp);
12002      eventType = nextNoWhitespace(xpp);
12003    }
12004    next(xpp);
12005    parseElementClose(res);
12006    return res;
12007  }
12008
12009  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
12010      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12011        res.setCode(parseCodeableConcept(xpp));
12012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12013        res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatus.NULL, new Medication.MedicationStatusEnumFactory()));
12014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
12015        res.setManufacturer(parseReference(xpp));
12016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
12017        res.setForm(parseCodeableConcept(xpp));
12018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12019        res.setAmount(parseSimpleQuantity(xpp));
12020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
12021        res.getIngredient().add(parseMedicationMedicationIngredientComponent(xpp, res));
12022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
12023        res.setBatch(parseMedicationMedicationBatchComponent(xpp, res));
12024      } else if (!parseDomainResourceContent(eventType, xpp, res))
12025        return false;
12026    return true;
12027  }
12028
12029  protected Medication.MedicationIngredientComponent parseMedicationMedicationIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
12030    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
12031    parseBackboneAttributes(xpp, res);
12032    next(xpp);
12033    int eventType = nextNoWhitespace(xpp);
12034    while (eventType != XmlPullParser.END_TAG) {
12035  if (!parseMedicationMedicationIngredientComponentContent(eventType, xpp, owner, res))
12036        unknownContent(xpp);
12037      eventType = nextNoWhitespace(xpp);
12038    }
12039    next(xpp);
12040    parseElementClose(res);
12041    return res;
12042  }
12043
12044  protected boolean parseMedicationMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12045      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
12046        res.setItem(parseType("item", xpp));
12047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
12048        res.setIsActiveElement(parseBoolean(xpp));
12049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12050        res.setAmount(parseRatio(xpp));
12051      } else if (!parseBackboneElementContent(eventType, xpp, res))
12052        return false;
12053    return true;
12054  }
12055
12056  protected Medication.MedicationBatchComponent parseMedicationMedicationBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
12057    Medication.MedicationBatchComponent res = new Medication.MedicationBatchComponent();
12058    parseBackboneAttributes(xpp, res);
12059    next(xpp);
12060    int eventType = nextNoWhitespace(xpp);
12061    while (eventType != XmlPullParser.END_TAG) {
12062  if (!parseMedicationMedicationBatchComponentContent(eventType, xpp, owner, res))
12063        unknownContent(xpp);
12064      eventType = nextNoWhitespace(xpp);
12065    }
12066    next(xpp);
12067    parseElementClose(res);
12068    return res;
12069  }
12070
12071  protected boolean parseMedicationMedicationBatchComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12072      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
12073        res.setLotNumberElement(parseString(xpp));
12074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
12075        res.setExpirationDateElement(parseDateTime(xpp));
12076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
12077        res.setSerialNumberElement(parseString(xpp));
12078      } else if (!parseBackboneElementContent(eventType, xpp, res))
12079        return false;
12080    return true;
12081  }
12082
12083  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12084    MedicationAdministration res = new MedicationAdministration();
12085    parseDomainResourceAttributes(xpp, res);
12086    next(xpp);
12087    int eventType = nextNoWhitespace(xpp);
12088    while (eventType != XmlPullParser.END_TAG) {
12089  if (!parseMedicationAdministrationContent(eventType, xpp, res))
12090        unknownContent(xpp);
12091      eventType = nextNoWhitespace(xpp);
12092    }
12093    next(xpp);
12094    parseElementClose(res);
12095    return res;
12096  }
12097
12098  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
12099      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12100        res.getIdentifier().add(parseIdentifier(xpp));
12101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
12102        res.getInstantiates().add(parseUri(xpp));
12103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12104        res.getPartOf().add(parseReference(xpp));
12105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12106        res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatus.NULL, new MedicationAdministration.MedicationAdministrationStatusEnumFactory()));
12107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12108        res.setCategory(parseCodeableConcept(xpp));
12109      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
12110        res.setMedication(parseType("medication", xpp));
12111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12112        res.setSubject(parseReference(xpp));
12113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12114        res.setContext(parseReference(xpp));
12115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
12116        res.getSupportingInformation().add(parseReference(xpp));
12117      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
12118        res.setEffective(parseType("effective", xpp));
12119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
12120        res.getPerformer().add(parseMedicationAdministrationMedicationAdministrationPerformerComponent(xpp, res));
12121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
12122        res.getStatusReason().add(parseCodeableConcept(xpp));
12123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
12124        res.getReasonCode().add(parseCodeableConcept(xpp));
12125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
12126        res.getReasonReference().add(parseReference(xpp));
12127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12128        res.setRequest(parseReference(xpp));
12129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
12130        res.getDevice().add(parseReference(xpp));
12131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12132        res.getNote().add(parseAnnotation(xpp));
12133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
12134        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
12135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
12136        res.getEventHistory().add(parseReference(xpp));
12137      } else if (!parseDomainResourceContent(eventType, xpp, res))
12138        return false;
12139    return true;
12140  }
12141
12142  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationMedicationAdministrationPerformerComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
12143    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
12144    parseBackboneAttributes(xpp, res);
12145    next(xpp);
12146    int eventType = nextNoWhitespace(xpp);
12147    while (eventType != XmlPullParser.END_TAG) {
12148  if (!parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(eventType, xpp, owner, res))
12149        unknownContent(xpp);
12150      eventType = nextNoWhitespace(xpp);
12151    }
12152    next(xpp);
12153    parseElementClose(res);
12154    return res;
12155  }
12156
12157  protected boolean parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12158      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
12159        res.setFunction(parseCodeableConcept(xpp));
12160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
12161        res.setActor(parseReference(xpp));
12162      } else if (!parseBackboneElementContent(eventType, xpp, res))
12163        return false;
12164    return true;
12165  }
12166
12167  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
12168    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
12169    parseBackboneAttributes(xpp, res);
12170    next(xpp);
12171    int eventType = nextNoWhitespace(xpp);
12172    while (eventType != XmlPullParser.END_TAG) {
12173  if (!parseMedicationAdministrationMedicationAdministrationDosageComponentContent(eventType, xpp, owner, res))
12174        unknownContent(xpp);
12175      eventType = nextNoWhitespace(xpp);
12176    }
12177    next(xpp);
12178    parseElementClose(res);
12179    return res;
12180  }
12181
12182  protected boolean parseMedicationAdministrationMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12183      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
12184        res.setTextElement(parseString(xpp));
12185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
12186        res.setSite(parseCodeableConcept(xpp));
12187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
12188        res.setRoute(parseCodeableConcept(xpp));
12189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
12190        res.setMethod(parseCodeableConcept(xpp));
12191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
12192        res.setDose(parseSimpleQuantity(xpp));
12193      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
12194        res.setRate(parseType("rate", xpp));
12195      } else if (!parseBackboneElementContent(eventType, xpp, res))
12196        return false;
12197    return true;
12198  }
12199
12200  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12201    MedicationDispense res = new MedicationDispense();
12202    parseDomainResourceAttributes(xpp, res);
12203    next(xpp);
12204    int eventType = nextNoWhitespace(xpp);
12205    while (eventType != XmlPullParser.END_TAG) {
12206  if (!parseMedicationDispenseContent(eventType, xpp, res))
12207        unknownContent(xpp);
12208      eventType = nextNoWhitespace(xpp);
12209    }
12210    next(xpp);
12211    parseElementClose(res);
12212    return res;
12213  }
12214
12215  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
12216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12217        res.getIdentifier().add(parseIdentifier(xpp));
12218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12219        res.getPartOf().add(parseReference(xpp));
12220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12221        res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatus.NULL, new MedicationDispense.MedicationDispenseStatusEnumFactory()));
12222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12223        res.setCategory(parseCodeableConcept(xpp));
12224      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
12225        res.setMedication(parseType("medication", xpp));
12226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12227        res.setSubject(parseReference(xpp));
12228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12229        res.setContext(parseReference(xpp));
12230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
12231        res.getSupportingInformation().add(parseReference(xpp));
12232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
12233        res.getPerformer().add(parseMedicationDispenseMedicationDispensePerformerComponent(xpp, res));
12234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
12235        res.setLocation(parseReference(xpp));
12236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
12237        res.getAuthorizingPrescription().add(parseReference(xpp));
12238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12239        res.setType(parseCodeableConcept(xpp));
12240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12241        res.setQuantity(parseSimpleQuantity(xpp));
12242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
12243        res.setDaysSupply(parseSimpleQuantity(xpp));
12244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
12245        res.setWhenPreparedElement(parseDateTime(xpp));
12246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
12247        res.setWhenHandedOverElement(parseDateTime(xpp));
12248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
12249        res.setDestination(parseReference(xpp));
12250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
12251        res.getReceiver().add(parseReference(xpp));
12252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12253        res.getNote().add(parseAnnotation(xpp));
12254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
12255        res.getDosageInstruction().add(parseDosage(xpp));
12256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
12257        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
12258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
12259        res.getDetectedIssue().add(parseReference(xpp));
12260      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "statusReason")) {
12261        res.setStatusReason(parseType("statusReason", xpp));
12262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
12263        res.getEventHistory().add(parseReference(xpp));
12264      } else if (!parseDomainResourceContent(eventType, xpp, res))
12265        return false;
12266    return true;
12267  }
12268
12269  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispenseMedicationDispensePerformerComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
12270    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
12271    parseBackboneAttributes(xpp, res);
12272    next(xpp);
12273    int eventType = nextNoWhitespace(xpp);
12274    while (eventType != XmlPullParser.END_TAG) {
12275  if (!parseMedicationDispenseMedicationDispensePerformerComponentContent(eventType, xpp, owner, res))
12276        unknownContent(xpp);
12277      eventType = nextNoWhitespace(xpp);
12278    }
12279    next(xpp);
12280    parseElementClose(res);
12281    return res;
12282  }
12283
12284  protected boolean parseMedicationDispenseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
12286        res.setFunction(parseCodeableConcept(xpp));
12287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
12288        res.setActor(parseReference(xpp));
12289      } else if (!parseBackboneElementContent(eventType, xpp, res))
12290        return false;
12291    return true;
12292  }
12293
12294  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
12295    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
12296    parseBackboneAttributes(xpp, res);
12297    next(xpp);
12298    int eventType = nextNoWhitespace(xpp);
12299    while (eventType != XmlPullParser.END_TAG) {
12300  if (!parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(eventType, xpp, owner, res))
12301        unknownContent(xpp);
12302      eventType = nextNoWhitespace(xpp);
12303    }
12304    next(xpp);
12305    parseElementClose(res);
12306    return res;
12307  }
12308
12309  protected boolean parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12310      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
12311        res.setWasSubstitutedElement(parseBoolean(xpp));
12312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12313        res.setType(parseCodeableConcept(xpp));
12314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
12315        res.getReason().add(parseCodeableConcept(xpp));
12316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
12317        res.getResponsibleParty().add(parseReference(xpp));
12318      } else if (!parseBackboneElementContent(eventType, xpp, res))
12319        return false;
12320    return true;
12321  }
12322
12323  protected MedicationKnowledge parseMedicationKnowledge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12324    MedicationKnowledge res = new MedicationKnowledge();
12325    parseDomainResourceAttributes(xpp, res);
12326    next(xpp);
12327    int eventType = nextNoWhitespace(xpp);
12328    while (eventType != XmlPullParser.END_TAG) {
12329  if (!parseMedicationKnowledgeContent(eventType, xpp, res))
12330        unknownContent(xpp);
12331      eventType = nextNoWhitespace(xpp);
12332    }
12333    next(xpp);
12334    parseElementClose(res);
12335    return res;
12336  }
12337
12338  protected boolean parseMedicationKnowledgeContent(int eventType, XmlPullParser xpp, MedicationKnowledge res) throws XmlPullParserException, IOException, FHIRFormatError {
12339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12340        res.setCode(parseCodeableConcept(xpp));
12341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12342        res.setStatusElement(parseEnumeration(xpp, MedicationKnowledge.MedicationKnowledgeStatus.NULL, new MedicationKnowledge.MedicationKnowledgeStatusEnumFactory()));
12343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
12344        res.setManufacturer(parseReference(xpp));
12345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
12346        res.setForm(parseCodeableConcept(xpp));
12347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12348        res.setAmount(parseSimpleQuantity(xpp));
12349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
12350        res.getSynonym().add(parseString(xpp));
12351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedMedicationKnowledge")) {
12352        res.getRelatedMedicationKnowledge().add(parseReference(xpp));
12353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("associatedMedication")) {
12354        res.setAssociatedMedication(parseReference(xpp));
12355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productType")) {
12356        res.getProductType().add(parseCodeableConcept(xpp));
12357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monograph")) {
12358        res.getMonograph().add(parseMedicationKnowledgeMedicationKnowledgeMonographComponent(xpp, res));
12359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("halfLifePeriod")) {
12360        res.setHalfLifePeriod(parseDuration(xpp));
12361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
12362        res.getIngredient().add(parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(xpp, res));
12363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparationInstruction")) {
12364        res.setPreparationInstructionElement(parseMarkdown(xpp));
12365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedRoute")) {
12366        res.getIntendedRoute().add(parseCodeableConcept(xpp));
12367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
12368        res.getCost().add(parseMedicationKnowledgeMedicationKnowledgeCostComponent(xpp, res));
12369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monitoringProgram")) {
12370        res.getMonitoringProgram().add(parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(xpp, res));
12371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationGuidelines")) {
12372        res.getAdministrationGuidelines().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(xpp, res));
12373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medicineClassification")) {
12374        res.getMedicineClassification().add(parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(xpp, res));
12375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
12376        res.setPackaging(parseMedicationKnowledgeMedicationKnowledgePackagingComponent(xpp, res));
12377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("drugCharacteristic")) {
12378        res.getDrugCharacteristic().add(parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(xpp, res));
12379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
12380        res.getContraindication().add(parseReference(xpp));
12381      } else if (!parseDomainResourceContent(eventType, xpp, res))
12382        return false;
12383    return true;
12384  }
12385
12386  protected MedicationKnowledge.MedicationKnowledgeMonographComponent parseMedicationKnowledgeMedicationKnowledgeMonographComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
12387    MedicationKnowledge.MedicationKnowledgeMonographComponent res = new MedicationKnowledge.MedicationKnowledgeMonographComponent();
12388    parseBackboneAttributes(xpp, res);
12389    next(xpp);
12390    int eventType = nextNoWhitespace(xpp);
12391    while (eventType != XmlPullParser.END_TAG) {
12392  if (!parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(eventType, xpp, owner, res))
12393        unknownContent(xpp);
12394      eventType = nextNoWhitespace(xpp);
12395    }
12396    next(xpp);
12397    parseElementClose(res);
12398    return res;
12399  }
12400
12401  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonographComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12402      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12403        res.setType(parseCodeableConcept(xpp));
12404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
12405        res.setDocument(parseReference(xpp));
12406      } else if (!parseBackboneElementContent(eventType, xpp, res))
12407        return false;
12408    return true;
12409  }
12410
12411  protected MedicationKnowledge.MedicationKnowledgeIngredientComponent parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
12412    MedicationKnowledge.MedicationKnowledgeIngredientComponent res = new MedicationKnowledge.MedicationKnowledgeIngredientComponent();
12413    parseBackboneAttributes(xpp, res);
12414    next(xpp);
12415    int eventType = nextNoWhitespace(xpp);
12416    while (eventType != XmlPullParser.END_TAG) {
12417  if (!parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(eventType, xpp, owner, res))
12418        unknownContent(xpp);
12419      eventType = nextNoWhitespace(xpp);
12420    }
12421    next(xpp);
12422    parseElementClose(res);
12423    return res;
12424  }
12425
12426  protected boolean parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12427      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
12428        res.setItem(parseType("item", xpp));
12429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
12430        res.setIsActiveElement(parseBoolean(xpp));
12431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
12432        res.setStrength(parseRatio(xpp));
12433      } else if (!parseBackboneElementContent(eventType, xpp, res))
12434        return false;
12435    return true;
12436  }
12437
12438  protected MedicationKnowledge.MedicationKnowledgeCostComponent parseMedicationKnowledgeMedicationKnowledgeCostComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
12439    MedicationKnowledge.MedicationKnowledgeCostComponent res = new MedicationKnowledge.MedicationKnowledgeCostComponent();
12440    parseBackboneAttributes(xpp, res);
12441    next(xpp);
12442    int eventType = nextNoWhitespace(xpp);
12443    while (eventType != XmlPullParser.END_TAG) {
12444  if (!parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(eventType, xpp, owner, res))
12445        unknownContent(xpp);
12446      eventType = nextNoWhitespace(xpp);
12447    }
12448    next(xpp);
12449    parseElementClose(res);
12450    return res;
12451  }
12452
12453  protected boolean parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12454      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12455        res.setTypeElement(parseString(xpp));
12456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12457        res.setSourceElement(parseString(xpp));
12458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
12459        res.setCost(parseMoney(xpp));
12460      } else if (!parseBackboneElementContent(eventType, xpp, res))
12461        return false;
12462    return true;
12463  }
12464
12465  protected MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
12466    MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res = new MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent();
12467    parseBackboneAttributes(xpp, res);
12468    next(xpp);
12469    int eventType = nextNoWhitespace(xpp);
12470    while (eventType != XmlPullParser.END_TAG) {
12471  if (!parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(eventType, xpp, owner, res))
12472        unknownContent(xpp);
12473      eventType = nextNoWhitespace(xpp);
12474    }
12475    next(xpp);
12476    parseElementClose(res);
12477    return res;
12478  }
12479
12480  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12481      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12482        res.setType(parseCodeableConcept(xpp));
12483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12484        res.setNameElement(parseString(xpp));
12485      } else if (!parseBackboneElementContent(eventType, xpp, res))
12486        return false;
12487    return true;
12488  }
12489
12490  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
12491    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent();
12492    parseBackboneAttributes(xpp, res);
12493    next(xpp);
12494    int eventType = nextNoWhitespace(xpp);
12495    while (eventType != XmlPullParser.END_TAG) {
12496  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(eventType, xpp, owner, res))
12497        unknownContent(xpp);
12498      eventType = nextNoWhitespace(xpp);
12499    }
12500    next(xpp);
12501    parseElementClose(res);
12502    return res;
12503  }
12504
12505  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12506      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
12507        res.getDosage().add(parseDosage(xpp));
12508      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "indication")) {
12509        res.setIndication(parseType("indication", xpp));
12510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientCharacteristics")) {
12511        res.getPatientCharacteristics().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(xpp, owner));
12512      } else if (!parseBackboneElementContent(eventType, xpp, res))
12513        return false;
12514    return true;
12515  }
12516
12517  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
12518    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent();
12519    parseBackboneAttributes(xpp, res);
12520    next(xpp);
12521    int eventType = nextNoWhitespace(xpp);
12522    while (eventType != XmlPullParser.END_TAG) {
12523  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(eventType, xpp, owner, res))
12524        unknownContent(xpp);
12525      eventType = nextNoWhitespace(xpp);
12526    }
12527    next(xpp);
12528    parseElementClose(res);
12529    return res;
12530  }
12531
12532  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12533      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "characteristic")) {
12534        res.setCharacteristic(parseType("characteristic", xpp));
12535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12536        res.getValue().add(parseString(xpp));
12537      } else if (!parseBackboneElementContent(eventType, xpp, res))
12538        return false;
12539    return true;
12540  }
12541
12542  protected MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
12543    MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res = new MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent();
12544    parseBackboneAttributes(xpp, res);
12545    next(xpp);
12546    int eventType = nextNoWhitespace(xpp);
12547    while (eventType != XmlPullParser.END_TAG) {
12548  if (!parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(eventType, xpp, owner, res))
12549        unknownContent(xpp);
12550      eventType = nextNoWhitespace(xpp);
12551    }
12552    next(xpp);
12553    parseElementClose(res);
12554    return res;
12555  }
12556
12557  protected boolean parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12559        res.setType(parseCodeableConcept(xpp));
12560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
12561        res.getClassification().add(parseCodeableConcept(xpp));
12562      } else if (!parseBackboneElementContent(eventType, xpp, res))
12563        return false;
12564    return true;
12565  }
12566
12567  protected MedicationKnowledge.MedicationKnowledgePackagingComponent parseMedicationKnowledgeMedicationKnowledgePackagingComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
12568    MedicationKnowledge.MedicationKnowledgePackagingComponent res = new MedicationKnowledge.MedicationKnowledgePackagingComponent();
12569    parseBackboneAttributes(xpp, res);
12570    next(xpp);
12571    int eventType = nextNoWhitespace(xpp);
12572    while (eventType != XmlPullParser.END_TAG) {
12573  if (!parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(eventType, xpp, owner, res))
12574        unknownContent(xpp);
12575      eventType = nextNoWhitespace(xpp);
12576    }
12577    next(xpp);
12578    parseElementClose(res);
12579    return res;
12580  }
12581
12582  protected boolean parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgePackagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12583      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12584        res.setType(parseCodeableConcept(xpp));
12585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12586        res.setQuantity(parseSimpleQuantity(xpp));
12587      } else if (!parseBackboneElementContent(eventType, xpp, res))
12588        return false;
12589    return true;
12590  }
12591
12592  protected MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
12593    MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res = new MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent();
12594    parseBackboneAttributes(xpp, res);
12595    next(xpp);
12596    int eventType = nextNoWhitespace(xpp);
12597    while (eventType != XmlPullParser.END_TAG) {
12598  if (!parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(eventType, xpp, owner, res))
12599        unknownContent(xpp);
12600      eventType = nextNoWhitespace(xpp);
12601    }
12602    next(xpp);
12603    parseElementClose(res);
12604    return res;
12605  }
12606
12607  protected boolean parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12608      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12609        res.setType(parseCodeableConcept(xpp));
12610      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12611        res.setValue(parseType("value", xpp));
12612      } else if (!parseBackboneElementContent(eventType, xpp, res))
12613        return false;
12614    return true;
12615  }
12616
12617  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12618    MedicationRequest res = new MedicationRequest();
12619    parseDomainResourceAttributes(xpp, res);
12620    next(xpp);
12621    int eventType = nextNoWhitespace(xpp);
12622    while (eventType != XmlPullParser.END_TAG) {
12623  if (!parseMedicationRequestContent(eventType, xpp, res))
12624        unknownContent(xpp);
12625      eventType = nextNoWhitespace(xpp);
12626    }
12627    next(xpp);
12628    parseElementClose(res);
12629    return res;
12630  }
12631
12632  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
12633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12634        res.getIdentifier().add(parseIdentifier(xpp));
12635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12636        res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestStatus.NULL, new MedicationRequest.MedicationRequestStatusEnumFactory()));
12637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
12638        res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
12639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12640        res.getCategory().add(parseCodeableConcept(xpp));
12641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
12642        res.setPriorityElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestPriority.NULL, new MedicationRequest.MedicationRequestPriorityEnumFactory()));
12643      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
12644        res.setMedication(parseType("medication", xpp));
12645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12646        res.setSubject(parseReference(xpp));
12647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12648        res.setContext(parseReference(xpp));
12649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
12650        res.getSupportingInformation().add(parseReference(xpp));
12651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
12652        res.setAuthoredOnElement(parseDateTime(xpp));
12653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
12654        res.setRequester(parseReference(xpp));
12655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
12656        res.setPerformer(parseReference(xpp));
12657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
12658        res.setPerformerType(parseCodeableConcept(xpp));
12659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
12660        res.setRecorder(parseReference(xpp));
12661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
12662        res.getReasonCode().add(parseCodeableConcept(xpp));
12663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
12664        res.getReasonReference().add(parseReference(xpp));
12665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
12666        res.getInstantiates().add(parseUri(xpp));
12667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
12668        res.getBasedOn().add(parseReference(xpp));
12669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
12670        res.setGroupIdentifier(parseIdentifier(xpp));
12671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
12672        res.setStatusReason(parseCodeableConcept(xpp));
12673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
12674        res.getInsurance().add(parseReference(xpp));
12675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12676        res.getNote().add(parseAnnotation(xpp));
12677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
12678        res.getDosageInstruction().add(parseDosage(xpp));
12679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
12680        res.setDispenseRequest(parseMedicationRequestMedicationRequestDispenseRequestComponent(xpp, res));
12681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
12682        res.setSubstitution(parseMedicationRequestMedicationRequestSubstitutionComponent(xpp, res));
12683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
12684        res.setPriorPrescription(parseReference(xpp));
12685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
12686        res.getDetectedIssue().add(parseReference(xpp));
12687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
12688        res.getEventHistory().add(parseReference(xpp));
12689      } else if (!parseDomainResourceContent(eventType, xpp, res))
12690        return false;
12691    return true;
12692  }
12693
12694  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestMedicationRequestDispenseRequestComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
12695    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
12696    parseBackboneAttributes(xpp, res);
12697    next(xpp);
12698    int eventType = nextNoWhitespace(xpp);
12699    while (eventType != XmlPullParser.END_TAG) {
12700  if (!parseMedicationRequestMedicationRequestDispenseRequestComponentContent(eventType, xpp, owner, res))
12701        unknownContent(xpp);
12702      eventType = nextNoWhitespace(xpp);
12703    }
12704    next(xpp);
12705    parseElementClose(res);
12706    return res;
12707  }
12708
12709  protected boolean parseMedicationRequestMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12710      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
12711        res.setValidityPeriod(parsePeriod(xpp));
12712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
12713        res.setNumberOfRepeatsAllowedElement(parseUnsignedInt(xpp));
12714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12715        res.setQuantity(parseSimpleQuantity(xpp));
12716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
12717        res.setExpectedSupplyDuration(parseDuration(xpp));
12718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
12719        res.setPerformer(parseReference(xpp));
12720      } else if (!parseBackboneElementContent(eventType, xpp, res))
12721        return false;
12722    return true;
12723  }
12724
12725  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestMedicationRequestSubstitutionComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
12726    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
12727    parseBackboneAttributes(xpp, res);
12728    next(xpp);
12729    int eventType = nextNoWhitespace(xpp);
12730    while (eventType != XmlPullParser.END_TAG) {
12731  if (!parseMedicationRequestMedicationRequestSubstitutionComponentContent(eventType, xpp, owner, res))
12732        unknownContent(xpp);
12733      eventType = nextNoWhitespace(xpp);
12734    }
12735    next(xpp);
12736    parseElementClose(res);
12737    return res;
12738  }
12739
12740  protected boolean parseMedicationRequestMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
12742        res.setAllowedElement(parseBoolean(xpp));
12743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
12744        res.setReason(parseCodeableConcept(xpp));
12745      } else if (!parseBackboneElementContent(eventType, xpp, res))
12746        return false;
12747    return true;
12748  }
12749
12750  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12751    MedicationStatement res = new MedicationStatement();
12752    parseDomainResourceAttributes(xpp, res);
12753    next(xpp);
12754    int eventType = nextNoWhitespace(xpp);
12755    while (eventType != XmlPullParser.END_TAG) {
12756  if (!parseMedicationStatementContent(eventType, xpp, res))
12757        unknownContent(xpp);
12758      eventType = nextNoWhitespace(xpp);
12759    }
12760    next(xpp);
12761    parseElementClose(res);
12762    return res;
12763  }
12764
12765  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
12766      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12767        res.getIdentifier().add(parseIdentifier(xpp));
12768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
12769        res.getBasedOn().add(parseReference(xpp));
12770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12771        res.getPartOf().add(parseReference(xpp));
12772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12773        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
12774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
12775        res.getStatusReason().add(parseCodeableConcept(xpp));
12776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12777        res.setCategory(parseCodeableConcept(xpp));
12778      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
12779        res.setMedication(parseType("medication", xpp));
12780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12781        res.setSubject(parseReference(xpp));
12782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12783        res.setContext(parseReference(xpp));
12784      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
12785        res.setEffective(parseType("effective", xpp));
12786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
12787        res.setDateAssertedElement(parseDateTime(xpp));
12788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
12789        res.setInformationSource(parseReference(xpp));
12790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
12791        res.getDerivedFrom().add(parseReference(xpp));
12792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
12793        res.getReasonCode().add(parseCodeableConcept(xpp));
12794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
12795        res.getReasonReference().add(parseReference(xpp));
12796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12797        res.getNote().add(parseAnnotation(xpp));
12798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
12799        res.getDosage().add(parseDosage(xpp));
12800      } else if (!parseDomainResourceContent(eventType, xpp, res))
12801        return false;
12802    return true;
12803  }
12804
12805  protected MedicinalProduct parseMedicinalProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12806    MedicinalProduct res = new MedicinalProduct();
12807    parseDomainResourceAttributes(xpp, res);
12808    next(xpp);
12809    int eventType = nextNoWhitespace(xpp);
12810    while (eventType != XmlPullParser.END_TAG) {
12811  if (!parseMedicinalProductContent(eventType, xpp, res))
12812        unknownContent(xpp);
12813      eventType = nextNoWhitespace(xpp);
12814    }
12815    next(xpp);
12816    parseElementClose(res);
12817    return res;
12818  }
12819
12820  protected boolean parseMedicinalProductContent(int eventType, XmlPullParser xpp, MedicinalProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
12821      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12822        res.setIdentifier(parseIdentifier(xpp));
12823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12824        res.setType(parseCodeableConcept(xpp));
12825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combinedPharmaceuticalDoseForm")) {
12826        res.setCombinedPharmaceuticalDoseForm(parseCodeableConcept(xpp));
12827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMonitoringIndicator")) {
12828        res.setAdditionalMonitoringIndicator(parseCodeableConcept(xpp));
12829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialMeasures")) {
12830        res.getSpecialMeasures().add(parseString(xpp));
12831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paediatricUseIndicator")) {
12832        res.setPaediatricUseIndicator(parseCodeableConcept(xpp));
12833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orphanDesignationStatus")) {
12834        res.setOrphanDesignationStatus(parseCodeableConcept(xpp));
12835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productClassification")) {
12836        res.getProductClassification().add(parseCodeableConcept(xpp));
12837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingAuthorization")) {
12838        res.setMarketingAuthorization(parseReference(xpp));
12839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packagedMedicinalProduct")) {
12840        res.getPackagedMedicinalProduct().add(parseReference(xpp));
12841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pharmaceuticalProduct")) {
12842        res.getPharmaceuticalProduct().add(parseReference(xpp));
12843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalParticulars")) {
12844        res.getClinicalParticulars().add(parseReference(xpp));
12845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachedDocument")) {
12846        res.getAttachedDocument().add(parseReference(xpp));
12847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterFile")) {
12848        res.getMasterFile().add(parseReference(xpp));
12849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12850        res.getName().add(parseMedicinalProductMedicinalProductNameComponent(xpp, res));
12851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("crossReference")) {
12852        res.getCrossReference().add(parseIdentifier(xpp));
12853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturingBusinessOperation")) {
12854        res.getManufacturingBusinessOperation().add(parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(xpp, res));
12855      } else if (!parseDomainResourceContent(eventType, xpp, res))
12856        return false;
12857    return true;
12858  }
12859
12860  protected MedicinalProduct.MedicinalProductNameComponent parseMedicinalProductMedicinalProductNameComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
12861    MedicinalProduct.MedicinalProductNameComponent res = new MedicinalProduct.MedicinalProductNameComponent();
12862    parseBackboneAttributes(xpp, res);
12863    next(xpp);
12864    int eventType = nextNoWhitespace(xpp);
12865    while (eventType != XmlPullParser.END_TAG) {
12866  if (!parseMedicinalProductMedicinalProductNameComponentContent(eventType, xpp, owner, res))
12867        unknownContent(xpp);
12868      eventType = nextNoWhitespace(xpp);
12869    }
12870    next(xpp);
12871    parseElementClose(res);
12872    return res;
12873  }
12874
12875  protected boolean parseMedicinalProductMedicinalProductNameComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12876      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullName")) {
12877        res.setFullNameElement(parseString(xpp));
12878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("namePart")) {
12879        res.getNamePart().add(parseMedicinalProductMedicinalProductNameNamePartComponent(xpp, owner));
12880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryLanguage")) {
12881        res.getCountryLanguage().add(parseMedicinalProductMedicinalProductNameCountryLanguageComponent(xpp, owner));
12882      } else if (!parseBackboneElementContent(eventType, xpp, res))
12883        return false;
12884    return true;
12885  }
12886
12887  protected MedicinalProduct.MedicinalProductNameNamePartComponent parseMedicinalProductMedicinalProductNameNamePartComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
12888    MedicinalProduct.MedicinalProductNameNamePartComponent res = new MedicinalProduct.MedicinalProductNameNamePartComponent();
12889    parseBackboneAttributes(xpp, res);
12890    next(xpp);
12891    int eventType = nextNoWhitespace(xpp);
12892    while (eventType != XmlPullParser.END_TAG) {
12893  if (!parseMedicinalProductMedicinalProductNameNamePartComponentContent(eventType, xpp, owner, res))
12894        unknownContent(xpp);
12895      eventType = nextNoWhitespace(xpp);
12896    }
12897    next(xpp);
12898    parseElementClose(res);
12899    return res;
12900  }
12901
12902  protected boolean parseMedicinalProductMedicinalProductNameNamePartComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameNamePartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
12904        res.setPartElement(parseString(xpp));
12905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12906        res.setType(parseCoding(xpp));
12907      } else if (!parseBackboneElementContent(eventType, xpp, res))
12908        return false;
12909    return true;
12910  }
12911
12912  protected MedicinalProduct.MedicinalProductNameCountryLanguageComponent parseMedicinalProductMedicinalProductNameCountryLanguageComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
12913    MedicinalProduct.MedicinalProductNameCountryLanguageComponent res = new MedicinalProduct.MedicinalProductNameCountryLanguageComponent();
12914    parseBackboneAttributes(xpp, res);
12915    next(xpp);
12916    int eventType = nextNoWhitespace(xpp);
12917    while (eventType != XmlPullParser.END_TAG) {
12918  if (!parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(eventType, xpp, owner, res))
12919        unknownContent(xpp);
12920      eventType = nextNoWhitespace(xpp);
12921    }
12922    next(xpp);
12923    parseElementClose(res);
12924    return res;
12925  }
12926
12927  protected boolean parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameCountryLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12928      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
12929        res.setCountry(parseCodeableConcept(xpp));
12930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12931        res.setJurisdiction(parseCodeableConcept(xpp));
12932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
12933        res.setLanguage(parseCodeableConcept(xpp));
12934      } else if (!parseBackboneElementContent(eventType, xpp, res))
12935        return false;
12936    return true;
12937  }
12938
12939  protected MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
12940    MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res = new MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent();
12941    parseBackboneAttributes(xpp, res);
12942    next(xpp);
12943    int eventType = nextNoWhitespace(xpp);
12944    while (eventType != XmlPullParser.END_TAG) {
12945  if (!parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(eventType, xpp, owner, res))
12946        unknownContent(xpp);
12947      eventType = nextNoWhitespace(xpp);
12948    }
12949    next(xpp);
12950    parseElementClose(res);
12951    return res;
12952  }
12953
12954  protected boolean parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12955      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationType")) {
12956        res.setOperationType(parseCodeableConcept(xpp));
12957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorisationReferenceNumber")) {
12958        res.setAuthorisationReferenceNumber(parseIdentifier(xpp));
12959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveDate")) {
12960        res.setEffectiveDateElement(parseDateTime(xpp));
12961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentialityIndicator")) {
12962        res.setConfidentialityIndicator(parseCodeableConcept(xpp));
12963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
12964        res.getManufacturer().add(parseReference(xpp));
12965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
12966        res.setRegulator(parseReference(xpp));
12967      } else if (!parseBackboneElementContent(eventType, xpp, res))
12968        return false;
12969    return true;
12970  }
12971
12972  protected MedicinalProductAuthorization parseMedicinalProductAuthorization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12973    MedicinalProductAuthorization res = new MedicinalProductAuthorization();
12974    parseDomainResourceAttributes(xpp, res);
12975    next(xpp);
12976    int eventType = nextNoWhitespace(xpp);
12977    while (eventType != XmlPullParser.END_TAG) {
12978  if (!parseMedicinalProductAuthorizationContent(eventType, xpp, res))
12979        unknownContent(xpp);
12980      eventType = nextNoWhitespace(xpp);
12981    }
12982    next(xpp);
12983    parseElementClose(res);
12984    return res;
12985  }
12986
12987  protected boolean parseMedicinalProductAuthorizationContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization res) throws XmlPullParserException, IOException, FHIRFormatError {
12988      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12989        res.setIdentifier(parseIdentifier(xpp));
12990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
12991        res.getCountry().add(parseCodeableConcept(xpp));
12992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
12993        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
12994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12995        res.setStatus(parseCodeableConcept(xpp));
12996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
12997        res.setStatusDateElement(parseDateTime(xpp));
12998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
12999        res.setRestoreDateElement(parseDateTime(xpp));
13000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
13001        res.setValidityPeriod(parsePeriod(xpp));
13002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataExclusivityPeriod")) {
13003        res.setDataExclusivityPeriod(parsePeriod(xpp));
13004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateOfFirstAuthorization")) {
13005        res.setDateOfFirstAuthorizationElement(parseDateTime(xpp));
13006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("internationalBirthDate")) {
13007        res.setInternationalBirthDateElement(parseDateTime(xpp));
13008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdictionalAuthorization")) {
13009        res.getJurisdictionalAuthorization().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(xpp, res));
13010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("holder")) {
13011        res.setHolder(parseReference(xpp));
13012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
13013        res.setRegulator(parseReference(xpp));
13014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
13015        res.setProcedure(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(xpp, res));
13016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
13017        res.getMarketingStatus().add(parseMarketingStatus(xpp));
13018      } else if (!parseDomainResourceContent(eventType, xpp, res))
13019        return false;
13020    return true;
13021  }
13022
13023  protected MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
13024    MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent();
13025    parseBackboneAttributes(xpp, res);
13026    next(xpp);
13027    int eventType = nextNoWhitespace(xpp);
13028    while (eventType != XmlPullParser.END_TAG) {
13029  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(eventType, xpp, owner, res))
13030        unknownContent(xpp);
13031      eventType = nextNoWhitespace(xpp);
13032    }
13033    next(xpp);
13034    parseElementClose(res);
13035    return res;
13036  }
13037
13038  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13039      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
13040        res.setCountry(parseCodeableConcept(xpp));
13041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13042        res.setJurisdiction(parseCodeableConcept(xpp));
13043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
13044        res.setNumber(parseIdentifier(xpp));
13045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
13046        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
13047      } else if (!parseBackboneElementContent(eventType, xpp, res))
13048        return false;
13049    return true;
13050  }
13051
13052  protected MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
13053    MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent();
13054    parseBackboneAttributes(xpp, res);
13055    next(xpp);
13056    int eventType = nextNoWhitespace(xpp);
13057    while (eventType != XmlPullParser.END_TAG) {
13058  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(eventType, xpp, owner, res))
13059        unknownContent(xpp);
13060      eventType = nextNoWhitespace(xpp);
13061    }
13062    next(xpp);
13063    parseElementClose(res);
13064    return res;
13065  }
13066
13067  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13068      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
13069        res.setNumber(parseIdentifier(xpp));
13070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13071        res.setType(parseCodeableConcept(xpp));
13072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13073        res.setDate(parsePeriod(xpp));
13074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("application")) {
13075        res.getApplication().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponent(xpp, owner));
13076      } else if (!parseBackboneElementContent(eventType, xpp, res))
13077        return false;
13078    return true;
13079  }
13080
13081  protected MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureApplicationComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
13082    MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureApplicationComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureApplicationComponent();
13083    parseBackboneAttributes(xpp, res);
13084    next(xpp);
13085    int eventType = nextNoWhitespace(xpp);
13086    while (eventType != XmlPullParser.END_TAG) {
13087  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponentContent(eventType, xpp, owner, res))
13088        unknownContent(xpp);
13089      eventType = nextNoWhitespace(xpp);
13090    }
13091    next(xpp);
13092    parseElementClose(res);
13093    return res;
13094  }
13095
13096  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureApplicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13097      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
13098        res.setNumber(parseIdentifier(xpp));
13099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13100        res.setType(parseCodeableConcept(xpp));
13101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13102        res.setDateElement(parseDateTime(xpp));
13103      } else if (!parseBackboneElementContent(eventType, xpp, res))
13104        return false;
13105    return true;
13106  }
13107
13108  protected MedicinalProductClinicals parseMedicinalProductClinicals(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13109    MedicinalProductClinicals res = new MedicinalProductClinicals();
13110    parseDomainResourceAttributes(xpp, res);
13111    next(xpp);
13112    int eventType = nextNoWhitespace(xpp);
13113    while (eventType != XmlPullParser.END_TAG) {
13114  if (!parseMedicinalProductClinicalsContent(eventType, xpp, res))
13115        unknownContent(xpp);
13116      eventType = nextNoWhitespace(xpp);
13117    }
13118    next(xpp);
13119    parseElementClose(res);
13120    return res;
13121  }
13122
13123  protected boolean parseMedicinalProductClinicalsContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals res) throws XmlPullParserException, IOException, FHIRFormatError {
13124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffects")) {
13125        res.getUndesirableEffects().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(xpp, res));
13126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapeuticIndication")) {
13127        res.getTherapeuticIndication().add(parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(xpp, res));
13128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
13129        res.getContraindication().add(parseMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(xpp, res));
13130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactions")) {
13131        res.getInteractions().add(parseMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(xpp, res));
13132      } else if (!parseDomainResourceContent(eventType, xpp, res))
13133        return false;
13134    return true;
13135  }
13136
13137  protected MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
13138    MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent();
13139    parseBackboneAttributes(xpp, res);
13140    next(xpp);
13141    int eventType = nextNoWhitespace(xpp);
13142    while (eventType != XmlPullParser.END_TAG) {
13143  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponentContent(eventType, xpp, owner, res))
13144        unknownContent(xpp);
13145      eventType = nextNoWhitespace(xpp);
13146    }
13147    next(xpp);
13148    parseElementClose(res);
13149    return res;
13150  }
13151
13152  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13153      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("symptomConditionEffect")) {
13154        res.setSymptomConditionEffect(parseCodeableConcept(xpp));
13155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
13156        res.setClassification(parseCodeableConcept(xpp));
13157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyOfOccurrence")) {
13158        res.setFrequencyOfOccurrence(parseCodeableConcept(xpp));
13159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13160        res.getPopulation().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(xpp, owner));
13161      } else if (!parseBackboneElementContent(eventType, xpp, res))
13162        return false;
13163    return true;
13164  }
13165
13166  protected MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
13167    MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent();
13168    parseBackboneAttributes(xpp, res);
13169    next(xpp);
13170    int eventType = nextNoWhitespace(xpp);
13171    while (eventType != XmlPullParser.END_TAG) {
13172  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponentContent(eventType, xpp, owner, res))
13173        unknownContent(xpp);
13174      eventType = nextNoWhitespace(xpp);
13175    }
13176    next(xpp);
13177    parseElementClose(res);
13178    return res;
13179  }
13180
13181  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13182      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
13183        res.setAge(parseType("age", xpp));
13184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
13185        res.setGender(parseCodeableConcept(xpp));
13186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("race")) {
13187        res.setRace(parseCodeableConcept(xpp));
13188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physiologicalCondition")) {
13189        res.setPhysiologicalCondition(parseCodeableConcept(xpp));
13190      } else if (!parseBackboneElementContent(eventType, xpp, res))
13191        return false;
13192    return true;
13193  }
13194
13195  protected MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
13196    MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent();
13197    parseBackboneAttributes(xpp, res);
13198    next(xpp);
13199    int eventType = nextNoWhitespace(xpp);
13200    while (eventType != XmlPullParser.END_TAG) {
13201  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponentContent(eventType, xpp, owner, res))
13202        unknownContent(xpp);
13203      eventType = nextNoWhitespace(xpp);
13204    }
13205    next(xpp);
13206    parseElementClose(res);
13207    return res;
13208  }
13209
13210  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13211      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
13212        res.setDiseaseSymptomProcedure(parseCodeableConcept(xpp));
13213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
13214        res.setDiseaseStatus(parseCodeableConcept(xpp));
13215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
13216        res.getComorbidity().add(parseCodeableConcept(xpp));
13217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedEffect")) {
13218        res.setIntendedEffect(parseCodeableConcept(xpp));
13219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
13220        res.setDuration(parseQuantity(xpp));
13221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffects")) {
13222        res.getUndesirableEffects().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(xpp, owner));
13223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
13224        res.getOtherTherapy().add(parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(xpp, owner));
13225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13226        res.getPopulation().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(xpp, owner));
13227      } else if (!parseBackboneElementContent(eventType, xpp, res))
13228        return false;
13229    return true;
13230  }
13231
13232  protected MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
13233    MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent();
13234    parseBackboneAttributes(xpp, res);
13235    next(xpp);
13236    int eventType = nextNoWhitespace(xpp);
13237    while (eventType != XmlPullParser.END_TAG) {
13238  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponentContent(eventType, xpp, owner, res))
13239        unknownContent(xpp);
13240      eventType = nextNoWhitespace(xpp);
13241    }
13242    next(xpp);
13243    parseElementClose(res);
13244    return res;
13245  }
13246
13247  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13248      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
13249        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
13250      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13251        res.setMedication(parseType("medication", xpp));
13252      } else if (!parseBackboneElementContent(eventType, xpp, res))
13253        return false;
13254    return true;
13255  }
13256
13257  protected MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent parseMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
13258    MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent();
13259    parseBackboneAttributes(xpp, res);
13260    next(xpp);
13261    int eventType = nextNoWhitespace(xpp);
13262    while (eventType != XmlPullParser.END_TAG) {
13263  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponentContent(eventType, xpp, owner, res))
13264        unknownContent(xpp);
13265      eventType = nextNoWhitespace(xpp);
13266    }
13267    next(xpp);
13268    parseElementClose(res);
13269    return res;
13270  }
13271
13272  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13273      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disease")) {
13274        res.setDisease(parseCodeableConcept(xpp));
13275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
13276        res.setDiseaseStatus(parseCodeableConcept(xpp));
13277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
13278        res.getComorbidity().add(parseCodeableConcept(xpp));
13279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapeuticIndication")) {
13280        res.getTherapeuticIndication().add(parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(xpp, owner));
13281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
13282        res.getOtherTherapy().add(parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(xpp, owner));
13283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13284        res.getPopulation().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(xpp, owner));
13285      } else if (!parseBackboneElementContent(eventType, xpp, res))
13286        return false;
13287    return true;
13288  }
13289
13290  protected MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent parseMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
13291    MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent();
13292    parseBackboneAttributes(xpp, res);
13293    next(xpp);
13294    int eventType = nextNoWhitespace(xpp);
13295    while (eventType != XmlPullParser.END_TAG) {
13296  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponentContent(eventType, xpp, owner, res))
13297        unknownContent(xpp);
13298      eventType = nextNoWhitespace(xpp);
13299    }
13300    next(xpp);
13301    parseElementClose(res);
13302    return res;
13303  }
13304
13305  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13306      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactant")) {
13307        res.getInteractant().add(parseCodeableConcept(xpp));
13308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13309        res.setType(parseCodeableConcept(xpp));
13310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effect")) {
13311        res.setEffect(parseCodeableConcept(xpp));
13312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incidence")) {
13313        res.setIncidence(parseCodeableConcept(xpp));
13314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("management")) {
13315        res.setManagement(parseCodeableConcept(xpp));
13316      } else if (!parseBackboneElementContent(eventType, xpp, res))
13317        return false;
13318    return true;
13319  }
13320
13321  protected MedicinalProductDeviceSpec parseMedicinalProductDeviceSpec(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13322    MedicinalProductDeviceSpec res = new MedicinalProductDeviceSpec();
13323    parseDomainResourceAttributes(xpp, res);
13324    next(xpp);
13325    int eventType = nextNoWhitespace(xpp);
13326    while (eventType != XmlPullParser.END_TAG) {
13327  if (!parseMedicinalProductDeviceSpecContent(eventType, xpp, res))
13328        unknownContent(xpp);
13329      eventType = nextNoWhitespace(xpp);
13330    }
13331    next(xpp);
13332    parseElementClose(res);
13333    return res;
13334  }
13335
13336  protected boolean parseMedicinalProductDeviceSpecContent(int eventType, XmlPullParser xpp, MedicinalProductDeviceSpec res) throws XmlPullParserException, IOException, FHIRFormatError {
13337      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13338        res.setIdentifier(parseIdentifier(xpp));
13339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13340        res.setType(parseCodeableConcept(xpp));
13341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tradeName")) {
13342        res.setTradeNameElement(parseString(xpp));
13343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13344        res.setQuantity(parseQuantity(xpp));
13345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listingNumber")) {
13346        res.setListingNumberElement(parseString(xpp));
13347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
13348        res.setModelNumberElement(parseString(xpp));
13349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sterilityIndicator")) {
13350        res.setSterilityIndicator(parseCodeableConcept(xpp));
13351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sterilisationRequirement")) {
13352        res.setSterilisationRequirement(parseCodeableConcept(xpp));
13353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
13354        res.setUsage(parseCodeableConcept(xpp));
13355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nomenclature")) {
13356        res.getNomenclature().add(parseCodeableConcept(xpp));
13357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLife")) {
13358        res.getShelfLife().add(parseProductShelfLife(xpp));
13359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
13360        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
13361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
13362        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
13363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batchIdentifier")) {
13364        res.getBatchIdentifier().add(parseIdentifier(xpp));
13365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13366        res.getManufacturer().add(parseReference(xpp));
13367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
13368        res.getMaterial().add(parseMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(xpp, res));
13369      } else if (!parseDomainResourceContent(eventType, xpp, res))
13370        return false;
13371    return true;
13372  }
13373
13374  protected MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent parseMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(XmlPullParser xpp, MedicinalProductDeviceSpec owner) throws XmlPullParserException, IOException, FHIRFormatError {
13375    MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent res = new MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent();
13376    parseBackboneAttributes(xpp, res);
13377    next(xpp);
13378    int eventType = nextNoWhitespace(xpp);
13379    while (eventType != XmlPullParser.END_TAG) {
13380  if (!parseMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponentContent(eventType, xpp, owner, res))
13381        unknownContent(xpp);
13382      eventType = nextNoWhitespace(xpp);
13383    }
13384    next(xpp);
13385    parseElementClose(res);
13386    return res;
13387  }
13388
13389  protected boolean parseMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDeviceSpec owner, MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13390      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
13391        res.setSubstance(parseCodeableConcept(xpp));
13392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternate")) {
13393        res.setAlternateElement(parseBoolean(xpp));
13394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
13395        res.setAllergenicIndicatorElement(parseBoolean(xpp));
13396      } else if (!parseBackboneElementContent(eventType, xpp, res))
13397        return false;
13398    return true;
13399  }
13400
13401  protected MedicinalProductIngredient parseMedicinalProductIngredient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13402    MedicinalProductIngredient res = new MedicinalProductIngredient();
13403    parseDomainResourceAttributes(xpp, res);
13404    next(xpp);
13405    int eventType = nextNoWhitespace(xpp);
13406    while (eventType != XmlPullParser.END_TAG) {
13407  if (!parseMedicinalProductIngredientContent(eventType, xpp, res))
13408        unknownContent(xpp);
13409      eventType = nextNoWhitespace(xpp);
13410    }
13411    next(xpp);
13412    parseElementClose(res);
13413    return res;
13414  }
13415
13416  protected boolean parseMedicinalProductIngredientContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient res) throws XmlPullParserException, IOException, FHIRFormatError {
13417      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13418        res.setIdentifier(parseIdentifier(xpp));
13419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13420        res.setRole(parseCodeableConcept(xpp));
13421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
13422        res.setAllergenicIndicatorElement(parseBoolean(xpp));
13423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13424        res.getManufacturer().add(parseReference(xpp));
13425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specifiedSubstance")) {
13426        res.getSpecifiedSubstance().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(xpp, res));
13427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
13428        res.setSubstance(parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(xpp, res));
13429      } else if (!parseDomainResourceContent(eventType, xpp, res))
13430        return false;
13431    return true;
13432  }
13433
13434  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
13435    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent();
13436    parseBackboneAttributes(xpp, res);
13437    next(xpp);
13438    int eventType = nextNoWhitespace(xpp);
13439    while (eventType != XmlPullParser.END_TAG) {
13440  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(eventType, xpp, owner, res))
13441        unknownContent(xpp);
13442      eventType = nextNoWhitespace(xpp);
13443    }
13444    next(xpp);
13445    parseElementClose(res);
13446    return res;
13447  }
13448
13449  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13450      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13451        res.setCode(parseCodeableConcept(xpp));
13452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
13453        res.setGroup(parseCodeableConcept(xpp));
13454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
13455        res.setConfidentiality(parseCodeableConcept(xpp));
13456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13457        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
13458      } else if (!parseBackboneElementContent(eventType, xpp, res))
13459        return false;
13460    return true;
13461  }
13462
13463  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
13464    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent();
13465    parseBackboneAttributes(xpp, res);
13466    next(xpp);
13467    int eventType = nextNoWhitespace(xpp);
13468    while (eventType != XmlPullParser.END_TAG) {
13469  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(eventType, xpp, owner, res))
13470        unknownContent(xpp);
13471      eventType = nextNoWhitespace(xpp);
13472    }
13473    next(xpp);
13474    parseElementClose(res);
13475    return res;
13476  }
13477
13478  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13479      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentation")) {
13480        res.setPresentation(parseRatio(xpp));
13481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentration")) {
13482        res.setConcentration(parseRatio(xpp));
13483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
13484        res.setMeasurementPointElement(parseString(xpp));
13485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
13486        res.getCountry().add(parseCodeableConcept(xpp));
13487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceStrength")) {
13488        res.getReferenceStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(xpp, owner));
13489      } else if (!parseBackboneElementContent(eventType, xpp, res))
13490        return false;
13491    return true;
13492  }
13493
13494  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
13495    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent();
13496    parseBackboneAttributes(xpp, res);
13497    next(xpp);
13498    int eventType = nextNoWhitespace(xpp);
13499    while (eventType != XmlPullParser.END_TAG) {
13500  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(eventType, xpp, owner, res))
13501        unknownContent(xpp);
13502      eventType = nextNoWhitespace(xpp);
13503    }
13504    next(xpp);
13505    parseElementClose(res);
13506    return res;
13507  }
13508
13509  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13510      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
13511        res.setSubstance(parseCodeableConcept(xpp));
13512      } else if (!parseBackboneElementContent(eventType, xpp, res))
13513        return false;
13514    return true;
13515  }
13516
13517  protected MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
13518    MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent();
13519    parseBackboneAttributes(xpp, res);
13520    next(xpp);
13521    int eventType = nextNoWhitespace(xpp);
13522    while (eventType != XmlPullParser.END_TAG) {
13523  if (!parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(eventType, xpp, owner, res))
13524        unknownContent(xpp);
13525      eventType = nextNoWhitespace(xpp);
13526    }
13527    next(xpp);
13528    parseElementClose(res);
13529    return res;
13530  }
13531
13532  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13533      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13534        res.setCode(parseCodeableConcept(xpp));
13535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13536        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
13537      } else if (!parseBackboneElementContent(eventType, xpp, res))
13538        return false;
13539    return true;
13540  }
13541
13542  protected MedicinalProductPackaged parseMedicinalProductPackaged(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13543    MedicinalProductPackaged res = new MedicinalProductPackaged();
13544    parseDomainResourceAttributes(xpp, res);
13545    next(xpp);
13546    int eventType = nextNoWhitespace(xpp);
13547    while (eventType != XmlPullParser.END_TAG) {
13548  if (!parseMedicinalProductPackagedContent(eventType, xpp, res))
13549        unknownContent(xpp);
13550      eventType = nextNoWhitespace(xpp);
13551    }
13552    next(xpp);
13553    parseElementClose(res);
13554    return res;
13555  }
13556
13557  protected boolean parseMedicinalProductPackagedContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged res) throws XmlPullParserException, IOException, FHIRFormatError {
13558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13559        res.setIdentifier(parseIdentifier(xpp));
13560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13561        res.setDescriptionElement(parseString(xpp));
13562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
13563        res.getMarketingStatus().add(parseMarketingStatus(xpp));
13564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batchIdentifier")) {
13565        res.getBatchIdentifier().add(parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(xpp, res));
13566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
13567        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, res));
13568      } else if (!parseDomainResourceContent(eventType, xpp, res))
13569        return false;
13570    return true;
13571  }
13572
13573  protected MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
13574    MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res = new MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent();
13575    parseBackboneAttributes(xpp, res);
13576    next(xpp);
13577    int eventType = nextNoWhitespace(xpp);
13578    while (eventType != XmlPullParser.END_TAG) {
13579  if (!parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(eventType, xpp, owner, res))
13580        unknownContent(xpp);
13581      eventType = nextNoWhitespace(xpp);
13582    }
13583    next(xpp);
13584    parseElementClose(res);
13585    return res;
13586  }
13587
13588  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13589      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outerPackaging")) {
13590        res.setOuterPackaging(parseIdentifier(xpp));
13591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immediatePackaging")) {
13592        res.setImmediatePackaging(parseIdentifier(xpp));
13593      } else if (!parseBackboneElementContent(eventType, xpp, res))
13594        return false;
13595    return true;
13596  }
13597
13598  protected MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
13599    MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res = new MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent();
13600    parseBackboneAttributes(xpp, res);
13601    next(xpp);
13602    int eventType = nextNoWhitespace(xpp);
13603    while (eventType != XmlPullParser.END_TAG) {
13604  if (!parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(eventType, xpp, owner, res))
13605        unknownContent(xpp);
13606      eventType = nextNoWhitespace(xpp);
13607    }
13608    next(xpp);
13609    parseElementClose(res);
13610    return res;
13611  }
13612
13613  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13614      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13615        res.getIdentifier().add(parseIdentifier(xpp));
13616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13617        res.setType(parseCodeableConcept(xpp));
13618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13619        res.setQuantity(parseQuantity(xpp));
13620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
13621        res.getMaterial().add(parseCodeableConcept(xpp));
13622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternateMaterial")) {
13623        res.getAlternateMaterial().add(parseCodeableConcept(xpp));
13624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13625        res.getManufacturer().add(parseReference(xpp));
13626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13627        res.getDevice().add(parseReference(xpp));
13628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedItem")) {
13629        res.getManufacturedItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponent(xpp, owner));
13630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
13631        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
13632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
13633        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, owner));
13634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
13635        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
13636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
13637        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
13638      } else if (!parseBackboneElementContent(eventType, xpp, res))
13639        return false;
13640    return true;
13641  }
13642
13643  protected MedicinalProductPackaged.MedicinalProductPackagedPackageItemManufacturedItemComponent parseMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
13644    MedicinalProductPackaged.MedicinalProductPackagedPackageItemManufacturedItemComponent res = new MedicinalProductPackaged.MedicinalProductPackagedPackageItemManufacturedItemComponent();
13645    parseBackboneAttributes(xpp, res);
13646    next(xpp);
13647    int eventType = nextNoWhitespace(xpp);
13648    while (eventType != XmlPullParser.END_TAG) {
13649  if (!parseMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponentContent(eventType, xpp, owner, res))
13650        unknownContent(xpp);
13651      eventType = nextNoWhitespace(xpp);
13652    }
13653    next(xpp);
13654    parseElementClose(res);
13655    return res;
13656  }
13657
13658  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedPackageItemManufacturedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13659      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedDoseForm")) {
13660        res.setManufacturedDoseForm(parseCodeableConcept(xpp));
13661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
13662        res.setUnitOfPresentation(parseCodeableConcept(xpp));
13663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13664        res.setQuantity(parseQuantity(xpp));
13665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xManufacturer")) {
13666        res.getXManufacturer().add(parseReference(xpp));
13667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13668        res.getIngredient().add(parseReference(xpp));
13669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
13670        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
13671      } else if (!parseBackboneElementContent(eventType, xpp, res))
13672        return false;
13673    return true;
13674  }
13675
13676  protected MedicinalProductPharmaceutical parseMedicinalProductPharmaceutical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13677    MedicinalProductPharmaceutical res = new MedicinalProductPharmaceutical();
13678    parseDomainResourceAttributes(xpp, res);
13679    next(xpp);
13680    int eventType = nextNoWhitespace(xpp);
13681    while (eventType != XmlPullParser.END_TAG) {
13682  if (!parseMedicinalProductPharmaceuticalContent(eventType, xpp, res))
13683        unknownContent(xpp);
13684      eventType = nextNoWhitespace(xpp);
13685    }
13686    next(xpp);
13687    parseElementClose(res);
13688    return res;
13689  }
13690
13691  protected boolean parseMedicinalProductPharmaceuticalContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical res) throws XmlPullParserException, IOException, FHIRFormatError {
13692      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13693        res.getIdentifier().add(parseIdentifier(xpp));
13694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrableDoseForm")) {
13695        res.setAdministrableDoseForm(parseCodeableConcept(xpp));
13696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
13697        res.setUnitOfPresentation(parseCodeableConcept(xpp));
13698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeOfAdministration")) {
13699        res.getRouteOfAdministration().add(parseCodeableConcept(xpp));
13700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13701        res.getIngredient().add(parseReference(xpp));
13702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13703        res.getDevice().add(parseString(xpp));
13704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristics")) {
13705        res.getCharacteristics().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(xpp, res));
13706      } else if (!parseDomainResourceContent(eventType, xpp, res))
13707        return false;
13708    return true;
13709  }
13710
13711  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
13712    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent();
13713    parseBackboneAttributes(xpp, res);
13714    next(xpp);
13715    int eventType = nextNoWhitespace(xpp);
13716    while (eventType != XmlPullParser.END_TAG) {
13717  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(eventType, xpp, owner, res))
13718        unknownContent(xpp);
13719      eventType = nextNoWhitespace(xpp);
13720    }
13721    next(xpp);
13722    parseElementClose(res);
13723    return res;
13724  }
13725
13726  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13727      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13728        res.setCode(parseCodeableConcept(xpp));
13729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13730        res.setStatus(parseCodeableConcept(xpp));
13731      } else if (!parseBackboneElementContent(eventType, xpp, res))
13732        return false;
13733    return true;
13734  }
13735
13736  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13737    MessageDefinition res = new MessageDefinition();
13738    parseDomainResourceAttributes(xpp, res);
13739    next(xpp);
13740    int eventType = nextNoWhitespace(xpp);
13741    while (eventType != XmlPullParser.END_TAG) {
13742  if (!parseMessageDefinitionContent(eventType, xpp, res))
13743        unknownContent(xpp);
13744      eventType = nextNoWhitespace(xpp);
13745    }
13746    next(xpp);
13747    parseElementClose(res);
13748    return res;
13749  }
13750
13751  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
13752      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13753        res.setUrlElement(parseUri(xpp));
13754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13755        res.setIdentifier(parseIdentifier(xpp));
13756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13757        res.setVersionElement(parseString(xpp));
13758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13759        res.setNameElement(parseString(xpp));
13760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13761        res.setTitleElement(parseString(xpp));
13762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
13763        res.getReplaces().add(parseCanonical(xpp));
13764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13765        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13767        res.setExperimentalElement(parseBoolean(xpp));
13768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13769        res.setDateElement(parseDateTime(xpp));
13770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13771        res.setPublisherElement(parseString(xpp));
13772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13773        res.getContact().add(parseContactDetail(xpp));
13774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13775        res.setDescriptionElement(parseMarkdown(xpp));
13776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13777        res.getUseContext().add(parseUsageContext(xpp));
13778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13779        res.getJurisdiction().add(parseCodeableConcept(xpp));
13780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
13781        res.setPurposeElement(parseMarkdown(xpp));
13782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13783        res.setCopyrightElement(parseMarkdown(xpp));
13784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
13785        res.setBaseElement(parseCanonical(xpp));
13786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
13787        res.getParent().add(parseCanonical(xpp));
13788      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
13789        res.setEvent(parseType("event", xpp));
13790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13791        res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
13792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
13793        res.getFocus().add(parseMessageDefinitionMessageDefinitionFocusComponent(xpp, res));
13794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
13795        res.setResponseRequiredElement(parseEnumeration(xpp, MessageDefinition.MessageheaderResponseRequest.NULL, new MessageDefinition.MessageheaderResponseRequestEnumFactory()));
13796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
13797        res.getAllowedResponse().add(parseMessageDefinitionMessageDefinitionAllowedResponseComponent(xpp, res));
13798      } else if (!parseDomainResourceContent(eventType, xpp, res))
13799        return false;
13800    return true;
13801  }
13802
13803  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionMessageDefinitionFocusComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13804    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
13805    parseBackboneAttributes(xpp, res);
13806    next(xpp);
13807    int eventType = nextNoWhitespace(xpp);
13808    while (eventType != XmlPullParser.END_TAG) {
13809  if (!parseMessageDefinitionMessageDefinitionFocusComponentContent(eventType, xpp, owner, res))
13810        unknownContent(xpp);
13811      eventType = nextNoWhitespace(xpp);
13812    }
13813    next(xpp);
13814    parseElementClose(res);
13815    return res;
13816  }
13817
13818  protected boolean parseMessageDefinitionMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13819      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13820        res.setCodeElement(parseCode(xpp));
13821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
13822        res.setProfileElement(parseCanonical(xpp));
13823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
13824        res.setMinElement(parseUnsignedInt(xpp));
13825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
13826        res.setMaxElement(parseString(xpp));
13827      } else if (!parseBackboneElementContent(eventType, xpp, res))
13828        return false;
13829    return true;
13830  }
13831
13832  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionMessageDefinitionAllowedResponseComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13833    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
13834    parseBackboneAttributes(xpp, res);
13835    next(xpp);
13836    int eventType = nextNoWhitespace(xpp);
13837    while (eventType != XmlPullParser.END_TAG) {
13838  if (!parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(eventType, xpp, owner, res))
13839        unknownContent(xpp);
13840      eventType = nextNoWhitespace(xpp);
13841    }
13842    next(xpp);
13843    parseElementClose(res);
13844    return res;
13845  }
13846
13847  protected boolean parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13848      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
13849        res.setMessageElement(parseCanonical(xpp));
13850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
13851        res.setSituationElement(parseMarkdown(xpp));
13852      } else if (!parseBackboneElementContent(eventType, xpp, res))
13853        return false;
13854    return true;
13855  }
13856
13857  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13858    MessageHeader res = new MessageHeader();
13859    parseDomainResourceAttributes(xpp, res);
13860    next(xpp);
13861    int eventType = nextNoWhitespace(xpp);
13862    while (eventType != XmlPullParser.END_TAG) {
13863  if (!parseMessageHeaderContent(eventType, xpp, res))
13864        unknownContent(xpp);
13865      eventType = nextNoWhitespace(xpp);
13866    }
13867    next(xpp);
13868    parseElementClose(res);
13869    return res;
13870  }
13871
13872  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
13873      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
13874        res.setEvent(parseType("event", xpp));
13875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
13876        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
13877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
13878        res.setSender(parseReference(xpp));
13879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
13880        res.setEnterer(parseReference(xpp));
13881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
13882        res.setAuthor(parseReference(xpp));
13883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13884        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
13885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
13886        res.setResponsible(parseReference(xpp));
13887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13888        res.setReason(parseCodeableConcept(xpp));
13889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
13890        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
13891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
13892        res.getFocus().add(parseReference(xpp));
13893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13894        res.setDefinitionElement(parseCanonical(xpp));
13895      } else if (!parseDomainResourceContent(eventType, xpp, res))
13896        return false;
13897    return true;
13898  }
13899
13900  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
13901    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
13902    parseBackboneAttributes(xpp, res);
13903    next(xpp);
13904    int eventType = nextNoWhitespace(xpp);
13905    while (eventType != XmlPullParser.END_TAG) {
13906  if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, owner, res))
13907        unknownContent(xpp);
13908      eventType = nextNoWhitespace(xpp);
13909    }
13910    next(xpp);
13911    parseElementClose(res);
13912    return res;
13913  }
13914
13915  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13916      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13917        res.setNameElement(parseString(xpp));
13918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
13919        res.setTarget(parseReference(xpp));
13920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
13921        res.setEndpointElement(parseUrl(xpp));
13922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
13923        res.setReceiver(parseReference(xpp));
13924      } else if (!parseBackboneElementContent(eventType, xpp, res))
13925        return false;
13926    return true;
13927  }
13928
13929  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
13930    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
13931    parseBackboneAttributes(xpp, res);
13932    next(xpp);
13933    int eventType = nextNoWhitespace(xpp);
13934    while (eventType != XmlPullParser.END_TAG) {
13935  if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, owner, res))
13936        unknownContent(xpp);
13937      eventType = nextNoWhitespace(xpp);
13938    }
13939    next(xpp);
13940    parseElementClose(res);
13941    return res;
13942  }
13943
13944  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13945      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13946        res.setNameElement(parseString(xpp));
13947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
13948        res.setSoftwareElement(parseString(xpp));
13949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13950        res.setVersionElement(parseString(xpp));
13951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13952        res.setContact(parseContactPoint(xpp));
13953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
13954        res.setEndpointElement(parseUrl(xpp));
13955      } else if (!parseBackboneElementContent(eventType, xpp, res))
13956        return false;
13957    return true;
13958  }
13959
13960  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
13961    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
13962    parseBackboneAttributes(xpp, res);
13963    next(xpp);
13964    int eventType = nextNoWhitespace(xpp);
13965    while (eventType != XmlPullParser.END_TAG) {
13966  if (!parseMessageHeaderMessageHeaderResponseComponentContent(eventType, xpp, owner, res))
13967        unknownContent(xpp);
13968      eventType = nextNoWhitespace(xpp);
13969    }
13970    next(xpp);
13971    parseElementClose(res);
13972    return res;
13973  }
13974
13975  protected boolean parseMessageHeaderMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13976      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13977        res.setIdentifierElement(parseId(xpp));
13978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13979        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
13980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
13981        res.setDetails(parseReference(xpp));
13982      } else if (!parseBackboneElementContent(eventType, xpp, res))
13983        return false;
13984    return true;
13985  }
13986
13987  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13988    NamingSystem res = new NamingSystem();
13989    parseDomainResourceAttributes(xpp, res);
13990    next(xpp);
13991    int eventType = nextNoWhitespace(xpp);
13992    while (eventType != XmlPullParser.END_TAG) {
13993  if (!parseNamingSystemContent(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 parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
14003      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14004        res.setNameElement(parseString(xpp));
14005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14006        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
14008        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
14009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14010        res.setDateElement(parseDateTime(xpp));
14011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14012        res.setPublisherElement(parseString(xpp));
14013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14014        res.getContact().add(parseContactDetail(xpp));
14015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
14016        res.setResponsibleElement(parseString(xpp));
14017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14018        res.setType(parseCodeableConcept(xpp));
14019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14020        res.setDescriptionElement(parseMarkdown(xpp));
14021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14022        res.getUseContext().add(parseUsageContext(xpp));
14023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14024        res.getJurisdiction().add(parseCodeableConcept(xpp));
14025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
14026        res.setUsageElement(parseString(xpp));
14027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
14028        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
14029      } else if (!parseDomainResourceContent(eventType, xpp, res))
14030        return false;
14031    return true;
14032  }
14033
14034  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
14035    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
14036    parseBackboneAttributes(xpp, res);
14037    next(xpp);
14038    int eventType = nextNoWhitespace(xpp);
14039    while (eventType != XmlPullParser.END_TAG) {
14040  if (!parseNamingSystemNamingSystemUniqueIdComponentContent(eventType, xpp, owner, res))
14041        unknownContent(xpp);
14042      eventType = nextNoWhitespace(xpp);
14043    }
14044    next(xpp);
14045    parseElementClose(res);
14046    return res;
14047  }
14048
14049  protected boolean parseNamingSystemNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem owner, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14050      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14051        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
14052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
14053        res.setValueElement(parseString(xpp));
14054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
14055        res.setPreferredElement(parseBoolean(xpp));
14056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14057        res.setCommentElement(parseString(xpp));
14058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14059        res.setPeriod(parsePeriod(xpp));
14060      } else if (!parseBackboneElementContent(eventType, xpp, res))
14061        return false;
14062    return true;
14063  }
14064
14065  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14066    NutritionOrder res = new NutritionOrder();
14067    parseDomainResourceAttributes(xpp, res);
14068    next(xpp);
14069    int eventType = nextNoWhitespace(xpp);
14070    while (eventType != XmlPullParser.END_TAG) {
14071  if (!parseNutritionOrderContent(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 parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
14081      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14082        res.getIdentifier().add(parseIdentifier(xpp));
14083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
14084        res.getInstantiates().add(parseUri(xpp));
14085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14086        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
14087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14088        res.setIntentElement(parseEnumeration(xpp, NutritionOrder.NutritiionOrderIntent.NULL, new NutritionOrder.NutritiionOrderIntentEnumFactory()));
14089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
14090        res.setPatient(parseReference(xpp));
14091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14092        res.setContext(parseReference(xpp));
14093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
14094        res.setDateTimeElement(parseDateTime(xpp));
14095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
14096        res.setOrderer(parseReference(xpp));
14097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
14098        res.getAllergyIntolerance().add(parseReference(xpp));
14099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
14100        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
14101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
14102        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
14103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
14104        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
14105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
14106        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
14107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
14108        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
14109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14110        res.getNote().add(parseAnnotation(xpp));
14111      } else if (!parseDomainResourceContent(eventType, xpp, res))
14112        return false;
14113    return true;
14114  }
14115
14116  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
14117    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
14118    parseBackboneAttributes(xpp, res);
14119    next(xpp);
14120    int eventType = nextNoWhitespace(xpp);
14121    while (eventType != XmlPullParser.END_TAG) {
14122  if (!parseNutritionOrderNutritionOrderOralDietComponentContent(eventType, xpp, owner, res))
14123        unknownContent(xpp);
14124      eventType = nextNoWhitespace(xpp);
14125    }
14126    next(xpp);
14127    parseElementClose(res);
14128    return res;
14129  }
14130
14131  protected boolean parseNutritionOrderNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14132      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14133        res.getType().add(parseCodeableConcept(xpp));
14134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14135        res.getSchedule().add(parseTiming(xpp));
14136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
14137        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
14138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
14139        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
14140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
14141        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
14142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
14143        res.setInstructionElement(parseString(xpp));
14144      } else if (!parseBackboneElementContent(eventType, xpp, res))
14145        return false;
14146    return true;
14147  }
14148
14149  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
14150    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
14151    parseBackboneAttributes(xpp, res);
14152    next(xpp);
14153    int eventType = nextNoWhitespace(xpp);
14154    while (eventType != XmlPullParser.END_TAG) {
14155  if (!parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(eventType, xpp, owner, res))
14156        unknownContent(xpp);
14157      eventType = nextNoWhitespace(xpp);
14158    }
14159    next(xpp);
14160    parseElementClose(res);
14161    return res;
14162  }
14163
14164  protected boolean parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14165      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14166        res.setModifier(parseCodeableConcept(xpp));
14167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
14168        res.setAmount(parseSimpleQuantity(xpp));
14169      } else if (!parseBackboneElementContent(eventType, xpp, res))
14170        return false;
14171    return true;
14172  }
14173
14174  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
14175    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
14176    parseBackboneAttributes(xpp, res);
14177    next(xpp);
14178    int eventType = nextNoWhitespace(xpp);
14179    while (eventType != XmlPullParser.END_TAG) {
14180  if (!parseNutritionOrderNutritionOrderOralDietTextureComponentContent(eventType, xpp, owner, res))
14181        unknownContent(xpp);
14182      eventType = nextNoWhitespace(xpp);
14183    }
14184    next(xpp);
14185    parseElementClose(res);
14186    return res;
14187  }
14188
14189  protected boolean parseNutritionOrderNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14190      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14191        res.setModifier(parseCodeableConcept(xpp));
14192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
14193        res.setFoodType(parseCodeableConcept(xpp));
14194      } else if (!parseBackboneElementContent(eventType, xpp, res))
14195        return false;
14196    return true;
14197  }
14198
14199  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
14200    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
14201    parseBackboneAttributes(xpp, res);
14202    next(xpp);
14203    int eventType = nextNoWhitespace(xpp);
14204    while (eventType != XmlPullParser.END_TAG) {
14205  if (!parseNutritionOrderNutritionOrderSupplementComponentContent(eventType, xpp, owner, res))
14206        unknownContent(xpp);
14207      eventType = nextNoWhitespace(xpp);
14208    }
14209    next(xpp);
14210    parseElementClose(res);
14211    return res;
14212  }
14213
14214  protected boolean parseNutritionOrderNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14215      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14216        res.setType(parseCodeableConcept(xpp));
14217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
14218        res.setProductNameElement(parseString(xpp));
14219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14220        res.getSchedule().add(parseTiming(xpp));
14221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14222        res.setQuantity(parseSimpleQuantity(xpp));
14223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
14224        res.setInstructionElement(parseString(xpp));
14225      } else if (!parseBackboneElementContent(eventType, xpp, res))
14226        return false;
14227    return true;
14228  }
14229
14230  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
14231    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
14232    parseBackboneAttributes(xpp, res);
14233    next(xpp);
14234    int eventType = nextNoWhitespace(xpp);
14235    while (eventType != XmlPullParser.END_TAG) {
14236  if (!parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(eventType, xpp, owner, res))
14237        unknownContent(xpp);
14238      eventType = nextNoWhitespace(xpp);
14239    }
14240    next(xpp);
14241    parseElementClose(res);
14242    return res;
14243  }
14244
14245  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
14247        res.setBaseFormulaType(parseCodeableConcept(xpp));
14248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
14249        res.setBaseFormulaProductNameElement(parseString(xpp));
14250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
14251        res.setAdditiveType(parseCodeableConcept(xpp));
14252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
14253        res.setAdditiveProductNameElement(parseString(xpp));
14254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
14255        res.setCaloricDensity(parseSimpleQuantity(xpp));
14256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
14257        res.setRouteofAdministration(parseCodeableConcept(xpp));
14258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
14259        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
14260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
14261        res.setMaxVolumeToDeliver(parseSimpleQuantity(xpp));
14262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
14263        res.setAdministrationInstructionElement(parseString(xpp));
14264      } else if (!parseBackboneElementContent(eventType, xpp, res))
14265        return false;
14266    return true;
14267  }
14268
14269  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
14270    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
14271    parseBackboneAttributes(xpp, res);
14272    next(xpp);
14273    int eventType = nextNoWhitespace(xpp);
14274    while (eventType != XmlPullParser.END_TAG) {
14275  if (!parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, owner, res))
14276        unknownContent(xpp);
14277      eventType = nextNoWhitespace(xpp);
14278    }
14279    next(xpp);
14280    parseElementClose(res);
14281    return res;
14282  }
14283
14284  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14286        res.setSchedule(parseTiming(xpp));
14287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14288        res.setQuantity(parseSimpleQuantity(xpp));
14289      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
14290        res.setRate(parseType("rate", xpp));
14291      } else if (!parseBackboneElementContent(eventType, xpp, res))
14292        return false;
14293    return true;
14294  }
14295
14296  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14297    Observation res = new Observation();
14298    parseDomainResourceAttributes(xpp, res);
14299    next(xpp);
14300    int eventType = nextNoWhitespace(xpp);
14301    while (eventType != XmlPullParser.END_TAG) {
14302  if (!parseObservationContent(eventType, xpp, res))
14303        unknownContent(xpp);
14304      eventType = nextNoWhitespace(xpp);
14305    }
14306    next(xpp);
14307    parseElementClose(res);
14308    return res;
14309  }
14310
14311  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
14312      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14313        res.getIdentifier().add(parseIdentifier(xpp));
14314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14315        res.getBasedOn().add(parseReference(xpp));
14316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
14317        res.getPartOf().add(parseReference(xpp));
14318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14319        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
14320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14321        res.getCategory().add(parseCodeableConcept(xpp));
14322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14323        res.setCode(parseCodeableConcept(xpp));
14324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14325        res.setSubject(parseReference(xpp));
14326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
14327        res.setFocus(parseReference(xpp));
14328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14329        res.setContext(parseReference(xpp));
14330      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
14331        res.setEffective(parseType("effective", xpp));
14332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
14333        res.setIssuedElement(parseInstant(xpp));
14334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14335        res.getPerformer().add(parseReference(xpp));
14336      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
14337        res.setValue(parseType("value", xpp));
14338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
14339        res.setDataAbsentReason(parseCodeableConcept(xpp));
14340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
14341        res.setInterpretation(parseCodeableConcept(xpp));
14342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14343        res.setCommentElement(parseString(xpp));
14344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
14345        res.setBodySite(parseCodeableConcept(xpp));
14346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
14347        res.setMethod(parseCodeableConcept(xpp));
14348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
14349        res.setSpecimen(parseReference(xpp));
14350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
14351        res.setDevice(parseReference(xpp));
14352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
14353        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
14354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasMember")) {
14355        res.getHasMember().add(parseReference(xpp));
14356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
14357        res.getDerivedFrom().add(parseReference(xpp));
14358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
14359        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
14360      } else if (!parseDomainResourceContent(eventType, xpp, res))
14361        return false;
14362    return true;
14363  }
14364
14365  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
14366    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
14367    parseBackboneAttributes(xpp, res);
14368    next(xpp);
14369    int eventType = nextNoWhitespace(xpp);
14370    while (eventType != XmlPullParser.END_TAG) {
14371  if (!parseObservationObservationReferenceRangeComponentContent(eventType, xpp, owner, res))
14372        unknownContent(xpp);
14373      eventType = nextNoWhitespace(xpp);
14374    }
14375    next(xpp);
14376    parseElementClose(res);
14377    return res;
14378  }
14379
14380  protected boolean parseObservationObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14381      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
14382        res.setLow(parseSimpleQuantity(xpp));
14383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
14384        res.setHigh(parseSimpleQuantity(xpp));
14385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14386        res.setType(parseCodeableConcept(xpp));
14387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
14388        res.getAppliesTo().add(parseCodeableConcept(xpp));
14389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
14390        res.setAge(parseRange(xpp));
14391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
14392        res.setTextElement(parseString(xpp));
14393      } else if (!parseBackboneElementContent(eventType, xpp, res))
14394        return false;
14395    return true;
14396  }
14397
14398  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
14399    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
14400    parseBackboneAttributes(xpp, res);
14401    next(xpp);
14402    int eventType = nextNoWhitespace(xpp);
14403    while (eventType != XmlPullParser.END_TAG) {
14404  if (!parseObservationObservationComponentComponentContent(eventType, xpp, owner, res))
14405        unknownContent(xpp);
14406      eventType = nextNoWhitespace(xpp);
14407    }
14408    next(xpp);
14409    parseElementClose(res);
14410    return res;
14411  }
14412
14413  protected boolean parseObservationObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14414      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14415        res.setCode(parseCodeableConcept(xpp));
14416      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
14417        res.setValue(parseType("value", xpp));
14418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
14419        res.setDataAbsentReason(parseCodeableConcept(xpp));
14420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
14421        res.setInterpretation(parseCodeableConcept(xpp));
14422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
14423        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
14424      } else if (!parseBackboneElementContent(eventType, xpp, res))
14425        return false;
14426    return true;
14427  }
14428
14429  protected ObservationDefinition parseObservationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14430    ObservationDefinition res = new ObservationDefinition();
14431    parseDomainResourceAttributes(xpp, res);
14432    next(xpp);
14433    int eventType = nextNoWhitespace(xpp);
14434    while (eventType != XmlPullParser.END_TAG) {
14435  if (!parseObservationDefinitionContent(eventType, xpp, res))
14436        unknownContent(xpp);
14437      eventType = nextNoWhitespace(xpp);
14438    }
14439    next(xpp);
14440    parseElementClose(res);
14441    return res;
14442  }
14443
14444  protected boolean parseObservationDefinitionContent(int eventType, XmlPullParser xpp, ObservationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
14445      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14446        res.setCategory(parseCoding(xpp));
14447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14448        res.setCode(parseCoding(xpp));
14449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedDataType")) {
14450        res.getPermittedDataType().add(parseCoding(xpp));
14451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleResultsAllowed")) {
14452        res.setMultipleResultsAllowedElement(parseBoolean(xpp));
14453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
14454        res.setMethod(parseCodeableConcept(xpp));
14455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferredReportName")) {
14456        res.setPreferredReportNameElement(parseString(xpp));
14457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantitativeDetails")) {
14458        res.setQuantitativeDetails(parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(xpp, res));
14459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiedInterval")) {
14460        res.getQualifiedInterval().add(parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(xpp, res));
14461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validCodedValueSet")) {
14462        res.setValidCodedValueSetElement(parseUri(xpp));
14463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("normalCodedValueSet")) {
14464        res.setNormalCodedValueSetElement(parseUri(xpp));
14465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abnormalCodedValueSet")) {
14466        res.setAbnormalCodedValueSetElement(parseUri(xpp));
14467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticalCodedValueSet")) {
14468        res.setCriticalCodedValueSetElement(parseUri(xpp));
14469      } else if (!parseDomainResourceContent(eventType, xpp, res))
14470        return false;
14471    return true;
14472  }
14473
14474  protected ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
14475    ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res = new ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent();
14476    parseBackboneAttributes(xpp, res);
14477    next(xpp);
14478    int eventType = nextNoWhitespace(xpp);
14479    while (eventType != XmlPullParser.END_TAG) {
14480  if (!parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(eventType, xpp, owner, res))
14481        unknownContent(xpp);
14482      eventType = nextNoWhitespace(xpp);
14483    }
14484    next(xpp);
14485    parseElementClose(res);
14486    return res;
14487  }
14488
14489  protected boolean parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14490      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("customaryUnit")) {
14491        res.setCustomaryUnit(parseCoding(xpp));
14492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
14493        res.setUnit(parseCoding(xpp));
14494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conversionFactor")) {
14495        res.setConversionFactorElement(parseDecimal(xpp));
14496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decimalPrecision")) {
14497        res.setDecimalPrecisionElement(parseInteger(xpp));
14498      } else if (!parseBackboneElementContent(eventType, xpp, res))
14499        return false;
14500    return true;
14501  }
14502
14503  protected ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
14504    ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res = new ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent();
14505    parseBackboneAttributes(xpp, res);
14506    next(xpp);
14507    int eventType = nextNoWhitespace(xpp);
14508    while (eventType != XmlPullParser.END_TAG) {
14509  if (!parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(eventType, xpp, owner, res))
14510        unknownContent(xpp);
14511      eventType = nextNoWhitespace(xpp);
14512    }
14513    next(xpp);
14514    parseElementClose(res);
14515    return res;
14516  }
14517
14518  protected boolean parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14519      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14520        res.setCategory(parseCodeableConcept(xpp));
14521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
14522        res.setRange(parseRange(xpp));
14523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14524        res.setType(parseCodeableConcept(xpp));
14525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
14526        res.getAppliesTo().add(parseCodeableConcept(xpp));
14527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
14528        res.setAge(parseRange(xpp));
14529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gestationalAge")) {
14530        res.setGestationalAge(parseRange(xpp));
14531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
14532        res.setConditionElement(parseString(xpp));
14533      } else if (!parseBackboneElementContent(eventType, xpp, res))
14534        return false;
14535    return true;
14536  }
14537
14538  protected OccupationalData parseOccupationalData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14539    OccupationalData res = new OccupationalData();
14540    parseDomainResourceAttributes(xpp, res);
14541    next(xpp);
14542    int eventType = nextNoWhitespace(xpp);
14543    while (eventType != XmlPullParser.END_TAG) {
14544  if (!parseOccupationalDataContent(eventType, xpp, res))
14545        unknownContent(xpp);
14546      eventType = nextNoWhitespace(xpp);
14547    }
14548    next(xpp);
14549    parseElementClose(res);
14550    return res;
14551  }
14552
14553  protected boolean parseOccupationalDataContent(int eventType, XmlPullParser xpp, OccupationalData res) throws XmlPullParserException, IOException, FHIRFormatError {
14554      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14555        res.setIdentifier(parseIdentifier(xpp));
14556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14557        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14559        res.setSubject(parseReference(xpp));
14560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14561        res.setDateElement(parseDateTime(xpp));
14562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
14563        res.getRecorder().add(parseReference(xpp));
14564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informant")) {
14565        res.getInformant().add(parseReference(xpp));
14566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employmentStatus")) {
14567        res.getEmploymentStatus().add(parseOccupationalDataOccupationalDataEmploymentStatusComponent(xpp, res));
14568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("retirementDate")) {
14569        res.getRetirementDate().add(parseDateTime(xpp));
14570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combatZonePeriod")) {
14571        res.getCombatZonePeriod().add(parsePeriod(xpp));
14572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usualWork")) {
14573        res.setUsualWork(parseOccupationalDataOccupationalDataUsualWorkComponent(xpp, res));
14574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pastOrPresentJob")) {
14575        res.getPastOrPresentJob().add(parseOccupationalDataOccupationalDataPastOrPresentJobComponent(xpp, res));
14576      } else if (!parseDomainResourceContent(eventType, xpp, res))
14577        return false;
14578    return true;
14579  }
14580
14581  protected OccupationalData.OccupationalDataEmploymentStatusComponent parseOccupationalDataOccupationalDataEmploymentStatusComponent(XmlPullParser xpp, OccupationalData owner) throws XmlPullParserException, IOException, FHIRFormatError {
14582    OccupationalData.OccupationalDataEmploymentStatusComponent res = new OccupationalData.OccupationalDataEmploymentStatusComponent();
14583    parseBackboneAttributes(xpp, res);
14584    next(xpp);
14585    int eventType = nextNoWhitespace(xpp);
14586    while (eventType != XmlPullParser.END_TAG) {
14587  if (!parseOccupationalDataOccupationalDataEmploymentStatusComponentContent(eventType, xpp, owner, res))
14588        unknownContent(xpp);
14589      eventType = nextNoWhitespace(xpp);
14590    }
14591    next(xpp);
14592    parseElementClose(res);
14593    return res;
14594  }
14595
14596  protected boolean parseOccupationalDataOccupationalDataEmploymentStatusComponentContent(int eventType, XmlPullParser xpp, OccupationalData owner, OccupationalData.OccupationalDataEmploymentStatusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14597      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14598        res.setCode(parseCodeableConcept(xpp));
14599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effective")) {
14600        res.setEffective(parsePeriod(xpp));
14601      } else if (!parseBackboneElementContent(eventType, xpp, res))
14602        return false;
14603    return true;
14604  }
14605
14606  protected OccupationalData.OccupationalDataUsualWorkComponent parseOccupationalDataOccupationalDataUsualWorkComponent(XmlPullParser xpp, OccupationalData owner) throws XmlPullParserException, IOException, FHIRFormatError {
14607    OccupationalData.OccupationalDataUsualWorkComponent res = new OccupationalData.OccupationalDataUsualWorkComponent();
14608    parseBackboneAttributes(xpp, res);
14609    next(xpp);
14610    int eventType = nextNoWhitespace(xpp);
14611    while (eventType != XmlPullParser.END_TAG) {
14612  if (!parseOccupationalDataOccupationalDataUsualWorkComponentContent(eventType, xpp, owner, res))
14613        unknownContent(xpp);
14614      eventType = nextNoWhitespace(xpp);
14615    }
14616    next(xpp);
14617    parseElementClose(res);
14618    return res;
14619  }
14620
14621  protected boolean parseOccupationalDataOccupationalDataUsualWorkComponentContent(int eventType, XmlPullParser xpp, OccupationalData owner, OccupationalData.OccupationalDataUsualWorkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14622      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occupation")) {
14623        res.setOccupation(parseCodeableConcept(xpp));
14624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("industry")) {
14625        res.setIndustry(parseCodeableConcept(xpp));
14626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14627        res.setStartElement(parseDateTime(xpp));
14628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
14629        res.setDuration(parseDuration(xpp));
14630      } else if (!parseBackboneElementContent(eventType, xpp, res))
14631        return false;
14632    return true;
14633  }
14634
14635  protected OccupationalData.OccupationalDataPastOrPresentJobComponent parseOccupationalDataOccupationalDataPastOrPresentJobComponent(XmlPullParser xpp, OccupationalData owner) throws XmlPullParserException, IOException, FHIRFormatError {
14636    OccupationalData.OccupationalDataPastOrPresentJobComponent res = new OccupationalData.OccupationalDataPastOrPresentJobComponent();
14637    parseBackboneAttributes(xpp, res);
14638    next(xpp);
14639    int eventType = nextNoWhitespace(xpp);
14640    while (eventType != XmlPullParser.END_TAG) {
14641  if (!parseOccupationalDataOccupationalDataPastOrPresentJobComponentContent(eventType, xpp, owner, res))
14642        unknownContent(xpp);
14643      eventType = nextNoWhitespace(xpp);
14644    }
14645    next(xpp);
14646    parseElementClose(res);
14647    return res;
14648  }
14649
14650  protected boolean parseOccupationalDataOccupationalDataPastOrPresentJobComponentContent(int eventType, XmlPullParser xpp, OccupationalData owner, OccupationalData.OccupationalDataPastOrPresentJobComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14651      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occupation")) {
14652        res.setOccupation(parseCodeableConcept(xpp));
14653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("industry")) {
14654        res.setIndustry(parseCodeableConcept(xpp));
14655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effective")) {
14656        res.setEffective(parsePeriod(xpp));
14657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employer")) {
14658        res.setEmployer(parseReference(xpp));
14659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workClassification")) {
14660        res.setWorkClassification(parseCodeableConcept(xpp));
14661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supervisoryLevel")) {
14662        res.setSupervisoryLevel(parseCodeableConcept(xpp));
14663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jobDuty")) {
14664        res.getJobDuty().add(parseString(xpp));
14665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occupationalHazard")) {
14666        res.getOccupationalHazard().add(parseString(xpp));
14667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workSchedule")) {
14668        res.setWorkSchedule(parseOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponent(xpp, owner));
14669      } else if (!parseBackboneElementContent(eventType, xpp, res))
14670        return false;
14671    return true;
14672  }
14673
14674  protected OccupationalData.OccupationalDataPastOrPresentJobWorkScheduleComponent parseOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponent(XmlPullParser xpp, OccupationalData owner) throws XmlPullParserException, IOException, FHIRFormatError {
14675    OccupationalData.OccupationalDataPastOrPresentJobWorkScheduleComponent res = new OccupationalData.OccupationalDataPastOrPresentJobWorkScheduleComponent();
14676    parseBackboneAttributes(xpp, res);
14677    next(xpp);
14678    int eventType = nextNoWhitespace(xpp);
14679    while (eventType != XmlPullParser.END_TAG) {
14680  if (!parseOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponentContent(eventType, xpp, owner, res))
14681        unknownContent(xpp);
14682      eventType = nextNoWhitespace(xpp);
14683    }
14684    next(xpp);
14685    parseElementClose(res);
14686    return res;
14687  }
14688
14689  protected boolean parseOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponentContent(int eventType, XmlPullParser xpp, OccupationalData owner, OccupationalData.OccupationalDataPastOrPresentJobWorkScheduleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14690      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14691        res.setCode(parseCodeableConcept(xpp));
14692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("weeklyWorkDays")) {
14693        res.setWeeklyWorkDaysElement(parseDecimal(xpp));
14694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyWorkHours")) {
14695        res.setDailyWorkHoursElement(parseDecimal(xpp));
14696      } else if (!parseBackboneElementContent(eventType, xpp, res))
14697        return false;
14698    return true;
14699  }
14700
14701  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14702    OperationDefinition res = new OperationDefinition();
14703    parseDomainResourceAttributes(xpp, res);
14704    next(xpp);
14705    int eventType = nextNoWhitespace(xpp);
14706    while (eventType != XmlPullParser.END_TAG) {
14707  if (!parseOperationDefinitionContent(eventType, xpp, res))
14708        unknownContent(xpp);
14709      eventType = nextNoWhitespace(xpp);
14710    }
14711    next(xpp);
14712    parseElementClose(res);
14713    return res;
14714  }
14715
14716  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
14717      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14718        res.setUrlElement(parseUri(xpp));
14719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
14720        res.setVersionElement(parseString(xpp));
14721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14722        res.setNameElement(parseString(xpp));
14723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14724        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
14726        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
14727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
14728        res.setExperimentalElement(parseBoolean(xpp));
14729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14730        res.setDateElement(parseDateTime(xpp));
14731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14732        res.setPublisherElement(parseString(xpp));
14733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14734        res.getContact().add(parseContactDetail(xpp));
14735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14736        res.setDescriptionElement(parseMarkdown(xpp));
14737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14738        res.getUseContext().add(parseUsageContext(xpp));
14739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14740        res.getJurisdiction().add(parseCodeableConcept(xpp));
14741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14742        res.setPurposeElement(parseMarkdown(xpp));
14743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affectsState")) {
14744        res.setAffectsStateElement(parseBoolean(xpp));
14745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14746        res.setCodeElement(parseCode(xpp));
14747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14748        res.setCommentElement(parseMarkdown(xpp));
14749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
14750        res.setBaseElement(parseCanonical(xpp));
14751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
14752        res.getResource().add(parseCode(xpp));
14753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
14754        res.setSystemElement(parseBoolean(xpp));
14755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14756        res.setTypeElement(parseBoolean(xpp));
14757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
14758        res.setInstanceElement(parseBoolean(xpp));
14759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inputProfile")) {
14760        res.setInputProfileElement(parseCanonical(xpp));
14761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputProfile")) {
14762        res.setOutputProfileElement(parseCanonical(xpp));
14763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
14764        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
14765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
14766        res.getOverload().add(parseOperationDefinitionOperationDefinitionOverloadComponent(xpp, res));
14767      } else if (!parseDomainResourceContent(eventType, xpp, res))
14768        return false;
14769    return true;
14770  }
14771
14772  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
14773    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
14774    parseBackboneAttributes(xpp, res);
14775    next(xpp);
14776    int eventType = nextNoWhitespace(xpp);
14777    while (eventType != XmlPullParser.END_TAG) {
14778  if (!parseOperationDefinitionOperationDefinitionParameterComponentContent(eventType, xpp, owner, res))
14779        unknownContent(xpp);
14780      eventType = nextNoWhitespace(xpp);
14781    }
14782    next(xpp);
14783    parseElementClose(res);
14784    return res;
14785  }
14786
14787  protected boolean parseOperationDefinitionOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14788      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14789        res.setNameElement(parseCode(xpp));
14790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
14791        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
14792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
14793        res.setMinElement(parseInteger(xpp));
14794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
14795        res.setMaxElement(parseString(xpp));
14796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
14797        res.setDocumentationElement(parseString(xpp));
14798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14799        res.setTypeElement(parseCode(xpp));
14800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
14801        res.getTargetProfile().add(parseCanonical(xpp));
14802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
14803        res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
14804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
14805        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
14806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
14807        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
14808      } else if (!parseBackboneElementContent(eventType, xpp, res))
14809        return false;
14810    return true;
14811  }
14812
14813  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
14814    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
14815    parseBackboneAttributes(xpp, res);
14816    next(xpp);
14817    int eventType = nextNoWhitespace(xpp);
14818    while (eventType != XmlPullParser.END_TAG) {
14819  if (!parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(eventType, xpp, owner, res))
14820        unknownContent(xpp);
14821      eventType = nextNoWhitespace(xpp);
14822    }
14823    next(xpp);
14824    parseElementClose(res);
14825    return res;
14826  }
14827
14828  protected boolean parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14829      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
14830        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
14831      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
14832        res.setValueSet(parseType("valueSet", xpp));
14833      } else if (!parseBackboneElementContent(eventType, xpp, res))
14834        return false;
14835    return true;
14836  }
14837
14838  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOperationDefinitionOverloadComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
14839    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
14840    parseBackboneAttributes(xpp, res);
14841    next(xpp);
14842    int eventType = nextNoWhitespace(xpp);
14843    while (eventType != XmlPullParser.END_TAG) {
14844  if (!parseOperationDefinitionOperationDefinitionOverloadComponentContent(eventType, xpp, owner, res))
14845        unknownContent(xpp);
14846      eventType = nextNoWhitespace(xpp);
14847    }
14848    next(xpp);
14849    parseElementClose(res);
14850    return res;
14851  }
14852
14853  protected boolean parseOperationDefinitionOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14854      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
14855        res.getParameterName().add(parseString(xpp));
14856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14857        res.setCommentElement(parseString(xpp));
14858      } else if (!parseBackboneElementContent(eventType, xpp, res))
14859        return false;
14860    return true;
14861  }
14862
14863  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14864    OperationOutcome res = new OperationOutcome();
14865    parseDomainResourceAttributes(xpp, res);
14866    next(xpp);
14867    int eventType = nextNoWhitespace(xpp);
14868    while (eventType != XmlPullParser.END_TAG) {
14869  if (!parseOperationOutcomeContent(eventType, xpp, res))
14870        unknownContent(xpp);
14871      eventType = nextNoWhitespace(xpp);
14872    }
14873    next(xpp);
14874    parseElementClose(res);
14875    return res;
14876  }
14877
14878  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
14879      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
14880        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
14881      } else if (!parseDomainResourceContent(eventType, xpp, res))
14882        return false;
14883    return true;
14884  }
14885
14886  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
14887    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
14888    parseBackboneAttributes(xpp, res);
14889    next(xpp);
14890    int eventType = nextNoWhitespace(xpp);
14891    while (eventType != XmlPullParser.END_TAG) {
14892  if (!parseOperationOutcomeOperationOutcomeIssueComponentContent(eventType, xpp, owner, res))
14893        unknownContent(xpp);
14894      eventType = nextNoWhitespace(xpp);
14895    }
14896    next(xpp);
14897    parseElementClose(res);
14898    return res;
14899  }
14900
14901  protected boolean parseOperationOutcomeOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome owner, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14902      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
14903        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
14904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14905        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
14906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
14907        res.setDetails(parseCodeableConcept(xpp));
14908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
14909        res.setDiagnosticsElement(parseString(xpp));
14910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
14911        res.getLocation().add(parseString(xpp));
14912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14913        res.getExpression().add(parseString(xpp));
14914      } else if (!parseBackboneElementContent(eventType, xpp, res))
14915        return false;
14916    return true;
14917  }
14918
14919  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14920    Organization res = new Organization();
14921    parseDomainResourceAttributes(xpp, res);
14922    next(xpp);
14923    int eventType = nextNoWhitespace(xpp);
14924    while (eventType != XmlPullParser.END_TAG) {
14925  if (!parseOrganizationContent(eventType, xpp, res))
14926        unknownContent(xpp);
14927      eventType = nextNoWhitespace(xpp);
14928    }
14929    next(xpp);
14930    parseElementClose(res);
14931    return res;
14932  }
14933
14934  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
14935      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14936        res.getIdentifier().add(parseIdentifier(xpp));
14937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
14938        res.setActiveElement(parseBoolean(xpp));
14939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14940        res.getType().add(parseCodeableConcept(xpp));
14941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14942        res.setNameElement(parseString(xpp));
14943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
14944        res.getAlias().add(parseString(xpp));
14945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
14946        res.getTelecom().add(parseContactPoint(xpp));
14947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
14948        res.getAddress().add(parseAddress(xpp));
14949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
14950        res.setPartOf(parseReference(xpp));
14951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14952        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
14953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
14954        res.getEndpoint().add(parseReference(xpp));
14955      } else if (!parseDomainResourceContent(eventType, xpp, res))
14956        return false;
14957    return true;
14958  }
14959
14960  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
14961    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
14962    parseBackboneAttributes(xpp, res);
14963    next(xpp);
14964    int eventType = nextNoWhitespace(xpp);
14965    while (eventType != XmlPullParser.END_TAG) {
14966  if (!parseOrganizationOrganizationContactComponentContent(eventType, xpp, owner, res))
14967        unknownContent(xpp);
14968      eventType = nextNoWhitespace(xpp);
14969    }
14970    next(xpp);
14971    parseElementClose(res);
14972    return res;
14973  }
14974
14975  protected boolean parseOrganizationOrganizationContactComponentContent(int eventType, XmlPullParser xpp, Organization owner, Organization.OrganizationContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14976      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14977        res.setPurpose(parseCodeableConcept(xpp));
14978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14979        res.setName(parseHumanName(xpp));
14980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
14981        res.getTelecom().add(parseContactPoint(xpp));
14982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
14983        res.setAddress(parseAddress(xpp));
14984      } else if (!parseBackboneElementContent(eventType, xpp, res))
14985        return false;
14986    return true;
14987  }
14988
14989  protected OrganizationRole parseOrganizationRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14990    OrganizationRole res = new OrganizationRole();
14991    parseDomainResourceAttributes(xpp, res);
14992    next(xpp);
14993    int eventType = nextNoWhitespace(xpp);
14994    while (eventType != XmlPullParser.END_TAG) {
14995  if (!parseOrganizationRoleContent(eventType, xpp, res))
14996        unknownContent(xpp);
14997      eventType = nextNoWhitespace(xpp);
14998    }
14999    next(xpp);
15000    parseElementClose(res);
15001    return res;
15002  }
15003
15004  protected boolean parseOrganizationRoleContent(int eventType, XmlPullParser xpp, OrganizationRole res) throws XmlPullParserException, IOException, FHIRFormatError {
15005      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15006        res.getIdentifier().add(parseIdentifier(xpp));
15007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
15008        res.setActiveElement(parseBoolean(xpp));
15009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15010        res.setPeriod(parsePeriod(xpp));
15011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
15012        res.setOrganization(parseReference(xpp));
15013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participatingOrganization")) {
15014        res.setParticipatingOrganization(parseReference(xpp));
15015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
15016        res.getNetwork().add(parseReference(xpp));
15017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15018        res.getCode().add(parseCodeableConcept(xpp));
15019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
15020        res.getSpecialty().add(parseCodeableConcept(xpp));
15021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
15022        res.getLocation().add(parseReference(xpp));
15023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
15024        res.getHealthcareService().add(parseReference(xpp));
15025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
15026        res.getTelecom().add(parseContactPoint(xpp));
15027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
15028        res.getAvailableTime().add(parseOrganizationRoleOrganizationRoleAvailableTimeComponent(xpp, res));
15029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
15030        res.getNotAvailable().add(parseOrganizationRoleOrganizationRoleNotAvailableComponent(xpp, res));
15031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
15032        res.setAvailabilityExceptionsElement(parseString(xpp));
15033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15034        res.getEndpoint().add(parseReference(xpp));
15035      } else if (!parseDomainResourceContent(eventType, xpp, res))
15036        return false;
15037    return true;
15038  }
15039
15040  protected OrganizationRole.OrganizationRoleAvailableTimeComponent parseOrganizationRoleOrganizationRoleAvailableTimeComponent(XmlPullParser xpp, OrganizationRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
15041    OrganizationRole.OrganizationRoleAvailableTimeComponent res = new OrganizationRole.OrganizationRoleAvailableTimeComponent();
15042    parseBackboneAttributes(xpp, res);
15043    next(xpp);
15044    int eventType = nextNoWhitespace(xpp);
15045    while (eventType != XmlPullParser.END_TAG) {
15046  if (!parseOrganizationRoleOrganizationRoleAvailableTimeComponentContent(eventType, xpp, owner, res))
15047        unknownContent(xpp);
15048      eventType = nextNoWhitespace(xpp);
15049    }
15050    next(xpp);
15051    parseElementClose(res);
15052    return res;
15053  }
15054
15055  protected boolean parseOrganizationRoleOrganizationRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, OrganizationRole owner, OrganizationRole.OrganizationRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15056      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
15057        res.getDaysOfWeek().add(parseEnumeration(xpp, OrganizationRole.DaysOfWeek.NULL, new OrganizationRole.DaysOfWeekEnumFactory()));
15058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
15059        res.setAllDayElement(parseBoolean(xpp));
15060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
15061        res.setAvailableStartTimeElement(parseTime(xpp));
15062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
15063        res.setAvailableEndTimeElement(parseTime(xpp));
15064      } else if (!parseBackboneElementContent(eventType, xpp, res))
15065        return false;
15066    return true;
15067  }
15068
15069  protected OrganizationRole.OrganizationRoleNotAvailableComponent parseOrganizationRoleOrganizationRoleNotAvailableComponent(XmlPullParser xpp, OrganizationRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
15070    OrganizationRole.OrganizationRoleNotAvailableComponent res = new OrganizationRole.OrganizationRoleNotAvailableComponent();
15071    parseBackboneAttributes(xpp, res);
15072    next(xpp);
15073    int eventType = nextNoWhitespace(xpp);
15074    while (eventType != XmlPullParser.END_TAG) {
15075  if (!parseOrganizationRoleOrganizationRoleNotAvailableComponentContent(eventType, xpp, owner, res))
15076        unknownContent(xpp);
15077      eventType = nextNoWhitespace(xpp);
15078    }
15079    next(xpp);
15080    parseElementClose(res);
15081    return res;
15082  }
15083
15084  protected boolean parseOrganizationRoleOrganizationRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, OrganizationRole owner, OrganizationRole.OrganizationRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15085      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15086        res.setDescriptionElement(parseString(xpp));
15087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
15088        res.setDuring(parsePeriod(xpp));
15089      } else if (!parseBackboneElementContent(eventType, xpp, res))
15090        return false;
15091    return true;
15092  }
15093
15094  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15095    Patient res = new Patient();
15096    parseDomainResourceAttributes(xpp, res);
15097    next(xpp);
15098    int eventType = nextNoWhitespace(xpp);
15099    while (eventType != XmlPullParser.END_TAG) {
15100  if (!parsePatientContent(eventType, xpp, res))
15101        unknownContent(xpp);
15102      eventType = nextNoWhitespace(xpp);
15103    }
15104    next(xpp);
15105    parseElementClose(res);
15106    return res;
15107  }
15108
15109  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
15110      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15111        res.getIdentifier().add(parseIdentifier(xpp));
15112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
15113        res.setActiveElement(parseBoolean(xpp));
15114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15115        res.getName().add(parseHumanName(xpp));
15116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
15117        res.getTelecom().add(parseContactPoint(xpp));
15118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
15119        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
15120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
15121        res.setBirthDateElement(parseDate(xpp));
15122      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
15123        res.setDeceased(parseType("deceased", xpp));
15124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
15125        res.getAddress().add(parseAddress(xpp));
15126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
15127        res.setMaritalStatus(parseCodeableConcept(xpp));
15128      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
15129        res.setMultipleBirth(parseType("multipleBirth", xpp));
15130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
15131        res.getPhoto().add(parseAttachment(xpp));
15132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15133        res.getContact().add(parsePatientContactComponent(xpp, res));
15134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
15135        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
15136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
15137        res.getGeneralPractitioner().add(parseReference(xpp));
15138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
15139        res.setManagingOrganization(parseReference(xpp));
15140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
15141        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
15142      } else if (!parseDomainResourceContent(eventType, xpp, res))
15143        return false;
15144    return true;
15145  }
15146
15147  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15148    Patient.ContactComponent res = new Patient.ContactComponent();
15149    parseBackboneAttributes(xpp, res);
15150    next(xpp);
15151    int eventType = nextNoWhitespace(xpp);
15152    while (eventType != XmlPullParser.END_TAG) {
15153  if (!parsePatientContactComponentContent(eventType, xpp, owner, res))
15154        unknownContent(xpp);
15155      eventType = nextNoWhitespace(xpp);
15156    }
15157    next(xpp);
15158    parseElementClose(res);
15159    return res;
15160  }
15161
15162  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15163      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
15164        res.getRelationship().add(parseCodeableConcept(xpp));
15165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15166        res.setName(parseHumanName(xpp));
15167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
15168        res.getTelecom().add(parseContactPoint(xpp));
15169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
15170        res.setAddress(parseAddress(xpp));
15171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
15172        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
15173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
15174        res.setOrganization(parseReference(xpp));
15175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15176        res.setPeriod(parsePeriod(xpp));
15177      } else if (!parseBackboneElementContent(eventType, xpp, res))
15178        return false;
15179    return true;
15180  }
15181
15182  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15183    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
15184    parseBackboneAttributes(xpp, res);
15185    next(xpp);
15186    int eventType = nextNoWhitespace(xpp);
15187    while (eventType != XmlPullParser.END_TAG) {
15188  if (!parsePatientPatientCommunicationComponentContent(eventType, xpp, owner, res))
15189        unknownContent(xpp);
15190      eventType = nextNoWhitespace(xpp);
15191    }
15192    next(xpp);
15193    parseElementClose(res);
15194    return res;
15195  }
15196
15197  protected boolean parsePatientPatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15198      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
15199        res.setLanguage(parseCodeableConcept(xpp));
15200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
15201        res.setPreferredElement(parseBoolean(xpp));
15202      } else if (!parseBackboneElementContent(eventType, xpp, res))
15203        return false;
15204    return true;
15205  }
15206
15207  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15208    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
15209    parseBackboneAttributes(xpp, res);
15210    next(xpp);
15211    int eventType = nextNoWhitespace(xpp);
15212    while (eventType != XmlPullParser.END_TAG) {
15213  if (!parsePatientPatientLinkComponentContent(eventType, xpp, owner, res))
15214        unknownContent(xpp);
15215      eventType = nextNoWhitespace(xpp);
15216    }
15217    next(xpp);
15218    parseElementClose(res);
15219    return res;
15220  }
15221
15222  protected boolean parsePatientPatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15223      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
15224        res.setOther(parseReference(xpp));
15225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15226        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
15227      } else if (!parseBackboneElementContent(eventType, xpp, res))
15228        return false;
15229    return true;
15230  }
15231
15232  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15233    PaymentNotice res = new PaymentNotice();
15234    parseDomainResourceAttributes(xpp, res);
15235    next(xpp);
15236    int eventType = nextNoWhitespace(xpp);
15237    while (eventType != XmlPullParser.END_TAG) {
15238  if (!parsePaymentNoticeContent(eventType, xpp, res))
15239        unknownContent(xpp);
15240      eventType = nextNoWhitespace(xpp);
15241    }
15242    next(xpp);
15243    parseElementClose(res);
15244    return res;
15245  }
15246
15247  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
15248      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15249        res.getIdentifier().add(parseIdentifier(xpp));
15250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15251        res.setStatusElement(parseEnumeration(xpp, PaymentNotice.PaymentNoticeStatus.NULL, new PaymentNotice.PaymentNoticeStatusEnumFactory()));
15252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
15253        res.setRequest(parseReference(xpp));
15254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
15255        res.setResponse(parseReference(xpp));
15256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
15257        res.setStatusDateElement(parseDate(xpp));
15258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
15259        res.setCreatedElement(parseDateTime(xpp));
15260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15261        res.setTarget(parseReference(xpp));
15262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
15263        res.setProvider(parseReference(xpp));
15264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
15265        res.setPaymentStatus(parseCodeableConcept(xpp));
15266      } else if (!parseDomainResourceContent(eventType, xpp, res))
15267        return false;
15268    return true;
15269  }
15270
15271  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15272    PaymentReconciliation res = new PaymentReconciliation();
15273    parseDomainResourceAttributes(xpp, res);
15274    next(xpp);
15275    int eventType = nextNoWhitespace(xpp);
15276    while (eventType != XmlPullParser.END_TAG) {
15277  if (!parsePaymentReconciliationContent(eventType, xpp, res))
15278        unknownContent(xpp);
15279      eventType = nextNoWhitespace(xpp);
15280    }
15281    next(xpp);
15282    parseElementClose(res);
15283    return res;
15284  }
15285
15286  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
15287      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15288        res.getIdentifier().add(parseIdentifier(xpp));
15289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15290        res.setStatusElement(parseEnumeration(xpp, PaymentReconciliation.PaymentReconciliationStatus.NULL, new PaymentReconciliation.PaymentReconciliationStatusEnumFactory()));
15291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15292        res.setPeriod(parsePeriod(xpp));
15293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
15294        res.setCreatedElement(parseDateTime(xpp));
15295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
15296        res.setOrganization(parseReference(xpp));
15297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
15298        res.setRequest(parseReference(xpp));
15299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
15300        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
15301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
15302        res.setDispositionElement(parseString(xpp));
15303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
15304        res.setRequestProvider(parseReference(xpp));
15305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
15306        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
15307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
15308        res.setForm(parseCodeableConcept(xpp));
15309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
15310        res.setTotal(parseMoney(xpp));
15311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
15312        res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
15313      } else if (!parseDomainResourceContent(eventType, xpp, res))
15314        return false;
15315    return true;
15316  }
15317
15318  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
15319    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
15320    parseBackboneAttributes(xpp, res);
15321    next(xpp);
15322    int eventType = nextNoWhitespace(xpp);
15323    while (eventType != XmlPullParser.END_TAG) {
15324  if (!parsePaymentReconciliationDetailsComponentContent(eventType, xpp, owner, res))
15325        unknownContent(xpp);
15326      eventType = nextNoWhitespace(xpp);
15327    }
15328    next(xpp);
15329    parseElementClose(res);
15330    return res;
15331  }
15332
15333  protected boolean parsePaymentReconciliationDetailsComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15334      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15335        res.setType(parseCodeableConcept(xpp));
15336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
15337        res.setRequest(parseReference(xpp));
15338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
15339        res.setResponse(parseReference(xpp));
15340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
15341        res.setSubmitter(parseReference(xpp));
15342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
15343        res.setPayee(parseReference(xpp));
15344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15345        res.setDateElement(parseDate(xpp));
15346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
15347        res.setAmount(parseMoney(xpp));
15348      } else if (!parseBackboneElementContent(eventType, xpp, res))
15349        return false;
15350    return true;
15351  }
15352
15353  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
15354    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
15355    parseBackboneAttributes(xpp, res);
15356    next(xpp);
15357    int eventType = nextNoWhitespace(xpp);
15358    while (eventType != XmlPullParser.END_TAG) {
15359  if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, owner, res))
15360        unknownContent(xpp);
15361      eventType = nextNoWhitespace(xpp);
15362    }
15363    next(xpp);
15364    parseElementClose(res);
15365    return res;
15366  }
15367
15368  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15369      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15370        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
15371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
15372        res.setTextElement(parseString(xpp));
15373      } else if (!parseBackboneElementContent(eventType, xpp, res))
15374        return false;
15375    return true;
15376  }
15377
15378  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15379    Person res = new Person();
15380    parseDomainResourceAttributes(xpp, res);
15381    next(xpp);
15382    int eventType = nextNoWhitespace(xpp);
15383    while (eventType != XmlPullParser.END_TAG) {
15384  if (!parsePersonContent(eventType, xpp, res))
15385        unknownContent(xpp);
15386      eventType = nextNoWhitespace(xpp);
15387    }
15388    next(xpp);
15389    parseElementClose(res);
15390    return res;
15391  }
15392
15393  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
15394      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15395        res.getIdentifier().add(parseIdentifier(xpp));
15396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15397        res.getName().add(parseHumanName(xpp));
15398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
15399        res.getTelecom().add(parseContactPoint(xpp));
15400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
15401        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
15402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
15403        res.setBirthDateElement(parseDate(xpp));
15404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
15405        res.getAddress().add(parseAddress(xpp));
15406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
15407        res.setPhoto(parseAttachment(xpp));
15408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
15409        res.setManagingOrganization(parseReference(xpp));
15410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
15411        res.setActiveElement(parseBoolean(xpp));
15412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
15413        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
15414      } else if (!parseDomainResourceContent(eventType, xpp, res))
15415        return false;
15416    return true;
15417  }
15418
15419  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
15420    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
15421    parseBackboneAttributes(xpp, res);
15422    next(xpp);
15423    int eventType = nextNoWhitespace(xpp);
15424    while (eventType != XmlPullParser.END_TAG) {
15425  if (!parsePersonPersonLinkComponentContent(eventType, xpp, owner, res))
15426        unknownContent(xpp);
15427      eventType = nextNoWhitespace(xpp);
15428    }
15429    next(xpp);
15430    parseElementClose(res);
15431    return res;
15432  }
15433
15434  protected boolean parsePersonPersonLinkComponentContent(int eventType, XmlPullParser xpp, Person owner, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15435      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15436        res.setTarget(parseReference(xpp));
15437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
15438        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
15439      } else if (!parseBackboneElementContent(eventType, xpp, res))
15440        return false;
15441    return true;
15442  }
15443
15444  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15445    PlanDefinition res = new PlanDefinition();
15446    parseDomainResourceAttributes(xpp, res);
15447    next(xpp);
15448    int eventType = nextNoWhitespace(xpp);
15449    while (eventType != XmlPullParser.END_TAG) {
15450  if (!parsePlanDefinitionContent(eventType, xpp, res))
15451        unknownContent(xpp);
15452      eventType = nextNoWhitespace(xpp);
15453    }
15454    next(xpp);
15455    parseElementClose(res);
15456    return res;
15457  }
15458
15459  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
15460      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15461        res.setUrlElement(parseUri(xpp));
15462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15463        res.getIdentifier().add(parseIdentifier(xpp));
15464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15465        res.setVersionElement(parseString(xpp));
15466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15467        res.setNameElement(parseString(xpp));
15468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15469        res.setTitleElement(parseString(xpp));
15470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
15471        res.setSubtitleElement(parseString(xpp));
15472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15473        res.setType(parseCodeableConcept(xpp));
15474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15475        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15477        res.setExperimentalElement(parseBoolean(xpp));
15478      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
15479        res.setSubject(parseType("subject", xpp));
15480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15481        res.setDateElement(parseDateTime(xpp));
15482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15483        res.setPublisherElement(parseString(xpp));
15484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15485        res.getContact().add(parseContactDetail(xpp));
15486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15487        res.setDescriptionElement(parseMarkdown(xpp));
15488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15489        res.getUseContext().add(parseUsageContext(xpp));
15490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15491        res.getJurisdiction().add(parseCodeableConcept(xpp));
15492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15493        res.setPurposeElement(parseMarkdown(xpp));
15494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
15495        res.setUsageElement(parseString(xpp));
15496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15497        res.setCopyrightElement(parseMarkdown(xpp));
15498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
15499        res.setApprovalDateElement(parseDate(xpp));
15500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
15501        res.setLastReviewDateElement(parseDate(xpp));
15502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
15503        res.setEffectivePeriod(parsePeriod(xpp));
15504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
15505        res.getTopic().add(parseCodeableConcept(xpp));
15506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
15507        res.getContributor().add(parseContributor(xpp));
15508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
15509        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
15510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
15511        res.getLibrary().add(parseCanonical(xpp));
15512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
15513        res.getGoal().add(parsePlanDefinitionPlanDefinitionGoalComponent(xpp, res));
15514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
15515        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, res));
15516      } else if (!parseDomainResourceContent(eventType, xpp, res))
15517        return false;
15518    return true;
15519  }
15520
15521  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionPlanDefinitionGoalComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15522    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
15523    parseBackboneAttributes(xpp, res);
15524    next(xpp);
15525    int eventType = nextNoWhitespace(xpp);
15526    while (eventType != XmlPullParser.END_TAG) {
15527  if (!parsePlanDefinitionPlanDefinitionGoalComponentContent(eventType, xpp, owner, res))
15528        unknownContent(xpp);
15529      eventType = nextNoWhitespace(xpp);
15530    }
15531    next(xpp);
15532    parseElementClose(res);
15533    return res;
15534  }
15535
15536  protected boolean parsePlanDefinitionPlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15537      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15538        res.setCategory(parseCodeableConcept(xpp));
15539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15540        res.setDescription(parseCodeableConcept(xpp));
15541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
15542        res.setPriority(parseCodeableConcept(xpp));
15543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
15544        res.setStart(parseCodeableConcept(xpp));
15545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
15546        res.getAddresses().add(parseCodeableConcept(xpp));
15547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15548        res.getDocumentation().add(parseRelatedArtifact(xpp));
15549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15550        res.getTarget().add(parsePlanDefinitionPlanDefinitionGoalTargetComponent(xpp, owner));
15551      } else if (!parseBackboneElementContent(eventType, xpp, res))
15552        return false;
15553    return true;
15554  }
15555
15556  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionPlanDefinitionGoalTargetComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15557    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
15558    parseBackboneAttributes(xpp, res);
15559    next(xpp);
15560    int eventType = nextNoWhitespace(xpp);
15561    while (eventType != XmlPullParser.END_TAG) {
15562  if (!parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(eventType, xpp, owner, res))
15563        unknownContent(xpp);
15564      eventType = nextNoWhitespace(xpp);
15565    }
15566    next(xpp);
15567    parseElementClose(res);
15568    return res;
15569  }
15570
15571  protected boolean parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15572      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
15573        res.setMeasure(parseCodeableConcept(xpp));
15574      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
15575        res.setDetail(parseType("detail", xpp));
15576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
15577        res.setDue(parseDuration(xpp));
15578      } else if (!parseBackboneElementContent(eventType, xpp, res))
15579        return false;
15580    return true;
15581  }
15582
15583  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionPlanDefinitionActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15584    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
15585    parseBackboneAttributes(xpp, res);
15586    next(xpp);
15587    int eventType = nextNoWhitespace(xpp);
15588    while (eventType != XmlPullParser.END_TAG) {
15589  if (!parsePlanDefinitionPlanDefinitionActionComponentContent(eventType, xpp, owner, res))
15590        unknownContent(xpp);
15591      eventType = nextNoWhitespace(xpp);
15592    }
15593    next(xpp);
15594    parseElementClose(res);
15595    return res;
15596  }
15597
15598  protected boolean parsePlanDefinitionPlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15599      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
15600        res.setPrefixElement(parseString(xpp));
15601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15602        res.setTitleElement(parseString(xpp));
15603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15604        res.setDescriptionElement(parseString(xpp));
15605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
15606        res.setTextEquivalentElement(parseString(xpp));
15607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15608        res.getCode().add(parseCodeableConcept(xpp));
15609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15610        res.getReason().add(parseCodeableConcept(xpp));
15611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15612        res.getDocumentation().add(parseRelatedArtifact(xpp));
15613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
15614        res.getGoalId().add(parseId(xpp));
15615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
15616        res.getTrigger().add(parseTriggerDefinition(xpp));
15617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
15618        res.getCondition().add(parsePlanDefinitionPlanDefinitionActionConditionComponent(xpp, owner));
15619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
15620        res.getInput().add(parseDataRequirement(xpp));
15621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
15622        res.getOutput().add(parseDataRequirement(xpp));
15623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
15624        res.getRelatedAction().add(parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(xpp, owner));
15625      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
15626        res.setTiming(parseType("timing", xpp));
15627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
15628        res.getParticipant().add(parsePlanDefinitionPlanDefinitionActionParticipantComponent(xpp, owner));
15629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15630        res.setType(parseCodeableConcept(xpp));
15631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
15632        res.setGroupingBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionGroupingBehavior.NULL, new PlanDefinition.ActionGroupingBehaviorEnumFactory()));
15633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
15634        res.setSelectionBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionSelectionBehavior.NULL, new PlanDefinition.ActionSelectionBehaviorEnumFactory()));
15635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
15636        res.setRequiredBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionRequiredBehavior.NULL, new PlanDefinition.ActionRequiredBehaviorEnumFactory()));
15637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
15638        res.setPrecheckBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionPrecheckBehavior.NULL, new PlanDefinition.ActionPrecheckBehaviorEnumFactory()));
15639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
15640        res.setCardinalityBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionCardinalityBehavior.NULL, new PlanDefinition.ActionCardinalityBehaviorEnumFactory()));
15641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
15642        res.setDefinitionElement(parseCanonical(xpp));
15643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
15644        res.setTransformElement(parseCanonical(xpp));
15645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
15646        res.getDynamicValue().add(parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(xpp, owner));
15647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
15648        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, owner));
15649      } else if (!parseBackboneElementContent(eventType, xpp, res))
15650        return false;
15651    return true;
15652  }
15653
15654  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionPlanDefinitionActionConditionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15655    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
15656    parseBackboneAttributes(xpp, res);
15657    next(xpp);
15658    int eventType = nextNoWhitespace(xpp);
15659    while (eventType != XmlPullParser.END_TAG) {
15660  if (!parsePlanDefinitionPlanDefinitionActionConditionComponentContent(eventType, xpp, owner, res))
15661        unknownContent(xpp);
15662      eventType = nextNoWhitespace(xpp);
15663    }
15664    next(xpp);
15665    parseElementClose(res);
15666    return res;
15667  }
15668
15669  protected boolean parsePlanDefinitionPlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15670      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
15671        res.setKindElement(parseEnumeration(xpp, PlanDefinition.ActionConditionKind.NULL, new PlanDefinition.ActionConditionKindEnumFactory()));
15672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15673        res.setDescriptionElement(parseString(xpp));
15674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
15675        res.setLanguageElement(parseString(xpp));
15676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
15677        res.setExpressionElement(parseString(xpp));
15678      } else if (!parseBackboneElementContent(eventType, xpp, res))
15679        return false;
15680    return true;
15681  }
15682
15683  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15684    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
15685    parseBackboneAttributes(xpp, res);
15686    next(xpp);
15687    int eventType = nextNoWhitespace(xpp);
15688    while (eventType != XmlPullParser.END_TAG) {
15689  if (!parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(eventType, xpp, owner, res))
15690        unknownContent(xpp);
15691      eventType = nextNoWhitespace(xpp);
15692    }
15693    next(xpp);
15694    parseElementClose(res);
15695    return res;
15696  }
15697
15698  protected boolean parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15699      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
15700        res.setActionIdElement(parseId(xpp));
15701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
15702        res.setRelationshipElement(parseEnumeration(xpp, PlanDefinition.ActionRelationshipType.NULL, new PlanDefinition.ActionRelationshipTypeEnumFactory()));
15703      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
15704        res.setOffset(parseType("offset", xpp));
15705      } else if (!parseBackboneElementContent(eventType, xpp, res))
15706        return false;
15707    return true;
15708  }
15709
15710  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionPlanDefinitionActionParticipantComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15711    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
15712    parseBackboneAttributes(xpp, res);
15713    next(xpp);
15714    int eventType = nextNoWhitespace(xpp);
15715    while (eventType != XmlPullParser.END_TAG) {
15716  if (!parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(eventType, xpp, owner, res))
15717        unknownContent(xpp);
15718      eventType = nextNoWhitespace(xpp);
15719    }
15720    next(xpp);
15721    parseElementClose(res);
15722    return res;
15723  }
15724
15725  protected boolean parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15726      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15727        res.setTypeElement(parseEnumeration(xpp, PlanDefinition.ActionParticipantType.NULL, new PlanDefinition.ActionParticipantTypeEnumFactory()));
15728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
15729        res.setRole(parseCodeableConcept(xpp));
15730      } else if (!parseBackboneElementContent(eventType, xpp, res))
15731        return false;
15732    return true;
15733  }
15734
15735  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15736    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
15737    parseBackboneAttributes(xpp, res);
15738    next(xpp);
15739    int eventType = nextNoWhitespace(xpp);
15740    while (eventType != XmlPullParser.END_TAG) {
15741  if (!parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(eventType, xpp, owner, res))
15742        unknownContent(xpp);
15743      eventType = nextNoWhitespace(xpp);
15744    }
15745    next(xpp);
15746    parseElementClose(res);
15747    return res;
15748  }
15749
15750  protected boolean parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15752        res.setDescriptionElement(parseString(xpp));
15753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
15754        res.setPathElement(parseString(xpp));
15755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
15756        res.setLanguageElement(parseString(xpp));
15757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
15758        res.setExpressionElement(parseString(xpp));
15759      } else if (!parseBackboneElementContent(eventType, xpp, res))
15760        return false;
15761    return true;
15762  }
15763
15764  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15765    Practitioner res = new Practitioner();
15766    parseDomainResourceAttributes(xpp, res);
15767    next(xpp);
15768    int eventType = nextNoWhitespace(xpp);
15769    while (eventType != XmlPullParser.END_TAG) {
15770  if (!parsePractitionerContent(eventType, xpp, res))
15771        unknownContent(xpp);
15772      eventType = nextNoWhitespace(xpp);
15773    }
15774    next(xpp);
15775    parseElementClose(res);
15776    return res;
15777  }
15778
15779  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
15780      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15781        res.getIdentifier().add(parseIdentifier(xpp));
15782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
15783        res.setActiveElement(parseBoolean(xpp));
15784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15785        res.getName().add(parseHumanName(xpp));
15786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
15787        res.getTelecom().add(parseContactPoint(xpp));
15788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
15789        res.getAddress().add(parseAddress(xpp));
15790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
15791        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
15792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
15793        res.setBirthDateElement(parseDate(xpp));
15794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
15795        res.getPhoto().add(parseAttachment(xpp));
15796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
15797        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
15798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
15799        res.getCommunication().add(parseCodeableConcept(xpp));
15800      } else if (!parseDomainResourceContent(eventType, xpp, res))
15801        return false;
15802    return true;
15803  }
15804
15805  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
15806    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
15807    parseBackboneAttributes(xpp, res);
15808    next(xpp);
15809    int eventType = nextNoWhitespace(xpp);
15810    while (eventType != XmlPullParser.END_TAG) {
15811  if (!parsePractitionerPractitionerQualificationComponentContent(eventType, xpp, owner, res))
15812        unknownContent(xpp);
15813      eventType = nextNoWhitespace(xpp);
15814    }
15815    next(xpp);
15816    parseElementClose(res);
15817    return res;
15818  }
15819
15820  protected boolean parsePractitionerPractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner owner, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15821      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15822        res.getIdentifier().add(parseIdentifier(xpp));
15823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15824        res.setCode(parseCodeableConcept(xpp));
15825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15826        res.setPeriod(parsePeriod(xpp));
15827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
15828        res.setIssuer(parseReference(xpp));
15829      } else if (!parseBackboneElementContent(eventType, xpp, res))
15830        return false;
15831    return true;
15832  }
15833
15834  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15835    PractitionerRole res = new PractitionerRole();
15836    parseDomainResourceAttributes(xpp, res);
15837    next(xpp);
15838    int eventType = nextNoWhitespace(xpp);
15839    while (eventType != XmlPullParser.END_TAG) {
15840  if (!parsePractitionerRoleContent(eventType, xpp, res))
15841        unknownContent(xpp);
15842      eventType = nextNoWhitespace(xpp);
15843    }
15844    next(xpp);
15845    parseElementClose(res);
15846    return res;
15847  }
15848
15849  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
15850      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15851        res.getIdentifier().add(parseIdentifier(xpp));
15852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
15853        res.setActiveElement(parseBoolean(xpp));
15854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15855        res.setPeriod(parsePeriod(xpp));
15856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
15857        res.setPractitioner(parseReference(xpp));
15858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
15859        res.setOrganization(parseReference(xpp));
15860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15861        res.getCode().add(parseCodeableConcept(xpp));
15862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
15863        res.getSpecialty().add(parseCodeableConcept(xpp));
15864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
15865        res.getLocation().add(parseReference(xpp));
15866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
15867        res.getHealthcareService().add(parseReference(xpp));
15868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
15869        res.getTelecom().add(parseContactPoint(xpp));
15870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
15871        res.getAvailableTime().add(parsePractitionerRolePractitionerRoleAvailableTimeComponent(xpp, res));
15872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
15873        res.getNotAvailable().add(parsePractitionerRolePractitionerRoleNotAvailableComponent(xpp, res));
15874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
15875        res.setAvailabilityExceptionsElement(parseString(xpp));
15876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15877        res.getEndpoint().add(parseReference(xpp));
15878      } else if (!parseDomainResourceContent(eventType, xpp, res))
15879        return false;
15880    return true;
15881  }
15882
15883  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRolePractitionerRoleAvailableTimeComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
15884    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
15885    parseBackboneAttributes(xpp, res);
15886    next(xpp);
15887    int eventType = nextNoWhitespace(xpp);
15888    while (eventType != XmlPullParser.END_TAG) {
15889  if (!parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(eventType, xpp, owner, res))
15890        unknownContent(xpp);
15891      eventType = nextNoWhitespace(xpp);
15892    }
15893    next(xpp);
15894    parseElementClose(res);
15895    return res;
15896  }
15897
15898  protected boolean parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15899      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
15900        res.getDaysOfWeek().add(parseEnumeration(xpp, PractitionerRole.DaysOfWeek.NULL, new PractitionerRole.DaysOfWeekEnumFactory()));
15901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
15902        res.setAllDayElement(parseBoolean(xpp));
15903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
15904        res.setAvailableStartTimeElement(parseTime(xpp));
15905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
15906        res.setAvailableEndTimeElement(parseTime(xpp));
15907      } else if (!parseBackboneElementContent(eventType, xpp, res))
15908        return false;
15909    return true;
15910  }
15911
15912  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRolePractitionerRoleNotAvailableComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
15913    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
15914    parseBackboneAttributes(xpp, res);
15915    next(xpp);
15916    int eventType = nextNoWhitespace(xpp);
15917    while (eventType != XmlPullParser.END_TAG) {
15918  if (!parsePractitionerRolePractitionerRoleNotAvailableComponentContent(eventType, xpp, owner, res))
15919        unknownContent(xpp);
15920      eventType = nextNoWhitespace(xpp);
15921    }
15922    next(xpp);
15923    parseElementClose(res);
15924    return res;
15925  }
15926
15927  protected boolean parsePractitionerRolePractitionerRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15928      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15929        res.setDescriptionElement(parseString(xpp));
15930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
15931        res.setDuring(parsePeriod(xpp));
15932      } else if (!parseBackboneElementContent(eventType, xpp, res))
15933        return false;
15934    return true;
15935  }
15936
15937  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15938    Procedure res = new Procedure();
15939    parseDomainResourceAttributes(xpp, res);
15940    next(xpp);
15941    int eventType = nextNoWhitespace(xpp);
15942    while (eventType != XmlPullParser.END_TAG) {
15943  if (!parseProcedureContent(eventType, xpp, res))
15944        unknownContent(xpp);
15945      eventType = nextNoWhitespace(xpp);
15946    }
15947    next(xpp);
15948    parseElementClose(res);
15949    return res;
15950  }
15951
15952  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
15953      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15954        res.getIdentifier().add(parseIdentifier(xpp));
15955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
15956        res.getInstantiates().add(parseUri(xpp));
15957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15958        res.getBasedOn().add(parseReference(xpp));
15959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15960        res.getPartOf().add(parseReference(xpp));
15961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15962        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
15963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
15964        res.setStatusReason(parseCodeableConcept(xpp));
15965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15966        res.setCategory(parseCodeableConcept(xpp));
15967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15968        res.setCode(parseCodeableConcept(xpp));
15969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15970        res.setSubject(parseReference(xpp));
15971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15972        res.setContext(parseReference(xpp));
15973      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
15974        res.setPerformed(parseType("performed", xpp));
15975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
15976        res.setRecorder(parseReference(xpp));
15977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
15978        res.setAsserter(parseReference(xpp));
15979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15980        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
15981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
15982        res.setLocation(parseReference(xpp));
15983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
15984        res.getReasonCode().add(parseCodeableConcept(xpp));
15985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
15986        res.getReasonReference().add(parseReference(xpp));
15987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
15988        res.getBodySite().add(parseCodeableConcept(xpp));
15989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
15990        res.setOutcome(parseCodeableConcept(xpp));
15991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
15992        res.getReport().add(parseReference(xpp));
15993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
15994        res.getComplication().add(parseCodeableConcept(xpp));
15995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complicationDetail")) {
15996        res.getComplicationDetail().add(parseReference(xpp));
15997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
15998        res.getFollowUp().add(parseCodeableConcept(xpp));
15999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16000        res.getNote().add(parseAnnotation(xpp));
16001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
16002        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
16003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedReference")) {
16004        res.getUsedReference().add(parseReference(xpp));
16005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedCode")) {
16006        res.getUsedCode().add(parseCodeableConcept(xpp));
16007      } else if (!parseDomainResourceContent(eventType, xpp, res))
16008        return false;
16009    return true;
16010  }
16011
16012  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
16013    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
16014    parseBackboneAttributes(xpp, res);
16015    next(xpp);
16016    int eventType = nextNoWhitespace(xpp);
16017    while (eventType != XmlPullParser.END_TAG) {
16018  if (!parseProcedureProcedurePerformerComponentContent(eventType, xpp, owner, res))
16019        unknownContent(xpp);
16020      eventType = nextNoWhitespace(xpp);
16021    }
16022    next(xpp);
16023    parseElementClose(res);
16024    return res;
16025  }
16026
16027  protected boolean parseProcedureProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16028      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
16029        res.setRole(parseCodeableConcept(xpp));
16030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
16031        res.setActor(parseReference(xpp));
16032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
16033        res.setOnBehalfOf(parseReference(xpp));
16034      } else if (!parseBackboneElementContent(eventType, xpp, res))
16035        return false;
16036    return true;
16037  }
16038
16039  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
16040    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
16041    parseBackboneAttributes(xpp, res);
16042    next(xpp);
16043    int eventType = nextNoWhitespace(xpp);
16044    while (eventType != XmlPullParser.END_TAG) {
16045  if (!parseProcedureProcedureFocalDeviceComponentContent(eventType, xpp, owner, res))
16046        unknownContent(xpp);
16047      eventType = nextNoWhitespace(xpp);
16048    }
16049    next(xpp);
16050    parseElementClose(res);
16051    return res;
16052  }
16053
16054  protected boolean parseProcedureProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16055      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16056        res.setAction(parseCodeableConcept(xpp));
16057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
16058        res.setManipulated(parseReference(xpp));
16059      } else if (!parseBackboneElementContent(eventType, xpp, res))
16060        return false;
16061    return true;
16062  }
16063
16064  protected ProcessRequest parseProcessRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16065    ProcessRequest res = new ProcessRequest();
16066    parseDomainResourceAttributes(xpp, res);
16067    next(xpp);
16068    int eventType = nextNoWhitespace(xpp);
16069    while (eventType != XmlPullParser.END_TAG) {
16070  if (!parseProcessRequestContent(eventType, xpp, res))
16071        unknownContent(xpp);
16072      eventType = nextNoWhitespace(xpp);
16073    }
16074    next(xpp);
16075    parseElementClose(res);
16076    return res;
16077  }
16078
16079  protected boolean parseProcessRequestContent(int eventType, XmlPullParser xpp, ProcessRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
16080      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16081        res.getIdentifier().add(parseIdentifier(xpp));
16082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16083        res.setStatusElement(parseEnumeration(xpp, ProcessRequest.ProcessRequestStatus.NULL, new ProcessRequest.ProcessRequestStatusEnumFactory()));
16084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16085        res.setActionElement(parseEnumeration(xpp, ProcessRequest.ActionList.NULL, new ProcessRequest.ActionListEnumFactory()));
16086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
16087        res.setTarget(parseReference(xpp));
16088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
16089        res.setCreatedElement(parseDateTime(xpp));
16090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
16091        res.setProvider(parseReference(xpp));
16092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
16093        res.setRequest(parseReference(xpp));
16094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
16095        res.setResponse(parseReference(xpp));
16096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nullify")) {
16097        res.setNullifyElement(parseBoolean(xpp));
16098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
16099        res.setReferenceElement(parseString(xpp));
16100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
16101        res.getItem().add(parseProcessRequestItemsComponent(xpp, res));
16102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
16103        res.getInclude().add(parseString(xpp));
16104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
16105        res.getExclude().add(parseString(xpp));
16106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16107        res.setPeriod(parsePeriod(xpp));
16108      } else if (!parseDomainResourceContent(eventType, xpp, res))
16109        return false;
16110    return true;
16111  }
16112
16113  protected ProcessRequest.ItemsComponent parseProcessRequestItemsComponent(XmlPullParser xpp, ProcessRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
16114    ProcessRequest.ItemsComponent res = new ProcessRequest.ItemsComponent();
16115    parseBackboneAttributes(xpp, res);
16116    next(xpp);
16117    int eventType = nextNoWhitespace(xpp);
16118    while (eventType != XmlPullParser.END_TAG) {
16119  if (!parseProcessRequestItemsComponentContent(eventType, xpp, owner, res))
16120        unknownContent(xpp);
16121      eventType = nextNoWhitespace(xpp);
16122    }
16123    next(xpp);
16124    parseElementClose(res);
16125    return res;
16126  }
16127
16128  protected boolean parseProcessRequestItemsComponentContent(int eventType, XmlPullParser xpp, ProcessRequest owner, ProcessRequest.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16129      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
16130        res.setSequenceLinkIdElement(parseInteger(xpp));
16131      } else if (!parseBackboneElementContent(eventType, xpp, res))
16132        return false;
16133    return true;
16134  }
16135
16136  protected ProcessResponse parseProcessResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16137    ProcessResponse res = new ProcessResponse();
16138    parseDomainResourceAttributes(xpp, res);
16139    next(xpp);
16140    int eventType = nextNoWhitespace(xpp);
16141    while (eventType != XmlPullParser.END_TAG) {
16142  if (!parseProcessResponseContent(eventType, xpp, res))
16143        unknownContent(xpp);
16144      eventType = nextNoWhitespace(xpp);
16145    }
16146    next(xpp);
16147    parseElementClose(res);
16148    return res;
16149  }
16150
16151  protected boolean parseProcessResponseContent(int eventType, XmlPullParser xpp, ProcessResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
16152      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16153        res.getIdentifier().add(parseIdentifier(xpp));
16154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16155        res.setStatusElement(parseEnumeration(xpp, ProcessResponse.ProcessResponseStatus.NULL, new ProcessResponse.ProcessResponseStatusEnumFactory()));
16156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
16157        res.setCreatedElement(parseDateTime(xpp));
16158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
16159        res.setOrganization(parseReference(xpp));
16160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
16161        res.setRequest(parseReference(xpp));
16162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
16163        res.setOutcomeElement(parseEnumeration(xpp, ProcessResponse.ProcessingOutcome.NULL, new ProcessResponse.ProcessingOutcomeEnumFactory()));
16164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
16165        res.setDispositionElement(parseString(xpp));
16166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
16167        res.setRequestProvider(parseReference(xpp));
16168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
16169        res.setForm(parseCodeableConcept(xpp));
16170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
16171        res.getProcessNote().add(parseProcessResponseProcessResponseProcessNoteComponent(xpp, res));
16172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
16173        res.getError().add(parseCodeableConcept(xpp));
16174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
16175        res.getCommunicationRequest().add(parseReference(xpp));
16176      } else if (!parseDomainResourceContent(eventType, xpp, res))
16177        return false;
16178    return true;
16179  }
16180
16181  protected ProcessResponse.ProcessResponseProcessNoteComponent parseProcessResponseProcessResponseProcessNoteComponent(XmlPullParser xpp, ProcessResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
16182    ProcessResponse.ProcessResponseProcessNoteComponent res = new ProcessResponse.ProcessResponseProcessNoteComponent();
16183    parseBackboneAttributes(xpp, res);
16184    next(xpp);
16185    int eventType = nextNoWhitespace(xpp);
16186    while (eventType != XmlPullParser.END_TAG) {
16187  if (!parseProcessResponseProcessResponseProcessNoteComponentContent(eventType, xpp, owner, res))
16188        unknownContent(xpp);
16189      eventType = nextNoWhitespace(xpp);
16190    }
16191    next(xpp);
16192    parseElementClose(res);
16193    return res;
16194  }
16195
16196  protected boolean parseProcessResponseProcessResponseProcessNoteComponentContent(int eventType, XmlPullParser xpp, ProcessResponse owner, ProcessResponse.ProcessResponseProcessNoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16197      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16198        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
16199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
16200        res.setTextElement(parseString(xpp));
16201      } else if (!parseBackboneElementContent(eventType, xpp, res))
16202        return false;
16203    return true;
16204  }
16205
16206  protected ProductPlan parseProductPlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16207    ProductPlan res = new ProductPlan();
16208    parseDomainResourceAttributes(xpp, res);
16209    next(xpp);
16210    int eventType = nextNoWhitespace(xpp);
16211    while (eventType != XmlPullParser.END_TAG) {
16212  if (!parseProductPlanContent(eventType, xpp, res))
16213        unknownContent(xpp);
16214      eventType = nextNoWhitespace(xpp);
16215    }
16216    next(xpp);
16217    parseElementClose(res);
16218    return res;
16219  }
16220
16221  protected boolean parseProductPlanContent(int eventType, XmlPullParser xpp, ProductPlan res) throws XmlPullParserException, IOException, FHIRFormatError {
16222      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16223        res.getIdentifier().add(parseIdentifier(xpp));
16224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16225        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16227        res.getType().add(parseCodeableConcept(xpp));
16228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16229        res.setNameElement(parseString(xpp));
16230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
16231        res.getAlias().add(parseString(xpp));
16232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16233        res.setPeriod(parsePeriod(xpp));
16234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ownedBy")) {
16235        res.setOwnedBy(parseReference(xpp));
16236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administeredBy")) {
16237        res.setAdministeredBy(parseReference(xpp));
16238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
16239        res.setCoverageArea(parseReference(xpp));
16240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16241        res.getContact().add(parseProductPlanProductPlanContactComponent(xpp, res));
16242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
16243        res.getEndpoint().add(parseReference(xpp));
16244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
16245        res.getNetwork().add(parseReference(xpp));
16246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
16247        res.getCoverage().add(parseProductPlanProductPlanCoverageComponent(xpp, res));
16248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
16249        res.getPlan().add(parseProductPlanProductPlanPlanComponent(xpp, res));
16250      } else if (!parseDomainResourceContent(eventType, xpp, res))
16251        return false;
16252    return true;
16253  }
16254
16255  protected ProductPlan.ProductPlanContactComponent parseProductPlanProductPlanContactComponent(XmlPullParser xpp, ProductPlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
16256    ProductPlan.ProductPlanContactComponent res = new ProductPlan.ProductPlanContactComponent();
16257    parseBackboneAttributes(xpp, res);
16258    next(xpp);
16259    int eventType = nextNoWhitespace(xpp);
16260    while (eventType != XmlPullParser.END_TAG) {
16261  if (!parseProductPlanProductPlanContactComponentContent(eventType, xpp, owner, res))
16262        unknownContent(xpp);
16263      eventType = nextNoWhitespace(xpp);
16264    }
16265    next(xpp);
16266    parseElementClose(res);
16267    return res;
16268  }
16269
16270  protected boolean parseProductPlanProductPlanContactComponentContent(int eventType, XmlPullParser xpp, ProductPlan owner, ProductPlan.ProductPlanContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16271      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16272        res.setPurpose(parseCodeableConcept(xpp));
16273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16274        res.setName(parseHumanName(xpp));
16275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16276        res.getTelecom().add(parseContactPoint(xpp));
16277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16278        res.setAddress(parseAddress(xpp));
16279      } else if (!parseBackboneElementContent(eventType, xpp, res))
16280        return false;
16281    return true;
16282  }
16283
16284  protected ProductPlan.ProductPlanCoverageComponent parseProductPlanProductPlanCoverageComponent(XmlPullParser xpp, ProductPlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
16285    ProductPlan.ProductPlanCoverageComponent res = new ProductPlan.ProductPlanCoverageComponent();
16286    parseBackboneAttributes(xpp, res);
16287    next(xpp);
16288    int eventType = nextNoWhitespace(xpp);
16289    while (eventType != XmlPullParser.END_TAG) {
16290  if (!parseProductPlanProductPlanCoverageComponentContent(eventType, xpp, owner, res))
16291        unknownContent(xpp);
16292      eventType = nextNoWhitespace(xpp);
16293    }
16294    next(xpp);
16295    parseElementClose(res);
16296    return res;
16297  }
16298
16299  protected boolean parseProductPlanProductPlanCoverageComponentContent(int eventType, XmlPullParser xpp, ProductPlan owner, ProductPlan.ProductPlanCoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16300      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16301        res.setType(parseCodeableConcept(xpp));
16302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
16303        res.getNetwork().add(parseReference(xpp));
16304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
16305        res.getBenefit().add(parseProductPlanProductPlanCoverageBenefitComponent(xpp, owner));
16306      } else if (!parseBackboneElementContent(eventType, xpp, res))
16307        return false;
16308    return true;
16309  }
16310
16311  protected ProductPlan.ProductPlanCoverageBenefitComponent parseProductPlanProductPlanCoverageBenefitComponent(XmlPullParser xpp, ProductPlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
16312    ProductPlan.ProductPlanCoverageBenefitComponent res = new ProductPlan.ProductPlanCoverageBenefitComponent();
16313    parseBackboneAttributes(xpp, res);
16314    next(xpp);
16315    int eventType = nextNoWhitespace(xpp);
16316    while (eventType != XmlPullParser.END_TAG) {
16317  if (!parseProductPlanProductPlanCoverageBenefitComponentContent(eventType, xpp, owner, res))
16318        unknownContent(xpp);
16319      eventType = nextNoWhitespace(xpp);
16320    }
16321    next(xpp);
16322    parseElementClose(res);
16323    return res;
16324  }
16325
16326  protected boolean parseProductPlanProductPlanCoverageBenefitComponentContent(int eventType, XmlPullParser xpp, ProductPlan owner, ProductPlan.ProductPlanCoverageBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16328        res.setType(parseCodeableConcept(xpp));
16329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
16330        res.setRequirementElement(parseString(xpp));
16331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
16332        res.getLimit().add(parseProductPlanProductPlanCoverageBenefitLimitComponent(xpp, owner));
16333      } else if (!parseBackboneElementContent(eventType, xpp, res))
16334        return false;
16335    return true;
16336  }
16337
16338  protected ProductPlan.ProductPlanCoverageBenefitLimitComponent parseProductPlanProductPlanCoverageBenefitLimitComponent(XmlPullParser xpp, ProductPlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
16339    ProductPlan.ProductPlanCoverageBenefitLimitComponent res = new ProductPlan.ProductPlanCoverageBenefitLimitComponent();
16340    parseBackboneAttributes(xpp, res);
16341    next(xpp);
16342    int eventType = nextNoWhitespace(xpp);
16343    while (eventType != XmlPullParser.END_TAG) {
16344  if (!parseProductPlanProductPlanCoverageBenefitLimitComponentContent(eventType, xpp, owner, res))
16345        unknownContent(xpp);
16346      eventType = nextNoWhitespace(xpp);
16347    }
16348    next(xpp);
16349    parseElementClose(res);
16350    return res;
16351  }
16352
16353  protected boolean parseProductPlanProductPlanCoverageBenefitLimitComponentContent(int eventType, XmlPullParser xpp, ProductPlan owner, ProductPlan.ProductPlanCoverageBenefitLimitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16354      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16355        res.setValue(parseQuantity(xpp));
16356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16357        res.setCode(parseCodeableConcept(xpp));
16358      } else if (!parseBackboneElementContent(eventType, xpp, res))
16359        return false;
16360    return true;
16361  }
16362
16363  protected ProductPlan.ProductPlanPlanComponent parseProductPlanProductPlanPlanComponent(XmlPullParser xpp, ProductPlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
16364    ProductPlan.ProductPlanPlanComponent res = new ProductPlan.ProductPlanPlanComponent();
16365    parseBackboneAttributes(xpp, res);
16366    next(xpp);
16367    int eventType = nextNoWhitespace(xpp);
16368    while (eventType != XmlPullParser.END_TAG) {
16369  if (!parseProductPlanProductPlanPlanComponentContent(eventType, xpp, owner, res))
16370        unknownContent(xpp);
16371      eventType = nextNoWhitespace(xpp);
16372    }
16373    next(xpp);
16374    parseElementClose(res);
16375    return res;
16376  }
16377
16378  protected boolean parseProductPlanProductPlanPlanComponentContent(int eventType, XmlPullParser xpp, ProductPlan owner, ProductPlan.ProductPlanPlanComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16379      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16380        res.getIdentifier().add(parseIdentifier(xpp));
16381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16382        res.setType(parseCodeableConcept(xpp));
16383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
16384        res.setCoverageArea(parseReference(xpp));
16385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
16386        res.getNetwork().add(parseReference(xpp));
16387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalCost")) {
16388        res.getGeneralCost().add(parseProductPlanProductPlanPlanGeneralCostComponent(xpp, owner));
16389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specificCost")) {
16390        res.getSpecificCost().add(parseProductPlanProductPlanPlanSpecificCostComponent(xpp, owner));
16391      } else if (!parseBackboneElementContent(eventType, xpp, res))
16392        return false;
16393    return true;
16394  }
16395
16396  protected ProductPlan.ProductPlanPlanGeneralCostComponent parseProductPlanProductPlanPlanGeneralCostComponent(XmlPullParser xpp, ProductPlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
16397    ProductPlan.ProductPlanPlanGeneralCostComponent res = new ProductPlan.ProductPlanPlanGeneralCostComponent();
16398    parseBackboneAttributes(xpp, res);
16399    next(xpp);
16400    int eventType = nextNoWhitespace(xpp);
16401    while (eventType != XmlPullParser.END_TAG) {
16402  if (!parseProductPlanProductPlanPlanGeneralCostComponentContent(eventType, xpp, owner, res))
16403        unknownContent(xpp);
16404      eventType = nextNoWhitespace(xpp);
16405    }
16406    next(xpp);
16407    parseElementClose(res);
16408    return res;
16409  }
16410
16411  protected boolean parseProductPlanProductPlanPlanGeneralCostComponentContent(int eventType, XmlPullParser xpp, ProductPlan owner, ProductPlan.ProductPlanPlanGeneralCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16412      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16413        res.setType(parseCodeableConcept(xpp));
16414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupSize")) {
16415        res.setGroupSizeElement(parsePositiveInt(xpp));
16416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
16417        res.setCost(parseMoney(xpp));
16418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16419        res.setCommentElement(parseString(xpp));
16420      } else if (!parseBackboneElementContent(eventType, xpp, res))
16421        return false;
16422    return true;
16423  }
16424
16425  protected ProductPlan.ProductPlanPlanSpecificCostComponent parseProductPlanProductPlanPlanSpecificCostComponent(XmlPullParser xpp, ProductPlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
16426    ProductPlan.ProductPlanPlanSpecificCostComponent res = new ProductPlan.ProductPlanPlanSpecificCostComponent();
16427    parseBackboneAttributes(xpp, res);
16428    next(xpp);
16429    int eventType = nextNoWhitespace(xpp);
16430    while (eventType != XmlPullParser.END_TAG) {
16431  if (!parseProductPlanProductPlanPlanSpecificCostComponentContent(eventType, xpp, owner, res))
16432        unknownContent(xpp);
16433      eventType = nextNoWhitespace(xpp);
16434    }
16435    next(xpp);
16436    parseElementClose(res);
16437    return res;
16438  }
16439
16440  protected boolean parseProductPlanProductPlanPlanSpecificCostComponentContent(int eventType, XmlPullParser xpp, ProductPlan owner, ProductPlan.ProductPlanPlanSpecificCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16441      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16442        res.setCategory(parseCodeableConcept(xpp));
16443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
16444        res.getBenefit().add(parseProductPlanProductPlanPlanSpecificCostBenefitComponent(xpp, owner));
16445      } else if (!parseBackboneElementContent(eventType, xpp, res))
16446        return false;
16447    return true;
16448  }
16449
16450  protected ProductPlan.ProductPlanPlanSpecificCostBenefitComponent parseProductPlanProductPlanPlanSpecificCostBenefitComponent(XmlPullParser xpp, ProductPlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
16451    ProductPlan.ProductPlanPlanSpecificCostBenefitComponent res = new ProductPlan.ProductPlanPlanSpecificCostBenefitComponent();
16452    parseBackboneAttributes(xpp, res);
16453    next(xpp);
16454    int eventType = nextNoWhitespace(xpp);
16455    while (eventType != XmlPullParser.END_TAG) {
16456  if (!parseProductPlanProductPlanPlanSpecificCostBenefitComponentContent(eventType, xpp, owner, res))
16457        unknownContent(xpp);
16458      eventType = nextNoWhitespace(xpp);
16459    }
16460    next(xpp);
16461    parseElementClose(res);
16462    return res;
16463  }
16464
16465  protected boolean parseProductPlanProductPlanPlanSpecificCostBenefitComponentContent(int eventType, XmlPullParser xpp, ProductPlan owner, ProductPlan.ProductPlanPlanSpecificCostBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16466      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16467        res.setType(parseCodeableConcept(xpp));
16468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16469        res.setDescriptionElement(parseString(xpp));
16470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
16471        res.getCost().add(parseProductPlanProductPlanPlanSpecificCostBenefitCostComponent(xpp, owner));
16472      } else if (!parseBackboneElementContent(eventType, xpp, res))
16473        return false;
16474    return true;
16475  }
16476
16477  protected ProductPlan.ProductPlanPlanSpecificCostBenefitCostComponent parseProductPlanProductPlanPlanSpecificCostBenefitCostComponent(XmlPullParser xpp, ProductPlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
16478    ProductPlan.ProductPlanPlanSpecificCostBenefitCostComponent res = new ProductPlan.ProductPlanPlanSpecificCostBenefitCostComponent();
16479    parseBackboneAttributes(xpp, res);
16480    next(xpp);
16481    int eventType = nextNoWhitespace(xpp);
16482    while (eventType != XmlPullParser.END_TAG) {
16483  if (!parseProductPlanProductPlanPlanSpecificCostBenefitCostComponentContent(eventType, xpp, owner, res))
16484        unknownContent(xpp);
16485      eventType = nextNoWhitespace(xpp);
16486    }
16487    next(xpp);
16488    parseElementClose(res);
16489    return res;
16490  }
16491
16492  protected boolean parseProductPlanProductPlanPlanSpecificCostBenefitCostComponentContent(int eventType, XmlPullParser xpp, ProductPlan owner, ProductPlan.ProductPlanPlanSpecificCostBenefitCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16493      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16494        res.setType(parseCodeableConcept(xpp));
16495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
16496        res.setApplicabilityElement(parseEnumeration(xpp, ProductPlan.BenefitCostApplicability.NULL, new ProductPlan.BenefitCostApplicabilityEnumFactory()));
16497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiers")) {
16498        res.getQualifiers().add(parseCodeableConcept(xpp));
16499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16500        res.setValue(parseMoney(xpp));
16501      } else if (!parseBackboneElementContent(eventType, xpp, res))
16502        return false;
16503    return true;
16504  }
16505
16506  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16507    Provenance res = new Provenance();
16508    parseDomainResourceAttributes(xpp, res);
16509    next(xpp);
16510    int eventType = nextNoWhitespace(xpp);
16511    while (eventType != XmlPullParser.END_TAG) {
16512  if (!parseProvenanceContent(eventType, xpp, res))
16513        unknownContent(xpp);
16514      eventType = nextNoWhitespace(xpp);
16515    }
16516    next(xpp);
16517    parseElementClose(res);
16518    return res;
16519  }
16520
16521  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
16522      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
16523        res.getTarget().add(parseReference(xpp));
16524      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurred")) {
16525        res.setOccurred(parseType("occurred", xpp));
16526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
16527        res.setRecordedElement(parseInstant(xpp));
16528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
16529        res.getPolicy().add(parseUri(xpp));
16530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
16531        res.setLocation(parseReference(xpp));
16532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
16533        res.getReason().add(parseCodeableConcept(xpp));
16534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
16535        res.setActivity(parseCodeableConcept(xpp));
16536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
16537        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
16538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
16539        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
16540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
16541        res.getSignature().add(parseSignature(xpp));
16542      } else if (!parseDomainResourceContent(eventType, xpp, res))
16543        return false;
16544    return true;
16545  }
16546
16547  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
16548    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
16549    parseBackboneAttributes(xpp, res);
16550    next(xpp);
16551    int eventType = nextNoWhitespace(xpp);
16552    while (eventType != XmlPullParser.END_TAG) {
16553  if (!parseProvenanceProvenanceAgentComponentContent(eventType, xpp, owner, res))
16554        unknownContent(xpp);
16555      eventType = nextNoWhitespace(xpp);
16556    }
16557    next(xpp);
16558    parseElementClose(res);
16559    return res;
16560  }
16561
16562  protected boolean parseProvenanceProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16563      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16564        res.setType(parseCodeableConcept(xpp));
16565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
16566        res.getRole().add(parseCodeableConcept(xpp));
16567      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
16568        res.setWho(parseType("who", xpp));
16569      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onBehalfOf")) {
16570        res.setOnBehalfOf(parseType("onBehalfOf", xpp));
16571      } else if (!parseBackboneElementContent(eventType, xpp, res))
16572        return false;
16573    return true;
16574  }
16575
16576  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
16577    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
16578    parseBackboneAttributes(xpp, res);
16579    next(xpp);
16580    int eventType = nextNoWhitespace(xpp);
16581    while (eventType != XmlPullParser.END_TAG) {
16582  if (!parseProvenanceProvenanceEntityComponentContent(eventType, xpp, owner, res))
16583        unknownContent(xpp);
16584      eventType = nextNoWhitespace(xpp);
16585    }
16586    next(xpp);
16587    parseElementClose(res);
16588    return res;
16589  }
16590
16591  protected boolean parseProvenanceProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16592      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
16593        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
16594      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "what")) {
16595        res.setWhat(parseType("what", xpp));
16596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
16597        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, owner));
16598      } else if (!parseBackboneElementContent(eventType, xpp, res))
16599        return false;
16600    return true;
16601  }
16602
16603  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16604    Questionnaire res = new Questionnaire();
16605    parseDomainResourceAttributes(xpp, res);
16606    next(xpp);
16607    int eventType = nextNoWhitespace(xpp);
16608    while (eventType != XmlPullParser.END_TAG) {
16609  if (!parseQuestionnaireContent(eventType, xpp, res))
16610        unknownContent(xpp);
16611      eventType = nextNoWhitespace(xpp);
16612    }
16613    next(xpp);
16614    parseElementClose(res);
16615    return res;
16616  }
16617
16618  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
16619      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16620        res.setUrlElement(parseUri(xpp));
16621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16622        res.getIdentifier().add(parseIdentifier(xpp));
16623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16624        res.setVersionElement(parseString(xpp));
16625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16626        res.setNameElement(parseString(xpp));
16627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16628        res.setTitleElement(parseString(xpp));
16629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
16630        res.getDerivedFrom().add(parseCanonical(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("experimental")) {
16634        res.setExperimentalElement(parseBoolean(xpp));
16635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
16636        res.getSubjectType().add(parseCode(xpp));
16637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16638        res.setDateElement(parseDateTime(xpp));
16639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16640        res.setPublisherElement(parseString(xpp));
16641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16642        res.getContact().add(parseContactDetail(xpp));
16643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16644        res.setDescriptionElement(parseMarkdown(xpp));
16645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16646        res.getUseContext().add(parseUsageContext(xpp));
16647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16648        res.getJurisdiction().add(parseCodeableConcept(xpp));
16649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16650        res.setPurposeElement(parseMarkdown(xpp));
16651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
16652        res.setCopyrightElement(parseMarkdown(xpp));
16653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
16654        res.setApprovalDateElement(parseDate(xpp));
16655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
16656        res.setLastReviewDateElement(parseDate(xpp));
16657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
16658        res.setEffectivePeriod(parsePeriod(xpp));
16659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16660        res.getCode().add(parseCoding(xpp));
16661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
16662        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, res));
16663      } else if (!parseDomainResourceContent(eventType, xpp, res))
16664        return false;
16665    return true;
16666  }
16667
16668  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireQuestionnaireItemComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
16669    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
16670    parseBackboneAttributes(xpp, res);
16671    next(xpp);
16672    int eventType = nextNoWhitespace(xpp);
16673    while (eventType != XmlPullParser.END_TAG) {
16674  if (!parseQuestionnaireQuestionnaireItemComponentContent(eventType, xpp, owner, res))
16675        unknownContent(xpp);
16676      eventType = nextNoWhitespace(xpp);
16677    }
16678    next(xpp);
16679    parseElementClose(res);
16680    return res;
16681  }
16682
16683  protected boolean parseQuestionnaireQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16684      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
16685        res.setLinkIdElement(parseString(xpp));
16686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
16687        res.setDefinitionElement(parseUri(xpp));
16688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16689        res.getCode().add(parseCoding(xpp));
16690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
16691        res.setPrefixElement(parseString(xpp));
16692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
16693        res.setTextElement(parseString(xpp));
16694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16695        res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
16696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
16697        res.getEnableWhen().add(parseQuestionnaireQuestionnaireItemEnableWhenComponent(xpp, owner));
16698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableBehavior")) {
16699        res.setEnableBehaviorElement(parseEnumeration(xpp, Questionnaire.EnableWhenBehavior.NULL, new Questionnaire.EnableWhenBehaviorEnumFactory()));
16700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
16701        res.setRequiredElement(parseBoolean(xpp));
16702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
16703        res.setRepeatsElement(parseBoolean(xpp));
16704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
16705        res.setReadOnlyElement(parseBoolean(xpp));
16706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
16707        res.setMaxLengthElement(parseInteger(xpp));
16708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("options")) {
16709        res.setOptionsElement(parseCanonical(xpp));
16710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
16711        res.getOption().add(parseQuestionnaireQuestionnaireItemOptionComponent(xpp, owner));
16712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
16713        res.getInitial().add(parseQuestionnaireQuestionnaireItemInitialComponent(xpp, owner));
16714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
16715        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, owner));
16716      } else if (!parseBackboneElementContent(eventType, xpp, res))
16717        return false;
16718    return true;
16719  }
16720
16721  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireQuestionnaireItemEnableWhenComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
16722    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
16723    parseBackboneAttributes(xpp, res);
16724    next(xpp);
16725    int eventType = nextNoWhitespace(xpp);
16726    while (eventType != XmlPullParser.END_TAG) {
16727  if (!parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(eventType, xpp, owner, res))
16728        unknownContent(xpp);
16729      eventType = nextNoWhitespace(xpp);
16730    }
16731    next(xpp);
16732    parseElementClose(res);
16733    return res;
16734  }
16735
16736  protected boolean parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16737      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
16738        res.setQuestionElement(parseString(xpp));
16739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
16740        res.setOperatorElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemOperator.NULL, new Questionnaire.QuestionnaireItemOperatorEnumFactory()));
16741      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
16742        res.setAnswer(parseType("answer", xpp));
16743      } else if (!parseBackboneElementContent(eventType, xpp, res))
16744        return false;
16745    return true;
16746  }
16747
16748  protected Questionnaire.QuestionnaireItemOptionComponent parseQuestionnaireQuestionnaireItemOptionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
16749    Questionnaire.QuestionnaireItemOptionComponent res = new Questionnaire.QuestionnaireItemOptionComponent();
16750    parseBackboneAttributes(xpp, res);
16751    next(xpp);
16752    int eventType = nextNoWhitespace(xpp);
16753    while (eventType != XmlPullParser.END_TAG) {
16754  if (!parseQuestionnaireQuestionnaireItemOptionComponentContent(eventType, xpp, owner, res))
16755        unknownContent(xpp);
16756      eventType = nextNoWhitespace(xpp);
16757    }
16758    next(xpp);
16759    parseElementClose(res);
16760    return res;
16761  }
16762
16763  protected boolean parseQuestionnaireQuestionnaireItemOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16764      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16765        res.setValue(parseType("value", xpp));
16766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialSelected")) {
16767        res.setInitialSelectedElement(parseBoolean(xpp));
16768      } else if (!parseBackboneElementContent(eventType, xpp, res))
16769        return false;
16770    return true;
16771  }
16772
16773  protected Questionnaire.QuestionnaireItemInitialComponent parseQuestionnaireQuestionnaireItemInitialComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
16774    Questionnaire.QuestionnaireItemInitialComponent res = new Questionnaire.QuestionnaireItemInitialComponent();
16775    parseBackboneAttributes(xpp, res);
16776    next(xpp);
16777    int eventType = nextNoWhitespace(xpp);
16778    while (eventType != XmlPullParser.END_TAG) {
16779  if (!parseQuestionnaireQuestionnaireItemInitialComponentContent(eventType, xpp, owner, res))
16780        unknownContent(xpp);
16781      eventType = nextNoWhitespace(xpp);
16782    }
16783    next(xpp);
16784    parseElementClose(res);
16785    return res;
16786  }
16787
16788  protected boolean parseQuestionnaireQuestionnaireItemInitialComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemInitialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16789      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16790        res.setValue(parseType("value", xpp));
16791      } else if (!parseBackboneElementContent(eventType, xpp, res))
16792        return false;
16793    return true;
16794  }
16795
16796  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16797    QuestionnaireResponse res = new QuestionnaireResponse();
16798    parseDomainResourceAttributes(xpp, res);
16799    next(xpp);
16800    int eventType = nextNoWhitespace(xpp);
16801    while (eventType != XmlPullParser.END_TAG) {
16802  if (!parseQuestionnaireResponseContent(eventType, xpp, res))
16803        unknownContent(xpp);
16804      eventType = nextNoWhitespace(xpp);
16805    }
16806    next(xpp);
16807    parseElementClose(res);
16808    return res;
16809  }
16810
16811  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
16812      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16813        res.setIdentifier(parseIdentifier(xpp));
16814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
16815        res.getBasedOn().add(parseReference(xpp));
16816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
16817        res.getPartOf().add(parseReference(xpp));
16818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
16819        res.setQuestionnaireElement(parseCanonical(xpp));
16820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16821        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
16822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
16823        res.setSubject(parseReference(xpp));
16824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
16825        res.setContext(parseReference(xpp));
16826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
16827        res.setAuthoredElement(parseDateTime(xpp));
16828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
16829        res.setAuthor(parseReference(xpp));
16830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
16831        res.setSource(parseReference(xpp));
16832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
16833        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, res));
16834      } else if (!parseDomainResourceContent(eventType, xpp, res))
16835        return false;
16836    return true;
16837  }
16838
16839  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseQuestionnaireResponseItemComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
16840    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
16841    parseBackboneAttributes(xpp, res);
16842    next(xpp);
16843    int eventType = nextNoWhitespace(xpp);
16844    while (eventType != XmlPullParser.END_TAG) {
16845  if (!parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(eventType, xpp, owner, res))
16846        unknownContent(xpp);
16847      eventType = nextNoWhitespace(xpp);
16848    }
16849    next(xpp);
16850    parseElementClose(res);
16851    return res;
16852  }
16853
16854  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16855      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
16856        res.setLinkIdElement(parseString(xpp));
16857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
16858        res.setDefinitionElement(parseUri(xpp));
16859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
16860        res.setTextElement(parseString(xpp));
16861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
16862        res.setSubject(parseReference(xpp));
16863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
16864        res.getAnswer().add(parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(xpp, owner));
16865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
16866        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
16867      } else if (!parseBackboneElementContent(eventType, xpp, res))
16868        return false;
16869    return true;
16870  }
16871
16872  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
16873    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
16874    parseBackboneAttributes(xpp, res);
16875    next(xpp);
16876    int eventType = nextNoWhitespace(xpp);
16877    while (eventType != XmlPullParser.END_TAG) {
16878  if (!parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, owner, res))
16879        unknownContent(xpp);
16880      eventType = nextNoWhitespace(xpp);
16881    }
16882    next(xpp);
16883    parseElementClose(res);
16884    return res;
16885  }
16886
16887  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16888      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16889        res.setValue(parseType("value", xpp));
16890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
16891        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
16892      } else if (!parseBackboneElementContent(eventType, xpp, res))
16893        return false;
16894    return true;
16895  }
16896
16897  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16898    RelatedPerson res = new RelatedPerson();
16899    parseDomainResourceAttributes(xpp, res);
16900    next(xpp);
16901    int eventType = nextNoWhitespace(xpp);
16902    while (eventType != XmlPullParser.END_TAG) {
16903  if (!parseRelatedPersonContent(eventType, xpp, res))
16904        unknownContent(xpp);
16905      eventType = nextNoWhitespace(xpp);
16906    }
16907    next(xpp);
16908    parseElementClose(res);
16909    return res;
16910  }
16911
16912  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
16913      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16914        res.getIdentifier().add(parseIdentifier(xpp));
16915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
16916        res.setActiveElement(parseBoolean(xpp));
16917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
16918        res.setPatient(parseReference(xpp));
16919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
16920        res.getRelationship().add(parseCodeableConcept(xpp));
16921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16922        res.getName().add(parseHumanName(xpp));
16923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16924        res.getTelecom().add(parseContactPoint(xpp));
16925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
16926        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
16927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
16928        res.setBirthDateElement(parseDate(xpp));
16929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16930        res.getAddress().add(parseAddress(xpp));
16931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
16932        res.getPhoto().add(parseAttachment(xpp));
16933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16934        res.setPeriod(parsePeriod(xpp));
16935      } else if (!parseDomainResourceContent(eventType, xpp, res))
16936        return false;
16937    return true;
16938  }
16939
16940  protected RequestGroup parseRequestGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16941    RequestGroup res = new RequestGroup();
16942    parseDomainResourceAttributes(xpp, res);
16943    next(xpp);
16944    int eventType = nextNoWhitespace(xpp);
16945    while (eventType != XmlPullParser.END_TAG) {
16946  if (!parseRequestGroupContent(eventType, xpp, res))
16947        unknownContent(xpp);
16948      eventType = nextNoWhitespace(xpp);
16949    }
16950    next(xpp);
16951    parseElementClose(res);
16952    return res;
16953  }
16954
16955  protected boolean parseRequestGroupContent(int eventType, XmlPullParser xpp, RequestGroup res) throws XmlPullParserException, IOException, FHIRFormatError {
16956      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16957        res.getIdentifier().add(parseIdentifier(xpp));
16958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
16959        res.getInstantiatesCanonical().add(parseCanonical(xpp));
16960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
16961        res.getInstantiatesUri().add(parseUri(xpp));
16962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
16963        res.getBasedOn().add(parseReference(xpp));
16964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
16965        res.getReplaces().add(parseReference(xpp));
16966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
16967        res.setGroupIdentifier(parseIdentifier(xpp));
16968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16969        res.setStatusElement(parseEnumeration(xpp, RequestGroup.RequestStatus.NULL, new RequestGroup.RequestStatusEnumFactory()));
16970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
16971        res.setIntentElement(parseEnumeration(xpp, RequestGroup.RequestIntent.NULL, new RequestGroup.RequestIntentEnumFactory()));
16972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
16973        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
16974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16975        res.setCode(parseCodeableConcept(xpp));
16976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
16977        res.setSubject(parseReference(xpp));
16978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
16979        res.setContext(parseReference(xpp));
16980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
16981        res.setAuthoredOnElement(parseDateTime(xpp));
16982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
16983        res.setAuthor(parseReference(xpp));
16984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
16985        res.getReasonCode().add(parseCodeableConcept(xpp));
16986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
16987        res.getReasonReference().add(parseReference(xpp));
16988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16989        res.getNote().add(parseAnnotation(xpp));
16990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16991        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, res));
16992      } else if (!parseDomainResourceContent(eventType, xpp, res))
16993        return false;
16994    return true;
16995  }
16996
16997  protected RequestGroup.RequestGroupActionComponent parseRequestGroupRequestGroupActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
16998    RequestGroup.RequestGroupActionComponent res = new RequestGroup.RequestGroupActionComponent();
16999    parseBackboneAttributes(xpp, res);
17000    next(xpp);
17001    int eventType = nextNoWhitespace(xpp);
17002    while (eventType != XmlPullParser.END_TAG) {
17003  if (!parseRequestGroupRequestGroupActionComponentContent(eventType, xpp, owner, res))
17004        unknownContent(xpp);
17005      eventType = nextNoWhitespace(xpp);
17006    }
17007    next(xpp);
17008    parseElementClose(res);
17009    return res;
17010  }
17011
17012  protected boolean parseRequestGroupRequestGroupActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17013      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
17014        res.setPrefixElement(parseString(xpp));
17015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17016        res.setTitleElement(parseString(xpp));
17017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17018        res.setDescriptionElement(parseString(xpp));
17019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
17020        res.setTextEquivalentElement(parseString(xpp));
17021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17022        res.getCode().add(parseCodeableConcept(xpp));
17023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
17024        res.getDocumentation().add(parseRelatedArtifact(xpp));
17025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
17026        res.getCondition().add(parseRequestGroupRequestGroupActionConditionComponent(xpp, owner));
17027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
17028        res.getRelatedAction().add(parseRequestGroupRequestGroupActionRelatedActionComponent(xpp, owner));
17029      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
17030        res.setTiming(parseType("timing", xpp));
17031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
17032        res.getParticipant().add(parseReference(xpp));
17033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17034        res.setType(parseCodeableConcept(xpp));
17035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
17036        res.setGroupingBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionGroupingBehavior.NULL, new RequestGroup.ActionGroupingBehaviorEnumFactory()));
17037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
17038        res.setSelectionBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionSelectionBehavior.NULL, new RequestGroup.ActionSelectionBehaviorEnumFactory()));
17039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
17040        res.setRequiredBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionRequiredBehavior.NULL, new RequestGroup.ActionRequiredBehaviorEnumFactory()));
17041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
17042        res.setPrecheckBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionPrecheckBehavior.NULL, new RequestGroup.ActionPrecheckBehaviorEnumFactory()));
17043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
17044        res.setCardinalityBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionCardinalityBehavior.NULL, new RequestGroup.ActionCardinalityBehaviorEnumFactory()));
17045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
17046        res.setResource(parseReference(xpp));
17047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17048        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, owner));
17049      } else if (!parseBackboneElementContent(eventType, xpp, res))
17050        return false;
17051    return true;
17052  }
17053
17054  protected RequestGroup.RequestGroupActionConditionComponent parseRequestGroupRequestGroupActionConditionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
17055    RequestGroup.RequestGroupActionConditionComponent res = new RequestGroup.RequestGroupActionConditionComponent();
17056    parseBackboneAttributes(xpp, res);
17057    next(xpp);
17058    int eventType = nextNoWhitespace(xpp);
17059    while (eventType != XmlPullParser.END_TAG) {
17060  if (!parseRequestGroupRequestGroupActionConditionComponentContent(eventType, xpp, owner, res))
17061        unknownContent(xpp);
17062      eventType = nextNoWhitespace(xpp);
17063    }
17064    next(xpp);
17065    parseElementClose(res);
17066    return res;
17067  }
17068
17069  protected boolean parseRequestGroupRequestGroupActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17070      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
17071        res.setKindElement(parseEnumeration(xpp, RequestGroup.ActionConditionKind.NULL, new RequestGroup.ActionConditionKindEnumFactory()));
17072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17073        res.setDescriptionElement(parseString(xpp));
17074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
17075        res.setLanguageElement(parseString(xpp));
17076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17077        res.setExpressionElement(parseString(xpp));
17078      } else if (!parseBackboneElementContent(eventType, xpp, res))
17079        return false;
17080    return true;
17081  }
17082
17083  protected RequestGroup.RequestGroupActionRelatedActionComponent parseRequestGroupRequestGroupActionRelatedActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
17084    RequestGroup.RequestGroupActionRelatedActionComponent res = new RequestGroup.RequestGroupActionRelatedActionComponent();
17085    parseBackboneAttributes(xpp, res);
17086    next(xpp);
17087    int eventType = nextNoWhitespace(xpp);
17088    while (eventType != XmlPullParser.END_TAG) {
17089  if (!parseRequestGroupRequestGroupActionRelatedActionComponentContent(eventType, xpp, owner, res))
17090        unknownContent(xpp);
17091      eventType = nextNoWhitespace(xpp);
17092    }
17093    next(xpp);
17094    parseElementClose(res);
17095    return res;
17096  }
17097
17098  protected boolean parseRequestGroupRequestGroupActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17099      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
17100        res.setActionIdElement(parseId(xpp));
17101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
17102        res.setRelationshipElement(parseEnumeration(xpp, RequestGroup.ActionRelationshipType.NULL, new RequestGroup.ActionRelationshipTypeEnumFactory()));
17103      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
17104        res.setOffset(parseType("offset", xpp));
17105      } else if (!parseBackboneElementContent(eventType, xpp, res))
17106        return false;
17107    return true;
17108  }
17109
17110  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17111    ResearchStudy res = new ResearchStudy();
17112    parseDomainResourceAttributes(xpp, res);
17113    next(xpp);
17114    int eventType = nextNoWhitespace(xpp);
17115    while (eventType != XmlPullParser.END_TAG) {
17116  if (!parseResearchStudyContent(eventType, xpp, res))
17117        unknownContent(xpp);
17118      eventType = nextNoWhitespace(xpp);
17119    }
17120    next(xpp);
17121    parseElementClose(res);
17122    return res;
17123  }
17124
17125  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
17126      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17127        res.getIdentifier().add(parseIdentifier(xpp));
17128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17129        res.setTitleElement(parseString(xpp));
17130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
17131        res.getProtocol().add(parseReference(xpp));
17132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
17133        res.getPartOf().add(parseReference(xpp));
17134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17135        res.setStatusElement(parseEnumeration(xpp, ResearchStudy.ResearchStudyStatus.NULL, new ResearchStudy.ResearchStudyStatusEnumFactory()));
17136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primaryPurposeType")) {
17137        res.setPrimaryPurposeType(parseCodeableConcept(xpp));
17138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phase")) {
17139        res.setPhase(parseCodeableConcept(xpp));
17140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17141        res.getCategory().add(parseCodeableConcept(xpp));
17142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
17143        res.getFocus().add(parseCodeableConcept(xpp));
17144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
17145        res.getCondition().add(parseReference(xpp));
17146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17147        res.getContact().add(parseContactDetail(xpp));
17148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
17149        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
17150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
17151        res.getKeyword().add(parseCodeableConcept(xpp));
17152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17153        res.getLocation().add(parseCodeableConcept(xpp));
17154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17155        res.setDescriptionElement(parseMarkdown(xpp));
17156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enrollment")) {
17157        res.getEnrollment().add(parseReference(xpp));
17158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17159        res.setPeriod(parsePeriod(xpp));
17160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sponsor")) {
17161        res.setSponsor(parseReference(xpp));
17162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("principalInvestigator")) {
17163        res.setPrincipalInvestigator(parseReference(xpp));
17164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
17165        res.getSite().add(parseReference(xpp));
17166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonStopped")) {
17167        res.setReasonStopped(parseCodeableConcept(xpp));
17168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17169        res.getNote().add(parseAnnotation(xpp));
17170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("arm")) {
17171        res.getArm().add(parseResearchStudyResearchStudyArmComponent(xpp, res));
17172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("objective")) {
17173        res.getObjective().add(parseResearchStudyResearchStudyObjectiveComponent(xpp, res));
17174      } else if (!parseDomainResourceContent(eventType, xpp, res))
17175        return false;
17176    return true;
17177  }
17178
17179  protected ResearchStudy.ResearchStudyArmComponent parseResearchStudyResearchStudyArmComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
17180    ResearchStudy.ResearchStudyArmComponent res = new ResearchStudy.ResearchStudyArmComponent();
17181    parseBackboneAttributes(xpp, res);
17182    next(xpp);
17183    int eventType = nextNoWhitespace(xpp);
17184    while (eventType != XmlPullParser.END_TAG) {
17185  if (!parseResearchStudyResearchStudyArmComponentContent(eventType, xpp, owner, res))
17186        unknownContent(xpp);
17187      eventType = nextNoWhitespace(xpp);
17188    }
17189    next(xpp);
17190    parseElementClose(res);
17191    return res;
17192  }
17193
17194  protected boolean parseResearchStudyResearchStudyArmComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyArmComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17195      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17196        res.setNameElement(parseString(xpp));
17197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17198        res.setType(parseCodeableConcept(xpp));
17199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17200        res.setDescriptionElement(parseString(xpp));
17201      } else if (!parseBackboneElementContent(eventType, xpp, res))
17202        return false;
17203    return true;
17204  }
17205
17206  protected ResearchStudy.ResearchStudyObjectiveComponent parseResearchStudyResearchStudyObjectiveComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
17207    ResearchStudy.ResearchStudyObjectiveComponent res = new ResearchStudy.ResearchStudyObjectiveComponent();
17208    parseBackboneAttributes(xpp, res);
17209    next(xpp);
17210    int eventType = nextNoWhitespace(xpp);
17211    while (eventType != XmlPullParser.END_TAG) {
17212  if (!parseResearchStudyResearchStudyObjectiveComponentContent(eventType, xpp, owner, res))
17213        unknownContent(xpp);
17214      eventType = nextNoWhitespace(xpp);
17215    }
17216    next(xpp);
17217    parseElementClose(res);
17218    return res;
17219  }
17220
17221  protected boolean parseResearchStudyResearchStudyObjectiveComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyObjectiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17222      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17223        res.setNameElement(parseString(xpp));
17224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17225        res.setType(parseCodeableConcept(xpp));
17226      } else if (!parseBackboneElementContent(eventType, xpp, res))
17227        return false;
17228    return true;
17229  }
17230
17231  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17232    ResearchSubject res = new ResearchSubject();
17233    parseDomainResourceAttributes(xpp, res);
17234    next(xpp);
17235    int eventType = nextNoWhitespace(xpp);
17236    while (eventType != XmlPullParser.END_TAG) {
17237  if (!parseResearchSubjectContent(eventType, xpp, res))
17238        unknownContent(xpp);
17239      eventType = nextNoWhitespace(xpp);
17240    }
17241    next(xpp);
17242    parseElementClose(res);
17243    return res;
17244  }
17245
17246  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
17247      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17248        res.getIdentifier().add(parseIdentifier(xpp));
17249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17250        res.setStatusElement(parseEnumeration(xpp, ResearchSubject.ResearchSubjectStatus.NULL, new ResearchSubject.ResearchSubjectStatusEnumFactory()));
17251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17252        res.setPeriod(parsePeriod(xpp));
17253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
17254        res.setStudy(parseReference(xpp));
17255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
17256        res.setIndividual(parseReference(xpp));
17257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedArm")) {
17258        res.setAssignedArmElement(parseString(xpp));
17259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualArm")) {
17260        res.setActualArmElement(parseString(xpp));
17261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
17262        res.setConsent(parseReference(xpp));
17263      } else if (!parseDomainResourceContent(eventType, xpp, res))
17264        return false;
17265    return true;
17266  }
17267
17268  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17269    RiskAssessment res = new RiskAssessment();
17270    parseDomainResourceAttributes(xpp, res);
17271    next(xpp);
17272    int eventType = nextNoWhitespace(xpp);
17273    while (eventType != XmlPullParser.END_TAG) {
17274  if (!parseRiskAssessmentContent(eventType, xpp, res))
17275        unknownContent(xpp);
17276      eventType = nextNoWhitespace(xpp);
17277    }
17278    next(xpp);
17279    parseElementClose(res);
17280    return res;
17281  }
17282
17283  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
17284      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17285        res.getIdentifier().add(parseIdentifier(xpp));
17286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
17287        res.setBasedOn(parseReference(xpp));
17288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
17289        res.setParent(parseReference(xpp));
17290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17291        res.setStatusElement(parseEnumeration(xpp, RiskAssessment.RiskAssessmentStatus.NULL, new RiskAssessment.RiskAssessmentStatusEnumFactory()));
17292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
17293        res.setMethod(parseCodeableConcept(xpp));
17294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17295        res.setCode(parseCodeableConcept(xpp));
17296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17297        res.setSubject(parseReference(xpp));
17298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
17299        res.setContext(parseReference(xpp));
17300      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
17301        res.setOccurrence(parseType("occurrence", xpp));
17302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
17303        res.setCondition(parseReference(xpp));
17304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
17305        res.setPerformer(parseReference(xpp));
17306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
17307        res.getReasonCode().add(parseCodeableConcept(xpp));
17308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
17309        res.getReasonReference().add(parseReference(xpp));
17310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
17311        res.getBasis().add(parseReference(xpp));
17312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
17313        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
17314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
17315        res.setMitigationElement(parseString(xpp));
17316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17317        res.getNote().add(parseAnnotation(xpp));
17318      } else if (!parseDomainResourceContent(eventType, xpp, res))
17319        return false;
17320    return true;
17321  }
17322
17323  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
17324    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
17325    parseBackboneAttributes(xpp, res);
17326    next(xpp);
17327    int eventType = nextNoWhitespace(xpp);
17328    while (eventType != XmlPullParser.END_TAG) {
17329  if (!parseRiskAssessmentRiskAssessmentPredictionComponentContent(eventType, xpp, owner, res))
17330        unknownContent(xpp);
17331      eventType = nextNoWhitespace(xpp);
17332    }
17333    next(xpp);
17334    parseElementClose(res);
17335    return res;
17336  }
17337
17338  protected boolean parseRiskAssessmentRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment owner, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
17340        res.setOutcome(parseCodeableConcept(xpp));
17341      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
17342        res.setProbability(parseType("probability", xpp));
17343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
17344        res.setQualitativeRisk(parseCodeableConcept(xpp));
17345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
17346        res.setRelativeRiskElement(parseDecimal(xpp));
17347      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
17348        res.setWhen(parseType("when", xpp));
17349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
17350        res.setRationaleElement(parseString(xpp));
17351      } else if (!parseBackboneElementContent(eventType, xpp, res))
17352        return false;
17353    return true;
17354  }
17355
17356  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17357    Schedule res = new Schedule();
17358    parseDomainResourceAttributes(xpp, res);
17359    next(xpp);
17360    int eventType = nextNoWhitespace(xpp);
17361    while (eventType != XmlPullParser.END_TAG) {
17362  if (!parseScheduleContent(eventType, xpp, res))
17363        unknownContent(xpp);
17364      eventType = nextNoWhitespace(xpp);
17365    }
17366    next(xpp);
17367    parseElementClose(res);
17368    return res;
17369  }
17370
17371  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
17372      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17373        res.getIdentifier().add(parseIdentifier(xpp));
17374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17375        res.setActiveElement(parseBoolean(xpp));
17376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
17377        res.getServiceCategory().add(parseCodeableConcept(xpp));
17378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
17379        res.getServiceType().add(parseCodeableConcept(xpp));
17380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
17381        res.getSpecialty().add(parseCodeableConcept(xpp));
17382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
17383        res.getActor().add(parseReference(xpp));
17384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
17385        res.setPlanningHorizon(parsePeriod(xpp));
17386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
17387        res.setCommentElement(parseString(xpp));
17388      } else if (!parseDomainResourceContent(eventType, xpp, res))
17389        return false;
17390    return true;
17391  }
17392
17393  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17394    SearchParameter res = new SearchParameter();
17395    parseDomainResourceAttributes(xpp, res);
17396    next(xpp);
17397    int eventType = nextNoWhitespace(xpp);
17398    while (eventType != XmlPullParser.END_TAG) {
17399  if (!parseSearchParameterContent(eventType, xpp, res))
17400        unknownContent(xpp);
17401      eventType = nextNoWhitespace(xpp);
17402    }
17403    next(xpp);
17404    parseElementClose(res);
17405    return res;
17406  }
17407
17408  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
17409      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17410        res.setUrlElement(parseUri(xpp));
17411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17412        res.setVersionElement(parseString(xpp));
17413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17414        res.setNameElement(parseString(xpp));
17415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
17416        res.setDerivedFromElement(parseCanonical(xpp));
17417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17418        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17420        res.setExperimentalElement(parseBoolean(xpp));
17421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17422        res.setDateElement(parseDateTime(xpp));
17423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17424        res.setPublisherElement(parseString(xpp));
17425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17426        res.getContact().add(parseContactDetail(xpp));
17427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17428        res.setDescriptionElement(parseMarkdown(xpp));
17429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17430        res.getUseContext().add(parseUsageContext(xpp));
17431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17432        res.getJurisdiction().add(parseCodeableConcept(xpp));
17433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17434        res.setPurposeElement(parseMarkdown(xpp));
17435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17436        res.setCodeElement(parseCode(xpp));
17437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
17438        res.getBase().add(parseCode(xpp));
17439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17440        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
17441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17442        res.setExpressionElement(parseString(xpp));
17443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
17444        res.setXpathElement(parseString(xpp));
17445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
17446        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
17447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
17448        res.getTarget().add(parseCode(xpp));
17449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleOr")) {
17450        res.setMultipleOrElement(parseBoolean(xpp));
17451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleAnd")) {
17452        res.setMultipleAndElement(parseBoolean(xpp));
17453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
17454        res.getComparator().add(parseEnumeration(xpp, SearchParameter.SearchComparator.NULL, new SearchParameter.SearchComparatorEnumFactory()));
17455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
17456        res.getModifier().add(parseEnumeration(xpp, SearchParameter.SearchModifierCode.NULL, new SearchParameter.SearchModifierCodeEnumFactory()));
17457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
17458        res.getChain().add(parseString(xpp));
17459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
17460        res.getComponent().add(parseSearchParameterSearchParameterComponentComponent(xpp, res));
17461      } else if (!parseDomainResourceContent(eventType, xpp, res))
17462        return false;
17463    return true;
17464  }
17465
17466  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterSearchParameterComponentComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
17467    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
17468    parseBackboneAttributes(xpp, res);
17469    next(xpp);
17470    int eventType = nextNoWhitespace(xpp);
17471    while (eventType != XmlPullParser.END_TAG) {
17472  if (!parseSearchParameterSearchParameterComponentComponentContent(eventType, xpp, owner, res))
17473        unknownContent(xpp);
17474      eventType = nextNoWhitespace(xpp);
17475    }
17476    next(xpp);
17477    parseElementClose(res);
17478    return res;
17479  }
17480
17481  protected boolean parseSearchParameterSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter owner, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17482      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
17483        res.setDefinitionElement(parseCanonical(xpp));
17484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17485        res.setExpressionElement(parseString(xpp));
17486      } else if (!parseBackboneElementContent(eventType, xpp, res))
17487        return false;
17488    return true;
17489  }
17490
17491  protected Sequence parseSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17492    Sequence res = new Sequence();
17493    parseDomainResourceAttributes(xpp, res);
17494    next(xpp);
17495    int eventType = nextNoWhitespace(xpp);
17496    while (eventType != XmlPullParser.END_TAG) {
17497  if (!parseSequenceContent(eventType, xpp, res))
17498        unknownContent(xpp);
17499      eventType = nextNoWhitespace(xpp);
17500    }
17501    next(xpp);
17502    parseElementClose(res);
17503    return res;
17504  }
17505
17506  protected boolean parseSequenceContent(int eventType, XmlPullParser xpp, Sequence res) throws XmlPullParserException, IOException, FHIRFormatError {
17507      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17508        res.getIdentifier().add(parseIdentifier(xpp));
17509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17510        res.setTypeElement(parseEnumeration(xpp, Sequence.SequenceType.NULL, new Sequence.SequenceTypeEnumFactory()));
17511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
17512        res.setCoordinateSystemElement(parseInteger(xpp));
17513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
17514        res.setPatient(parseReference(xpp));
17515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
17516        res.setSpecimen(parseReference(xpp));
17517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
17518        res.setDevice(parseReference(xpp));
17519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
17520        res.setPerformer(parseReference(xpp));
17521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
17522        res.setQuantity(parseQuantity(xpp));
17523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
17524        res.setReferenceSeq(parseSequenceSequenceReferenceSeqComponent(xpp, res));
17525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variant")) {
17526        res.getVariant().add(parseSequenceSequenceVariantComponent(xpp, res));
17527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
17528        res.setObservedSeqElement(parseString(xpp));
17529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
17530        res.getQuality().add(parseSequenceSequenceQualityComponent(xpp, res));
17531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
17532        res.setReadCoverageElement(parseInteger(xpp));
17533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
17534        res.getRepository().add(parseSequenceSequenceRepositoryComponent(xpp, res));
17535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
17536        res.getPointer().add(parseReference(xpp));
17537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structureVariant")) {
17538        res.getStructureVariant().add(parseSequenceSequenceStructureVariantComponent(xpp, res));
17539      } else if (!parseDomainResourceContent(eventType, xpp, res))
17540        return false;
17541    return true;
17542  }
17543
17544  protected Sequence.SequenceReferenceSeqComponent parseSequenceSequenceReferenceSeqComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
17545    Sequence.SequenceReferenceSeqComponent res = new Sequence.SequenceReferenceSeqComponent();
17546    parseBackboneAttributes(xpp, res);
17547    next(xpp);
17548    int eventType = nextNoWhitespace(xpp);
17549    while (eventType != XmlPullParser.END_TAG) {
17550  if (!parseSequenceSequenceReferenceSeqComponentContent(eventType, xpp, owner, res))
17551        unknownContent(xpp);
17552      eventType = nextNoWhitespace(xpp);
17553    }
17554    next(xpp);
17555    parseElementClose(res);
17556    return res;
17557  }
17558
17559  protected boolean parseSequenceSequenceReferenceSeqComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceReferenceSeqComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17560      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
17561        res.setChromosome(parseCodeableConcept(xpp));
17562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
17563        res.setGenomeBuildElement(parseString(xpp));
17564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientation")) {
17565        res.setOrientationElement(parseEnumeration(xpp, Sequence.OrientationType.NULL, new Sequence.OrientationTypeEnumFactory()));
17566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
17567        res.setReferenceSeqId(parseCodeableConcept(xpp));
17568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
17569        res.setReferenceSeqPointer(parseReference(xpp));
17570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
17571        res.setReferenceSeqStringElement(parseString(xpp));
17572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
17573        res.setStrandElement(parseEnumeration(xpp, Sequence.StrandType.NULL, new Sequence.StrandTypeEnumFactory()));
17574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
17575        res.setWindowStartElement(parseInteger(xpp));
17576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
17577        res.setWindowEndElement(parseInteger(xpp));
17578      } else if (!parseBackboneElementContent(eventType, xpp, res))
17579        return false;
17580    return true;
17581  }
17582
17583  protected Sequence.SequenceVariantComponent parseSequenceSequenceVariantComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
17584    Sequence.SequenceVariantComponent res = new Sequence.SequenceVariantComponent();
17585    parseBackboneAttributes(xpp, res);
17586    next(xpp);
17587    int eventType = nextNoWhitespace(xpp);
17588    while (eventType != XmlPullParser.END_TAG) {
17589  if (!parseSequenceSequenceVariantComponentContent(eventType, xpp, owner, res))
17590        unknownContent(xpp);
17591      eventType = nextNoWhitespace(xpp);
17592    }
17593    next(xpp);
17594    parseElementClose(res);
17595    return res;
17596  }
17597
17598  protected boolean parseSequenceSequenceVariantComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17599      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17600        res.setStartElement(parseInteger(xpp));
17601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
17602        res.setEndElement(parseInteger(xpp));
17603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
17604        res.setObservedAlleleElement(parseString(xpp));
17605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
17606        res.setReferenceAlleleElement(parseString(xpp));
17607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
17608        res.setCigarElement(parseString(xpp));
17609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantPointer")) {
17610        res.setVariantPointer(parseReference(xpp));
17611      } else if (!parseBackboneElementContent(eventType, xpp, res))
17612        return false;
17613    return true;
17614  }
17615
17616  protected Sequence.SequenceQualityComponent parseSequenceSequenceQualityComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
17617    Sequence.SequenceQualityComponent res = new Sequence.SequenceQualityComponent();
17618    parseBackboneAttributes(xpp, res);
17619    next(xpp);
17620    int eventType = nextNoWhitespace(xpp);
17621    while (eventType != XmlPullParser.END_TAG) {
17622  if (!parseSequenceSequenceQualityComponentContent(eventType, xpp, owner, res))
17623        unknownContent(xpp);
17624      eventType = nextNoWhitespace(xpp);
17625    }
17626    next(xpp);
17627    parseElementClose(res);
17628    return res;
17629  }
17630
17631  protected boolean parseSequenceSequenceQualityComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceQualityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17632      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17633        res.setTypeElement(parseEnumeration(xpp, Sequence.QualityType.NULL, new Sequence.QualityTypeEnumFactory()));
17634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("standardSequence")) {
17635        res.setStandardSequence(parseCodeableConcept(xpp));
17636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17637        res.setStartElement(parseInteger(xpp));
17638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
17639        res.setEndElement(parseInteger(xpp));
17640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
17641        res.setScore(parseQuantity(xpp));
17642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
17643        res.setMethod(parseCodeableConcept(xpp));
17644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthTP")) {
17645        res.setTruthTPElement(parseDecimal(xpp));
17646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryTP")) {
17647        res.setQueryTPElement(parseDecimal(xpp));
17648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthFN")) {
17649        res.setTruthFNElement(parseDecimal(xpp));
17650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryFP")) {
17651        res.setQueryFPElement(parseDecimal(xpp));
17652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gtFP")) {
17653        res.setGtFPElement(parseDecimal(xpp));
17654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
17655        res.setPrecisionElement(parseDecimal(xpp));
17656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
17657        res.setRecallElement(parseDecimal(xpp));
17658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fScore")) {
17659        res.setFScoreElement(parseDecimal(xpp));
17660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("roc")) {
17661        res.setRoc(parseSequenceSequenceQualityRocComponent(xpp, owner));
17662      } else if (!parseBackboneElementContent(eventType, xpp, res))
17663        return false;
17664    return true;
17665  }
17666
17667  protected Sequence.SequenceQualityRocComponent parseSequenceSequenceQualityRocComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
17668    Sequence.SequenceQualityRocComponent res = new Sequence.SequenceQualityRocComponent();
17669    parseBackboneAttributes(xpp, res);
17670    next(xpp);
17671    int eventType = nextNoWhitespace(xpp);
17672    while (eventType != XmlPullParser.END_TAG) {
17673  if (!parseSequenceSequenceQualityRocComponentContent(eventType, xpp, owner, res))
17674        unknownContent(xpp);
17675      eventType = nextNoWhitespace(xpp);
17676    }
17677    next(xpp);
17678    parseElementClose(res);
17679    return res;
17680  }
17681
17682  protected boolean parseSequenceSequenceQualityRocComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceQualityRocComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17683      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
17684        res.getScore().add(parseInteger(xpp));
17685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numTP")) {
17686        res.getNumTP().add(parseInteger(xpp));
17687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFP")) {
17688        res.getNumFP().add(parseInteger(xpp));
17689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFN")) {
17690        res.getNumFN().add(parseInteger(xpp));
17691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
17692        res.getPrecision().add(parseDecimal(xpp));
17693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sensitivity")) {
17694        res.getSensitivity().add(parseDecimal(xpp));
17695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fMeasure")) {
17696        res.getFMeasure().add(parseDecimal(xpp));
17697      } else if (!parseBackboneElementContent(eventType, xpp, res))
17698        return false;
17699    return true;
17700  }
17701
17702  protected Sequence.SequenceRepositoryComponent parseSequenceSequenceRepositoryComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
17703    Sequence.SequenceRepositoryComponent res = new Sequence.SequenceRepositoryComponent();
17704    parseBackboneAttributes(xpp, res);
17705    next(xpp);
17706    int eventType = nextNoWhitespace(xpp);
17707    while (eventType != XmlPullParser.END_TAG) {
17708  if (!parseSequenceSequenceRepositoryComponentContent(eventType, xpp, owner, res))
17709        unknownContent(xpp);
17710      eventType = nextNoWhitespace(xpp);
17711    }
17712    next(xpp);
17713    parseElementClose(res);
17714    return res;
17715  }
17716
17717  protected boolean parseSequenceSequenceRepositoryComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceRepositoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17718      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17719        res.setTypeElement(parseEnumeration(xpp, Sequence.RepositoryType.NULL, new Sequence.RepositoryTypeEnumFactory()));
17720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17721        res.setUrlElement(parseUri(xpp));
17722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17723        res.setNameElement(parseString(xpp));
17724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("datasetId")) {
17725        res.setDatasetIdElement(parseString(xpp));
17726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantsetId")) {
17727        res.setVariantsetIdElement(parseString(xpp));
17728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readsetId")) {
17729        res.setReadsetIdElement(parseString(xpp));
17730      } else if (!parseBackboneElementContent(eventType, xpp, res))
17731        return false;
17732    return true;
17733  }
17734
17735  protected Sequence.SequenceStructureVariantComponent parseSequenceSequenceStructureVariantComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
17736    Sequence.SequenceStructureVariantComponent res = new Sequence.SequenceStructureVariantComponent();
17737    parseBackboneAttributes(xpp, res);
17738    next(xpp);
17739    int eventType = nextNoWhitespace(xpp);
17740    while (eventType != XmlPullParser.END_TAG) {
17741  if (!parseSequenceSequenceStructureVariantComponentContent(eventType, xpp, owner, res))
17742        unknownContent(xpp);
17743      eventType = nextNoWhitespace(xpp);
17744    }
17745    next(xpp);
17746    parseElementClose(res);
17747    return res;
17748  }
17749
17750  protected boolean parseSequenceSequenceStructureVariantComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceStructureVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
17752        res.setPrecisionElement(parseString(xpp));
17753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportedaCGHRatio")) {
17754        res.setReportedaCGHRatioElement(parseDecimal(xpp));
17755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
17756        res.setLengthElement(parseInteger(xpp));
17757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outer")) {
17758        res.setOuter(parseSequenceSequenceStructureVariantOuterComponent(xpp, owner));
17759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inner")) {
17760        res.setInner(parseSequenceSequenceStructureVariantInnerComponent(xpp, owner));
17761      } else if (!parseBackboneElementContent(eventType, xpp, res))
17762        return false;
17763    return true;
17764  }
17765
17766  protected Sequence.SequenceStructureVariantOuterComponent parseSequenceSequenceStructureVariantOuterComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
17767    Sequence.SequenceStructureVariantOuterComponent res = new Sequence.SequenceStructureVariantOuterComponent();
17768    parseBackboneAttributes(xpp, res);
17769    next(xpp);
17770    int eventType = nextNoWhitespace(xpp);
17771    while (eventType != XmlPullParser.END_TAG) {
17772  if (!parseSequenceSequenceStructureVariantOuterComponentContent(eventType, xpp, owner, res))
17773        unknownContent(xpp);
17774      eventType = nextNoWhitespace(xpp);
17775    }
17776    next(xpp);
17777    parseElementClose(res);
17778    return res;
17779  }
17780
17781  protected boolean parseSequenceSequenceStructureVariantOuterComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceStructureVariantOuterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17782      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17783        res.setStartElement(parseInteger(xpp));
17784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
17785        res.setEndElement(parseInteger(xpp));
17786      } else if (!parseBackboneElementContent(eventType, xpp, res))
17787        return false;
17788    return true;
17789  }
17790
17791  protected Sequence.SequenceStructureVariantInnerComponent parseSequenceSequenceStructureVariantInnerComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
17792    Sequence.SequenceStructureVariantInnerComponent res = new Sequence.SequenceStructureVariantInnerComponent();
17793    parseBackboneAttributes(xpp, res);
17794    next(xpp);
17795    int eventType = nextNoWhitespace(xpp);
17796    while (eventType != XmlPullParser.END_TAG) {
17797  if (!parseSequenceSequenceStructureVariantInnerComponentContent(eventType, xpp, owner, res))
17798        unknownContent(xpp);
17799      eventType = nextNoWhitespace(xpp);
17800    }
17801    next(xpp);
17802    parseElementClose(res);
17803    return res;
17804  }
17805
17806  protected boolean parseSequenceSequenceStructureVariantInnerComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceStructureVariantInnerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17808        res.setStartElement(parseInteger(xpp));
17809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
17810        res.setEndElement(parseInteger(xpp));
17811      } else if (!parseBackboneElementContent(eventType, xpp, res))
17812        return false;
17813    return true;
17814  }
17815
17816  protected ServiceRequest parseServiceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17817    ServiceRequest res = new ServiceRequest();
17818    parseDomainResourceAttributes(xpp, res);
17819    next(xpp);
17820    int eventType = nextNoWhitespace(xpp);
17821    while (eventType != XmlPullParser.END_TAG) {
17822  if (!parseServiceRequestContent(eventType, xpp, res))
17823        unknownContent(xpp);
17824      eventType = nextNoWhitespace(xpp);
17825    }
17826    next(xpp);
17827    parseElementClose(res);
17828    return res;
17829  }
17830
17831  protected boolean parseServiceRequestContent(int eventType, XmlPullParser xpp, ServiceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
17832      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17833        res.getIdentifier().add(parseIdentifier(xpp));
17834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
17835        res.getInstantiates().add(parseUri(xpp));
17836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
17837        res.getBasedOn().add(parseReference(xpp));
17838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
17839        res.getReplaces().add(parseReference(xpp));
17840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
17841        res.setRequisition(parseIdentifier(xpp));
17842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17843        res.setStatusElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestStatus.NULL, new ServiceRequest.ServiceRequestStatusEnumFactory()));
17844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
17845        res.setIntentElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestIntent.NULL, new ServiceRequest.ServiceRequestIntentEnumFactory()));
17846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17847        res.getCategory().add(parseCodeableConcept(xpp));
17848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
17849        res.setPriorityElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestPriority.NULL, new ServiceRequest.ServiceRequestPriorityEnumFactory()));
17850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
17851        res.setDoNotPerformElement(parseBoolean(xpp));
17852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17853        res.setCode(parseCodeableConcept(xpp));
17854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderDetail")) {
17855        res.getOrderDetail().add(parseCodeableConcept(xpp));
17856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17857        res.setSubject(parseReference(xpp));
17858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
17859        res.setContext(parseReference(xpp));
17860      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
17861        res.setOccurrence(parseType("occurrence", xpp));
17862      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
17863        res.setAsNeeded(parseType("asNeeded", xpp));
17864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
17865        res.setAuthoredOnElement(parseDateTime(xpp));
17866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
17867        res.setRequester(parseReference(xpp));
17868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
17869        res.setPerformerType(parseCodeableConcept(xpp));
17870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
17871        res.getPerformer().add(parseReference(xpp));
17872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
17873        res.getReasonCode().add(parseCodeableConcept(xpp));
17874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
17875        res.getReasonReference().add(parseReference(xpp));
17876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
17877        res.getInsurance().add(parseReference(xpp));
17878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
17879        res.getSupportingInfo().add(parseReference(xpp));
17880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
17881        res.getSpecimen().add(parseReference(xpp));
17882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
17883        res.getBodySite().add(parseCodeableConcept(xpp));
17884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17885        res.getNote().add(parseAnnotation(xpp));
17886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
17887        res.setPatientInstructionElement(parseString(xpp));
17888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
17889        res.getRelevantHistory().add(parseReference(xpp));
17890      } else if (!parseDomainResourceContent(eventType, xpp, res))
17891        return false;
17892    return true;
17893  }
17894
17895  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17896    Slot res = new Slot();
17897    parseDomainResourceAttributes(xpp, res);
17898    next(xpp);
17899    int eventType = nextNoWhitespace(xpp);
17900    while (eventType != XmlPullParser.END_TAG) {
17901  if (!parseSlotContent(eventType, xpp, res))
17902        unknownContent(xpp);
17903      eventType = nextNoWhitespace(xpp);
17904    }
17905    next(xpp);
17906    parseElementClose(res);
17907    return res;
17908  }
17909
17910  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
17911      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17912        res.getIdentifier().add(parseIdentifier(xpp));
17913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
17914        res.getServiceCategory().add(parseCodeableConcept(xpp));
17915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
17916        res.getServiceType().add(parseCodeableConcept(xpp));
17917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
17918        res.getSpecialty().add(parseCodeableConcept(xpp));
17919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
17920        res.setAppointmentType(parseCodeableConcept(xpp));
17921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
17922        res.setSchedule(parseReference(xpp));
17923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17924        res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
17925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17926        res.setStartElement(parseInstant(xpp));
17927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
17928        res.setEndElement(parseInstant(xpp));
17929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
17930        res.setOverbookedElement(parseBoolean(xpp));
17931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
17932        res.setCommentElement(parseString(xpp));
17933      } else if (!parseDomainResourceContent(eventType, xpp, res))
17934        return false;
17935    return true;
17936  }
17937
17938  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17939    Specimen res = new Specimen();
17940    parseDomainResourceAttributes(xpp, res);
17941    next(xpp);
17942    int eventType = nextNoWhitespace(xpp);
17943    while (eventType != XmlPullParser.END_TAG) {
17944  if (!parseSpecimenContent(eventType, xpp, res))
17945        unknownContent(xpp);
17946      eventType = nextNoWhitespace(xpp);
17947    }
17948    next(xpp);
17949    parseElementClose(res);
17950    return res;
17951  }
17952
17953  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
17954      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17955        res.getIdentifier().add(parseIdentifier(xpp));
17956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
17957        res.setAccessionIdentifier(parseIdentifier(xpp));
17958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17959        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
17960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17961        res.setType(parseCodeableConcept(xpp));
17962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17963        res.setSubject(parseReference(xpp));
17964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
17965        res.setReceivedTimeElement(parseDateTime(xpp));
17966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
17967        res.getParent().add(parseReference(xpp));
17968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17969        res.getRequest().add(parseReference(xpp));
17970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
17971        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
17972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
17973        res.getProcessing().add(parseSpecimenSpecimenProcessingComponent(xpp, res));
17974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
17975        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
17976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17977        res.getNote().add(parseAnnotation(xpp));
17978      } else if (!parseDomainResourceContent(eventType, xpp, res))
17979        return false;
17980    return true;
17981  }
17982
17983  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
17984    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
17985    parseBackboneAttributes(xpp, res);
17986    next(xpp);
17987    int eventType = nextNoWhitespace(xpp);
17988    while (eventType != XmlPullParser.END_TAG) {
17989  if (!parseSpecimenSpecimenCollectionComponentContent(eventType, xpp, owner, res))
17990        unknownContent(xpp);
17991      eventType = nextNoWhitespace(xpp);
17992    }
17993    next(xpp);
17994    parseElementClose(res);
17995    return res;
17996  }
17997
17998  protected boolean parseSpecimenSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17999      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
18000        res.setCollector(parseReference(xpp));
18001      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
18002        res.setCollected(parseType("collected", xpp));
18003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
18004        res.setQuantity(parseSimpleQuantity(xpp));
18005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
18006        res.setMethod(parseCodeableConcept(xpp));
18007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
18008        res.setBodySite(parseCodeableConcept(xpp));
18009      } else if (!parseBackboneElementContent(eventType, xpp, res))
18010        return false;
18011    return true;
18012  }
18013
18014  protected Specimen.SpecimenProcessingComponent parseSpecimenSpecimenProcessingComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
18015    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
18016    parseBackboneAttributes(xpp, res);
18017    next(xpp);
18018    int eventType = nextNoWhitespace(xpp);
18019    while (eventType != XmlPullParser.END_TAG) {
18020  if (!parseSpecimenSpecimenProcessingComponentContent(eventType, xpp, owner, res))
18021        unknownContent(xpp);
18022      eventType = nextNoWhitespace(xpp);
18023    }
18024    next(xpp);
18025    parseElementClose(res);
18026    return res;
18027  }
18028
18029  protected boolean parseSpecimenSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18030      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18031        res.setDescriptionElement(parseString(xpp));
18032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
18033        res.setProcedure(parseCodeableConcept(xpp));
18034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
18035        res.getAdditive().add(parseReference(xpp));
18036      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
18037        res.setTime(parseType("time", xpp));
18038      } else if (!parseBackboneElementContent(eventType, xpp, res))
18039        return false;
18040    return true;
18041  }
18042
18043  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
18044    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
18045    parseBackboneAttributes(xpp, res);
18046    next(xpp);
18047    int eventType = nextNoWhitespace(xpp);
18048    while (eventType != XmlPullParser.END_TAG) {
18049  if (!parseSpecimenSpecimenContainerComponentContent(eventType, xpp, owner, res))
18050        unknownContent(xpp);
18051      eventType = nextNoWhitespace(xpp);
18052    }
18053    next(xpp);
18054    parseElementClose(res);
18055    return res;
18056  }
18057
18058  protected boolean parseSpecimenSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18059      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18060        res.getIdentifier().add(parseIdentifier(xpp));
18061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18062        res.setDescriptionElement(parseString(xpp));
18063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18064        res.setType(parseCodeableConcept(xpp));
18065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
18066        res.setCapacity(parseSimpleQuantity(xpp));
18067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
18068        res.setSpecimenQuantity(parseSimpleQuantity(xpp));
18069      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
18070        res.setAdditive(parseType("additive", xpp));
18071      } else if (!parseBackboneElementContent(eventType, xpp, res))
18072        return false;
18073    return true;
18074  }
18075
18076  protected SpecimenDefinition parseSpecimenDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18077    SpecimenDefinition res = new SpecimenDefinition();
18078    parseDomainResourceAttributes(xpp, res);
18079    next(xpp);
18080    int eventType = nextNoWhitespace(xpp);
18081    while (eventType != XmlPullParser.END_TAG) {
18082  if (!parseSpecimenDefinitionContent(eventType, xpp, res))
18083        unknownContent(xpp);
18084      eventType = nextNoWhitespace(xpp);
18085    }
18086    next(xpp);
18087    parseElementClose(res);
18088    return res;
18089  }
18090
18091  protected boolean parseSpecimenDefinitionContent(int eventType, XmlPullParser xpp, SpecimenDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18092      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18093        res.setIdentifier(parseIdentifier(xpp));
18094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCollected")) {
18095        res.setTypeCollected(parseCodeableConcept(xpp));
18096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPreparation")) {
18097        res.setPatientPreparationElement(parseString(xpp));
18098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeAspect")) {
18099        res.setTimeAspectElement(parseString(xpp));
18100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
18101        res.getCollection().add(parseCodeableConcept(xpp));
18102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenToLab")) {
18103        res.getSpecimenToLab().add(parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponent(xpp, res));
18104      } else if (!parseDomainResourceContent(eventType, xpp, res))
18105        return false;
18106    return true;
18107  }
18108
18109  protected SpecimenDefinition.SpecimenDefinitionSpecimenToLabComponent parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18110    SpecimenDefinition.SpecimenDefinitionSpecimenToLabComponent res = new SpecimenDefinition.SpecimenDefinitionSpecimenToLabComponent();
18111    parseBackboneAttributes(xpp, res);
18112    next(xpp);
18113    int eventType = nextNoWhitespace(xpp);
18114    while (eventType != XmlPullParser.END_TAG) {
18115  if (!parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponentContent(eventType, xpp, owner, res))
18116        unknownContent(xpp);
18117      eventType = nextNoWhitespace(xpp);
18118    }
18119    next(xpp);
18120    parseElementClose(res);
18121    return res;
18122  }
18123
18124  protected boolean parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionSpecimenToLabComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18125      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDerived")) {
18126        res.setIsDerivedElement(parseBoolean(xpp));
18127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18128        res.setType(parseCodeableConcept(xpp));
18129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preference")) {
18130        res.setPreferenceElement(parseEnumeration(xpp, SpecimenDefinition.SpecimenContainedPreference.NULL, new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory()));
18131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containerMaterial")) {
18132        res.setContainerMaterial(parseCodeableConcept(xpp));
18133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containerType")) {
18134        res.setContainerType(parseCodeableConcept(xpp));
18135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containerCap")) {
18136        res.setContainerCap(parseCodeableConcept(xpp));
18137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containerDescription")) {
18138        res.setContainerDescriptionElement(parseString(xpp));
18139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containerCapacity")) {
18140        res.setContainerCapacity(parseSimpleQuantity(xpp));
18141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containerMinimumVolume")) {
18142        res.setContainerMinimumVolume(parseSimpleQuantity(xpp));
18143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containerAdditive")) {
18144        res.getContainerAdditive().add(parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponent(xpp, owner));
18145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containerPreparation")) {
18146        res.setContainerPreparationElement(parseString(xpp));
18147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
18148        res.setRequirementElement(parseString(xpp));
18149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("retentionTime")) {
18150        res.setRetentionTime(parseDuration(xpp));
18151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rejectionCriterion")) {
18152        res.getRejectionCriterion().add(parseCodeableConcept(xpp));
18153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
18154        res.getHandling().add(parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponent(xpp, owner));
18155      } else if (!parseBackboneElementContent(eventType, xpp, res))
18156        return false;
18157    return true;
18158  }
18159
18160  protected SpecimenDefinition.SpecimenDefinitionSpecimenToLabContainerAdditiveComponent parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18161    SpecimenDefinition.SpecimenDefinitionSpecimenToLabContainerAdditiveComponent res = new SpecimenDefinition.SpecimenDefinitionSpecimenToLabContainerAdditiveComponent();
18162    parseBackboneAttributes(xpp, res);
18163    next(xpp);
18164    int eventType = nextNoWhitespace(xpp);
18165    while (eventType != XmlPullParser.END_TAG) {
18166  if (!parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponentContent(eventType, xpp, owner, res))
18167        unknownContent(xpp);
18168      eventType = nextNoWhitespace(xpp);
18169    }
18170    next(xpp);
18171    parseElementClose(res);
18172    return res;
18173  }
18174
18175  protected boolean parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionSpecimenToLabContainerAdditiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18176      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
18177        res.setAdditive(parseType("additive", xpp));
18178      } else if (!parseBackboneElementContent(eventType, xpp, res))
18179        return false;
18180    return true;
18181  }
18182
18183  protected SpecimenDefinition.SpecimenDefinitionSpecimenToLabHandlingComponent parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18184    SpecimenDefinition.SpecimenDefinitionSpecimenToLabHandlingComponent res = new SpecimenDefinition.SpecimenDefinitionSpecimenToLabHandlingComponent();
18185    parseBackboneAttributes(xpp, res);
18186    next(xpp);
18187    int eventType = nextNoWhitespace(xpp);
18188    while (eventType != XmlPullParser.END_TAG) {
18189  if (!parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponentContent(eventType, xpp, owner, res))
18190        unknownContent(xpp);
18191      eventType = nextNoWhitespace(xpp);
18192    }
18193    next(xpp);
18194    parseElementClose(res);
18195    return res;
18196  }
18197
18198  protected boolean parseSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionSpecimenToLabHandlingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18199      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionSet")) {
18200        res.setConditionSet(parseCodeableConcept(xpp));
18201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tempRange")) {
18202        res.setTempRange(parseRange(xpp));
18203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDuration")) {
18204        res.setMaxDuration(parseDuration(xpp));
18205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lightExposure")) {
18206        res.setLightExposureElement(parseString(xpp));
18207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
18208        res.setInstructionElement(parseString(xpp));
18209      } else if (!parseBackboneElementContent(eventType, xpp, res))
18210        return false;
18211    return true;
18212  }
18213
18214  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18215    StructureDefinition res = new StructureDefinition();
18216    parseDomainResourceAttributes(xpp, res);
18217    next(xpp);
18218    int eventType = nextNoWhitespace(xpp);
18219    while (eventType != XmlPullParser.END_TAG) {
18220  if (!parseStructureDefinitionContent(eventType, xpp, res))
18221        unknownContent(xpp);
18222      eventType = nextNoWhitespace(xpp);
18223    }
18224    next(xpp);
18225    parseElementClose(res);
18226    return res;
18227  }
18228
18229  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18230      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18231        res.setUrlElement(parseUri(xpp));
18232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18233        res.getIdentifier().add(parseIdentifier(xpp));
18234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18235        res.setVersionElement(parseString(xpp));
18236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18237        res.setNameElement(parseString(xpp));
18238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18239        res.setTitleElement(parseString(xpp));
18240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18241        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18243        res.setExperimentalElement(parseBoolean(xpp));
18244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18245        res.setDateElement(parseDateTime(xpp));
18246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18247        res.setPublisherElement(parseString(xpp));
18248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18249        res.getContact().add(parseContactDetail(xpp));
18250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18251        res.setDescriptionElement(parseMarkdown(xpp));
18252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18253        res.getUseContext().add(parseUsageContext(xpp));
18254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18255        res.getJurisdiction().add(parseCodeableConcept(xpp));
18256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18257        res.setPurposeElement(parseMarkdown(xpp));
18258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18259        res.setCopyrightElement(parseMarkdown(xpp));
18260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
18261        res.getKeyword().add(parseCoding(xpp));
18262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
18263        res.setFhirVersionElement(parseId(xpp));
18264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
18265        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
18266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
18267        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
18268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
18269        res.setAbstractElement(parseBoolean(xpp));
18270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
18271        res.getContext().add(parseStructureDefinitionStructureDefinitionContextComponent(xpp, res));
18272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
18273        res.getContextInvariant().add(parseString(xpp));
18274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18275        res.setTypeElement(parseUri(xpp));
18276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
18277        res.setBaseDefinitionElement(parseCanonical(xpp));
18278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
18279        res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
18280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
18281        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
18282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
18283        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
18284      } else if (!parseDomainResourceContent(eventType, xpp, res))
18285        return false;
18286    return true;
18287  }
18288
18289  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18290    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
18291    parseBackboneAttributes(xpp, res);
18292    next(xpp);
18293    int eventType = nextNoWhitespace(xpp);
18294    while (eventType != XmlPullParser.END_TAG) {
18295  if (!parseStructureDefinitionStructureDefinitionMappingComponentContent(eventType, xpp, owner, res))
18296        unknownContent(xpp);
18297      eventType = nextNoWhitespace(xpp);
18298    }
18299    next(xpp);
18300    parseElementClose(res);
18301    return res;
18302  }
18303
18304  protected boolean parseStructureDefinitionStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18305      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
18306        res.setIdentityElement(parseId(xpp));
18307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
18308        res.setUriElement(parseUri(xpp));
18309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18310        res.setNameElement(parseString(xpp));
18311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18312        res.setCommentElement(parseString(xpp));
18313      } else if (!parseBackboneElementContent(eventType, xpp, res))
18314        return false;
18315    return true;
18316  }
18317
18318  protected StructureDefinition.StructureDefinitionContextComponent parseStructureDefinitionStructureDefinitionContextComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18319    StructureDefinition.StructureDefinitionContextComponent res = new StructureDefinition.StructureDefinitionContextComponent();
18320    parseBackboneAttributes(xpp, res);
18321    next(xpp);
18322    int eventType = nextNoWhitespace(xpp);
18323    while (eventType != XmlPullParser.END_TAG) {
18324  if (!parseStructureDefinitionStructureDefinitionContextComponentContent(eventType, xpp, owner, res))
18325        unknownContent(xpp);
18326      eventType = nextNoWhitespace(xpp);
18327    }
18328    next(xpp);
18329    parseElementClose(res);
18330    return res;
18331  }
18332
18333  protected boolean parseStructureDefinitionStructureDefinitionContextComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18334      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18335        res.setTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContextType.NULL, new StructureDefinition.ExtensionContextTypeEnumFactory()));
18336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
18337        res.setExpressionElement(parseString(xpp));
18338      } else if (!parseBackboneElementContent(eventType, xpp, res))
18339        return false;
18340    return true;
18341  }
18342
18343  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18344    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
18345    parseBackboneAttributes(xpp, res);
18346    next(xpp);
18347    int eventType = nextNoWhitespace(xpp);
18348    while (eventType != XmlPullParser.END_TAG) {
18349  if (!parseStructureDefinitionStructureDefinitionSnapshotComponentContent(eventType, xpp, owner, res))
18350        unknownContent(xpp);
18351      eventType = nextNoWhitespace(xpp);
18352    }
18353    next(xpp);
18354    parseElementClose(res);
18355    return res;
18356  }
18357
18358  protected boolean parseStructureDefinitionStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18359      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
18360        res.getElement().add(parseElementDefinition(xpp));
18361      } else if (!parseBackboneElementContent(eventType, xpp, res))
18362        return false;
18363    return true;
18364  }
18365
18366  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18367    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
18368    parseBackboneAttributes(xpp, res);
18369    next(xpp);
18370    int eventType = nextNoWhitespace(xpp);
18371    while (eventType != XmlPullParser.END_TAG) {
18372  if (!parseStructureDefinitionStructureDefinitionDifferentialComponentContent(eventType, xpp, owner, res))
18373        unknownContent(xpp);
18374      eventType = nextNoWhitespace(xpp);
18375    }
18376    next(xpp);
18377    parseElementClose(res);
18378    return res;
18379  }
18380
18381  protected boolean parseStructureDefinitionStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18382      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
18383        res.getElement().add(parseElementDefinition(xpp));
18384      } else if (!parseBackboneElementContent(eventType, xpp, res))
18385        return false;
18386    return true;
18387  }
18388
18389  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18390    StructureMap res = new StructureMap();
18391    parseDomainResourceAttributes(xpp, res);
18392    next(xpp);
18393    int eventType = nextNoWhitespace(xpp);
18394    while (eventType != XmlPullParser.END_TAG) {
18395  if (!parseStructureMapContent(eventType, xpp, res))
18396        unknownContent(xpp);
18397      eventType = nextNoWhitespace(xpp);
18398    }
18399    next(xpp);
18400    parseElementClose(res);
18401    return res;
18402  }
18403
18404  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
18405      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18406        res.setUrlElement(parseUri(xpp));
18407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18408        res.getIdentifier().add(parseIdentifier(xpp));
18409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18410        res.setVersionElement(parseString(xpp));
18411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18412        res.setNameElement(parseString(xpp));
18413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18414        res.setTitleElement(parseString(xpp));
18415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18416        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18418        res.setExperimentalElement(parseBoolean(xpp));
18419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18420        res.setDateElement(parseDateTime(xpp));
18421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18422        res.setPublisherElement(parseString(xpp));
18423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18424        res.getContact().add(parseContactDetail(xpp));
18425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18426        res.setDescriptionElement(parseMarkdown(xpp));
18427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18428        res.getUseContext().add(parseUsageContext(xpp));
18429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18430        res.getJurisdiction().add(parseCodeableConcept(xpp));
18431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18432        res.setPurposeElement(parseMarkdown(xpp));
18433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18434        res.setCopyrightElement(parseMarkdown(xpp));
18435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
18436        res.getStructure().add(parseStructureMapStructureMapStructureComponent(xpp, res));
18437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
18438        res.getImport().add(parseCanonical(xpp));
18439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
18440        res.getGroup().add(parseStructureMapStructureMapGroupComponent(xpp, res));
18441      } else if (!parseDomainResourceContent(eventType, xpp, res))
18442        return false;
18443    return true;
18444  }
18445
18446  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureMapStructureComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
18447    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
18448    parseBackboneAttributes(xpp, res);
18449    next(xpp);
18450    int eventType = nextNoWhitespace(xpp);
18451    while (eventType != XmlPullParser.END_TAG) {
18452  if (!parseStructureMapStructureMapStructureComponentContent(eventType, xpp, owner, res))
18453        unknownContent(xpp);
18454      eventType = nextNoWhitespace(xpp);
18455    }
18456    next(xpp);
18457    parseElementClose(res);
18458    return res;
18459  }
18460
18461  protected boolean parseStructureMapStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18462      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18463        res.setUrlElement(parseCanonical(xpp));
18464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
18465        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
18466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
18467        res.setAliasElement(parseString(xpp));
18468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
18469        res.setDocumentationElement(parseString(xpp));
18470      } else if (!parseBackboneElementContent(eventType, xpp, res))
18471        return false;
18472    return true;
18473  }
18474
18475  protected StructureMap.StructureMapGroupComponent parseStructureMapStructureMapGroupComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
18476    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
18477    parseBackboneAttributes(xpp, res);
18478    next(xpp);
18479    int eventType = nextNoWhitespace(xpp);
18480    while (eventType != XmlPullParser.END_TAG) {
18481  if (!parseStructureMapStructureMapGroupComponentContent(eventType, xpp, owner, res))
18482        unknownContent(xpp);
18483      eventType = nextNoWhitespace(xpp);
18484    }
18485    next(xpp);
18486    parseElementClose(res);
18487    return res;
18488  }
18489
18490  protected boolean parseStructureMapStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18491      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18492        res.setNameElement(parseId(xpp));
18493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
18494        res.setExtendsElement(parseId(xpp));
18495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
18496        res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
18497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
18498        res.setDocumentationElement(parseString(xpp));
18499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
18500        res.getInput().add(parseStructureMapStructureMapGroupInputComponent(xpp, owner));
18501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
18502        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
18503      } else if (!parseBackboneElementContent(eventType, xpp, res))
18504        return false;
18505    return true;
18506  }
18507
18508  protected StructureMap.StructureMapGroupInputComponent parseStructureMapStructureMapGroupInputComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
18509    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
18510    parseBackboneAttributes(xpp, res);
18511    next(xpp);
18512    int eventType = nextNoWhitespace(xpp);
18513    while (eventType != XmlPullParser.END_TAG) {
18514  if (!parseStructureMapStructureMapGroupInputComponentContent(eventType, xpp, owner, res))
18515        unknownContent(xpp);
18516      eventType = nextNoWhitespace(xpp);
18517    }
18518    next(xpp);
18519    parseElementClose(res);
18520    return res;
18521  }
18522
18523  protected boolean parseStructureMapStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18524      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18525        res.setNameElement(parseId(xpp));
18526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18527        res.setTypeElement(parseString(xpp));
18528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
18529        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
18530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
18531        res.setDocumentationElement(parseString(xpp));
18532      } else if (!parseBackboneElementContent(eventType, xpp, res))
18533        return false;
18534    return true;
18535  }
18536
18537  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapStructureMapGroupRuleComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
18538    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
18539    parseBackboneAttributes(xpp, res);
18540    next(xpp);
18541    int eventType = nextNoWhitespace(xpp);
18542    while (eventType != XmlPullParser.END_TAG) {
18543  if (!parseStructureMapStructureMapGroupRuleComponentContent(eventType, xpp, owner, res))
18544        unknownContent(xpp);
18545      eventType = nextNoWhitespace(xpp);
18546    }
18547    next(xpp);
18548    parseElementClose(res);
18549    return res;
18550  }
18551
18552  protected boolean parseStructureMapStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18553      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18554        res.setNameElement(parseId(xpp));
18555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
18556        res.getSource().add(parseStructureMapStructureMapGroupRuleSourceComponent(xpp, owner));
18557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
18558        res.getTarget().add(parseStructureMapStructureMapGroupRuleTargetComponent(xpp, owner));
18559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
18560        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
18561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
18562        res.getDependent().add(parseStructureMapStructureMapGroupRuleDependentComponent(xpp, owner));
18563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
18564        res.setDocumentationElement(parseString(xpp));
18565      } else if (!parseBackboneElementContent(eventType, xpp, res))
18566        return false;
18567    return true;
18568  }
18569
18570  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapStructureMapGroupRuleSourceComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
18571    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
18572    parseBackboneAttributes(xpp, res);
18573    next(xpp);
18574    int eventType = nextNoWhitespace(xpp);
18575    while (eventType != XmlPullParser.END_TAG) {
18576  if (!parseStructureMapStructureMapGroupRuleSourceComponentContent(eventType, xpp, owner, res))
18577        unknownContent(xpp);
18578      eventType = nextNoWhitespace(xpp);
18579    }
18580    next(xpp);
18581    parseElementClose(res);
18582    return res;
18583  }
18584
18585  protected boolean parseStructureMapStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18586      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
18587        res.setContextElement(parseId(xpp));
18588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
18589        res.setMinElement(parseInteger(xpp));
18590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
18591        res.setMaxElement(parseString(xpp));
18592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18593        res.setTypeElement(parseString(xpp));
18594      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
18595        res.setDefaultValue(parseType("defaultValue", xpp));
18596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
18597        res.setElementElement(parseString(xpp));
18598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
18599        res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
18600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
18601        res.setVariableElement(parseId(xpp));
18602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18603        res.setConditionElement(parseString(xpp));
18604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
18605        res.setCheckElement(parseString(xpp));
18606      } else if (!parseBackboneElementContent(eventType, xpp, res))
18607        return false;
18608    return true;
18609  }
18610
18611  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapStructureMapGroupRuleTargetComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
18612    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
18613    parseBackboneAttributes(xpp, res);
18614    next(xpp);
18615    int eventType = nextNoWhitespace(xpp);
18616    while (eventType != XmlPullParser.END_TAG) {
18617  if (!parseStructureMapStructureMapGroupRuleTargetComponentContent(eventType, xpp, owner, res))
18618        unknownContent(xpp);
18619      eventType = nextNoWhitespace(xpp);
18620    }
18621    next(xpp);
18622    parseElementClose(res);
18623    return res;
18624  }
18625
18626  protected boolean parseStructureMapStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18627      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
18628        res.setContextElement(parseId(xpp));
18629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
18630        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
18631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
18632        res.setElementElement(parseString(xpp));
18633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
18634        res.setVariableElement(parseId(xpp));
18635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
18636        res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
18637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
18638        res.setListRuleIdElement(parseId(xpp));
18639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
18640        res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
18641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
18642        res.getParameter().add(parseStructureMapStructureMapGroupRuleTargetParameterComponent(xpp, owner));
18643      } else if (!parseBackboneElementContent(eventType, xpp, res))
18644        return false;
18645    return true;
18646  }
18647
18648  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
18649    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
18650    parseBackboneAttributes(xpp, res);
18651    next(xpp);
18652    int eventType = nextNoWhitespace(xpp);
18653    while (eventType != XmlPullParser.END_TAG) {
18654  if (!parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, owner, res))
18655        unknownContent(xpp);
18656      eventType = nextNoWhitespace(xpp);
18657    }
18658    next(xpp);
18659    parseElementClose(res);
18660    return res;
18661  }
18662
18663  protected boolean parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18664      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18665        res.setValue(parseType("value", xpp));
18666      } else if (!parseBackboneElementContent(eventType, xpp, res))
18667        return false;
18668    return true;
18669  }
18670
18671  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapStructureMapGroupRuleDependentComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
18672    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
18673    parseBackboneAttributes(xpp, res);
18674    next(xpp);
18675    int eventType = nextNoWhitespace(xpp);
18676    while (eventType != XmlPullParser.END_TAG) {
18677  if (!parseStructureMapStructureMapGroupRuleDependentComponentContent(eventType, xpp, owner, res))
18678        unknownContent(xpp);
18679      eventType = nextNoWhitespace(xpp);
18680    }
18681    next(xpp);
18682    parseElementClose(res);
18683    return res;
18684  }
18685
18686  protected boolean parseStructureMapStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18687      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18688        res.setNameElement(parseId(xpp));
18689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
18690        res.getVariable().add(parseString(xpp));
18691      } else if (!parseBackboneElementContent(eventType, xpp, res))
18692        return false;
18693    return true;
18694  }
18695
18696  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18697    Subscription res = new Subscription();
18698    parseDomainResourceAttributes(xpp, res);
18699    next(xpp);
18700    int eventType = nextNoWhitespace(xpp);
18701    while (eventType != XmlPullParser.END_TAG) {
18702  if (!parseSubscriptionContent(eventType, xpp, res))
18703        unknownContent(xpp);
18704      eventType = nextNoWhitespace(xpp);
18705    }
18706    next(xpp);
18707    parseElementClose(res);
18708    return res;
18709  }
18710
18711  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
18712      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18713        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
18714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18715        res.getContact().add(parseContactPoint(xpp));
18716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
18717        res.setEndElement(parseInstant(xpp));
18718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
18719        res.setReasonElement(parseString(xpp));
18720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
18721        res.setCriteriaElement(parseString(xpp));
18722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
18723        res.setErrorElement(parseString(xpp));
18724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
18725        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
18726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
18727        res.getTag().add(parseCoding(xpp));
18728      } else if (!parseDomainResourceContent(eventType, xpp, res))
18729        return false;
18730    return true;
18731  }
18732
18733  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
18734    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
18735    parseBackboneAttributes(xpp, res);
18736    next(xpp);
18737    int eventType = nextNoWhitespace(xpp);
18738    while (eventType != XmlPullParser.END_TAG) {
18739  if (!parseSubscriptionSubscriptionChannelComponentContent(eventType, xpp, owner, res))
18740        unknownContent(xpp);
18741      eventType = nextNoWhitespace(xpp);
18742    }
18743    next(xpp);
18744    parseElementClose(res);
18745    return res;
18746  }
18747
18748  protected boolean parseSubscriptionSubscriptionChannelComponentContent(int eventType, XmlPullParser xpp, Subscription owner, Subscription.SubscriptionChannelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18749      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18750        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
18751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
18752        res.setEndpointElement(parseUrl(xpp));
18753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
18754        res.setPayloadElement(parseString(xpp));
18755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
18756        res.getHeader().add(parseString(xpp));
18757      } else if (!parseBackboneElementContent(eventType, xpp, res))
18758        return false;
18759    return true;
18760  }
18761
18762  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18763    Substance res = new Substance();
18764    parseDomainResourceAttributes(xpp, res);
18765    next(xpp);
18766    int eventType = nextNoWhitespace(xpp);
18767    while (eventType != XmlPullParser.END_TAG) {
18768  if (!parseSubstanceContent(eventType, xpp, res))
18769        unknownContent(xpp);
18770      eventType = nextNoWhitespace(xpp);
18771    }
18772    next(xpp);
18773    parseElementClose(res);
18774    return res;
18775  }
18776
18777  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
18778      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18779        res.getIdentifier().add(parseIdentifier(xpp));
18780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18781        res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
18782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
18783        res.getCategory().add(parseCodeableConcept(xpp));
18784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18785        res.setCode(parseCodeableConcept(xpp));
18786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18787        res.setDescriptionElement(parseString(xpp));
18788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
18789        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
18790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
18791        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
18792      } else if (!parseDomainResourceContent(eventType, xpp, res))
18793        return false;
18794    return true;
18795  }
18796
18797  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
18798    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
18799    parseBackboneAttributes(xpp, res);
18800    next(xpp);
18801    int eventType = nextNoWhitespace(xpp);
18802    while (eventType != XmlPullParser.END_TAG) {
18803  if (!parseSubstanceSubstanceInstanceComponentContent(eventType, xpp, owner, res))
18804        unknownContent(xpp);
18805      eventType = nextNoWhitespace(xpp);
18806    }
18807    next(xpp);
18808    parseElementClose(res);
18809    return res;
18810  }
18811
18812  protected boolean parseSubstanceSubstanceInstanceComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18813      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18814        res.setIdentifier(parseIdentifier(xpp));
18815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
18816        res.setExpiryElement(parseDateTime(xpp));
18817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
18818        res.setQuantity(parseSimpleQuantity(xpp));
18819      } else if (!parseBackboneElementContent(eventType, xpp, res))
18820        return false;
18821    return true;
18822  }
18823
18824  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
18825    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
18826    parseBackboneAttributes(xpp, res);
18827    next(xpp);
18828    int eventType = nextNoWhitespace(xpp);
18829    while (eventType != XmlPullParser.END_TAG) {
18830  if (!parseSubstanceSubstanceIngredientComponentContent(eventType, xpp, owner, res))
18831        unknownContent(xpp);
18832      eventType = nextNoWhitespace(xpp);
18833    }
18834    next(xpp);
18835    parseElementClose(res);
18836    return res;
18837  }
18838
18839  protected boolean parseSubstanceSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18840      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
18841        res.setQuantity(parseRatio(xpp));
18842      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
18843        res.setSubstance(parseType("substance", xpp));
18844      } else if (!parseBackboneElementContent(eventType, xpp, res))
18845        return false;
18846    return true;
18847  }
18848
18849  protected SubstancePolymer parseSubstancePolymer(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18850    SubstancePolymer res = new SubstancePolymer();
18851    parseDomainResourceAttributes(xpp, res);
18852    next(xpp);
18853    int eventType = nextNoWhitespace(xpp);
18854    while (eventType != XmlPullParser.END_TAG) {
18855  if (!parseSubstancePolymerContent(eventType, xpp, res))
18856        unknownContent(xpp);
18857      eventType = nextNoWhitespace(xpp);
18858    }
18859    next(xpp);
18860    parseElementClose(res);
18861    return res;
18862  }
18863
18864  protected boolean parseSubstancePolymerContent(int eventType, XmlPullParser xpp, SubstancePolymer res) throws XmlPullParserException, IOException, FHIRFormatError {
18865      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
18866        res.setClass_(parseCodeableConcept(xpp));
18867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geometry")) {
18868        res.setGeometry(parseCodeableConcept(xpp));
18869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copolymerConnectivity")) {
18870        res.getCopolymerConnectivity().add(parseCodeableConcept(xpp));
18871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modification")) {
18872        res.getModification().add(parseString(xpp));
18873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monomerSet")) {
18874        res.getMonomerSet().add(parseSubstancePolymerSubstancePolymerMonomerSetComponent(xpp, res));
18875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
18876        res.getRepeat().add(parseSubstancePolymerSubstancePolymerRepeatComponent(xpp, res));
18877      } else if (!parseDomainResourceContent(eventType, xpp, res))
18878        return false;
18879    return true;
18880  }
18881
18882  protected SubstancePolymer.SubstancePolymerMonomerSetComponent parseSubstancePolymerSubstancePolymerMonomerSetComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
18883    SubstancePolymer.SubstancePolymerMonomerSetComponent res = new SubstancePolymer.SubstancePolymerMonomerSetComponent();
18884    parseBackboneAttributes(xpp, res);
18885    next(xpp);
18886    int eventType = nextNoWhitespace(xpp);
18887    while (eventType != XmlPullParser.END_TAG) {
18888  if (!parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(eventType, xpp, owner, res))
18889        unknownContent(xpp);
18890      eventType = nextNoWhitespace(xpp);
18891    }
18892    next(xpp);
18893    parseElementClose(res);
18894    return res;
18895  }
18896
18897  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ratioType")) {
18899        res.setRatioType(parseCodeableConcept(xpp));
18900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startingMaterial")) {
18901        res.getStartingMaterial().add(parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(xpp, owner));
18902      } else if (!parseBackboneElementContent(eventType, xpp, res))
18903        return false;
18904    return true;
18905  }
18906
18907  protected SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
18908    SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res = new SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent();
18909    parseBackboneAttributes(xpp, res);
18910    next(xpp);
18911    int eventType = nextNoWhitespace(xpp);
18912    while (eventType != XmlPullParser.END_TAG) {
18913  if (!parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(eventType, xpp, owner, res))
18914        unknownContent(xpp);
18915      eventType = nextNoWhitespace(xpp);
18916    }
18917    next(xpp);
18918    parseElementClose(res);
18919    return res;
18920  }
18921
18922  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18923      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
18924        res.setMaterial(parseCodeableConcept(xpp));
18925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18926        res.setType(parseCodeableConcept(xpp));
18927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
18928        res.setIsDefiningElement(parseBoolean(xpp));
18929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
18930        res.setAmount(parseSubstanceAmount(xpp));
18931      } else if (!parseBackboneElementContent(eventType, xpp, res))
18932        return false;
18933    return true;
18934  }
18935
18936  protected SubstancePolymer.SubstancePolymerRepeatComponent parseSubstancePolymerSubstancePolymerRepeatComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
18937    SubstancePolymer.SubstancePolymerRepeatComponent res = new SubstancePolymer.SubstancePolymerRepeatComponent();
18938    parseBackboneAttributes(xpp, res);
18939    next(xpp);
18940    int eventType = nextNoWhitespace(xpp);
18941    while (eventType != XmlPullParser.END_TAG) {
18942  if (!parseSubstancePolymerSubstancePolymerRepeatComponentContent(eventType, xpp, owner, res))
18943        unknownContent(xpp);
18944      eventType = nextNoWhitespace(xpp);
18945    }
18946    next(xpp);
18947    parseElementClose(res);
18948    return res;
18949  }
18950
18951  protected boolean parseSubstancePolymerSubstancePolymerRepeatComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18952      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfUnits")) {
18953        res.setNumberOfUnitsElement(parseInteger(xpp));
18954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("averageMolecularFormula")) {
18955        res.setAverageMolecularFormulaElement(parseString(xpp));
18956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnitAmountType")) {
18957        res.setRepeatUnitAmountType(parseCodeableConcept(xpp));
18958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
18959        res.getRepeatUnit().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(xpp, owner));
18960      } else if (!parseBackboneElementContent(eventType, xpp, res))
18961        return false;
18962    return true;
18963  }
18964
18965  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
18966    SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent();
18967    parseBackboneAttributes(xpp, res);
18968    next(xpp);
18969    int eventType = nextNoWhitespace(xpp);
18970    while (eventType != XmlPullParser.END_TAG) {
18971  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(eventType, xpp, owner, res))
18972        unknownContent(xpp);
18973      eventType = nextNoWhitespace(xpp);
18974    }
18975    next(xpp);
18976    parseElementClose(res);
18977    return res;
18978  }
18979
18980  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18981      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientationOfPolymerisation")) {
18982        res.setOrientationOfPolymerisation(parseCodeableConcept(xpp));
18983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
18984        res.setRepeatUnitElement(parseString(xpp));
18985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
18986        res.setAmount(parseSubstanceAmount(xpp));
18987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degreeOfPolymerisation")) {
18988        res.getDegreeOfPolymerisation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(xpp, owner));
18989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structuralRepresentation")) {
18990        res.getStructuralRepresentation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(xpp, owner));
18991      } else if (!parseBackboneElementContent(eventType, xpp, res))
18992        return false;
18993    return true;
18994  }
18995
18996  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
18997    SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent();
18998    parseBackboneAttributes(xpp, res);
18999    next(xpp);
19000    int eventType = nextNoWhitespace(xpp);
19001    while (eventType != XmlPullParser.END_TAG) {
19002  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(eventType, xpp, owner, res))
19003        unknownContent(xpp);
19004      eventType = nextNoWhitespace(xpp);
19005    }
19006    next(xpp);
19007    parseElementClose(res);
19008    return res;
19009  }
19010
19011  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19012      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degree")) {
19013        res.setDegree(parseCodeableConcept(xpp));
19014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
19015        res.setAmount(parseSubstanceAmount(xpp));
19016      } else if (!parseBackboneElementContent(eventType, xpp, res))
19017        return false;
19018    return true;
19019  }
19020
19021  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
19022    SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent();
19023    parseBackboneAttributes(xpp, res);
19024    next(xpp);
19025    int eventType = nextNoWhitespace(xpp);
19026    while (eventType != XmlPullParser.END_TAG) {
19027  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(eventType, xpp, owner, res))
19028        unknownContent(xpp);
19029      eventType = nextNoWhitespace(xpp);
19030    }
19031    next(xpp);
19032    parseElementClose(res);
19033    return res;
19034  }
19035
19036  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19037      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19038        res.setType(parseCodeableConcept(xpp));
19039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
19040        res.setRepresentationElement(parseString(xpp));
19041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
19042        res.setAttachment(parseAttachment(xpp));
19043      } else if (!parseBackboneElementContent(eventType, xpp, res))
19044        return false;
19045    return true;
19046  }
19047
19048  protected SubstanceReferenceInformation parseSubstanceReferenceInformation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19049    SubstanceReferenceInformation res = new SubstanceReferenceInformation();
19050    parseDomainResourceAttributes(xpp, res);
19051    next(xpp);
19052    int eventType = nextNoWhitespace(xpp);
19053    while (eventType != XmlPullParser.END_TAG) {
19054  if (!parseSubstanceReferenceInformationContent(eventType, xpp, res))
19055        unknownContent(xpp);
19056      eventType = nextNoWhitespace(xpp);
19057    }
19058    next(xpp);
19059    parseElementClose(res);
19060    return res;
19061  }
19062
19063  protected boolean parseSubstanceReferenceInformationContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation res) throws XmlPullParserException, IOException, FHIRFormatError {
19064      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19065        res.setCommentElement(parseString(xpp));
19066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
19067        res.getGene().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(xpp, res));
19068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneElement")) {
19069        res.getGeneElement().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(xpp, res));
19070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
19071        res.getClassification().add(parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(xpp, res));
19072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
19073        res.getRelationship().add(parseSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(xpp, res));
19074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
19075        res.getTarget().add(parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(xpp, res));
19076      } else if (!parseDomainResourceContent(eventType, xpp, res))
19077        return false;
19078    return true;
19079  }
19080
19081  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
19082    SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent();
19083    parseBackboneAttributes(xpp, res);
19084    next(xpp);
19085    int eventType = nextNoWhitespace(xpp);
19086    while (eventType != XmlPullParser.END_TAG) {
19087  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(eventType, xpp, owner, res))
19088        unknownContent(xpp);
19089      eventType = nextNoWhitespace(xpp);
19090    }
19091    next(xpp);
19092    parseElementClose(res);
19093    return res;
19094  }
19095
19096  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19097      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneSequenceOrigin")) {
19098        res.setGeneSequenceOrigin(parseCodeableConcept(xpp));
19099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
19100        res.setGene(parseCodeableConcept(xpp));
19101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
19102        res.getSource().add(parseReference(xpp));
19103      } else if (!parseBackboneElementContent(eventType, xpp, res))
19104        return false;
19105    return true;
19106  }
19107
19108  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
19109    SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent();
19110    parseBackboneAttributes(xpp, res);
19111    next(xpp);
19112    int eventType = nextNoWhitespace(xpp);
19113    while (eventType != XmlPullParser.END_TAG) {
19114  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(eventType, xpp, owner, res))
19115        unknownContent(xpp);
19116      eventType = nextNoWhitespace(xpp);
19117    }
19118    next(xpp);
19119    parseElementClose(res);
19120    return res;
19121  }
19122
19123  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19125        res.setType(parseCodeableConcept(xpp));
19126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
19127        res.setElement(parseIdentifier(xpp));
19128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
19129        res.getSource().add(parseReference(xpp));
19130      } else if (!parseBackboneElementContent(eventType, xpp, res))
19131        return false;
19132    return true;
19133  }
19134
19135  protected SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
19136    SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent();
19137    parseBackboneAttributes(xpp, res);
19138    next(xpp);
19139    int eventType = nextNoWhitespace(xpp);
19140    while (eventType != XmlPullParser.END_TAG) {
19141  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(eventType, xpp, owner, res))
19142        unknownContent(xpp);
19143      eventType = nextNoWhitespace(xpp);
19144    }
19145    next(xpp);
19146    parseElementClose(res);
19147    return res;
19148  }
19149
19150  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19151      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
19152        res.setDomain(parseCodeableConcept(xpp));
19153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
19154        res.setClassification(parseCodeableConcept(xpp));
19155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
19156        res.getSubtype().add(parseCodeableConcept(xpp));
19157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
19158        res.getSource().add(parseReference(xpp));
19159      } else if (!parseBackboneElementContent(eventType, xpp, res))
19160        return false;
19161    return true;
19162  }
19163
19164  protected SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent parseSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
19165    SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent();
19166    parseBackboneAttributes(xpp, res);
19167    next(xpp);
19168    int eventType = nextNoWhitespace(xpp);
19169    while (eventType != XmlPullParser.END_TAG) {
19170  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponentContent(eventType, xpp, owner, res))
19171        unknownContent(xpp);
19172      eventType = nextNoWhitespace(xpp);
19173    }
19174    next(xpp);
19175    parseElementClose(res);
19176    return res;
19177  }
19178
19179  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19180      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
19181        res.setSubstance(parseType("substance", xpp));
19182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
19183        res.setRelationship(parseCodeableConcept(xpp));
19184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
19185        res.setInteraction(parseCodeableConcept(xpp));
19186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
19187        res.setIsDefiningElement(parseBoolean(xpp));
19188      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
19189        res.setAmount(parseType("amount", xpp));
19190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
19191        res.setAmountType(parseCodeableConcept(xpp));
19192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountText")) {
19193        res.setAmountTextElement(parseString(xpp));
19194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
19195        res.getSource().add(parseReference(xpp));
19196      } else if (!parseBackboneElementContent(eventType, xpp, res))
19197        return false;
19198    return true;
19199  }
19200
19201  protected SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
19202    SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent();
19203    parseBackboneAttributes(xpp, res);
19204    next(xpp);
19205    int eventType = nextNoWhitespace(xpp);
19206    while (eventType != XmlPullParser.END_TAG) {
19207  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(eventType, xpp, owner, res))
19208        unknownContent(xpp);
19209      eventType = nextNoWhitespace(xpp);
19210    }
19211    next(xpp);
19212    parseElementClose(res);
19213    return res;
19214  }
19215
19216  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19217      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
19218        res.setTarget(parseIdentifier(xpp));
19219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19220        res.setType(parseCodeableConcept(xpp));
19221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
19222        res.setInteraction(parseCodeableConcept(xpp));
19223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
19224        res.setOrganism(parseCodeableConcept(xpp));
19225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismType")) {
19226        res.setOrganismType(parseCodeableConcept(xpp));
19227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
19228        res.getSource().add(parseReference(xpp));
19229      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
19230        res.setAmount(parseType("amount", xpp));
19231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
19232        res.setAmountType(parseCodeableConcept(xpp));
19233      } else if (!parseBackboneElementContent(eventType, xpp, res))
19234        return false;
19235    return true;
19236  }
19237
19238  protected SubstanceSpecification parseSubstanceSpecification(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19239    SubstanceSpecification res = new SubstanceSpecification();
19240    parseDomainResourceAttributes(xpp, res);
19241    next(xpp);
19242    int eventType = nextNoWhitespace(xpp);
19243    while (eventType != XmlPullParser.END_TAG) {
19244  if (!parseSubstanceSpecificationContent(eventType, xpp, res))
19245        unknownContent(xpp);
19246      eventType = nextNoWhitespace(xpp);
19247    }
19248    next(xpp);
19249    parseElementClose(res);
19250    return res;
19251  }
19252
19253  protected boolean parseSubstanceSpecificationContent(int eventType, XmlPullParser xpp, SubstanceSpecification res) throws XmlPullParserException, IOException, FHIRFormatError {
19254      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19255        res.setCommentElement(parseString(xpp));
19256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stoichiometric")) {
19257        res.setStoichiometricElement(parseBoolean(xpp));
19258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19259        res.setIdentifier(parseIdentifier(xpp));
19260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19261        res.setType(parseCodeableConcept(xpp));
19262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSource")) {
19263        res.getReferenceSource().add(parseString(xpp));
19264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moiety")) {
19265        res.getMoiety().add(parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(xpp, res));
19266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
19267        res.getProperty().add(parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(xpp, res));
19268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceInformation")) {
19269        res.setReferenceInformation(parseReference(xpp));
19270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
19271        res.setStructure(parseSubstanceSpecificationSubstanceSpecificationStructureComponent(xpp, res));
19272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substanceCode")) {
19273        res.getSubstanceCode().add(parseSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(xpp, res));
19274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substanceName")) {
19275        res.getSubstanceName().add(parseSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(xpp, res));
19276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
19277        res.getMolecularWeight().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, res));
19278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("polymer")) {
19279        res.setPolymer(parseReference(xpp));
19280      } else if (!parseDomainResourceContent(eventType, xpp, res))
19281        return false;
19282    return true;
19283  }
19284
19285  protected SubstanceSpecification.SubstanceSpecificationMoietyComponent parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
19286    SubstanceSpecification.SubstanceSpecificationMoietyComponent res = new SubstanceSpecification.SubstanceSpecificationMoietyComponent();
19287    parseBackboneAttributes(xpp, res);
19288    next(xpp);
19289    int eventType = nextNoWhitespace(xpp);
19290    while (eventType != XmlPullParser.END_TAG) {
19291  if (!parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(eventType, xpp, owner, res))
19292        unknownContent(xpp);
19293      eventType = nextNoWhitespace(xpp);
19294    }
19295    next(xpp);
19296    parseElementClose(res);
19297    return res;
19298  }
19299
19300  protected boolean parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationMoietyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19301      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
19302        res.setRole(parseCodeableConcept(xpp));
19303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19304        res.setIdentifier(parseIdentifier(xpp));
19305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19306        res.setNameElement(parseString(xpp));
19307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
19308        res.setStereochemistry(parseCodeableConcept(xpp));
19309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
19310        res.setOpticalActivity(parseCodeableConcept(xpp));
19311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
19312        res.setMolecularFormulaElement(parseString(xpp));
19313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
19314        res.setAmountElement(parseString(xpp));
19315      } else if (!parseBackboneElementContent(eventType, xpp, res))
19316        return false;
19317    return true;
19318  }
19319
19320  protected SubstanceSpecification.SubstanceSpecificationPropertyComponent parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
19321    SubstanceSpecification.SubstanceSpecificationPropertyComponent res = new SubstanceSpecification.SubstanceSpecificationPropertyComponent();
19322    parseBackboneAttributes(xpp, res);
19323    next(xpp);
19324    int eventType = nextNoWhitespace(xpp);
19325    while (eventType != XmlPullParser.END_TAG) {
19326  if (!parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(eventType, xpp, owner, res))
19327        unknownContent(xpp);
19328      eventType = nextNoWhitespace(xpp);
19329    }
19330    next(xpp);
19331    parseElementClose(res);
19332    return res;
19333  }
19334
19335  protected boolean parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19336      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19337        res.setType(parseCodeableConcept(xpp));
19338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19339        res.setName(parseCodeableConcept(xpp));
19340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameters")) {
19341        res.setParametersElement(parseString(xpp));
19342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substanceId")) {
19343        res.setSubstanceId(parseIdentifier(xpp));
19344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substanceName")) {
19345        res.setSubstanceNameElement(parseString(xpp));
19346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
19347        res.setAmountElement(parseString(xpp));
19348      } else if (!parseBackboneElementContent(eventType, xpp, res))
19349        return false;
19350    return true;
19351  }
19352
19353  protected SubstanceSpecification.SubstanceSpecificationStructureComponent parseSubstanceSpecificationSubstanceSpecificationStructureComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
19354    SubstanceSpecification.SubstanceSpecificationStructureComponent res = new SubstanceSpecification.SubstanceSpecificationStructureComponent();
19355    parseBackboneAttributes(xpp, res);
19356    next(xpp);
19357    int eventType = nextNoWhitespace(xpp);
19358    while (eventType != XmlPullParser.END_TAG) {
19359  if (!parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(eventType, xpp, owner, res))
19360        unknownContent(xpp);
19361      eventType = nextNoWhitespace(xpp);
19362    }
19363    next(xpp);
19364    parseElementClose(res);
19365    return res;
19366  }
19367
19368  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19369      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
19370        res.setStereochemistry(parseCodeableConcept(xpp));
19371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
19372        res.setOpticalActivity(parseCodeableConcept(xpp));
19373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
19374        res.setMolecularFormulaElement(parseString(xpp));
19375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormulaByMoiety")) {
19376        res.setMolecularFormulaByMoietyElement(parseString(xpp));
19377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isotope")) {
19378        res.getIsotope().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(xpp, owner));
19379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
19380        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
19381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSource")) {
19382        res.getReferenceSource().add(parseReference(xpp));
19383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structuralRepresentation")) {
19384        res.getStructuralRepresentation().add(parseSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(xpp, owner));
19385      } else if (!parseBackboneElementContent(eventType, xpp, res))
19386        return false;
19387    return true;
19388  }
19389
19390  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
19391    SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent();
19392    parseBackboneAttributes(xpp, res);
19393    next(xpp);
19394    int eventType = nextNoWhitespace(xpp);
19395    while (eventType != XmlPullParser.END_TAG) {
19396  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(eventType, xpp, owner, res))
19397        unknownContent(xpp);
19398      eventType = nextNoWhitespace(xpp);
19399    }
19400    next(xpp);
19401    parseElementClose(res);
19402    return res;
19403  }
19404
19405  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19406      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nuclideId")) {
19407        res.setNuclideId(parseIdentifier(xpp));
19408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nuclideName")) {
19409        res.setNuclideName(parseCodeableConcept(xpp));
19410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitutionType")) {
19411        res.setSubstitutionType(parseCodeableConcept(xpp));
19412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nuclideHalfLife")) {
19413        res.setNuclideHalfLife(parseQuantity(xpp));
19414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
19415        res.setAmountElement(parseString(xpp));
19416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
19417        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
19418      } else if (!parseBackboneElementContent(eventType, xpp, res))
19419        return false;
19420    return true;
19421  }
19422
19423  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
19424    SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent();
19425    parseBackboneAttributes(xpp, res);
19426    next(xpp);
19427    int eventType = nextNoWhitespace(xpp);
19428    while (eventType != XmlPullParser.END_TAG) {
19429  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(eventType, xpp, owner, res))
19430        unknownContent(xpp);
19431      eventType = nextNoWhitespace(xpp);
19432    }
19433    next(xpp);
19434    parseElementClose(res);
19435    return res;
19436  }
19437
19438  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19439      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
19440        res.setMethod(parseCodeableConcept(xpp));
19441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19442        res.setType(parseCodeableConcept(xpp));
19443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
19444        res.setAmountElement(parseString(xpp));
19445      } else if (!parseBackboneElementContent(eventType, xpp, res))
19446        return false;
19447    return true;
19448  }
19449
19450  protected SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent parseSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
19451    SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent res = new SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent();
19452    parseBackboneAttributes(xpp, res);
19453    next(xpp);
19454    int eventType = nextNoWhitespace(xpp);
19455    while (eventType != XmlPullParser.END_TAG) {
19456  if (!parseSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponentContent(eventType, xpp, owner, res))
19457        unknownContent(xpp);
19458      eventType = nextNoWhitespace(xpp);
19459    }
19460    next(xpp);
19461    parseElementClose(res);
19462    return res;
19463  }
19464
19465  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19466      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19467        res.setType(parseCodeableConcept(xpp));
19468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
19469        res.setRepresentationElement(parseString(xpp));
19470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
19471        res.setAttachment(parseAttachment(xpp));
19472      } else if (!parseBackboneElementContent(eventType, xpp, res))
19473        return false;
19474    return true;
19475  }
19476
19477  protected SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent parseSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
19478    SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent res = new SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent();
19479    parseBackboneAttributes(xpp, res);
19480    next(xpp);
19481    int eventType = nextNoWhitespace(xpp);
19482    while (eventType != XmlPullParser.END_TAG) {
19483  if (!parseSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponentContent(eventType, xpp, owner, res))
19484        unknownContent(xpp);
19485      eventType = nextNoWhitespace(xpp);
19486    }
19487    next(xpp);
19488    parseElementClose(res);
19489    return res;
19490  }
19491
19492  protected boolean parseSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19493      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19494        res.setCode(parseCodeableConcept(xpp));
19495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19496        res.setStatus(parseCodeableConcept(xpp));
19497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
19498        res.setStatusDateElement(parseDateTime(xpp));
19499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19500        res.setCommentElement(parseString(xpp));
19501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSource")) {
19502        res.getReferenceSource().add(parseString(xpp));
19503      } else if (!parseBackboneElementContent(eventType, xpp, res))
19504        return false;
19505    return true;
19506  }
19507
19508  protected SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent parseSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
19509    SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent res = new SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent();
19510    parseBackboneAttributes(xpp, res);
19511    next(xpp);
19512    int eventType = nextNoWhitespace(xpp);
19513    while (eventType != XmlPullParser.END_TAG) {
19514  if (!parseSubstanceSpecificationSubstanceSpecificationSubstanceNameComponentContent(eventType, xpp, owner, res))
19515        unknownContent(xpp);
19516      eventType = nextNoWhitespace(xpp);
19517    }
19518    next(xpp);
19519    parseElementClose(res);
19520    return res;
19521  }
19522
19523  protected boolean parseSubstanceSpecificationSubstanceSpecificationSubstanceNameComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19524      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19525        res.setNameElement(parseString(xpp));
19526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19527        res.setType(parseCodeableConcept(xpp));
19528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
19529        res.getLanguage().add(parseCodeableConcept(xpp));
19530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
19531        res.getDomain().add(parseCodeableConcept(xpp));
19532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19533        res.getJurisdiction().add(parseCodeableConcept(xpp));
19534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("officialName")) {
19535        res.getOfficialName().add(parseSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(xpp, owner));
19536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSource")) {
19537        res.getReferenceSource().add(parseString(xpp));
19538      } else if (!parseBackboneElementContent(eventType, xpp, res))
19539        return false;
19540    return true;
19541  }
19542
19543  protected SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent parseSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
19544    SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent res = new SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent();
19545    parseBackboneAttributes(xpp, res);
19546    next(xpp);
19547    int eventType = nextNoWhitespace(xpp);
19548    while (eventType != XmlPullParser.END_TAG) {
19549  if (!parseSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponentContent(eventType, xpp, owner, res))
19550        unknownContent(xpp);
19551      eventType = nextNoWhitespace(xpp);
19552    }
19553    next(xpp);
19554    parseElementClose(res);
19555    return res;
19556  }
19557
19558  protected boolean parseSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19559      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
19560        res.setAuthority(parseCodeableConcept(xpp));
19561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19562        res.setStatus(parseCodeableConcept(xpp));
19563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19564        res.setDateElement(parseDateTime(xpp));
19565      } else if (!parseBackboneElementContent(eventType, xpp, res))
19566        return false;
19567    return true;
19568  }
19569
19570  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19571    SupplyDelivery res = new SupplyDelivery();
19572    parseDomainResourceAttributes(xpp, res);
19573    next(xpp);
19574    int eventType = nextNoWhitespace(xpp);
19575    while (eventType != XmlPullParser.END_TAG) {
19576  if (!parseSupplyDeliveryContent(eventType, xpp, res))
19577        unknownContent(xpp);
19578      eventType = nextNoWhitespace(xpp);
19579    }
19580    next(xpp);
19581    parseElementClose(res);
19582    return res;
19583  }
19584
19585  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
19586      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19587        res.getIdentifier().add(parseIdentifier(xpp));
19588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19589        res.getBasedOn().add(parseReference(xpp));
19590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
19591        res.getPartOf().add(parseReference(xpp));
19592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19593        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
19594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
19595        res.setPatient(parseReference(xpp));
19596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19597        res.setType(parseCodeableConcept(xpp));
19598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
19599        res.setSuppliedItem(parseSupplyDeliverySupplyDeliverySuppliedItemComponent(xpp, res));
19600      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
19601        res.setOccurrence(parseType("occurrence", xpp));
19602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
19603        res.setSupplier(parseReference(xpp));
19604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
19605        res.setDestination(parseReference(xpp));
19606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
19607        res.getReceiver().add(parseReference(xpp));
19608      } else if (!parseDomainResourceContent(eventType, xpp, res))
19609        return false;
19610    return true;
19611  }
19612
19613  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySupplyDeliverySuppliedItemComponent(XmlPullParser xpp, SupplyDelivery owner) throws XmlPullParserException, IOException, FHIRFormatError {
19614    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
19615    parseBackboneAttributes(xpp, res);
19616    next(xpp);
19617    int eventType = nextNoWhitespace(xpp);
19618    while (eventType != XmlPullParser.END_TAG) {
19619  if (!parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(eventType, xpp, owner, res))
19620        unknownContent(xpp);
19621      eventType = nextNoWhitespace(xpp);
19622    }
19623    next(xpp);
19624    parseElementClose(res);
19625    return res;
19626  }
19627
19628  protected boolean parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery owner, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19630        res.setQuantity(parseSimpleQuantity(xpp));
19631      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
19632        res.setItem(parseType("item", xpp));
19633      } else if (!parseBackboneElementContent(eventType, xpp, res))
19634        return false;
19635    return true;
19636  }
19637
19638  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19639    SupplyRequest res = new SupplyRequest();
19640    parseDomainResourceAttributes(xpp, res);
19641    next(xpp);
19642    int eventType = nextNoWhitespace(xpp);
19643    while (eventType != XmlPullParser.END_TAG) {
19644  if (!parseSupplyRequestContent(eventType, xpp, res))
19645        unknownContent(xpp);
19646      eventType = nextNoWhitespace(xpp);
19647    }
19648    next(xpp);
19649    parseElementClose(res);
19650    return res;
19651  }
19652
19653  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
19654      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19655        res.setIdentifier(parseIdentifier(xpp));
19656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19657        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
19658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19659        res.setCategory(parseCodeableConcept(xpp));
19660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
19661        res.setPriorityElement(parseEnumeration(xpp, SupplyRequest.RequestPriority.NULL, new SupplyRequest.RequestPriorityEnumFactory()));
19662      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
19663        res.setItem(parseType("item", xpp));
19664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19665        res.setQuantity(parseQuantity(xpp));
19666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
19667        res.getParameter().add(parseSupplyRequestSupplyRequestParameterComponent(xpp, res));
19668      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
19669        res.setOccurrence(parseType("occurrence", xpp));
19670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
19671        res.setAuthoredOnElement(parseDateTime(xpp));
19672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
19673        res.setRequester(parseReference(xpp));
19674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
19675        res.getSupplier().add(parseReference(xpp));
19676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19677        res.getReasonCode().add(parseCodeableConcept(xpp));
19678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19679        res.getReasonReference().add(parseReference(xpp));
19680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
19681        res.setDeliverFrom(parseReference(xpp));
19682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
19683        res.setDeliverTo(parseReference(xpp));
19684      } else if (!parseDomainResourceContent(eventType, xpp, res))
19685        return false;
19686    return true;
19687  }
19688
19689  protected SupplyRequest.SupplyRequestParameterComponent parseSupplyRequestSupplyRequestParameterComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
19690    SupplyRequest.SupplyRequestParameterComponent res = new SupplyRequest.SupplyRequestParameterComponent();
19691    parseBackboneAttributes(xpp, res);
19692    next(xpp);
19693    int eventType = nextNoWhitespace(xpp);
19694    while (eventType != XmlPullParser.END_TAG) {
19695  if (!parseSupplyRequestSupplyRequestParameterComponentContent(eventType, xpp, owner, res))
19696        unknownContent(xpp);
19697      eventType = nextNoWhitespace(xpp);
19698    }
19699    next(xpp);
19700    parseElementClose(res);
19701    return res;
19702  }
19703
19704  protected boolean parseSupplyRequestSupplyRequestParameterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19705      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19706        res.setCode(parseCodeableConcept(xpp));
19707      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19708        res.setValue(parseType("value", xpp));
19709      } else if (!parseBackboneElementContent(eventType, xpp, res))
19710        return false;
19711    return true;
19712  }
19713
19714  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19715    Task res = new Task();
19716    parseDomainResourceAttributes(xpp, res);
19717    next(xpp);
19718    int eventType = nextNoWhitespace(xpp);
19719    while (eventType != XmlPullParser.END_TAG) {
19720  if (!parseTaskContent(eventType, xpp, res))
19721        unknownContent(xpp);
19722      eventType = nextNoWhitespace(xpp);
19723    }
19724    next(xpp);
19725    parseElementClose(res);
19726    return res;
19727  }
19728
19729  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
19730      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19731        res.getIdentifier().add(parseIdentifier(xpp));
19732      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "instantiates")) {
19733        res.setInstantiates(parseType("instantiates", xpp));
19734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19735        res.getBasedOn().add(parseReference(xpp));
19736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
19737        res.setGroupIdentifier(parseIdentifier(xpp));
19738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
19739        res.getPartOf().add(parseReference(xpp));
19740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19741        res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
19742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
19743        res.setStatusReason(parseCodeableConcept(xpp));
19744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
19745        res.setBusinessStatus(parseCodeableConcept(xpp));
19746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
19747        res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
19748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
19749        res.setPriorityElement(parseEnumeration(xpp, Task.TaskPriority.NULL, new Task.TaskPriorityEnumFactory()));
19750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19751        res.setCode(parseCodeableConcept(xpp));
19752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19753        res.setDescriptionElement(parseString(xpp));
19754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
19755        res.setFocus(parseReference(xpp));
19756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
19757        res.setFor(parseReference(xpp));
19758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
19759        res.setContext(parseReference(xpp));
19760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
19761        res.setExecutionPeriod(parsePeriod(xpp));
19762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
19763        res.setAuthoredOnElement(parseDateTime(xpp));
19764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
19765        res.setLastModifiedElement(parseDateTime(xpp));
19766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
19767        res.setRequester(parseReference(xpp));
19768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
19769        res.getPerformerType().add(parseCodeableConcept(xpp));
19770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
19771        res.setOwner(parseReference(xpp));
19772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19773        res.setReasonCode(parseCodeableConcept(xpp));
19774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19775        res.setReasonReference(parseReference(xpp));
19776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19777        res.getNote().add(parseAnnotation(xpp));
19778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
19779        res.getRelevantHistory().add(parseReference(xpp));
19780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
19781        res.setRestriction(parseTaskTaskRestrictionComponent(xpp, res));
19782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
19783        res.getInput().add(parseTaskParameterComponent(xpp, res));
19784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
19785        res.getOutput().add(parseTaskTaskOutputComponent(xpp, res));
19786      } else if (!parseDomainResourceContent(eventType, xpp, res))
19787        return false;
19788    return true;
19789  }
19790
19791  protected Task.TaskRestrictionComponent parseTaskTaskRestrictionComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
19792    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
19793    parseBackboneAttributes(xpp, res);
19794    next(xpp);
19795    int eventType = nextNoWhitespace(xpp);
19796    while (eventType != XmlPullParser.END_TAG) {
19797  if (!parseTaskTaskRestrictionComponentContent(eventType, xpp, owner, res))
19798        unknownContent(xpp);
19799      eventType = nextNoWhitespace(xpp);
19800    }
19801    next(xpp);
19802    parseElementClose(res);
19803    return res;
19804  }
19805
19806  protected boolean parseTaskTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
19808        res.setRepetitionsElement(parsePositiveInt(xpp));
19809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
19810        res.setPeriod(parsePeriod(xpp));
19811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
19812        res.getRecipient().add(parseReference(xpp));
19813      } else if (!parseBackboneElementContent(eventType, xpp, res))
19814        return false;
19815    return true;
19816  }
19817
19818  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
19819    Task.ParameterComponent res = new Task.ParameterComponent();
19820    parseBackboneAttributes(xpp, res);
19821    next(xpp);
19822    int eventType = nextNoWhitespace(xpp);
19823    while (eventType != XmlPullParser.END_TAG) {
19824  if (!parseTaskParameterComponentContent(eventType, xpp, owner, res))
19825        unknownContent(xpp);
19826      eventType = nextNoWhitespace(xpp);
19827    }
19828    next(xpp);
19829    parseElementClose(res);
19830    return res;
19831  }
19832
19833  protected boolean parseTaskParameterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19834      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19835        res.setType(parseCodeableConcept(xpp));
19836      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19837        res.setValue(parseType("value", xpp));
19838      } else if (!parseBackboneElementContent(eventType, xpp, res))
19839        return false;
19840    return true;
19841  }
19842
19843  protected Task.TaskOutputComponent parseTaskTaskOutputComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
19844    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
19845    parseBackboneAttributes(xpp, res);
19846    next(xpp);
19847    int eventType = nextNoWhitespace(xpp);
19848    while (eventType != XmlPullParser.END_TAG) {
19849  if (!parseTaskTaskOutputComponentContent(eventType, xpp, owner, res))
19850        unknownContent(xpp);
19851      eventType = nextNoWhitespace(xpp);
19852    }
19853    next(xpp);
19854    parseElementClose(res);
19855    return res;
19856  }
19857
19858  protected boolean parseTaskTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19859      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19860        res.setType(parseCodeableConcept(xpp));
19861      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19862        res.setValue(parseType("value", xpp));
19863      } else if (!parseBackboneElementContent(eventType, xpp, res))
19864        return false;
19865    return true;
19866  }
19867
19868  protected TerminologyCapabilities parseTerminologyCapabilities(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19869    TerminologyCapabilities res = new TerminologyCapabilities();
19870    parseDomainResourceAttributes(xpp, res);
19871    next(xpp);
19872    int eventType = nextNoWhitespace(xpp);
19873    while (eventType != XmlPullParser.END_TAG) {
19874  if (!parseTerminologyCapabilitiesContent(eventType, xpp, res))
19875        unknownContent(xpp);
19876      eventType = nextNoWhitespace(xpp);
19877    }
19878    next(xpp);
19879    parseElementClose(res);
19880    return res;
19881  }
19882
19883  protected boolean parseTerminologyCapabilitiesContent(int eventType, XmlPullParser xpp, TerminologyCapabilities res) throws XmlPullParserException, IOException, FHIRFormatError {
19884      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19885        res.setUrlElement(parseUri(xpp));
19886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19887        res.setVersionElement(parseString(xpp));
19888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19889        res.setNameElement(parseString(xpp));
19890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19891        res.setTitleElement(parseString(xpp));
19892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19893        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19895        res.setExperimentalElement(parseBoolean(xpp));
19896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19897        res.setDateElement(parseDateTime(xpp));
19898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19899        res.setPublisherElement(parseString(xpp));
19900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19901        res.getContact().add(parseContactDetail(xpp));
19902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19903        res.setDescriptionElement(parseMarkdown(xpp));
19904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19905        res.getUseContext().add(parseUsageContext(xpp));
19906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19907        res.getJurisdiction().add(parseCodeableConcept(xpp));
19908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19909        res.setPurposeElement(parseMarkdown(xpp));
19910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19911        res.setCopyrightElement(parseMarkdown(xpp));
19912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
19913        res.setLockedDateElement(parseBoolean(xpp));
19914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
19915        res.getCodeSystem().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(xpp, res));
19916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
19917        res.setExpansion(parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(xpp, res));
19918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSearch")) {
19919        res.setCodeSearchElement(parseEnumeration(xpp, TerminologyCapabilities.CodeSearchSupport.NULL, new TerminologyCapabilities.CodeSearchSupportEnumFactory()));
19920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateCode")) {
19921        res.setValidateCode(parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(xpp, res));
19922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
19923        res.setTranslation(parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(xpp, res));
19924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closure")) {
19925        res.setClosure(parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(xpp, res));
19926      } else if (!parseDomainResourceContent(eventType, xpp, res))
19927        return false;
19928    return true;
19929  }
19930
19931  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
19932    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent();
19933    parseBackboneAttributes(xpp, res);
19934    next(xpp);
19935    int eventType = nextNoWhitespace(xpp);
19936    while (eventType != XmlPullParser.END_TAG) {
19937  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(eventType, xpp, owner, res))
19938        unknownContent(xpp);
19939      eventType = nextNoWhitespace(xpp);
19940    }
19941    next(xpp);
19942    parseElementClose(res);
19943    return res;
19944  }
19945
19946  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19947      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
19948        res.setUriElement(parseCanonical(xpp));
19949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19950        res.getVersion().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(xpp, owner));
19951      } else if (!parseBackboneElementContent(eventType, xpp, res))
19952        return false;
19953    return true;
19954  }
19955
19956  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
19957    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent();
19958    parseBackboneAttributes(xpp, res);
19959    next(xpp);
19960    int eventType = nextNoWhitespace(xpp);
19961    while (eventType != XmlPullParser.END_TAG) {
19962  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(eventType, xpp, owner, res))
19963        unknownContent(xpp);
19964      eventType = nextNoWhitespace(xpp);
19965    }
19966    next(xpp);
19967    parseElementClose(res);
19968    return res;
19969  }
19970
19971  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19972      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19973        res.setCodeElement(parseString(xpp));
19974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefault")) {
19975        res.setIsDefaultElement(parseBoolean(xpp));
19976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
19977        res.setCompositionalElement(parseBoolean(xpp));
19978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
19979        res.getLanguage().add(parseCode(xpp));
19980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
19981        res.getFilter().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(xpp, owner));
19982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
19983        res.getProperty().add(parseCode(xpp));
19984      } else if (!parseBackboneElementContent(eventType, xpp, res))
19985        return false;
19986    return true;
19987  }
19988
19989  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
19990    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent();
19991    parseBackboneAttributes(xpp, res);
19992    next(xpp);
19993    int eventType = nextNoWhitespace(xpp);
19994    while (eventType != XmlPullParser.END_TAG) {
19995  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(eventType, xpp, owner, res))
19996        unknownContent(xpp);
19997      eventType = nextNoWhitespace(xpp);
19998    }
19999    next(xpp);
20000    parseElementClose(res);
20001    return res;
20002  }
20003
20004  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20005      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20006        res.setCodeElement(parseCode(xpp));
20007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
20008        res.getOp().add(parseCode(xpp));
20009      } else if (!parseBackboneElementContent(eventType, xpp, res))
20010        return false;
20011    return true;
20012  }
20013
20014  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
20015    TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent();
20016    parseBackboneAttributes(xpp, res);
20017    next(xpp);
20018    int eventType = nextNoWhitespace(xpp);
20019    while (eventType != XmlPullParser.END_TAG) {
20020  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(eventType, xpp, owner, res))
20021        unknownContent(xpp);
20022      eventType = nextNoWhitespace(xpp);
20023    }
20024    next(xpp);
20025    parseElementClose(res);
20026    return res;
20027  }
20028
20029  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20030      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchical")) {
20031        res.setHierarchicalElement(parseBoolean(xpp));
20032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paging")) {
20033        res.setPagingElement(parseBoolean(xpp));
20034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomplete")) {
20035        res.setIncompleteElement(parseBoolean(xpp));
20036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
20037        res.setDefinitionElement(parseCanonical(xpp));
20038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
20039        res.getProfile().add(parseCanonical(xpp));
20040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textFilter")) {
20041        res.setTextFilterElement(parseMarkdown(xpp));
20042      } else if (!parseBackboneElementContent(eventType, xpp, res))
20043        return false;
20044    return true;
20045  }
20046
20047  protected TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
20048    TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res = new TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent();
20049    parseBackboneAttributes(xpp, res);
20050    next(xpp);
20051    int eventType = nextNoWhitespace(xpp);
20052    while (eventType != XmlPullParser.END_TAG) {
20053  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(eventType, xpp, owner, res))
20054        unknownContent(xpp);
20055      eventType = nextNoWhitespace(xpp);
20056    }
20057    next(xpp);
20058    parseElementClose(res);
20059    return res;
20060  }
20061
20062  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20063      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translations")) {
20064        res.setTranslationsElement(parseBoolean(xpp));
20065      } else if (!parseBackboneElementContent(eventType, xpp, res))
20066        return false;
20067    return true;
20068  }
20069
20070  protected TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
20071    TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent();
20072    parseBackboneAttributes(xpp, res);
20073    next(xpp);
20074    int eventType = nextNoWhitespace(xpp);
20075    while (eventType != XmlPullParser.END_TAG) {
20076  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(eventType, xpp, owner, res))
20077        unknownContent(xpp);
20078      eventType = nextNoWhitespace(xpp);
20079    }
20080    next(xpp);
20081    parseElementClose(res);
20082    return res;
20083  }
20084
20085  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20086      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("needsMap")) {
20087        res.setNeedsMapElement(parseBoolean(xpp));
20088      } else if (!parseBackboneElementContent(eventType, xpp, res))
20089        return false;
20090    return true;
20091  }
20092
20093  protected TerminologyCapabilities.TerminologyCapabilitiesClosureComponent parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
20094    TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res = new TerminologyCapabilities.TerminologyCapabilitiesClosureComponent();
20095    parseBackboneAttributes(xpp, res);
20096    next(xpp);
20097    int eventType = nextNoWhitespace(xpp);
20098    while (eventType != XmlPullParser.END_TAG) {
20099  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(eventType, xpp, owner, res))
20100        unknownContent(xpp);
20101      eventType = nextNoWhitespace(xpp);
20102    }
20103    next(xpp);
20104    parseElementClose(res);
20105    return res;
20106  }
20107
20108  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20109      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
20110        res.setTranslationElement(parseBoolean(xpp));
20111      } else if (!parseBackboneElementContent(eventType, xpp, res))
20112        return false;
20113    return true;
20114  }
20115
20116  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20117    TestReport res = new TestReport();
20118    parseDomainResourceAttributes(xpp, res);
20119    next(xpp);
20120    int eventType = nextNoWhitespace(xpp);
20121    while (eventType != XmlPullParser.END_TAG) {
20122  if (!parseTestReportContent(eventType, xpp, res))
20123        unknownContent(xpp);
20124      eventType = nextNoWhitespace(xpp);
20125    }
20126    next(xpp);
20127    parseElementClose(res);
20128    return res;
20129  }
20130
20131  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
20132      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20133        res.setIdentifier(parseIdentifier(xpp));
20134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20135        res.setNameElement(parseString(xpp));
20136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20137        res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
20138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
20139        res.setTestScript(parseReference(xpp));
20140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
20141        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
20142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
20143        res.setScoreElement(parseDecimal(xpp));
20144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
20145        res.setTesterElement(parseString(xpp));
20146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
20147        res.setIssuedElement(parseDateTime(xpp));
20148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
20149        res.getParticipant().add(parseTestReportTestReportParticipantComponent(xpp, res));
20150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
20151        res.setSetup(parseTestReportTestReportSetupComponent(xpp, res));
20152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
20153        res.getTest().add(parseTestReportTestReportTestComponent(xpp, res));
20154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
20155        res.setTeardown(parseTestReportTestReportTeardownComponent(xpp, res));
20156      } else if (!parseDomainResourceContent(eventType, xpp, res))
20157        return false;
20158    return true;
20159  }
20160
20161  protected TestReport.TestReportParticipantComponent parseTestReportTestReportParticipantComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
20162    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
20163    parseBackboneAttributes(xpp, res);
20164    next(xpp);
20165    int eventType = nextNoWhitespace(xpp);
20166    while (eventType != XmlPullParser.END_TAG) {
20167  if (!parseTestReportTestReportParticipantComponentContent(eventType, xpp, owner, res))
20168        unknownContent(xpp);
20169      eventType = nextNoWhitespace(xpp);
20170    }
20171    next(xpp);
20172    parseElementClose(res);
20173    return res;
20174  }
20175
20176  protected boolean parseTestReportTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20177      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20178        res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
20179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
20180        res.setUriElement(parseUri(xpp));
20181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
20182        res.setDisplayElement(parseString(xpp));
20183      } else if (!parseBackboneElementContent(eventType, xpp, res))
20184        return false;
20185    return true;
20186  }
20187
20188  protected TestReport.TestReportSetupComponent parseTestReportTestReportSetupComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
20189    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
20190    parseBackboneAttributes(xpp, res);
20191    next(xpp);
20192    int eventType = nextNoWhitespace(xpp);
20193    while (eventType != XmlPullParser.END_TAG) {
20194  if (!parseTestReportTestReportSetupComponentContent(eventType, xpp, owner, res))
20195        unknownContent(xpp);
20196      eventType = nextNoWhitespace(xpp);
20197    }
20198    next(xpp);
20199    parseElementClose(res);
20200    return res;
20201  }
20202
20203  protected boolean parseTestReportTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20204      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
20205        res.getAction().add(parseTestReportSetupActionComponent(xpp, owner));
20206      } else if (!parseBackboneElementContent(eventType, xpp, res))
20207        return false;
20208    return true;
20209  }
20210
20211  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
20212    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
20213    parseBackboneAttributes(xpp, res);
20214    next(xpp);
20215    int eventType = nextNoWhitespace(xpp);
20216    while (eventType != XmlPullParser.END_TAG) {
20217  if (!parseTestReportSetupActionComponentContent(eventType, xpp, owner, res))
20218        unknownContent(xpp);
20219      eventType = nextNoWhitespace(xpp);
20220    }
20221    next(xpp);
20222    parseElementClose(res);
20223    return res;
20224  }
20225
20226  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20227      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
20228        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
20229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
20230        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
20231      } else if (!parseBackboneElementContent(eventType, xpp, res))
20232        return false;
20233    return true;
20234  }
20235
20236  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
20237    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
20238    parseBackboneAttributes(xpp, res);
20239    next(xpp);
20240    int eventType = nextNoWhitespace(xpp);
20241    while (eventType != XmlPullParser.END_TAG) {
20242  if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, owner, res))
20243        unknownContent(xpp);
20244      eventType = nextNoWhitespace(xpp);
20245    }
20246    next(xpp);
20247    parseElementClose(res);
20248    return res;
20249  }
20250
20251  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20252      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
20253        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
20254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
20255        res.setMessageElement(parseMarkdown(xpp));
20256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
20257        res.setDetailElement(parseUri(xpp));
20258      } else if (!parseBackboneElementContent(eventType, xpp, res))
20259        return false;
20260    return true;
20261  }
20262
20263  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
20264    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
20265    parseBackboneAttributes(xpp, res);
20266    next(xpp);
20267    int eventType = nextNoWhitespace(xpp);
20268    while (eventType != XmlPullParser.END_TAG) {
20269  if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, owner, res))
20270        unknownContent(xpp);
20271      eventType = nextNoWhitespace(xpp);
20272    }
20273    next(xpp);
20274    parseElementClose(res);
20275    return res;
20276  }
20277
20278  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20279      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
20280        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
20281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
20282        res.setMessageElement(parseMarkdown(xpp));
20283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
20284        res.setDetailElement(parseString(xpp));
20285      } else if (!parseBackboneElementContent(eventType, xpp, res))
20286        return false;
20287    return true;
20288  }
20289
20290  protected TestReport.TestReportTestComponent parseTestReportTestReportTestComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
20291    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
20292    parseBackboneAttributes(xpp, res);
20293    next(xpp);
20294    int eventType = nextNoWhitespace(xpp);
20295    while (eventType != XmlPullParser.END_TAG) {
20296  if (!parseTestReportTestReportTestComponentContent(eventType, xpp, owner, res))
20297        unknownContent(xpp);
20298      eventType = nextNoWhitespace(xpp);
20299    }
20300    next(xpp);
20301    parseElementClose(res);
20302    return res;
20303  }
20304
20305  protected boolean parseTestReportTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20306      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20307        res.setNameElement(parseString(xpp));
20308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20309        res.setDescriptionElement(parseString(xpp));
20310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
20311        res.getAction().add(parseTestReportTestActionComponent(xpp, owner));
20312      } else if (!parseBackboneElementContent(eventType, xpp, res))
20313        return false;
20314    return true;
20315  }
20316
20317  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
20318    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
20319    parseBackboneAttributes(xpp, res);
20320    next(xpp);
20321    int eventType = nextNoWhitespace(xpp);
20322    while (eventType != XmlPullParser.END_TAG) {
20323  if (!parseTestReportTestActionComponentContent(eventType, xpp, owner, res))
20324        unknownContent(xpp);
20325      eventType = nextNoWhitespace(xpp);
20326    }
20327    next(xpp);
20328    parseElementClose(res);
20329    return res;
20330  }
20331
20332  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20333      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
20334        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
20335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
20336        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
20337      } else if (!parseBackboneElementContent(eventType, xpp, res))
20338        return false;
20339    return true;
20340  }
20341
20342  protected TestReport.TestReportTeardownComponent parseTestReportTestReportTeardownComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
20343    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
20344    parseBackboneAttributes(xpp, res);
20345    next(xpp);
20346    int eventType = nextNoWhitespace(xpp);
20347    while (eventType != XmlPullParser.END_TAG) {
20348  if (!parseTestReportTestReportTeardownComponentContent(eventType, xpp, owner, res))
20349        unknownContent(xpp);
20350      eventType = nextNoWhitespace(xpp);
20351    }
20352    next(xpp);
20353    parseElementClose(res);
20354    return res;
20355  }
20356
20357  protected boolean parseTestReportTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20358      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
20359        res.getAction().add(parseTestReportTeardownActionComponent(xpp, owner));
20360      } else if (!parseBackboneElementContent(eventType, xpp, res))
20361        return false;
20362    return true;
20363  }
20364
20365  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
20366    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
20367    parseBackboneAttributes(xpp, res);
20368    next(xpp);
20369    int eventType = nextNoWhitespace(xpp);
20370    while (eventType != XmlPullParser.END_TAG) {
20371  if (!parseTestReportTeardownActionComponentContent(eventType, xpp, owner, res))
20372        unknownContent(xpp);
20373      eventType = nextNoWhitespace(xpp);
20374    }
20375    next(xpp);
20376    parseElementClose(res);
20377    return res;
20378  }
20379
20380  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20381      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
20382        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
20383      } else if (!parseBackboneElementContent(eventType, xpp, res))
20384        return false;
20385    return true;
20386  }
20387
20388  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20389    TestScript res = new TestScript();
20390    parseDomainResourceAttributes(xpp, res);
20391    next(xpp);
20392    int eventType = nextNoWhitespace(xpp);
20393    while (eventType != XmlPullParser.END_TAG) {
20394  if (!parseTestScriptContent(eventType, xpp, res))
20395        unknownContent(xpp);
20396      eventType = nextNoWhitespace(xpp);
20397    }
20398    next(xpp);
20399    parseElementClose(res);
20400    return res;
20401  }
20402
20403  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
20404      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20405        res.setUrlElement(parseUri(xpp));
20406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20407        res.setIdentifier(parseIdentifier(xpp));
20408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
20409        res.setVersionElement(parseString(xpp));
20410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20411        res.setNameElement(parseString(xpp));
20412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
20413        res.setTitleElement(parseString(xpp));
20414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20415        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
20416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
20417        res.setExperimentalElement(parseBoolean(xpp));
20418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
20419        res.setDateElement(parseDateTime(xpp));
20420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
20421        res.setPublisherElement(parseString(xpp));
20422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20423        res.getContact().add(parseContactDetail(xpp));
20424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20425        res.setDescriptionElement(parseMarkdown(xpp));
20426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
20427        res.getUseContext().add(parseUsageContext(xpp));
20428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
20429        res.getJurisdiction().add(parseCodeableConcept(xpp));
20430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
20431        res.setPurposeElement(parseMarkdown(xpp));
20432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
20433        res.setCopyrightElement(parseMarkdown(xpp));
20434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
20435        res.getOrigin().add(parseTestScriptTestScriptOriginComponent(xpp, res));
20436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
20437        res.getDestination().add(parseTestScriptTestScriptDestinationComponent(xpp, res));
20438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
20439        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
20440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
20441        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
20442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
20443        res.getProfile().add(parseReference(xpp));
20444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20445        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
20446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
20447        res.getRule().add(parseTestScriptTestScriptRuleComponent(xpp, res));
20448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
20449        res.getRuleset().add(parseTestScriptTestScriptRulesetComponent(xpp, res));
20450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
20451        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
20452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
20453        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
20454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
20455        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
20456      } else if (!parseDomainResourceContent(eventType, xpp, res))
20457        return false;
20458    return true;
20459  }
20460
20461  protected TestScript.TestScriptOriginComponent parseTestScriptTestScriptOriginComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20462    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
20463    parseBackboneAttributes(xpp, res);
20464    next(xpp);
20465    int eventType = nextNoWhitespace(xpp);
20466    while (eventType != XmlPullParser.END_TAG) {
20467  if (!parseTestScriptTestScriptOriginComponentContent(eventType, xpp, owner, res))
20468        unknownContent(xpp);
20469      eventType = nextNoWhitespace(xpp);
20470    }
20471    next(xpp);
20472    parseElementClose(res);
20473    return res;
20474  }
20475
20476  protected boolean parseTestScriptTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
20478        res.setIndexElement(parseInteger(xpp));
20479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
20480        res.setProfile(parseCoding(xpp));
20481      } else if (!parseBackboneElementContent(eventType, xpp, res))
20482        return false;
20483    return true;
20484  }
20485
20486  protected TestScript.TestScriptDestinationComponent parseTestScriptTestScriptDestinationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20487    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
20488    parseBackboneAttributes(xpp, res);
20489    next(xpp);
20490    int eventType = nextNoWhitespace(xpp);
20491    while (eventType != XmlPullParser.END_TAG) {
20492  if (!parseTestScriptTestScriptDestinationComponentContent(eventType, xpp, owner, res))
20493        unknownContent(xpp);
20494      eventType = nextNoWhitespace(xpp);
20495    }
20496    next(xpp);
20497    parseElementClose(res);
20498    return res;
20499  }
20500
20501  protected boolean parseTestScriptTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20502      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
20503        res.setIndexElement(parseInteger(xpp));
20504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
20505        res.setProfile(parseCoding(xpp));
20506      } else if (!parseBackboneElementContent(eventType, xpp, res))
20507        return false;
20508    return true;
20509  }
20510
20511  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20512    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
20513    parseBackboneAttributes(xpp, res);
20514    next(xpp);
20515    int eventType = nextNoWhitespace(xpp);
20516    while (eventType != XmlPullParser.END_TAG) {
20517  if (!parseTestScriptTestScriptMetadataComponentContent(eventType, xpp, owner, res))
20518        unknownContent(xpp);
20519      eventType = nextNoWhitespace(xpp);
20520    }
20521    next(xpp);
20522    parseElementClose(res);
20523    return res;
20524  }
20525
20526  protected boolean parseTestScriptTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20527      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
20528        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
20529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
20530        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
20531      } else if (!parseBackboneElementContent(eventType, xpp, res))
20532        return false;
20533    return true;
20534  }
20535
20536  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20537    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
20538    parseBackboneAttributes(xpp, res);
20539    next(xpp);
20540    int eventType = nextNoWhitespace(xpp);
20541    while (eventType != XmlPullParser.END_TAG) {
20542  if (!parseTestScriptTestScriptMetadataLinkComponentContent(eventType, xpp, owner, res))
20543        unknownContent(xpp);
20544      eventType = nextNoWhitespace(xpp);
20545    }
20546    next(xpp);
20547    parseElementClose(res);
20548    return res;
20549  }
20550
20551  protected boolean parseTestScriptTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20552      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20553        res.setUrlElement(parseUri(xpp));
20554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20555        res.setDescriptionElement(parseString(xpp));
20556      } else if (!parseBackboneElementContent(eventType, xpp, res))
20557        return false;
20558    return true;
20559  }
20560
20561  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20562    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
20563    parseBackboneAttributes(xpp, res);
20564    next(xpp);
20565    int eventType = nextNoWhitespace(xpp);
20566    while (eventType != XmlPullParser.END_TAG) {
20567  if (!parseTestScriptTestScriptMetadataCapabilityComponentContent(eventType, xpp, owner, res))
20568        unknownContent(xpp);
20569      eventType = nextNoWhitespace(xpp);
20570    }
20571    next(xpp);
20572    parseElementClose(res);
20573    return res;
20574  }
20575
20576  protected boolean parseTestScriptTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20577      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
20578        res.setRequiredElement(parseBoolean(xpp));
20579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
20580        res.setValidatedElement(parseBoolean(xpp));
20581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20582        res.setDescriptionElement(parseString(xpp));
20583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
20584        res.getOrigin().add(parseInteger(xpp));
20585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
20586        res.setDestinationElement(parseInteger(xpp));
20587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
20588        res.getLink().add(parseUri(xpp));
20589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
20590        res.setCapabilitiesElement(parseCanonical(xpp));
20591      } else if (!parseBackboneElementContent(eventType, xpp, res))
20592        return false;
20593    return true;
20594  }
20595
20596  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20597    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
20598    parseBackboneAttributes(xpp, res);
20599    next(xpp);
20600    int eventType = nextNoWhitespace(xpp);
20601    while (eventType != XmlPullParser.END_TAG) {
20602  if (!parseTestScriptTestScriptFixtureComponentContent(eventType, xpp, owner, res))
20603        unknownContent(xpp);
20604      eventType = nextNoWhitespace(xpp);
20605    }
20606    next(xpp);
20607    parseElementClose(res);
20608    return res;
20609  }
20610
20611  protected boolean parseTestScriptTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20612      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
20613        res.setAutocreateElement(parseBoolean(xpp));
20614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
20615        res.setAutodeleteElement(parseBoolean(xpp));
20616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
20617        res.setResource(parseReference(xpp));
20618      } else if (!parseBackboneElementContent(eventType, xpp, res))
20619        return false;
20620    return true;
20621  }
20622
20623  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20624    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
20625    parseBackboneAttributes(xpp, res);
20626    next(xpp);
20627    int eventType = nextNoWhitespace(xpp);
20628    while (eventType != XmlPullParser.END_TAG) {
20629  if (!parseTestScriptTestScriptVariableComponentContent(eventType, xpp, owner, res))
20630        unknownContent(xpp);
20631      eventType = nextNoWhitespace(xpp);
20632    }
20633    next(xpp);
20634    parseElementClose(res);
20635    return res;
20636  }
20637
20638  protected boolean parseTestScriptTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20639      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20640        res.setNameElement(parseString(xpp));
20641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
20642        res.setDefaultValueElement(parseString(xpp));
20643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20644        res.setDescriptionElement(parseString(xpp));
20645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
20646        res.setExpressionElement(parseString(xpp));
20647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
20648        res.setHeaderFieldElement(parseString(xpp));
20649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
20650        res.setHintElement(parseString(xpp));
20651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
20652        res.setPathElement(parseString(xpp));
20653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
20654        res.setSourceIdElement(parseId(xpp));
20655      } else if (!parseBackboneElementContent(eventType, xpp, res))
20656        return false;
20657    return true;
20658  }
20659
20660  protected TestScript.TestScriptRuleComponent parseTestScriptTestScriptRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20661    TestScript.TestScriptRuleComponent res = new TestScript.TestScriptRuleComponent();
20662    parseBackboneAttributes(xpp, res);
20663    next(xpp);
20664    int eventType = nextNoWhitespace(xpp);
20665    while (eventType != XmlPullParser.END_TAG) {
20666  if (!parseTestScriptTestScriptRuleComponentContent(eventType, xpp, owner, res))
20667        unknownContent(xpp);
20668      eventType = nextNoWhitespace(xpp);
20669    }
20670    next(xpp);
20671    parseElementClose(res);
20672    return res;
20673  }
20674
20675  protected boolean parseTestScriptTestScriptRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20676      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
20677        res.setResource(parseReference(xpp));
20678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
20679        res.getParam().add(parseTestScriptRuleParamComponent(xpp, owner));
20680      } else if (!parseBackboneElementContent(eventType, xpp, res))
20681        return false;
20682    return true;
20683  }
20684
20685  protected TestScript.RuleParamComponent parseTestScriptRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20686    TestScript.RuleParamComponent res = new TestScript.RuleParamComponent();
20687    parseBackboneAttributes(xpp, res);
20688    next(xpp);
20689    int eventType = nextNoWhitespace(xpp);
20690    while (eventType != XmlPullParser.END_TAG) {
20691  if (!parseTestScriptRuleParamComponentContent(eventType, xpp, owner, res))
20692        unknownContent(xpp);
20693      eventType = nextNoWhitespace(xpp);
20694    }
20695    next(xpp);
20696    parseElementClose(res);
20697    return res;
20698  }
20699
20700  protected boolean parseTestScriptRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20701      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20702        res.setNameElement(parseString(xpp));
20703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
20704        res.setValueElement(parseString(xpp));
20705      } else if (!parseBackboneElementContent(eventType, xpp, res))
20706        return false;
20707    return true;
20708  }
20709
20710  protected TestScript.TestScriptRulesetComponent parseTestScriptTestScriptRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20711    TestScript.TestScriptRulesetComponent res = new TestScript.TestScriptRulesetComponent();
20712    parseBackboneAttributes(xpp, res);
20713    next(xpp);
20714    int eventType = nextNoWhitespace(xpp);
20715    while (eventType != XmlPullParser.END_TAG) {
20716  if (!parseTestScriptTestScriptRulesetComponentContent(eventType, xpp, owner, res))
20717        unknownContent(xpp);
20718      eventType = nextNoWhitespace(xpp);
20719    }
20720    next(xpp);
20721    parseElementClose(res);
20722    return res;
20723  }
20724
20725  protected boolean parseTestScriptTestScriptRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20726      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
20727        res.setResource(parseReference(xpp));
20728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
20729        res.getRule().add(parseTestScriptRulesetRuleComponent(xpp, owner));
20730      } else if (!parseBackboneElementContent(eventType, xpp, res))
20731        return false;
20732    return true;
20733  }
20734
20735  protected TestScript.RulesetRuleComponent parseTestScriptRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20736    TestScript.RulesetRuleComponent res = new TestScript.RulesetRuleComponent();
20737    parseBackboneAttributes(xpp, res);
20738    next(xpp);
20739    int eventType = nextNoWhitespace(xpp);
20740    while (eventType != XmlPullParser.END_TAG) {
20741  if (!parseTestScriptRulesetRuleComponentContent(eventType, xpp, owner, res))
20742        unknownContent(xpp);
20743      eventType = nextNoWhitespace(xpp);
20744    }
20745    next(xpp);
20746    parseElementClose(res);
20747    return res;
20748  }
20749
20750  protected boolean parseTestScriptRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
20752        res.setRuleIdElement(parseId(xpp));
20753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
20754        res.getParam().add(parseTestScriptRulesetRuleParamComponent(xpp, owner));
20755      } else if (!parseBackboneElementContent(eventType, xpp, res))
20756        return false;
20757    return true;
20758  }
20759
20760  protected TestScript.RulesetRuleParamComponent parseTestScriptRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20761    TestScript.RulesetRuleParamComponent res = new TestScript.RulesetRuleParamComponent();
20762    parseBackboneAttributes(xpp, res);
20763    next(xpp);
20764    int eventType = nextNoWhitespace(xpp);
20765    while (eventType != XmlPullParser.END_TAG) {
20766  if (!parseTestScriptRulesetRuleParamComponentContent(eventType, xpp, owner, res))
20767        unknownContent(xpp);
20768      eventType = nextNoWhitespace(xpp);
20769    }
20770    next(xpp);
20771    parseElementClose(res);
20772    return res;
20773  }
20774
20775  protected boolean parseTestScriptRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20776      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20777        res.setNameElement(parseString(xpp));
20778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
20779        res.setValueElement(parseString(xpp));
20780      } else if (!parseBackboneElementContent(eventType, xpp, res))
20781        return false;
20782    return true;
20783  }
20784
20785  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20786    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
20787    parseBackboneAttributes(xpp, res);
20788    next(xpp);
20789    int eventType = nextNoWhitespace(xpp);
20790    while (eventType != XmlPullParser.END_TAG) {
20791  if (!parseTestScriptTestScriptSetupComponentContent(eventType, xpp, owner, res))
20792        unknownContent(xpp);
20793      eventType = nextNoWhitespace(xpp);
20794    }
20795    next(xpp);
20796    parseElementClose(res);
20797    return res;
20798  }
20799
20800  protected boolean parseTestScriptTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20801      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
20802        res.getAction().add(parseTestScriptSetupActionComponent(xpp, owner));
20803      } else if (!parseBackboneElementContent(eventType, xpp, res))
20804        return false;
20805    return true;
20806  }
20807
20808  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20809    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
20810    parseBackboneAttributes(xpp, res);
20811    next(xpp);
20812    int eventType = nextNoWhitespace(xpp);
20813    while (eventType != XmlPullParser.END_TAG) {
20814  if (!parseTestScriptSetupActionComponentContent(eventType, xpp, owner, res))
20815        unknownContent(xpp);
20816      eventType = nextNoWhitespace(xpp);
20817    }
20818    next(xpp);
20819    parseElementClose(res);
20820    return res;
20821  }
20822
20823  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20824      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
20825        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
20826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
20827        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
20828      } else if (!parseBackboneElementContent(eventType, xpp, res))
20829        return false;
20830    return true;
20831  }
20832
20833  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20834    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
20835    parseBackboneAttributes(xpp, res);
20836    next(xpp);
20837    int eventType = nextNoWhitespace(xpp);
20838    while (eventType != XmlPullParser.END_TAG) {
20839  if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, owner, res))
20840        unknownContent(xpp);
20841      eventType = nextNoWhitespace(xpp);
20842    }
20843    next(xpp);
20844    parseElementClose(res);
20845    return res;
20846  }
20847
20848  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20849      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20850        res.setType(parseCoding(xpp));
20851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
20852        res.setResourceElement(parseCode(xpp));
20853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
20854        res.setLabelElement(parseString(xpp));
20855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20856        res.setDescriptionElement(parseString(xpp));
20857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
20858        res.setAcceptElement(parseCode(xpp));
20859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
20860        res.setContentTypeElement(parseCode(xpp));
20861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
20862        res.setDestinationElement(parseInteger(xpp));
20863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
20864        res.setEncodeRequestUrlElement(parseBoolean(xpp));
20865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
20866        res.setOriginElement(parseInteger(xpp));
20867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
20868        res.setParamsElement(parseString(xpp));
20869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
20870        res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
20871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
20872        res.setRequestIdElement(parseId(xpp));
20873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
20874        res.setResponseIdElement(parseId(xpp));
20875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
20876        res.setSourceIdElement(parseId(xpp));
20877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
20878        res.setTargetIdElement(parseId(xpp));
20879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20880        res.setUrlElement(parseString(xpp));
20881      } else if (!parseBackboneElementContent(eventType, xpp, res))
20882        return false;
20883    return true;
20884  }
20885
20886  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20887    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
20888    parseBackboneAttributes(xpp, res);
20889    next(xpp);
20890    int eventType = nextNoWhitespace(xpp);
20891    while (eventType != XmlPullParser.END_TAG) {
20892  if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, owner, res))
20893        unknownContent(xpp);
20894      eventType = nextNoWhitespace(xpp);
20895    }
20896    next(xpp);
20897    parseElementClose(res);
20898    return res;
20899  }
20900
20901  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20902      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
20903        res.setFieldElement(parseString(xpp));
20904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
20905        res.setValueElement(parseString(xpp));
20906      } else if (!parseBackboneElementContent(eventType, xpp, res))
20907        return false;
20908    return true;
20909  }
20910
20911  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20912    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
20913    parseBackboneAttributes(xpp, res);
20914    next(xpp);
20915    int eventType = nextNoWhitespace(xpp);
20916    while (eventType != XmlPullParser.END_TAG) {
20917  if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, owner, res))
20918        unknownContent(xpp);
20919      eventType = nextNoWhitespace(xpp);
20920    }
20921    next(xpp);
20922    parseElementClose(res);
20923    return res;
20924  }
20925
20926  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20927      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
20928        res.setLabelElement(parseString(xpp));
20929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20930        res.setDescriptionElement(parseString(xpp));
20931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
20932        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
20933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
20934        res.setCompareToSourceIdElement(parseString(xpp));
20935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
20936        res.setCompareToSourceExpressionElement(parseString(xpp));
20937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
20938        res.setCompareToSourcePathElement(parseString(xpp));
20939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
20940        res.setContentTypeElement(parseCode(xpp));
20941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
20942        res.setExpressionElement(parseString(xpp));
20943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
20944        res.setHeaderFieldElement(parseString(xpp));
20945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
20946        res.setMinimumIdElement(parseString(xpp));
20947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
20948        res.setNavigationLinksElement(parseBoolean(xpp));
20949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
20950        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
20951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
20952        res.setPathElement(parseString(xpp));
20953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
20954        res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
20955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
20956        res.setRequestURLElement(parseString(xpp));
20957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
20958        res.setResourceElement(parseCode(xpp));
20959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
20960        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
20961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
20962        res.setResponseCodeElement(parseString(xpp));
20963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
20964        res.setRule(parseTestScriptActionAssertRuleComponent(xpp, owner));
20965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
20966        res.setRuleset(parseTestScriptActionAssertRulesetComponent(xpp, owner));
20967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
20968        res.setSourceIdElement(parseId(xpp));
20969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
20970        res.setValidateProfileIdElement(parseId(xpp));
20971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
20972        res.setValueElement(parseString(xpp));
20973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
20974        res.setWarningOnlyElement(parseBoolean(xpp));
20975      } else if (!parseBackboneElementContent(eventType, xpp, res))
20976        return false;
20977    return true;
20978  }
20979
20980  protected TestScript.ActionAssertRuleComponent parseTestScriptActionAssertRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
20981    TestScript.ActionAssertRuleComponent res = new TestScript.ActionAssertRuleComponent();
20982    parseBackboneAttributes(xpp, res);
20983    next(xpp);
20984    int eventType = nextNoWhitespace(xpp);
20985    while (eventType != XmlPullParser.END_TAG) {
20986  if (!parseTestScriptActionAssertRuleComponentContent(eventType, xpp, owner, res))
20987        unknownContent(xpp);
20988      eventType = nextNoWhitespace(xpp);
20989    }
20990    next(xpp);
20991    parseElementClose(res);
20992    return res;
20993  }
20994
20995  protected boolean parseTestScriptActionAssertRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20996      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
20997        res.setRuleIdElement(parseId(xpp));
20998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
20999        res.getParam().add(parseTestScriptActionAssertRuleParamComponent(xpp, owner));
21000      } else if (!parseBackboneElementContent(eventType, xpp, res))
21001        return false;
21002    return true;
21003  }
21004
21005  protected TestScript.ActionAssertRuleParamComponent parseTestScriptActionAssertRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21006    TestScript.ActionAssertRuleParamComponent res = new TestScript.ActionAssertRuleParamComponent();
21007    parseBackboneAttributes(xpp, res);
21008    next(xpp);
21009    int eventType = nextNoWhitespace(xpp);
21010    while (eventType != XmlPullParser.END_TAG) {
21011  if (!parseTestScriptActionAssertRuleParamComponentContent(eventType, xpp, owner, res))
21012        unknownContent(xpp);
21013      eventType = nextNoWhitespace(xpp);
21014    }
21015    next(xpp);
21016    parseElementClose(res);
21017    return res;
21018  }
21019
21020  protected boolean parseTestScriptActionAssertRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21021      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21022        res.setNameElement(parseString(xpp));
21023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
21024        res.setValueElement(parseString(xpp));
21025      } else if (!parseBackboneElementContent(eventType, xpp, res))
21026        return false;
21027    return true;
21028  }
21029
21030  protected TestScript.ActionAssertRulesetComponent parseTestScriptActionAssertRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21031    TestScript.ActionAssertRulesetComponent res = new TestScript.ActionAssertRulesetComponent();
21032    parseBackboneAttributes(xpp, res);
21033    next(xpp);
21034    int eventType = nextNoWhitespace(xpp);
21035    while (eventType != XmlPullParser.END_TAG) {
21036  if (!parseTestScriptActionAssertRulesetComponentContent(eventType, xpp, owner, res))
21037        unknownContent(xpp);
21038      eventType = nextNoWhitespace(xpp);
21039    }
21040    next(xpp);
21041    parseElementClose(res);
21042    return res;
21043  }
21044
21045  protected boolean parseTestScriptActionAssertRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21046      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rulesetId")) {
21047        res.setRulesetIdElement(parseId(xpp));
21048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
21049        res.getRule().add(parseTestScriptActionAssertRulesetRuleComponent(xpp, owner));
21050      } else if (!parseBackboneElementContent(eventType, xpp, res))
21051        return false;
21052    return true;
21053  }
21054
21055  protected TestScript.ActionAssertRulesetRuleComponent parseTestScriptActionAssertRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21056    TestScript.ActionAssertRulesetRuleComponent res = new TestScript.ActionAssertRulesetRuleComponent();
21057    parseBackboneAttributes(xpp, res);
21058    next(xpp);
21059    int eventType = nextNoWhitespace(xpp);
21060    while (eventType != XmlPullParser.END_TAG) {
21061  if (!parseTestScriptActionAssertRulesetRuleComponentContent(eventType, xpp, owner, res))
21062        unknownContent(xpp);
21063      eventType = nextNoWhitespace(xpp);
21064    }
21065    next(xpp);
21066    parseElementClose(res);
21067    return res;
21068  }
21069
21070  protected boolean parseTestScriptActionAssertRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21071      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
21072        res.setRuleIdElement(parseId(xpp));
21073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
21074        res.getParam().add(parseTestScriptActionAssertRulesetRuleParamComponent(xpp, owner));
21075      } else if (!parseBackboneElementContent(eventType, xpp, res))
21076        return false;
21077    return true;
21078  }
21079
21080  protected TestScript.ActionAssertRulesetRuleParamComponent parseTestScriptActionAssertRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21081    TestScript.ActionAssertRulesetRuleParamComponent res = new TestScript.ActionAssertRulesetRuleParamComponent();
21082    parseBackboneAttributes(xpp, res);
21083    next(xpp);
21084    int eventType = nextNoWhitespace(xpp);
21085    while (eventType != XmlPullParser.END_TAG) {
21086  if (!parseTestScriptActionAssertRulesetRuleParamComponentContent(eventType, xpp, owner, res))
21087        unknownContent(xpp);
21088      eventType = nextNoWhitespace(xpp);
21089    }
21090    next(xpp);
21091    parseElementClose(res);
21092    return res;
21093  }
21094
21095  protected boolean parseTestScriptActionAssertRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21096      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21097        res.setNameElement(parseString(xpp));
21098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
21099        res.setValueElement(parseString(xpp));
21100      } else if (!parseBackboneElementContent(eventType, xpp, res))
21101        return false;
21102    return true;
21103  }
21104
21105  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21106    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
21107    parseBackboneAttributes(xpp, res);
21108    next(xpp);
21109    int eventType = nextNoWhitespace(xpp);
21110    while (eventType != XmlPullParser.END_TAG) {
21111  if (!parseTestScriptTestScriptTestComponentContent(eventType, xpp, owner, res))
21112        unknownContent(xpp);
21113      eventType = nextNoWhitespace(xpp);
21114    }
21115    next(xpp);
21116    parseElementClose(res);
21117    return res;
21118  }
21119
21120  protected boolean parseTestScriptTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21121      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21122        res.setNameElement(parseString(xpp));
21123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21124        res.setDescriptionElement(parseString(xpp));
21125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
21126        res.getAction().add(parseTestScriptTestActionComponent(xpp, owner));
21127      } else if (!parseBackboneElementContent(eventType, xpp, res))
21128        return false;
21129    return true;
21130  }
21131
21132  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21133    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
21134    parseBackboneAttributes(xpp, res);
21135    next(xpp);
21136    int eventType = nextNoWhitespace(xpp);
21137    while (eventType != XmlPullParser.END_TAG) {
21138  if (!parseTestScriptTestActionComponentContent(eventType, xpp, owner, res))
21139        unknownContent(xpp);
21140      eventType = nextNoWhitespace(xpp);
21141    }
21142    next(xpp);
21143    parseElementClose(res);
21144    return res;
21145  }
21146
21147  protected boolean parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21148      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
21149        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
21150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
21151        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
21152      } else if (!parseBackboneElementContent(eventType, xpp, res))
21153        return false;
21154    return true;
21155  }
21156
21157  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21158    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
21159    parseBackboneAttributes(xpp, res);
21160    next(xpp);
21161    int eventType = nextNoWhitespace(xpp);
21162    while (eventType != XmlPullParser.END_TAG) {
21163  if (!parseTestScriptTestScriptTeardownComponentContent(eventType, xpp, owner, res))
21164        unknownContent(xpp);
21165      eventType = nextNoWhitespace(xpp);
21166    }
21167    next(xpp);
21168    parseElementClose(res);
21169    return res;
21170  }
21171
21172  protected boolean parseTestScriptTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
21174        res.getAction().add(parseTestScriptTeardownActionComponent(xpp, owner));
21175      } else if (!parseBackboneElementContent(eventType, xpp, res))
21176        return false;
21177    return true;
21178  }
21179
21180  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21181    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
21182    parseBackboneAttributes(xpp, res);
21183    next(xpp);
21184    int eventType = nextNoWhitespace(xpp);
21185    while (eventType != XmlPullParser.END_TAG) {
21186  if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, owner, res))
21187        unknownContent(xpp);
21188      eventType = nextNoWhitespace(xpp);
21189    }
21190    next(xpp);
21191    parseElementClose(res);
21192    return res;
21193  }
21194
21195  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21196      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
21197        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
21198      } else if (!parseBackboneElementContent(eventType, xpp, res))
21199        return false;
21200    return true;
21201  }
21202
21203  protected UserSession parseUserSession(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21204    UserSession res = new UserSession();
21205    parseDomainResourceAttributes(xpp, res);
21206    next(xpp);
21207    int eventType = nextNoWhitespace(xpp);
21208    while (eventType != XmlPullParser.END_TAG) {
21209  if (!parseUserSessionContent(eventType, xpp, res))
21210        unknownContent(xpp);
21211      eventType = nextNoWhitespace(xpp);
21212    }
21213    next(xpp);
21214    parseElementClose(res);
21215    return res;
21216  }
21217
21218  protected boolean parseUserSessionContent(int eventType, XmlPullParser xpp, UserSession res) throws XmlPullParserException, IOException, FHIRFormatError {
21219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21220        res.setIdentifier(parseIdentifier(xpp));
21221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("user")) {
21222        res.setUser(parseReference(xpp));
21223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21224        res.setStatus(parseUserSessionUserSessionStatusComponent(xpp, res));
21225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workstation")) {
21226        res.setWorkstation(parseIdentifier(xpp));
21227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
21228        res.getFocus().add(parseReference(xpp));
21229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
21230        res.setCreatedElement(parseInstant(xpp));
21231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expires")) {
21232        res.setExpiresElement(parseInstant(xpp));
21233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
21234        res.getContext().add(parseUserSessionUserSessionContextComponent(xpp, res));
21235      } else if (!parseDomainResourceContent(eventType, xpp, res))
21236        return false;
21237    return true;
21238  }
21239
21240  protected UserSession.UserSessionStatusComponent parseUserSessionUserSessionStatusComponent(XmlPullParser xpp, UserSession owner) throws XmlPullParserException, IOException, FHIRFormatError {
21241    UserSession.UserSessionStatusComponent res = new UserSession.UserSessionStatusComponent();
21242    parseBackboneAttributes(xpp, res);
21243    next(xpp);
21244    int eventType = nextNoWhitespace(xpp);
21245    while (eventType != XmlPullParser.END_TAG) {
21246  if (!parseUserSessionUserSessionStatusComponentContent(eventType, xpp, owner, res))
21247        unknownContent(xpp);
21248      eventType = nextNoWhitespace(xpp);
21249    }
21250    next(xpp);
21251    parseElementClose(res);
21252    return res;
21253  }
21254
21255  protected boolean parseUserSessionUserSessionStatusComponentContent(int eventType, XmlPullParser xpp, UserSession owner, UserSession.UserSessionStatusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21256      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21257        res.setCodeElement(parseEnumeration(xpp, UserSession.UserSessionStatus.NULL, new UserSession.UserSessionStatusEnumFactory()));
21258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21259        res.setSourceElement(parseEnumeration(xpp, UserSession.UserSessionStatusSource.NULL, new UserSession.UserSessionStatusSourceEnumFactory()));
21260      } else if (!parseBackboneElementContent(eventType, xpp, res))
21261        return false;
21262    return true;
21263  }
21264
21265  protected UserSession.UserSessionContextComponent parseUserSessionUserSessionContextComponent(XmlPullParser xpp, UserSession owner) throws XmlPullParserException, IOException, FHIRFormatError {
21266    UserSession.UserSessionContextComponent res = new UserSession.UserSessionContextComponent();
21267    parseBackboneAttributes(xpp, res);
21268    next(xpp);
21269    int eventType = nextNoWhitespace(xpp);
21270    while (eventType != XmlPullParser.END_TAG) {
21271  if (!parseUserSessionUserSessionContextComponentContent(eventType, xpp, owner, res))
21272        unknownContent(xpp);
21273      eventType = nextNoWhitespace(xpp);
21274    }
21275    next(xpp);
21276    parseElementClose(res);
21277    return res;
21278  }
21279
21280  protected boolean parseUserSessionUserSessionContextComponentContent(int eventType, XmlPullParser xpp, UserSession owner, UserSession.UserSessionContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21281      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21282        res.setTypeElement(parseString(xpp));
21283      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21284        res.setValue(parseType("value", xpp));
21285      } else if (!parseBackboneElementContent(eventType, xpp, res))
21286        return false;
21287    return true;
21288  }
21289
21290  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21291    ValueSet res = new ValueSet();
21292    parseDomainResourceAttributes(xpp, res);
21293    next(xpp);
21294    int eventType = nextNoWhitespace(xpp);
21295    while (eventType != XmlPullParser.END_TAG) {
21296  if (!parseValueSetContent(eventType, xpp, res))
21297        unknownContent(xpp);
21298      eventType = nextNoWhitespace(xpp);
21299    }
21300    next(xpp);
21301    parseElementClose(res);
21302    return res;
21303  }
21304
21305  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
21306      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21307        res.setUrlElement(parseUri(xpp));
21308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21309        res.getIdentifier().add(parseIdentifier(xpp));
21310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21311        res.setVersionElement(parseString(xpp));
21312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21313        res.setNameElement(parseString(xpp));
21314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
21315        res.setTitleElement(parseString(xpp));
21316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21317        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
21318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
21319        res.setExperimentalElement(parseBoolean(xpp));
21320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21321        res.setDateElement(parseDateTime(xpp));
21322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
21323        res.setPublisherElement(parseString(xpp));
21324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21325        res.getContact().add(parseContactDetail(xpp));
21326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21327        res.setDescriptionElement(parseMarkdown(xpp));
21328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
21329        res.getUseContext().add(parseUsageContext(xpp));
21330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21331        res.getJurisdiction().add(parseCodeableConcept(xpp));
21332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
21333        res.setImmutableElement(parseBoolean(xpp));
21334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
21335        res.setPurposeElement(parseMarkdown(xpp));
21336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
21337        res.setCopyrightElement(parseMarkdown(xpp));
21338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extensible")) {
21339        res.setExtensibleElement(parseBoolean(xpp));
21340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
21341        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
21342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
21343        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
21344      } else if (!parseDomainResourceContent(eventType, xpp, res))
21345        return false;
21346    return true;
21347  }
21348
21349  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
21350    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
21351    parseBackboneAttributes(xpp, res);
21352    next(xpp);
21353    int eventType = nextNoWhitespace(xpp);
21354    while (eventType != XmlPullParser.END_TAG) {
21355  if (!parseValueSetValueSetComposeComponentContent(eventType, xpp, owner, res))
21356        unknownContent(xpp);
21357      eventType = nextNoWhitespace(xpp);
21358    }
21359    next(xpp);
21360    parseElementClose(res);
21361    return res;
21362  }
21363
21364  protected boolean parseValueSetValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21365      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
21366        res.setLockedDateElement(parseDate(xpp));
21367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
21368        res.setInactiveElement(parseBoolean(xpp));
21369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
21370        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
21371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
21372        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
21373      } else if (!parseBackboneElementContent(eventType, xpp, res))
21374        return false;
21375    return true;
21376  }
21377
21378  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
21379    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
21380    parseBackboneAttributes(xpp, res);
21381    next(xpp);
21382    int eventType = nextNoWhitespace(xpp);
21383    while (eventType != XmlPullParser.END_TAG) {
21384  if (!parseValueSetConceptSetComponentContent(eventType, xpp, owner, res))
21385        unknownContent(xpp);
21386      eventType = nextNoWhitespace(xpp);
21387    }
21388    next(xpp);
21389    parseElementClose(res);
21390    return res;
21391  }
21392
21393  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21394      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
21395        res.setSystemElement(parseUri(xpp));
21396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21397        res.setVersionElement(parseString(xpp));
21398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
21399        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
21400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
21401        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
21402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
21403        res.getValueSet().add(parseCanonical(xpp));
21404      } else if (!parseBackboneElementContent(eventType, xpp, res))
21405        return false;
21406    return true;
21407  }
21408
21409  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
21410    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
21411    parseBackboneAttributes(xpp, res);
21412    next(xpp);
21413    int eventType = nextNoWhitespace(xpp);
21414    while (eventType != XmlPullParser.END_TAG) {
21415  if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, owner, res))
21416        unknownContent(xpp);
21417      eventType = nextNoWhitespace(xpp);
21418    }
21419    next(xpp);
21420    parseElementClose(res);
21421    return res;
21422  }
21423
21424  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21425      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21426        res.setCodeElement(parseCode(xpp));
21427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
21428        res.setDisplayElement(parseString(xpp));
21429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
21430        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
21431      } else if (!parseBackboneElementContent(eventType, xpp, res))
21432        return false;
21433    return true;
21434  }
21435
21436  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
21437    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
21438    parseBackboneAttributes(xpp, res);
21439    next(xpp);
21440    int eventType = nextNoWhitespace(xpp);
21441    while (eventType != XmlPullParser.END_TAG) {
21442  if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, owner, res))
21443        unknownContent(xpp);
21444      eventType = nextNoWhitespace(xpp);
21445    }
21446    next(xpp);
21447    parseElementClose(res);
21448    return res;
21449  }
21450
21451  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21452      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
21453        res.setLanguageElement(parseCode(xpp));
21454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
21455        res.setUse(parseCoding(xpp));
21456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
21457        res.setValueElement(parseString(xpp));
21458      } else if (!parseBackboneElementContent(eventType, xpp, res))
21459        return false;
21460    return true;
21461  }
21462
21463  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
21464    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
21465    parseBackboneAttributes(xpp, res);
21466    next(xpp);
21467    int eventType = nextNoWhitespace(xpp);
21468    while (eventType != XmlPullParser.END_TAG) {
21469  if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, owner, res))
21470        unknownContent(xpp);
21471      eventType = nextNoWhitespace(xpp);
21472    }
21473    next(xpp);
21474    parseElementClose(res);
21475    return res;
21476  }
21477
21478  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21479      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
21480        res.setPropertyElement(parseCode(xpp));
21481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
21482        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
21483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
21484        res.setValueElement(parseString(xpp));
21485      } else if (!parseBackboneElementContent(eventType, xpp, res))
21486        return false;
21487    return true;
21488  }
21489
21490  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
21491    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
21492    parseBackboneAttributes(xpp, res);
21493    next(xpp);
21494    int eventType = nextNoWhitespace(xpp);
21495    while (eventType != XmlPullParser.END_TAG) {
21496  if (!parseValueSetValueSetExpansionComponentContent(eventType, xpp, owner, res))
21497        unknownContent(xpp);
21498      eventType = nextNoWhitespace(xpp);
21499    }
21500    next(xpp);
21501    parseElementClose(res);
21502    return res;
21503  }
21504
21505  protected boolean parseValueSetValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21506      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21507        res.setIdentifierElement(parseUri(xpp));
21508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
21509        res.setTimestampElement(parseDateTime(xpp));
21510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
21511        res.setTotalElement(parseInteger(xpp));
21512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
21513        res.setOffsetElement(parseInteger(xpp));
21514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
21515        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
21516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
21517        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
21518      } else if (!parseBackboneElementContent(eventType, xpp, res))
21519        return false;
21520    return true;
21521  }
21522
21523  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
21524    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
21525    parseBackboneAttributes(xpp, res);
21526    next(xpp);
21527    int eventType = nextNoWhitespace(xpp);
21528    while (eventType != XmlPullParser.END_TAG) {
21529  if (!parseValueSetValueSetExpansionParameterComponentContent(eventType, xpp, owner, res))
21530        unknownContent(xpp);
21531      eventType = nextNoWhitespace(xpp);
21532    }
21533    next(xpp);
21534    parseElementClose(res);
21535    return res;
21536  }
21537
21538  protected boolean parseValueSetValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21540        res.setNameElement(parseString(xpp));
21541      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21542        res.setValue(parseType("value", xpp));
21543      } else if (!parseBackboneElementContent(eventType, xpp, res))
21544        return false;
21545    return true;
21546  }
21547
21548  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
21549    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
21550    parseBackboneAttributes(xpp, res);
21551    next(xpp);
21552    int eventType = nextNoWhitespace(xpp);
21553    while (eventType != XmlPullParser.END_TAG) {
21554  if (!parseValueSetValueSetExpansionContainsComponentContent(eventType, xpp, owner, res))
21555        unknownContent(xpp);
21556      eventType = nextNoWhitespace(xpp);
21557    }
21558    next(xpp);
21559    parseElementClose(res);
21560    return res;
21561  }
21562
21563  protected boolean parseValueSetValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21564      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
21565        res.setSystemElement(parseUri(xpp));
21566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
21567        res.setAbstractElement(parseBoolean(xpp));
21568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
21569        res.setInactiveElement(parseBoolean(xpp));
21570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21571        res.setVersionElement(parseString(xpp));
21572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21573        res.setCodeElement(parseCode(xpp));
21574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
21575        res.setDisplayElement(parseString(xpp));
21576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
21577        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
21578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
21579        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
21580      } else if (!parseBackboneElementContent(eventType, xpp, res))
21581        return false;
21582    return true;
21583  }
21584
21585  protected VerificationResult parseVerificationResult(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21586    VerificationResult res = new VerificationResult();
21587    parseDomainResourceAttributes(xpp, res);
21588    next(xpp);
21589    int eventType = nextNoWhitespace(xpp);
21590    while (eventType != XmlPullParser.END_TAG) {
21591  if (!parseVerificationResultContent(eventType, xpp, res))
21592        unknownContent(xpp);
21593      eventType = nextNoWhitespace(xpp);
21594    }
21595    next(xpp);
21596    parseElementClose(res);
21597    return res;
21598  }
21599
21600  protected boolean parseVerificationResultContent(int eventType, XmlPullParser xpp, VerificationResult res) throws XmlPullParserException, IOException, FHIRFormatError {
21601      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
21602        res.getTarget().add(parseReference(xpp));
21603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetLocation")) {
21604        res.getTargetLocation().add(parseString(xpp));
21605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("need")) {
21606        res.setNeedElement(parseEnumeration(xpp, VerificationResult.Need.NULL, new VerificationResult.NeedEnumFactory()));
21607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21608        res.setStatusElement(parseEnumeration(xpp, VerificationResult.Status.NULL, new VerificationResult.StatusEnumFactory()));
21609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
21610        res.setStatusDateElement(parseDateTime(xpp));
21611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationType")) {
21612        res.setValidationTypeElement(parseEnumeration(xpp, VerificationResult.ValidationType.NULL, new VerificationResult.ValidationTypeEnumFactory()));
21613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationProcess")) {
21614        res.getValidationProcess().add(parseCodeableConcept(xpp));
21615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
21616        res.setFrequency(parseTiming(xpp));
21617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastPerformed")) {
21618        res.setLastPerformedElement(parseDateTime(xpp));
21619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nextScheduled")) {
21620        res.setNextScheduledElement(parseDate(xpp));
21621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("failureAction")) {
21622        res.setFailureActionElement(parseEnumeration(xpp, VerificationResult.FailureAction.NULL, new VerificationResult.FailureActionEnumFactory()));
21623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
21624        res.getPrimarySource().add(parseVerificationResultVerificationResultPrimarySourceComponent(xpp, res));
21625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestation")) {
21626        res.setAttestation(parseVerificationResultVerificationResultAttestationComponent(xpp, res));
21627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validator")) {
21628        res.getValidator().add(parseVerificationResultVerificationResultValidatorComponent(xpp, res));
21629      } else if (!parseDomainResourceContent(eventType, xpp, res))
21630        return false;
21631    return true;
21632  }
21633
21634  protected VerificationResult.VerificationResultPrimarySourceComponent parseVerificationResultVerificationResultPrimarySourceComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
21635    VerificationResult.VerificationResultPrimarySourceComponent res = new VerificationResult.VerificationResultPrimarySourceComponent();
21636    parseBackboneAttributes(xpp, res);
21637    next(xpp);
21638    int eventType = nextNoWhitespace(xpp);
21639    while (eventType != XmlPullParser.END_TAG) {
21640  if (!parseVerificationResultVerificationResultPrimarySourceComponentContent(eventType, xpp, owner, res))
21641        unknownContent(xpp);
21642      eventType = nextNoWhitespace(xpp);
21643    }
21644    next(xpp);
21645    parseElementClose(res);
21646    return res;
21647  }
21648
21649  protected boolean parseVerificationResultVerificationResultPrimarySourceComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultPrimarySourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21650      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21651        res.setIdentifier(parseIdentifier(xpp));
21652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
21653        res.setOrganization(parseReference(xpp));
21654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21655        res.getType().add(parseCodeableConcept(xpp));
21656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationProcess")) {
21657        res.getValidationProcess().add(parseCodeableConcept(xpp));
21658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationStatus")) {
21659        res.setValidationStatusElement(parseEnumeration(xpp, VerificationResult.ValidationStatus.NULL, new VerificationResult.ValidationStatusEnumFactory()));
21660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationDate")) {
21661        res.setValidationDateElement(parseDateTime(xpp));
21662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("canPushUpdates")) {
21663        res.setCanPushUpdatesElement(parseEnumeration(xpp, VerificationResult.CanPushUpdates.NULL, new VerificationResult.CanPushUpdatesEnumFactory()));
21664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pushTypeAvailable")) {
21665        res.getPushTypeAvailable().add(parseEnumeration(xpp, VerificationResult.PushTypeAvailable.NULL, new VerificationResult.PushTypeAvailableEnumFactory()));
21666      } else if (!parseBackboneElementContent(eventType, xpp, res))
21667        return false;
21668    return true;
21669  }
21670
21671  protected VerificationResult.VerificationResultAttestationComponent parseVerificationResultVerificationResultAttestationComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
21672    VerificationResult.VerificationResultAttestationComponent res = new VerificationResult.VerificationResultAttestationComponent();
21673    parseBackboneAttributes(xpp, res);
21674    next(xpp);
21675    int eventType = nextNoWhitespace(xpp);
21676    while (eventType != XmlPullParser.END_TAG) {
21677  if (!parseVerificationResultVerificationResultAttestationComponentContent(eventType, xpp, owner, res))
21678        unknownContent(xpp);
21679      eventType = nextNoWhitespace(xpp);
21680    }
21681    next(xpp);
21682    parseElementClose(res);
21683    return res;
21684  }
21685
21686  protected boolean parseVerificationResultVerificationResultAttestationComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultAttestationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21687      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21688        res.setSource(parseReference(xpp));
21689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
21690        res.setOrganization(parseReference(xpp));
21691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
21692        res.setMethod(parseCodeableConcept(xpp));
21693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21694        res.setDateElement(parseDate(xpp));
21695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceIdentityCertificate")) {
21696        res.setSourceIdentityCertificateElement(parseString(xpp));
21697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxyIdentityCertificate")) {
21698        res.setProxyIdentityCertificateElement(parseString(xpp));
21699      } else if (!parseBackboneElementContent(eventType, xpp, res))
21700        return false;
21701    return true;
21702  }
21703
21704  protected VerificationResult.VerificationResultValidatorComponent parseVerificationResultVerificationResultValidatorComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
21705    VerificationResult.VerificationResultValidatorComponent res = new VerificationResult.VerificationResultValidatorComponent();
21706    parseBackboneAttributes(xpp, res);
21707    next(xpp);
21708    int eventType = nextNoWhitespace(xpp);
21709    while (eventType != XmlPullParser.END_TAG) {
21710  if (!parseVerificationResultVerificationResultValidatorComponentContent(eventType, xpp, owner, res))
21711        unknownContent(xpp);
21712      eventType = nextNoWhitespace(xpp);
21713    }
21714    next(xpp);
21715    parseElementClose(res);
21716    return res;
21717  }
21718
21719  protected boolean parseVerificationResultVerificationResultValidatorComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultValidatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21720      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21721        res.setIdentifier(parseIdentifier(xpp));
21722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
21723        res.setOrganization(parseReference(xpp));
21724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identityCertificate")) {
21725        res.setIdentityCertificateElement(parseString(xpp));
21726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateValidated")) {
21727        res.setDateValidatedElement(parseDate(xpp));
21728      } else if (!parseBackboneElementContent(eventType, xpp, res))
21729        return false;
21730    return true;
21731  }
21732
21733  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21734    VisionPrescription res = new VisionPrescription();
21735    parseDomainResourceAttributes(xpp, res);
21736    next(xpp);
21737    int eventType = nextNoWhitespace(xpp);
21738    while (eventType != XmlPullParser.END_TAG) {
21739  if (!parseVisionPrescriptionContent(eventType, xpp, res))
21740        unknownContent(xpp);
21741      eventType = nextNoWhitespace(xpp);
21742    }
21743    next(xpp);
21744    parseElementClose(res);
21745    return res;
21746  }
21747
21748  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
21749      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21750        res.getIdentifier().add(parseIdentifier(xpp));
21751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21752        res.setStatusElement(parseEnumeration(xpp, VisionPrescription.VisionStatus.NULL, new VisionPrescription.VisionStatusEnumFactory()));
21753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
21754        res.setPatient(parseReference(xpp));
21755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
21756        res.setEncounter(parseReference(xpp));
21757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
21758        res.setDateWrittenElement(parseDateTime(xpp));
21759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
21760        res.setPrescriber(parseReference(xpp));
21761      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
21762        res.setReason(parseType("reason", xpp));
21763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispense")) {
21764        res.getDispense().add(parseVisionPrescriptionVisionPrescriptionDispenseComponent(xpp, res));
21765      } else if (!parseDomainResourceContent(eventType, xpp, res))
21766        return false;
21767    return true;
21768  }
21769
21770  protected VisionPrescription.VisionPrescriptionDispenseComponent parseVisionPrescriptionVisionPrescriptionDispenseComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
21771    VisionPrescription.VisionPrescriptionDispenseComponent res = new VisionPrescription.VisionPrescriptionDispenseComponent();
21772    parseBackboneAttributes(xpp, res);
21773    next(xpp);
21774    int eventType = nextNoWhitespace(xpp);
21775    while (eventType != XmlPullParser.END_TAG) {
21776  if (!parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(eventType, xpp, owner, res))
21777        unknownContent(xpp);
21778      eventType = nextNoWhitespace(xpp);
21779    }
21780    next(xpp);
21781    parseElementClose(res);
21782    return res;
21783  }
21784
21785  protected boolean parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.VisionPrescriptionDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21786      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
21787        res.setProduct(parseCodeableConcept(xpp));
21788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
21789        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
21790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
21791        res.setSphereElement(parseDecimal(xpp));
21792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
21793        res.setCylinderElement(parseDecimal(xpp));
21794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
21795        res.setAxisElement(parseInteger(xpp));
21796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
21797        res.getPrism().add(parseVisionPrescriptionPrismComponent(xpp, owner));
21798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
21799        res.setAddElement(parseDecimal(xpp));
21800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
21801        res.setPowerElement(parseDecimal(xpp));
21802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
21803        res.setBackCurveElement(parseDecimal(xpp));
21804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
21805        res.setDiameterElement(parseDecimal(xpp));
21806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
21807        res.setDuration(parseSimpleQuantity(xpp));
21808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
21809        res.setColorElement(parseString(xpp));
21810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
21811        res.setBrandElement(parseString(xpp));
21812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
21813        res.getNote().add(parseAnnotation(xpp));
21814      } else if (!parseBackboneElementContent(eventType, xpp, res))
21815        return false;
21816    return true;
21817  }
21818
21819  protected VisionPrescription.PrismComponent parseVisionPrescriptionPrismComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
21820    VisionPrescription.PrismComponent res = new VisionPrescription.PrismComponent();
21821    parseBackboneAttributes(xpp, res);
21822    next(xpp);
21823    int eventType = nextNoWhitespace(xpp);
21824    while (eventType != XmlPullParser.END_TAG) {
21825  if (!parseVisionPrescriptionPrismComponentContent(eventType, xpp, owner, res))
21826        unknownContent(xpp);
21827      eventType = nextNoWhitespace(xpp);
21828    }
21829    next(xpp);
21830    parseElementClose(res);
21831    return res;
21832  }
21833
21834  protected boolean parseVisionPrescriptionPrismComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.PrismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21835      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
21836        res.setAmountElement(parseDecimal(xpp));
21837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
21838        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
21839      } else if (!parseBackboneElementContent(eventType, xpp, res))
21840        return false;
21841    return true;
21842  }
21843
21844  @Override
21845  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21846    if (xpp.getName().equals("Parameters"))
21847      return parseParameters(xpp);
21848    else if (xpp.getName().equals("Account"))
21849      return parseAccount(xpp);
21850    else if (xpp.getName().equals("ActivityDefinition"))
21851      return parseActivityDefinition(xpp);
21852    else if (xpp.getName().equals("AdverseEvent"))
21853      return parseAdverseEvent(xpp);
21854    else if (xpp.getName().equals("AllergyIntolerance"))
21855      return parseAllergyIntolerance(xpp);
21856    else if (xpp.getName().equals("Appointment"))
21857      return parseAppointment(xpp);
21858    else if (xpp.getName().equals("AppointmentResponse"))
21859      return parseAppointmentResponse(xpp);
21860    else if (xpp.getName().equals("AuditEvent"))
21861      return parseAuditEvent(xpp);
21862    else if (xpp.getName().equals("Basic"))
21863      return parseBasic(xpp);
21864    else if (xpp.getName().equals("Binary"))
21865      return parseBinary(xpp);
21866    else if (xpp.getName().equals("BiologicallyDerivedProduct"))
21867      return parseBiologicallyDerivedProduct(xpp);
21868    else if (xpp.getName().equals("BodyStructure"))
21869      return parseBodyStructure(xpp);
21870    else if (xpp.getName().equals("Bundle"))
21871      return parseBundle(xpp);
21872    else if (xpp.getName().equals("CapabilityStatement"))
21873      return parseCapabilityStatement(xpp);
21874    else if (xpp.getName().equals("CarePlan"))
21875      return parseCarePlan(xpp);
21876    else if (xpp.getName().equals("CareTeam"))
21877      return parseCareTeam(xpp);
21878    else if (xpp.getName().equals("ChargeItem"))
21879      return parseChargeItem(xpp);
21880    else if (xpp.getName().equals("Claim"))
21881      return parseClaim(xpp);
21882    else if (xpp.getName().equals("ClaimResponse"))
21883      return parseClaimResponse(xpp);
21884    else if (xpp.getName().equals("ClinicalImpression"))
21885      return parseClinicalImpression(xpp);
21886    else if (xpp.getName().equals("CodeSystem"))
21887      return parseCodeSystem(xpp);
21888    else if (xpp.getName().equals("Communication"))
21889      return parseCommunication(xpp);
21890    else if (xpp.getName().equals("CommunicationRequest"))
21891      return parseCommunicationRequest(xpp);
21892    else if (xpp.getName().equals("CompartmentDefinition"))
21893      return parseCompartmentDefinition(xpp);
21894    else if (xpp.getName().equals("Composition"))
21895      return parseComposition(xpp);
21896    else if (xpp.getName().equals("ConceptMap"))
21897      return parseConceptMap(xpp);
21898    else if (xpp.getName().equals("Condition"))
21899      return parseCondition(xpp);
21900    else if (xpp.getName().equals("Consent"))
21901      return parseConsent(xpp);
21902    else if (xpp.getName().equals("Contract"))
21903      return parseContract(xpp);
21904    else if (xpp.getName().equals("Coverage"))
21905      return parseCoverage(xpp);
21906    else if (xpp.getName().equals("DetectedIssue"))
21907      return parseDetectedIssue(xpp);
21908    else if (xpp.getName().equals("Device"))
21909      return parseDevice(xpp);
21910    else if (xpp.getName().equals("DeviceComponent"))
21911      return parseDeviceComponent(xpp);
21912    else if (xpp.getName().equals("DeviceMetric"))
21913      return parseDeviceMetric(xpp);
21914    else if (xpp.getName().equals("DeviceRequest"))
21915      return parseDeviceRequest(xpp);
21916    else if (xpp.getName().equals("DeviceUseStatement"))
21917      return parseDeviceUseStatement(xpp);
21918    else if (xpp.getName().equals("DiagnosticReport"))
21919      return parseDiagnosticReport(xpp);
21920    else if (xpp.getName().equals("DocumentManifest"))
21921      return parseDocumentManifest(xpp);
21922    else if (xpp.getName().equals("DocumentReference"))
21923      return parseDocumentReference(xpp);
21924    else if (xpp.getName().equals("EligibilityRequest"))
21925      return parseEligibilityRequest(xpp);
21926    else if (xpp.getName().equals("EligibilityResponse"))
21927      return parseEligibilityResponse(xpp);
21928    else if (xpp.getName().equals("Encounter"))
21929      return parseEncounter(xpp);
21930    else if (xpp.getName().equals("Endpoint"))
21931      return parseEndpoint(xpp);
21932    else if (xpp.getName().equals("EnrollmentRequest"))
21933      return parseEnrollmentRequest(xpp);
21934    else if (xpp.getName().equals("EnrollmentResponse"))
21935      return parseEnrollmentResponse(xpp);
21936    else if (xpp.getName().equals("EntryDefinition"))
21937      return parseEntryDefinition(xpp);
21938    else if (xpp.getName().equals("EpisodeOfCare"))
21939      return parseEpisodeOfCare(xpp);
21940    else if (xpp.getName().equals("EventDefinition"))
21941      return parseEventDefinition(xpp);
21942    else if (xpp.getName().equals("ExampleScenario"))
21943      return parseExampleScenario(xpp);
21944    else if (xpp.getName().equals("ExpansionProfile"))
21945      return parseExpansionProfile(xpp);
21946    else if (xpp.getName().equals("ExplanationOfBenefit"))
21947      return parseExplanationOfBenefit(xpp);
21948    else if (xpp.getName().equals("FamilyMemberHistory"))
21949      return parseFamilyMemberHistory(xpp);
21950    else if (xpp.getName().equals("Flag"))
21951      return parseFlag(xpp);
21952    else if (xpp.getName().equals("Goal"))
21953      return parseGoal(xpp);
21954    else if (xpp.getName().equals("GraphDefinition"))
21955      return parseGraphDefinition(xpp);
21956    else if (xpp.getName().equals("Group"))
21957      return parseGroup(xpp);
21958    else if (xpp.getName().equals("GuidanceResponse"))
21959      return parseGuidanceResponse(xpp);
21960    else if (xpp.getName().equals("HealthcareService"))
21961      return parseHealthcareService(xpp);
21962    else if (xpp.getName().equals("ImagingStudy"))
21963      return parseImagingStudy(xpp);
21964    else if (xpp.getName().equals("Immunization"))
21965      return parseImmunization(xpp);
21966    else if (xpp.getName().equals("ImmunizationEvaluation"))
21967      return parseImmunizationEvaluation(xpp);
21968    else if (xpp.getName().equals("ImmunizationRecommendation"))
21969      return parseImmunizationRecommendation(xpp);
21970    else if (xpp.getName().equals("ImplementationGuide"))
21971      return parseImplementationGuide(xpp);
21972    else if (xpp.getName().equals("Invoice"))
21973      return parseInvoice(xpp);
21974    else if (xpp.getName().equals("ItemInstance"))
21975      return parseItemInstance(xpp);
21976    else if (xpp.getName().equals("Library"))
21977      return parseLibrary(xpp);
21978    else if (xpp.getName().equals("Linkage"))
21979      return parseLinkage(xpp);
21980    else if (xpp.getName().equals("List"))
21981      return parseListResource(xpp);
21982    else if (xpp.getName().equals("Location"))
21983      return parseLocation(xpp);
21984    else if (xpp.getName().equals("Measure"))
21985      return parseMeasure(xpp);
21986    else if (xpp.getName().equals("MeasureReport"))
21987      return parseMeasureReport(xpp);
21988    else if (xpp.getName().equals("Media"))
21989      return parseMedia(xpp);
21990    else if (xpp.getName().equals("Medication"))
21991      return parseMedication(xpp);
21992    else if (xpp.getName().equals("MedicationAdministration"))
21993      return parseMedicationAdministration(xpp);
21994    else if (xpp.getName().equals("MedicationDispense"))
21995      return parseMedicationDispense(xpp);
21996    else if (xpp.getName().equals("MedicationKnowledge"))
21997      return parseMedicationKnowledge(xpp);
21998    else if (xpp.getName().equals("MedicationRequest"))
21999      return parseMedicationRequest(xpp);
22000    else if (xpp.getName().equals("MedicationStatement"))
22001      return parseMedicationStatement(xpp);
22002    else if (xpp.getName().equals("MedicinalProduct"))
22003      return parseMedicinalProduct(xpp);
22004    else if (xpp.getName().equals("MedicinalProductAuthorization"))
22005      return parseMedicinalProductAuthorization(xpp);
22006    else if (xpp.getName().equals("MedicinalProductClinicals"))
22007      return parseMedicinalProductClinicals(xpp);
22008    else if (xpp.getName().equals("MedicinalProductDeviceSpec"))
22009      return parseMedicinalProductDeviceSpec(xpp);
22010    else if (xpp.getName().equals("MedicinalProductIngredient"))
22011      return parseMedicinalProductIngredient(xpp);
22012    else if (xpp.getName().equals("MedicinalProductPackaged"))
22013      return parseMedicinalProductPackaged(xpp);
22014    else if (xpp.getName().equals("MedicinalProductPharmaceutical"))
22015      return parseMedicinalProductPharmaceutical(xpp);
22016    else if (xpp.getName().equals("MessageDefinition"))
22017      return parseMessageDefinition(xpp);
22018    else if (xpp.getName().equals("MessageHeader"))
22019      return parseMessageHeader(xpp);
22020    else if (xpp.getName().equals("NamingSystem"))
22021      return parseNamingSystem(xpp);
22022    else if (xpp.getName().equals("NutritionOrder"))
22023      return parseNutritionOrder(xpp);
22024    else if (xpp.getName().equals("Observation"))
22025      return parseObservation(xpp);
22026    else if (xpp.getName().equals("ObservationDefinition"))
22027      return parseObservationDefinition(xpp);
22028    else if (xpp.getName().equals("OccupationalData"))
22029      return parseOccupationalData(xpp);
22030    else if (xpp.getName().equals("OperationDefinition"))
22031      return parseOperationDefinition(xpp);
22032    else if (xpp.getName().equals("OperationOutcome"))
22033      return parseOperationOutcome(xpp);
22034    else if (xpp.getName().equals("Organization"))
22035      return parseOrganization(xpp);
22036    else if (xpp.getName().equals("OrganizationRole"))
22037      return parseOrganizationRole(xpp);
22038    else if (xpp.getName().equals("Patient"))
22039      return parsePatient(xpp);
22040    else if (xpp.getName().equals("PaymentNotice"))
22041      return parsePaymentNotice(xpp);
22042    else if (xpp.getName().equals("PaymentReconciliation"))
22043      return parsePaymentReconciliation(xpp);
22044    else if (xpp.getName().equals("Person"))
22045      return parsePerson(xpp);
22046    else if (xpp.getName().equals("PlanDefinition"))
22047      return parsePlanDefinition(xpp);
22048    else if (xpp.getName().equals("Practitioner"))
22049      return parsePractitioner(xpp);
22050    else if (xpp.getName().equals("PractitionerRole"))
22051      return parsePractitionerRole(xpp);
22052    else if (xpp.getName().equals("Procedure"))
22053      return parseProcedure(xpp);
22054    else if (xpp.getName().equals("ProcessRequest"))
22055      return parseProcessRequest(xpp);
22056    else if (xpp.getName().equals("ProcessResponse"))
22057      return parseProcessResponse(xpp);
22058    else if (xpp.getName().equals("ProductPlan"))
22059      return parseProductPlan(xpp);
22060    else if (xpp.getName().equals("Provenance"))
22061      return parseProvenance(xpp);
22062    else if (xpp.getName().equals("Questionnaire"))
22063      return parseQuestionnaire(xpp);
22064    else if (xpp.getName().equals("QuestionnaireResponse"))
22065      return parseQuestionnaireResponse(xpp);
22066    else if (xpp.getName().equals("RelatedPerson"))
22067      return parseRelatedPerson(xpp);
22068    else if (xpp.getName().equals("RequestGroup"))
22069      return parseRequestGroup(xpp);
22070    else if (xpp.getName().equals("ResearchStudy"))
22071      return parseResearchStudy(xpp);
22072    else if (xpp.getName().equals("ResearchSubject"))
22073      return parseResearchSubject(xpp);
22074    else if (xpp.getName().equals("RiskAssessment"))
22075      return parseRiskAssessment(xpp);
22076    else if (xpp.getName().equals("Schedule"))
22077      return parseSchedule(xpp);
22078    else if (xpp.getName().equals("SearchParameter"))
22079      return parseSearchParameter(xpp);
22080    else if (xpp.getName().equals("Sequence"))
22081      return parseSequence(xpp);
22082    else if (xpp.getName().equals("ServiceRequest"))
22083      return parseServiceRequest(xpp);
22084    else if (xpp.getName().equals("Slot"))
22085      return parseSlot(xpp);
22086    else if (xpp.getName().equals("Specimen"))
22087      return parseSpecimen(xpp);
22088    else if (xpp.getName().equals("SpecimenDefinition"))
22089      return parseSpecimenDefinition(xpp);
22090    else if (xpp.getName().equals("StructureDefinition"))
22091      return parseStructureDefinition(xpp);
22092    else if (xpp.getName().equals("StructureMap"))
22093      return parseStructureMap(xpp);
22094    else if (xpp.getName().equals("Subscription"))
22095      return parseSubscription(xpp);
22096    else if (xpp.getName().equals("Substance"))
22097      return parseSubstance(xpp);
22098    else if (xpp.getName().equals("SubstancePolymer"))
22099      return parseSubstancePolymer(xpp);
22100    else if (xpp.getName().equals("SubstanceReferenceInformation"))
22101      return parseSubstanceReferenceInformation(xpp);
22102    else if (xpp.getName().equals("SubstanceSpecification"))
22103      return parseSubstanceSpecification(xpp);
22104    else if (xpp.getName().equals("SupplyDelivery"))
22105      return parseSupplyDelivery(xpp);
22106    else if (xpp.getName().equals("SupplyRequest"))
22107      return parseSupplyRequest(xpp);
22108    else if (xpp.getName().equals("Task"))
22109      return parseTask(xpp);
22110    else if (xpp.getName().equals("TerminologyCapabilities"))
22111      return parseTerminologyCapabilities(xpp);
22112    else if (xpp.getName().equals("TestReport"))
22113      return parseTestReport(xpp);
22114    else if (xpp.getName().equals("TestScript"))
22115      return parseTestScript(xpp);
22116    else if (xpp.getName().equals("UserSession"))
22117      return parseUserSession(xpp);
22118    else if (xpp.getName().equals("ValueSet"))
22119      return parseValueSet(xpp);
22120    else if (xpp.getName().equals("VerificationResult"))
22121      return parseVerificationResult(xpp);
22122    else if (xpp.getName().equals("VisionPrescription"))
22123      return parseVisionPrescription(xpp);
22124    else if (xpp.getName().equals("Binary"))
22125      return parseBinary(xpp);
22126    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
22127  }
22128
22129  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22130    if (xpp.getName().equals(prefix+"date"))
22131      return parseDate(xpp);
22132    else if (xpp.getName().equals(prefix+"dateTime"))
22133      return parseDateTime(xpp);
22134    else if (xpp.getName().equals(prefix+"code"))
22135      return parseCode(xpp);
22136    else if (xpp.getName().equals(prefix+"string"))
22137      return parseString(xpp);
22138    else if (xpp.getName().equals(prefix+"integer"))
22139      return parseInteger(xpp);
22140    else if (xpp.getName().equals(prefix+"oid"))
22141      return parseOid(xpp);
22142    else if (xpp.getName().equals(prefix+"canonical"))
22143      return parseCanonical(xpp);
22144    else if (xpp.getName().equals(prefix+"uri"))
22145      return parseUri(xpp);
22146    else if (xpp.getName().equals(prefix+"uuid"))
22147      return parseUuid(xpp);
22148    else if (xpp.getName().equals(prefix+"url"))
22149      return parseUrl(xpp);
22150    else if (xpp.getName().equals(prefix+"instant"))
22151      return parseInstant(xpp);
22152    else if (xpp.getName().equals(prefix+"boolean"))
22153      return parseBoolean(xpp);
22154    else if (xpp.getName().equals(prefix+"base64Binary"))
22155      return parseBase64Binary(xpp);
22156    else if (xpp.getName().equals(prefix+"unsignedInt"))
22157      return parseUnsignedInt(xpp);
22158    else if (xpp.getName().equals(prefix+"markdown"))
22159      return parseMarkdown(xpp);
22160    else if (xpp.getName().equals(prefix+"time"))
22161      return parseTime(xpp);
22162    else if (xpp.getName().equals(prefix+"id"))
22163      return parseId(xpp);
22164    else if (xpp.getName().equals(prefix+"positiveInt"))
22165      return parsePositiveInt(xpp);
22166    else if (xpp.getName().equals(prefix+"decimal"))
22167      return parseDecimal(xpp);
22168    else if (xpp.getName().equals(prefix+"Extension"))
22169      return parseExtension(xpp);
22170    else if (xpp.getName().equals(prefix+"Narrative"))
22171      return parseNarrative(xpp);
22172    else if (xpp.getName().equals(prefix+"Meta"))
22173      return parseMeta(xpp);
22174    else if (xpp.getName().equals(prefix+"Address"))
22175      return parseAddress(xpp);
22176    else if (xpp.getName().equals(prefix+"Contributor"))
22177      return parseContributor(xpp);
22178    else if (xpp.getName().equals(prefix+"Attachment"))
22179      return parseAttachment(xpp);
22180    else if (xpp.getName().equals(prefix+"Count"))
22181      return parseCount(xpp);
22182    else if (xpp.getName().equals(prefix+"DataRequirement"))
22183      return parseDataRequirement(xpp);
22184    else if (xpp.getName().equals(prefix+"Dosage"))
22185      return parseDosage(xpp);
22186    else if (xpp.getName().equals(prefix+"Money"))
22187      return parseMoney(xpp);
22188    else if (xpp.getName().equals(prefix+"HumanName"))
22189      return parseHumanName(xpp);
22190    else if (xpp.getName().equals(prefix+"ContactPoint"))
22191      return parseContactPoint(xpp);
22192    else if (xpp.getName().equals(prefix+"Identifier"))
22193      return parseIdentifier(xpp);
22194    else if (xpp.getName().equals(prefix+"Coding"))
22195      return parseCoding(xpp);
22196    else if (xpp.getName().equals(prefix+"SampledData"))
22197      return parseSampledData(xpp);
22198    else if (xpp.getName().equals(prefix+"Ratio"))
22199      return parseRatio(xpp);
22200    else if (xpp.getName().equals(prefix+"Distance"))
22201      return parseDistance(xpp);
22202    else if (xpp.getName().equals(prefix+"Age"))
22203      return parseAge(xpp);
22204    else if (xpp.getName().equals(prefix+"Reference"))
22205      return parseReference(xpp);
22206    else if (xpp.getName().equals(prefix+"TriggerDefinition"))
22207      return parseTriggerDefinition(xpp);
22208    else if (xpp.getName().equals(prefix+"Quantity"))
22209      return parseQuantity(xpp);
22210    else if (xpp.getName().equals(prefix+"Period"))
22211      return parsePeriod(xpp);
22212    else if (xpp.getName().equals(prefix+"Duration"))
22213      return parseDuration(xpp);
22214    else if (xpp.getName().equals(prefix+"Range"))
22215      return parseRange(xpp);
22216    else if (xpp.getName().equals(prefix+"RelatedArtifact"))
22217      return parseRelatedArtifact(xpp);
22218    else if (xpp.getName().equals(prefix+"Annotation"))
22219      return parseAnnotation(xpp);
22220    else if (xpp.getName().equals(prefix+"ContactDetail"))
22221      return parseContactDetail(xpp);
22222    else if (xpp.getName().equals(prefix+"UsageContext"))
22223      return parseUsageContext(xpp);
22224    else if (xpp.getName().equals(prefix+"Signature"))
22225      return parseSignature(xpp);
22226    else if (xpp.getName().equals(prefix+"Timing"))
22227      return parseTiming(xpp);
22228    else if (xpp.getName().equals(prefix+"CodeableConcept"))
22229      return parseCodeableConcept(xpp);
22230    else if (xpp.getName().equals(prefix+"ParameterDefinition"))
22231      return parseParameterDefinition(xpp);
22232    else if (xpp.getName().equals(prefix+"SimpleQuantity"))
22233      return parseSimpleQuantity(xpp);
22234    else if (xpp.getName().equals(prefix+"Date"))
22235      return parseDate(xpp);
22236    else if (xpp.getName().equals(prefix+"DateTime"))
22237      return parseDateTime(xpp);
22238    else if (xpp.getName().equals(prefix+"Code"))
22239      return parseCode(xpp);
22240    else if (xpp.getName().equals(prefix+"String"))
22241      return parseString(xpp);
22242    else if (xpp.getName().equals(prefix+"Integer"))
22243      return parseInteger(xpp);
22244    else if (xpp.getName().equals(prefix+"Oid"))
22245      return parseOid(xpp);
22246    else if (xpp.getName().equals(prefix+"Canonical"))
22247      return parseCanonical(xpp);
22248    else if (xpp.getName().equals(prefix+"Uri"))
22249      return parseUri(xpp);
22250    else if (xpp.getName().equals(prefix+"Uuid"))
22251      return parseUuid(xpp);
22252    else if (xpp.getName().equals(prefix+"Url"))
22253      return parseUrl(xpp);
22254    else if (xpp.getName().equals(prefix+"Instant"))
22255      return parseInstant(xpp);
22256    else if (xpp.getName().equals(prefix+"Boolean"))
22257      return parseBoolean(xpp);
22258    else if (xpp.getName().equals(prefix+"Base64Binary"))
22259      return parseBase64Binary(xpp);
22260    else if (xpp.getName().equals(prefix+"UnsignedInt"))
22261      return parseUnsignedInt(xpp);
22262    else if (xpp.getName().equals(prefix+"Markdown"))
22263      return parseMarkdown(xpp);
22264    else if (xpp.getName().equals(prefix+"Time"))
22265      return parseTime(xpp);
22266    else if (xpp.getName().equals(prefix+"Id"))
22267      return parseId(xpp);
22268    else if (xpp.getName().equals(prefix+"PositiveInt"))
22269      return parsePositiveInt(xpp);
22270    else if (xpp.getName().equals(prefix+"Decimal"))
22271      return parseDecimal(xpp);
22272    throw new FHIRFormatError("Unknown type "+xpp.getName());
22273  }
22274
22275  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
22276    if (type.equals("date"))
22277      return parseDate(xpp);
22278    else if (type.equals("dateTime"))
22279      return parseDateTime(xpp);
22280    else if (type.equals("code"))
22281      return parseCode(xpp);
22282    else if (type.equals("string"))
22283      return parseString(xpp);
22284    else if (type.equals("integer"))
22285      return parseInteger(xpp);
22286    else if (type.equals("oid"))
22287      return parseOid(xpp);
22288    else if (type.equals("canonical"))
22289      return parseCanonical(xpp);
22290    else if (type.equals("uri"))
22291      return parseUri(xpp);
22292    else if (type.equals("uuid"))
22293      return parseUuid(xpp);
22294    else if (type.equals("url"))
22295      return parseUrl(xpp);
22296    else if (type.equals("instant"))
22297      return parseInstant(xpp);
22298    else if (type.equals("boolean"))
22299      return parseBoolean(xpp);
22300    else if (type.equals("base64Binary"))
22301      return parseBase64Binary(xpp);
22302    else if (type.equals("unsignedInt"))
22303      return parseUnsignedInt(xpp);
22304    else if (type.equals("markdown"))
22305      return parseMarkdown(xpp);
22306    else if (type.equals("time"))
22307      return parseTime(xpp);
22308    else if (type.equals("id"))
22309      return parseId(xpp);
22310    else if (type.equals("positiveInt"))
22311      return parsePositiveInt(xpp);
22312    else if (type.equals("decimal"))
22313      return parseDecimal(xpp);
22314    else if (type.equals("Extension"))
22315      return parseExtension(xpp);
22316    else if (type.equals("Narrative"))
22317      return parseNarrative(xpp);
22318    else if (type.equals("Meta"))
22319      return parseMeta(xpp);
22320    else if (type.equals("Address"))
22321      return parseAddress(xpp);
22322    else if (type.equals("Contributor"))
22323      return parseContributor(xpp);
22324    else if (type.equals("Attachment"))
22325      return parseAttachment(xpp);
22326    else if (type.equals("Count"))
22327      return parseCount(xpp);
22328    else if (type.equals("DataRequirement"))
22329      return parseDataRequirement(xpp);
22330    else if (type.equals("Dosage"))
22331      return parseDosage(xpp);
22332    else if (type.equals("Money"))
22333      return parseMoney(xpp);
22334    else if (type.equals("HumanName"))
22335      return parseHumanName(xpp);
22336    else if (type.equals("ContactPoint"))
22337      return parseContactPoint(xpp);
22338    else if (type.equals("Identifier"))
22339      return parseIdentifier(xpp);
22340    else if (type.equals("Coding"))
22341      return parseCoding(xpp);
22342    else if (type.equals("SampledData"))
22343      return parseSampledData(xpp);
22344    else if (type.equals("Ratio"))
22345      return parseRatio(xpp);
22346    else if (type.equals("Distance"))
22347      return parseDistance(xpp);
22348    else if (type.equals("Age"))
22349      return parseAge(xpp);
22350    else if (type.equals("Reference"))
22351      return parseReference(xpp);
22352    else if (type.equals("TriggerDefinition"))
22353      return parseTriggerDefinition(xpp);
22354    else if (type.equals("Quantity"))
22355      return parseQuantity(xpp);
22356    else if (type.equals("Period"))
22357      return parsePeriod(xpp);
22358    else if (type.equals("Duration"))
22359      return parseDuration(xpp);
22360    else if (type.equals("Range"))
22361      return parseRange(xpp);
22362    else if (type.equals("RelatedArtifact"))
22363      return parseRelatedArtifact(xpp);
22364    else if (type.equals("Annotation"))
22365      return parseAnnotation(xpp);
22366    else if (type.equals("ContactDetail"))
22367      return parseContactDetail(xpp);
22368    else if (type.equals("UsageContext"))
22369      return parseUsageContext(xpp);
22370    else if (type.equals("Signature"))
22371      return parseSignature(xpp);
22372    else if (type.equals("Timing"))
22373      return parseTiming(xpp);
22374    else if (type.equals("CodeableConcept"))
22375      return parseCodeableConcept(xpp);
22376    else if (type.equals("ParameterDefinition"))
22377      return parseParameterDefinition(xpp);
22378    else if (type.equals("SimpleQuantity"))
22379      return parseSimpleQuantity(xpp);
22380    throw new FHIRFormatError("Unknown type "+type);
22381  }
22382
22383  @Override
22384  protected Type parseAnyType(XmlPullParser xml, String type) throws XmlPullParserException, IOException, FHIRFormatError {
22385    throw new UnsupportedOperationException();
22386  }
22387
22388  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
22389    if (type.equals("Extension"))
22390      return parseExtension(xpp);
22391    else if (type.equals("Narrative"))
22392      return parseNarrative(xpp);
22393    else if (type.equals("Meta"))
22394      return parseMeta(xpp);
22395    else if (type.equals("Address"))
22396      return parseAddress(xpp);
22397    else if (type.equals("Contributor"))
22398      return parseContributor(xpp);
22399    else if (type.equals("Attachment"))
22400      return parseAttachment(xpp);
22401    else if (type.equals("Count"))
22402      return parseCount(xpp);
22403    else if (type.equals("DataRequirement"))
22404      return parseDataRequirement(xpp);
22405    else if (type.equals("Dosage"))
22406      return parseDosage(xpp);
22407    else if (type.equals("Money"))
22408      return parseMoney(xpp);
22409    else if (type.equals("HumanName"))
22410      return parseHumanName(xpp);
22411    else if (type.equals("ContactPoint"))
22412      return parseContactPoint(xpp);
22413    else if (type.equals("Identifier"))
22414      return parseIdentifier(xpp);
22415    else if (type.equals("Coding"))
22416      return parseCoding(xpp);
22417    else if (type.equals("SampledData"))
22418      return parseSampledData(xpp);
22419    else if (type.equals("Ratio"))
22420      return parseRatio(xpp);
22421    else if (type.equals("Distance"))
22422      return parseDistance(xpp);
22423    else if (type.equals("Age"))
22424      return parseAge(xpp);
22425    else if (type.equals("Reference"))
22426      return parseReference(xpp);
22427    else if (type.equals("TriggerDefinition"))
22428      return parseTriggerDefinition(xpp);
22429    else if (type.equals("Quantity"))
22430      return parseQuantity(xpp);
22431    else if (type.equals("Period"))
22432      return parsePeriod(xpp);
22433    else if (type.equals("Duration"))
22434      return parseDuration(xpp);
22435    else if (type.equals("Range"))
22436      return parseRange(xpp);
22437    else if (type.equals("RelatedArtifact"))
22438      return parseRelatedArtifact(xpp);
22439    else if (type.equals("Annotation"))
22440      return parseAnnotation(xpp);
22441    else if (type.equals("ContactDetail"))
22442      return parseContactDetail(xpp);
22443    else if (type.equals("UsageContext"))
22444      return parseUsageContext(xpp);
22445    else if (type.equals("Signature"))
22446      return parseSignature(xpp);
22447    else if (type.equals("Timing"))
22448      return parseTiming(xpp);
22449    else if (type.equals("CodeableConcept"))
22450      return parseCodeableConcept(xpp);
22451    else if (type.equals("ParameterDefinition"))
22452      return parseParameterDefinition(xpp);
22453    else if (type.equals("SimpleQuantity"))
22454      return parseSimpleQuantity(xpp);
22455    else if (type.equals("Parameters"))
22456      return parseParameters(xpp);
22457    else if (type.equals("Account"))
22458      return parseAccount(xpp);
22459    else if (type.equals("ActivityDefinition"))
22460      return parseActivityDefinition(xpp);
22461    else if (type.equals("AdverseEvent"))
22462      return parseAdverseEvent(xpp);
22463    else if (type.equals("AllergyIntolerance"))
22464      return parseAllergyIntolerance(xpp);
22465    else if (type.equals("Appointment"))
22466      return parseAppointment(xpp);
22467    else if (type.equals("AppointmentResponse"))
22468      return parseAppointmentResponse(xpp);
22469    else if (type.equals("AuditEvent"))
22470      return parseAuditEvent(xpp);
22471    else if (type.equals("Basic"))
22472      return parseBasic(xpp);
22473    else if (type.equals("Binary"))
22474      return parseBinary(xpp);
22475    else if (type.equals("BiologicallyDerivedProduct"))
22476      return parseBiologicallyDerivedProduct(xpp);
22477    else if (type.equals("BodyStructure"))
22478      return parseBodyStructure(xpp);
22479    else if (type.equals("Bundle"))
22480      return parseBundle(xpp);
22481    else if (type.equals("CapabilityStatement"))
22482      return parseCapabilityStatement(xpp);
22483    else if (type.equals("CarePlan"))
22484      return parseCarePlan(xpp);
22485    else if (type.equals("CareTeam"))
22486      return parseCareTeam(xpp);
22487    else if (type.equals("ChargeItem"))
22488      return parseChargeItem(xpp);
22489    else if (type.equals("Claim"))
22490      return parseClaim(xpp);
22491    else if (type.equals("ClaimResponse"))
22492      return parseClaimResponse(xpp);
22493    else if (type.equals("ClinicalImpression"))
22494      return parseClinicalImpression(xpp);
22495    else if (type.equals("CodeSystem"))
22496      return parseCodeSystem(xpp);
22497    else if (type.equals("Communication"))
22498      return parseCommunication(xpp);
22499    else if (type.equals("CommunicationRequest"))
22500      return parseCommunicationRequest(xpp);
22501    else if (type.equals("CompartmentDefinition"))
22502      return parseCompartmentDefinition(xpp);
22503    else if (type.equals("Composition"))
22504      return parseComposition(xpp);
22505    else if (type.equals("ConceptMap"))
22506      return parseConceptMap(xpp);
22507    else if (type.equals("Condition"))
22508      return parseCondition(xpp);
22509    else if (type.equals("Consent"))
22510      return parseConsent(xpp);
22511    else if (type.equals("Contract"))
22512      return parseContract(xpp);
22513    else if (type.equals("Coverage"))
22514      return parseCoverage(xpp);
22515    else if (type.equals("DetectedIssue"))
22516      return parseDetectedIssue(xpp);
22517    else if (type.equals("Device"))
22518      return parseDevice(xpp);
22519    else if (type.equals("DeviceComponent"))
22520      return parseDeviceComponent(xpp);
22521    else if (type.equals("DeviceMetric"))
22522      return parseDeviceMetric(xpp);
22523    else if (type.equals("DeviceRequest"))
22524      return parseDeviceRequest(xpp);
22525    else if (type.equals("DeviceUseStatement"))
22526      return parseDeviceUseStatement(xpp);
22527    else if (type.equals("DiagnosticReport"))
22528      return parseDiagnosticReport(xpp);
22529    else if (type.equals("DocumentManifest"))
22530      return parseDocumentManifest(xpp);
22531    else if (type.equals("DocumentReference"))
22532      return parseDocumentReference(xpp);
22533    else if (type.equals("EligibilityRequest"))
22534      return parseEligibilityRequest(xpp);
22535    else if (type.equals("EligibilityResponse"))
22536      return parseEligibilityResponse(xpp);
22537    else if (type.equals("Encounter"))
22538      return parseEncounter(xpp);
22539    else if (type.equals("Endpoint"))
22540      return parseEndpoint(xpp);
22541    else if (type.equals("EnrollmentRequest"))
22542      return parseEnrollmentRequest(xpp);
22543    else if (type.equals("EnrollmentResponse"))
22544      return parseEnrollmentResponse(xpp);
22545    else if (type.equals("EntryDefinition"))
22546      return parseEntryDefinition(xpp);
22547    else if (type.equals("EpisodeOfCare"))
22548      return parseEpisodeOfCare(xpp);
22549    else if (type.equals("EventDefinition"))
22550      return parseEventDefinition(xpp);
22551    else if (type.equals("ExampleScenario"))
22552      return parseExampleScenario(xpp);
22553    else if (type.equals("ExpansionProfile"))
22554      return parseExpansionProfile(xpp);
22555    else if (type.equals("ExplanationOfBenefit"))
22556      return parseExplanationOfBenefit(xpp);
22557    else if (type.equals("FamilyMemberHistory"))
22558      return parseFamilyMemberHistory(xpp);
22559    else if (type.equals("Flag"))
22560      return parseFlag(xpp);
22561    else if (type.equals("Goal"))
22562      return parseGoal(xpp);
22563    else if (type.equals("GraphDefinition"))
22564      return parseGraphDefinition(xpp);
22565    else if (type.equals("Group"))
22566      return parseGroup(xpp);
22567    else if (type.equals("GuidanceResponse"))
22568      return parseGuidanceResponse(xpp);
22569    else if (type.equals("HealthcareService"))
22570      return parseHealthcareService(xpp);
22571    else if (type.equals("ImagingStudy"))
22572      return parseImagingStudy(xpp);
22573    else if (type.equals("Immunization"))
22574      return parseImmunization(xpp);
22575    else if (type.equals("ImmunizationEvaluation"))
22576      return parseImmunizationEvaluation(xpp);
22577    else if (type.equals("ImmunizationRecommendation"))
22578      return parseImmunizationRecommendation(xpp);
22579    else if (type.equals("ImplementationGuide"))
22580      return parseImplementationGuide(xpp);
22581    else if (type.equals("Invoice"))
22582      return parseInvoice(xpp);
22583    else if (type.equals("ItemInstance"))
22584      return parseItemInstance(xpp);
22585    else if (type.equals("Library"))
22586      return parseLibrary(xpp);
22587    else if (type.equals("Linkage"))
22588      return parseLinkage(xpp);
22589    else if (type.equals("List"))
22590      return parseListResource(xpp);
22591    else if (type.equals("Location"))
22592      return parseLocation(xpp);
22593    else if (type.equals("Measure"))
22594      return parseMeasure(xpp);
22595    else if (type.equals("MeasureReport"))
22596      return parseMeasureReport(xpp);
22597    else if (type.equals("Media"))
22598      return parseMedia(xpp);
22599    else if (type.equals("Medication"))
22600      return parseMedication(xpp);
22601    else if (type.equals("MedicationAdministration"))
22602      return parseMedicationAdministration(xpp);
22603    else if (type.equals("MedicationDispense"))
22604      return parseMedicationDispense(xpp);
22605    else if (type.equals("MedicationKnowledge"))
22606      return parseMedicationKnowledge(xpp);
22607    else if (type.equals("MedicationRequest"))
22608      return parseMedicationRequest(xpp);
22609    else if (type.equals("MedicationStatement"))
22610      return parseMedicationStatement(xpp);
22611    else if (type.equals("MedicinalProduct"))
22612      return parseMedicinalProduct(xpp);
22613    else if (type.equals("MedicinalProductAuthorization"))
22614      return parseMedicinalProductAuthorization(xpp);
22615    else if (type.equals("MedicinalProductClinicals"))
22616      return parseMedicinalProductClinicals(xpp);
22617    else if (type.equals("MedicinalProductDeviceSpec"))
22618      return parseMedicinalProductDeviceSpec(xpp);
22619    else if (type.equals("MedicinalProductIngredient"))
22620      return parseMedicinalProductIngredient(xpp);
22621    else if (type.equals("MedicinalProductPackaged"))
22622      return parseMedicinalProductPackaged(xpp);
22623    else if (type.equals("MedicinalProductPharmaceutical"))
22624      return parseMedicinalProductPharmaceutical(xpp);
22625    else if (type.equals("MessageDefinition"))
22626      return parseMessageDefinition(xpp);
22627    else if (type.equals("MessageHeader"))
22628      return parseMessageHeader(xpp);
22629    else if (type.equals("NamingSystem"))
22630      return parseNamingSystem(xpp);
22631    else if (type.equals("NutritionOrder"))
22632      return parseNutritionOrder(xpp);
22633    else if (type.equals("Observation"))
22634      return parseObservation(xpp);
22635    else if (type.equals("ObservationDefinition"))
22636      return parseObservationDefinition(xpp);
22637    else if (type.equals("OccupationalData"))
22638      return parseOccupationalData(xpp);
22639    else if (type.equals("OperationDefinition"))
22640      return parseOperationDefinition(xpp);
22641    else if (type.equals("OperationOutcome"))
22642      return parseOperationOutcome(xpp);
22643    else if (type.equals("Organization"))
22644      return parseOrganization(xpp);
22645    else if (type.equals("OrganizationRole"))
22646      return parseOrganizationRole(xpp);
22647    else if (type.equals("Patient"))
22648      return parsePatient(xpp);
22649    else if (type.equals("PaymentNotice"))
22650      return parsePaymentNotice(xpp);
22651    else if (type.equals("PaymentReconciliation"))
22652      return parsePaymentReconciliation(xpp);
22653    else if (type.equals("Person"))
22654      return parsePerson(xpp);
22655    else if (type.equals("PlanDefinition"))
22656      return parsePlanDefinition(xpp);
22657    else if (type.equals("Practitioner"))
22658      return parsePractitioner(xpp);
22659    else if (type.equals("PractitionerRole"))
22660      return parsePractitionerRole(xpp);
22661    else if (type.equals("Procedure"))
22662      return parseProcedure(xpp);
22663    else if (type.equals("ProcessRequest"))
22664      return parseProcessRequest(xpp);
22665    else if (type.equals("ProcessResponse"))
22666      return parseProcessResponse(xpp);
22667    else if (type.equals("ProductPlan"))
22668      return parseProductPlan(xpp);
22669    else if (type.equals("Provenance"))
22670      return parseProvenance(xpp);
22671    else if (type.equals("Questionnaire"))
22672      return parseQuestionnaire(xpp);
22673    else if (type.equals("QuestionnaireResponse"))
22674      return parseQuestionnaireResponse(xpp);
22675    else if (type.equals("RelatedPerson"))
22676      return parseRelatedPerson(xpp);
22677    else if (type.equals("RequestGroup"))
22678      return parseRequestGroup(xpp);
22679    else if (type.equals("ResearchStudy"))
22680      return parseResearchStudy(xpp);
22681    else if (type.equals("ResearchSubject"))
22682      return parseResearchSubject(xpp);
22683    else if (type.equals("RiskAssessment"))
22684      return parseRiskAssessment(xpp);
22685    else if (type.equals("Schedule"))
22686      return parseSchedule(xpp);
22687    else if (type.equals("SearchParameter"))
22688      return parseSearchParameter(xpp);
22689    else if (type.equals("Sequence"))
22690      return parseSequence(xpp);
22691    else if (type.equals("ServiceRequest"))
22692      return parseServiceRequest(xpp);
22693    else if (type.equals("Slot"))
22694      return parseSlot(xpp);
22695    else if (type.equals("Specimen"))
22696      return parseSpecimen(xpp);
22697    else if (type.equals("SpecimenDefinition"))
22698      return parseSpecimenDefinition(xpp);
22699    else if (type.equals("StructureDefinition"))
22700      return parseStructureDefinition(xpp);
22701    else if (type.equals("StructureMap"))
22702      return parseStructureMap(xpp);
22703    else if (type.equals("Subscription"))
22704      return parseSubscription(xpp);
22705    else if (type.equals("Substance"))
22706      return parseSubstance(xpp);
22707    else if (type.equals("SubstancePolymer"))
22708      return parseSubstancePolymer(xpp);
22709    else if (type.equals("SubstanceReferenceInformation"))
22710      return parseSubstanceReferenceInformation(xpp);
22711    else if (type.equals("SubstanceSpecification"))
22712      return parseSubstanceSpecification(xpp);
22713    else if (type.equals("SupplyDelivery"))
22714      return parseSupplyDelivery(xpp);
22715    else if (type.equals("SupplyRequest"))
22716      return parseSupplyRequest(xpp);
22717    else if (type.equals("Task"))
22718      return parseTask(xpp);
22719    else if (type.equals("TerminologyCapabilities"))
22720      return parseTerminologyCapabilities(xpp);
22721    else if (type.equals("TestReport"))
22722      return parseTestReport(xpp);
22723    else if (type.equals("TestScript"))
22724      return parseTestScript(xpp);
22725    else if (type.equals("UserSession"))
22726      return parseUserSession(xpp);
22727    else if (type.equals("ValueSet"))
22728      return parseValueSet(xpp);
22729    else if (type.equals("VerificationResult"))
22730      return parseVerificationResult(xpp);
22731    else if (type.equals("VisionPrescription"))
22732      return parseVisionPrescription(xpp);
22733    else if (type.equals("date"))
22734      return parseDate(xpp);
22735    else if (type.equals("dateTime"))
22736      return parseDateTime(xpp);
22737    else if (type.equals("code"))
22738      return parseCode(xpp);
22739    else if (type.equals("string"))
22740      return parseString(xpp);
22741    else if (type.equals("integer"))
22742      return parseInteger(xpp);
22743    else if (type.equals("oid"))
22744      return parseOid(xpp);
22745    else if (type.equals("canonical"))
22746      return parseCanonical(xpp);
22747    else if (type.equals("uri"))
22748      return parseUri(xpp);
22749    else if (type.equals("uuid"))
22750      return parseUuid(xpp);
22751    else if (type.equals("url"))
22752      return parseUrl(xpp);
22753    else if (type.equals("instant"))
22754      return parseInstant(xpp);
22755    else if (type.equals("boolean"))
22756      return parseBoolean(xpp);
22757    else if (type.equals("base64Binary"))
22758      return parseBase64Binary(xpp);
22759    else if (type.equals("unsignedInt"))
22760      return parseUnsignedInt(xpp);
22761    else if (type.equals("markdown"))
22762      return parseMarkdown(xpp);
22763    else if (type.equals("time"))
22764      return parseTime(xpp);
22765    else if (type.equals("id"))
22766      return parseId(xpp);
22767    else if (type.equals("positiveInt"))
22768      return parsePositiveInt(xpp);
22769    else if (type.equals("decimal"))
22770      return parseDecimal(xpp);
22771    throw new FHIRFormatError("Unknown type "+type);
22772  }
22773
22774  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
22775        if (xpp.getName().equals(prefix+"Meta"))
22776      return true;
22777    if (xpp.getName().equals(prefix+"Address"))
22778      return true;
22779    if (xpp.getName().equals(prefix+"Contributor"))
22780      return true;
22781    if (xpp.getName().equals(prefix+"Attachment"))
22782      return true;
22783    if (xpp.getName().equals(prefix+"Count"))
22784      return true;
22785    if (xpp.getName().equals(prefix+"DataRequirement"))
22786      return true;
22787    if (xpp.getName().equals(prefix+"Dosage"))
22788      return true;
22789    if (xpp.getName().equals(prefix+"Money"))
22790      return true;
22791    if (xpp.getName().equals(prefix+"HumanName"))
22792      return true;
22793    if (xpp.getName().equals(prefix+"ContactPoint"))
22794      return true;
22795    if (xpp.getName().equals(prefix+"Identifier"))
22796      return true;
22797    if (xpp.getName().equals(prefix+"Coding"))
22798      return true;
22799    if (xpp.getName().equals(prefix+"SampledData"))
22800      return true;
22801    if (xpp.getName().equals(prefix+"Ratio"))
22802      return true;
22803    if (xpp.getName().equals(prefix+"Distance"))
22804      return true;
22805    if (xpp.getName().equals(prefix+"Age"))
22806      return true;
22807    if (xpp.getName().equals(prefix+"Reference"))
22808      return true;
22809    if (xpp.getName().equals(prefix+"TriggerDefinition"))
22810      return true;
22811    if (xpp.getName().equals(prefix+"Quantity"))
22812      return true;
22813    if (xpp.getName().equals(prefix+"Period"))
22814      return true;
22815    if (xpp.getName().equals(prefix+"Duration"))
22816      return true;
22817    if (xpp.getName().equals(prefix+"Range"))
22818      return true;
22819    if (xpp.getName().equals(prefix+"RelatedArtifact"))
22820      return true;
22821    if (xpp.getName().equals(prefix+"Annotation"))
22822      return true;
22823    if (xpp.getName().equals(prefix+"ContactDetail"))
22824      return true;
22825    if (xpp.getName().equals(prefix+"UsageContext"))
22826      return true;
22827    if (xpp.getName().equals(prefix+"Signature"))
22828      return true;
22829    if (xpp.getName().equals(prefix+"Timing"))
22830      return true;
22831    if (xpp.getName().equals(prefix+"CodeableConcept"))
22832      return true;
22833    if (xpp.getName().equals(prefix+"ParameterDefinition"))
22834      return true;
22835    if (xpp.getName().equals(prefix+"SimpleQuantity"))
22836      return true;
22837    if (xpp.getName().equals(prefix+"Parameters"))
22838      return true;
22839    if (xpp.getName().equals(prefix+"Account"))
22840      return true;
22841    if (xpp.getName().equals(prefix+"ActivityDefinition"))
22842      return true;
22843    if (xpp.getName().equals(prefix+"AdverseEvent"))
22844      return true;
22845    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
22846      return true;
22847    if (xpp.getName().equals(prefix+"Appointment"))
22848      return true;
22849    if (xpp.getName().equals(prefix+"AppointmentResponse"))
22850      return true;
22851    if (xpp.getName().equals(prefix+"AuditEvent"))
22852      return true;
22853    if (xpp.getName().equals(prefix+"Basic"))
22854      return true;
22855    if (xpp.getName().equals(prefix+"Binary"))
22856      return true;
22857    if (xpp.getName().equals(prefix+"BiologicallyDerivedProduct"))
22858      return true;
22859    if (xpp.getName().equals(prefix+"BodyStructure"))
22860      return true;
22861    if (xpp.getName().equals(prefix+"Bundle"))
22862      return true;
22863    if (xpp.getName().equals(prefix+"CapabilityStatement"))
22864      return true;
22865    if (xpp.getName().equals(prefix+"CarePlan"))
22866      return true;
22867    if (xpp.getName().equals(prefix+"CareTeam"))
22868      return true;
22869    if (xpp.getName().equals(prefix+"ChargeItem"))
22870      return true;
22871    if (xpp.getName().equals(prefix+"Claim"))
22872      return true;
22873    if (xpp.getName().equals(prefix+"ClaimResponse"))
22874      return true;
22875    if (xpp.getName().equals(prefix+"ClinicalImpression"))
22876      return true;
22877    if (xpp.getName().equals(prefix+"CodeSystem"))
22878      return true;
22879    if (xpp.getName().equals(prefix+"Communication"))
22880      return true;
22881    if (xpp.getName().equals(prefix+"CommunicationRequest"))
22882      return true;
22883    if (xpp.getName().equals(prefix+"CompartmentDefinition"))
22884      return true;
22885    if (xpp.getName().equals(prefix+"Composition"))
22886      return true;
22887    if (xpp.getName().equals(prefix+"ConceptMap"))
22888      return true;
22889    if (xpp.getName().equals(prefix+"Condition"))
22890      return true;
22891    if (xpp.getName().equals(prefix+"Consent"))
22892      return true;
22893    if (xpp.getName().equals(prefix+"Contract"))
22894      return true;
22895    if (xpp.getName().equals(prefix+"Coverage"))
22896      return true;
22897    if (xpp.getName().equals(prefix+"DetectedIssue"))
22898      return true;
22899    if (xpp.getName().equals(prefix+"Device"))
22900      return true;
22901    if (xpp.getName().equals(prefix+"DeviceComponent"))
22902      return true;
22903    if (xpp.getName().equals(prefix+"DeviceMetric"))
22904      return true;
22905    if (xpp.getName().equals(prefix+"DeviceRequest"))
22906      return true;
22907    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
22908      return true;
22909    if (xpp.getName().equals(prefix+"DiagnosticReport"))
22910      return true;
22911    if (xpp.getName().equals(prefix+"DocumentManifest"))
22912      return true;
22913    if (xpp.getName().equals(prefix+"DocumentReference"))
22914      return true;
22915    if (xpp.getName().equals(prefix+"EligibilityRequest"))
22916      return true;
22917    if (xpp.getName().equals(prefix+"EligibilityResponse"))
22918      return true;
22919    if (xpp.getName().equals(prefix+"Encounter"))
22920      return true;
22921    if (xpp.getName().equals(prefix+"Endpoint"))
22922      return true;
22923    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
22924      return true;
22925    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
22926      return true;
22927    if (xpp.getName().equals(prefix+"EntryDefinition"))
22928      return true;
22929    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
22930      return true;
22931    if (xpp.getName().equals(prefix+"EventDefinition"))
22932      return true;
22933    if (xpp.getName().equals(prefix+"ExampleScenario"))
22934      return true;
22935    if (xpp.getName().equals(prefix+"ExpansionProfile"))
22936      return true;
22937    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
22938      return true;
22939    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
22940      return true;
22941    if (xpp.getName().equals(prefix+"Flag"))
22942      return true;
22943    if (xpp.getName().equals(prefix+"Goal"))
22944      return true;
22945    if (xpp.getName().equals(prefix+"GraphDefinition"))
22946      return true;
22947    if (xpp.getName().equals(prefix+"Group"))
22948      return true;
22949    if (xpp.getName().equals(prefix+"GuidanceResponse"))
22950      return true;
22951    if (xpp.getName().equals(prefix+"HealthcareService"))
22952      return true;
22953    if (xpp.getName().equals(prefix+"ImagingStudy"))
22954      return true;
22955    if (xpp.getName().equals(prefix+"Immunization"))
22956      return true;
22957    if (xpp.getName().equals(prefix+"ImmunizationEvaluation"))
22958      return true;
22959    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
22960      return true;
22961    if (xpp.getName().equals(prefix+"ImplementationGuide"))
22962      return true;
22963    if (xpp.getName().equals(prefix+"Invoice"))
22964      return true;
22965    if (xpp.getName().equals(prefix+"ItemInstance"))
22966      return true;
22967    if (xpp.getName().equals(prefix+"Library"))
22968      return true;
22969    if (xpp.getName().equals(prefix+"Linkage"))
22970      return true;
22971    if (xpp.getName().equals(prefix+"List"))
22972      return true;
22973    if (xpp.getName().equals(prefix+"Location"))
22974      return true;
22975    if (xpp.getName().equals(prefix+"Measure"))
22976      return true;
22977    if (xpp.getName().equals(prefix+"MeasureReport"))
22978      return true;
22979    if (xpp.getName().equals(prefix+"Media"))
22980      return true;
22981    if (xpp.getName().equals(prefix+"Medication"))
22982      return true;
22983    if (xpp.getName().equals(prefix+"MedicationAdministration"))
22984      return true;
22985    if (xpp.getName().equals(prefix+"MedicationDispense"))
22986      return true;
22987    if (xpp.getName().equals(prefix+"MedicationKnowledge"))
22988      return true;
22989    if (xpp.getName().equals(prefix+"MedicationRequest"))
22990      return true;
22991    if (xpp.getName().equals(prefix+"MedicationStatement"))
22992      return true;
22993    if (xpp.getName().equals(prefix+"MedicinalProduct"))
22994      return true;
22995    if (xpp.getName().equals(prefix+"MedicinalProductAuthorization"))
22996      return true;
22997    if (xpp.getName().equals(prefix+"MedicinalProductClinicals"))
22998      return true;
22999    if (xpp.getName().equals(prefix+"MedicinalProductDeviceSpec"))
23000      return true;
23001    if (xpp.getName().equals(prefix+"MedicinalProductIngredient"))
23002      return true;
23003    if (xpp.getName().equals(prefix+"MedicinalProductPackaged"))
23004      return true;
23005    if (xpp.getName().equals(prefix+"MedicinalProductPharmaceutical"))
23006      return true;
23007    if (xpp.getName().equals(prefix+"MessageDefinition"))
23008      return true;
23009    if (xpp.getName().equals(prefix+"MessageHeader"))
23010      return true;
23011    if (xpp.getName().equals(prefix+"NamingSystem"))
23012      return true;
23013    if (xpp.getName().equals(prefix+"NutritionOrder"))
23014      return true;
23015    if (xpp.getName().equals(prefix+"Observation"))
23016      return true;
23017    if (xpp.getName().equals(prefix+"ObservationDefinition"))
23018      return true;
23019    if (xpp.getName().equals(prefix+"OccupationalData"))
23020      return true;
23021    if (xpp.getName().equals(prefix+"OperationDefinition"))
23022      return true;
23023    if (xpp.getName().equals(prefix+"OperationOutcome"))
23024      return true;
23025    if (xpp.getName().equals(prefix+"Organization"))
23026      return true;
23027    if (xpp.getName().equals(prefix+"OrganizationRole"))
23028      return true;
23029    if (xpp.getName().equals(prefix+"Patient"))
23030      return true;
23031    if (xpp.getName().equals(prefix+"PaymentNotice"))
23032      return true;
23033    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
23034      return true;
23035    if (xpp.getName().equals(prefix+"Person"))
23036      return true;
23037    if (xpp.getName().equals(prefix+"PlanDefinition"))
23038      return true;
23039    if (xpp.getName().equals(prefix+"Practitioner"))
23040      return true;
23041    if (xpp.getName().equals(prefix+"PractitionerRole"))
23042      return true;
23043    if (xpp.getName().equals(prefix+"Procedure"))
23044      return true;
23045    if (xpp.getName().equals(prefix+"ProcessRequest"))
23046      return true;
23047    if (xpp.getName().equals(prefix+"ProcessResponse"))
23048      return true;
23049    if (xpp.getName().equals(prefix+"ProductPlan"))
23050      return true;
23051    if (xpp.getName().equals(prefix+"Provenance"))
23052      return true;
23053    if (xpp.getName().equals(prefix+"Questionnaire"))
23054      return true;
23055    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
23056      return true;
23057    if (xpp.getName().equals(prefix+"RelatedPerson"))
23058      return true;
23059    if (xpp.getName().equals(prefix+"RequestGroup"))
23060      return true;
23061    if (xpp.getName().equals(prefix+"ResearchStudy"))
23062      return true;
23063    if (xpp.getName().equals(prefix+"ResearchSubject"))
23064      return true;
23065    if (xpp.getName().equals(prefix+"RiskAssessment"))
23066      return true;
23067    if (xpp.getName().equals(prefix+"Schedule"))
23068      return true;
23069    if (xpp.getName().equals(prefix+"SearchParameter"))
23070      return true;
23071    if (xpp.getName().equals(prefix+"Sequence"))
23072      return true;
23073    if (xpp.getName().equals(prefix+"ServiceRequest"))
23074      return true;
23075    if (xpp.getName().equals(prefix+"Slot"))
23076      return true;
23077    if (xpp.getName().equals(prefix+"Specimen"))
23078      return true;
23079    if (xpp.getName().equals(prefix+"SpecimenDefinition"))
23080      return true;
23081    if (xpp.getName().equals(prefix+"StructureDefinition"))
23082      return true;
23083    if (xpp.getName().equals(prefix+"StructureMap"))
23084      return true;
23085    if (xpp.getName().equals(prefix+"Subscription"))
23086      return true;
23087    if (xpp.getName().equals(prefix+"Substance"))
23088      return true;
23089    if (xpp.getName().equals(prefix+"SubstancePolymer"))
23090      return true;
23091    if (xpp.getName().equals(prefix+"SubstanceReferenceInformation"))
23092      return true;
23093    if (xpp.getName().equals(prefix+"SubstanceSpecification"))
23094      return true;
23095    if (xpp.getName().equals(prefix+"SupplyDelivery"))
23096      return true;
23097    if (xpp.getName().equals(prefix+"SupplyRequest"))
23098      return true;
23099    if (xpp.getName().equals(prefix+"Task"))
23100      return true;
23101    if (xpp.getName().equals(prefix+"TerminologyCapabilities"))
23102      return true;
23103    if (xpp.getName().equals(prefix+"TestReport"))
23104      return true;
23105    if (xpp.getName().equals(prefix+"TestScript"))
23106      return true;
23107    if (xpp.getName().equals(prefix+"UserSession"))
23108      return true;
23109    if (xpp.getName().equals(prefix+"ValueSet"))
23110      return true;
23111    if (xpp.getName().equals(prefix+"VerificationResult"))
23112      return true;
23113    if (xpp.getName().equals(prefix+"VisionPrescription"))
23114      return true;
23115    if (xpp.getName().equals(prefix+"Date"))
23116      return true;
23117    if (xpp.getName().equals(prefix+"DateTime"))
23118      return true;
23119    if (xpp.getName().equals(prefix+"Code"))
23120      return true;
23121    if (xpp.getName().equals(prefix+"String"))
23122      return true;
23123    if (xpp.getName().equals(prefix+"Integer"))
23124      return true;
23125    if (xpp.getName().equals(prefix+"Oid"))
23126      return true;
23127    if (xpp.getName().equals(prefix+"Canonical"))
23128      return true;
23129    if (xpp.getName().equals(prefix+"Uri"))
23130      return true;
23131    if (xpp.getName().equals(prefix+"Uuid"))
23132      return true;
23133    if (xpp.getName().equals(prefix+"Url"))
23134      return true;
23135    if (xpp.getName().equals(prefix+"Instant"))
23136      return true;
23137    if (xpp.getName().equals(prefix+"Boolean"))
23138      return true;
23139    if (xpp.getName().equals(prefix+"Base64Binary"))
23140      return true;
23141    if (xpp.getName().equals(prefix+"UnsignedInt"))
23142      return true;
23143    if (xpp.getName().equals(prefix+"Markdown"))
23144      return true;
23145    if (xpp.getName().equals(prefix+"Time"))
23146      return true;
23147    if (xpp.getName().equals(prefix+"Id"))
23148      return true;
23149    if (xpp.getName().equals(prefix+"PositiveInt"))
23150      return true;
23151    if (xpp.getName().equals(prefix+"Decimal"))
23152      return true;
23153    return false;
23154  }
23155  protected void composeElementElements(Element element) throws IOException {
23156    for (Extension e : element.getExtension()) {
23157      composeExtension("extension", e);
23158    }
23159  }
23160
23161  protected void composeBackboneElementElements(BackboneElement element) throws IOException {
23162    composeElementElements(element);
23163    for (Extension e : element.getModifierExtension()) {
23164      composeExtension("modifierExtension", e);
23165    }
23166  }
23167
23168  protected void composeBackboneElementElements(BackboneType element) throws IOException {
23169    composeElementElements(element);
23170    for (Extension e : element.getModifierExtension()) {
23171      composeExtension("modifierExtension", e);
23172    }
23173  }
23174
23175  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
23176    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
23177      composeElementAttributes(value);
23178      if (value.getValue() != null) 
23179        xml.attribute("value", e.toCode(value.getValue()));
23180        
23181      xml.enter(FHIR_NS, name);
23182      composeElementElements(value);
23183      composeElementClose(value);
23184      xml.exit(FHIR_NS, name);
23185    }    
23186  }    
23187
23188  protected void composeDate(String name, DateType value) throws IOException  {
23189    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
23190      composeElementAttributes(value);
23191      if (value.asStringValue() != null) 
23192        xml.attribute("value", value.asStringValue());
23193        
23194      xml.enter(FHIR_NS, name);
23195      composeElementElements(value);
23196      composeElementClose(value);
23197      xml.exit(FHIR_NS, name);
23198    }    
23199  }    
23200
23201  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
23202    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
23203      composeElementAttributes(value);
23204      if (value.asStringValue() != null) 
23205        xml.attribute("value", value.asStringValue());
23206        
23207      xml.enter(FHIR_NS, name);
23208      composeElementElements(value);
23209      composeElementClose(value);
23210      xml.exit(FHIR_NS, name);
23211    }    
23212  }    
23213
23214  protected void composeCode(String name, CodeType value) throws IOException  {
23215    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
23216      composeElementAttributes(value);
23217      if (value.asStringValue() != null) 
23218        xml.attribute("value", value.asStringValue());
23219        
23220      xml.enter(FHIR_NS, name);
23221      composeElementElements(value);
23222      composeElementClose(value);
23223      xml.exit(FHIR_NS, name);
23224    }    
23225  }    
23226
23227  protected void composeString(String name, StringType value) throws IOException  {
23228    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
23229      composeElementAttributes(value);
23230      if (value.asStringValue() != null) 
23231        xml.attribute("value", value.asStringValue());
23232        
23233      xml.enter(FHIR_NS, name);
23234      composeElementElements(value);
23235      composeElementClose(value);
23236      xml.exit(FHIR_NS, name);
23237    }    
23238  }    
23239
23240  protected void composeInteger(String name, IntegerType value) throws IOException  {
23241    if (value != null) { // integer
23242      composeElementAttributes(value);
23243      if (value.asStringValue() != null) 
23244        xml.attribute("value", value.asStringValue());
23245        
23246      xml.enter(FHIR_NS, name);
23247      composeElementElements(value);
23248      composeElementClose(value);
23249      xml.exit(FHIR_NS, name);
23250    }    
23251  }    
23252
23253  protected void composeOid(String name, OidType value) throws IOException  {
23254    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
23255      composeElementAttributes(value);
23256      if (value.asStringValue() != null) 
23257        xml.attribute("value", value.asStringValue());
23258        
23259      xml.enter(FHIR_NS, name);
23260      composeElementElements(value);
23261      composeElementClose(value);
23262      xml.exit(FHIR_NS, name);
23263    }    
23264  }    
23265
23266  protected void composeCanonical(String name, CanonicalType value) throws IOException  {
23267    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// canonical
23268      composeElementAttributes(value);
23269      if (value.asStringValue() != null) 
23270        xml.attribute("value", value.asStringValue());
23271        
23272      xml.enter(FHIR_NS, name);
23273      composeElementElements(value);
23274      composeElementClose(value);
23275      xml.exit(FHIR_NS, name);
23276    }    
23277  }    
23278
23279  protected void composeUri(String name, UriType value) throws IOException  {
23280    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
23281      composeElementAttributes(value);
23282      if (value.asStringValue() != null) 
23283        xml.attribute("value", value.asStringValue());
23284        
23285      xml.enter(FHIR_NS, name);
23286      composeElementElements(value);
23287      composeElementClose(value);
23288      xml.exit(FHIR_NS, name);
23289    }    
23290  }    
23291
23292  protected void composeUuid(String name, UuidType value) throws IOException  {
23293    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
23294      composeElementAttributes(value);
23295      if (value.asStringValue() != null) 
23296        xml.attribute("value", value.asStringValue());
23297        
23298      xml.enter(FHIR_NS, name);
23299      composeElementElements(value);
23300      composeElementClose(value);
23301      xml.exit(FHIR_NS, name);
23302    }    
23303  }    
23304
23305  protected void composeUrl(String name, UrlType value) throws IOException  {
23306    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// url
23307      composeElementAttributes(value);
23308      if (value.asStringValue() != null) 
23309        xml.attribute("value", value.asStringValue());
23310        
23311      xml.enter(FHIR_NS, name);
23312      composeElementElements(value);
23313      composeElementClose(value);
23314      xml.exit(FHIR_NS, name);
23315    }    
23316  }    
23317
23318  protected void composeInstant(String name, InstantType value) throws IOException  {
23319    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
23320      composeElementAttributes(value);
23321      if (value.asStringValue() != null) 
23322        xml.attribute("value", value.asStringValue());
23323        
23324      xml.enter(FHIR_NS, name);
23325      composeElementElements(value);
23326      composeElementClose(value);
23327      xml.exit(FHIR_NS, name);
23328    }    
23329  }    
23330
23331  protected void composeBoolean(String name, BooleanType value) throws IOException  {
23332    if (value != null) { // boolean
23333      composeElementAttributes(value);
23334      if (value.asStringValue() != null) 
23335        xml.attribute("value", value.asStringValue());
23336        
23337      xml.enter(FHIR_NS, name);
23338      composeElementElements(value);
23339      composeElementClose(value);
23340      xml.exit(FHIR_NS, name);
23341    }    
23342  }    
23343
23344  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
23345    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
23346      composeElementAttributes(value);
23347      if (value.asStringValue() != null) 
23348        xml.attribute("value", value.asStringValue());
23349        
23350      xml.enter(FHIR_NS, name);
23351      composeElementElements(value);
23352      composeElementClose(value);
23353      xml.exit(FHIR_NS, name);
23354    }    
23355  }    
23356
23357  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
23358    if (value != null) { // unsignedInt
23359      composeElementAttributes(value);
23360      if (value.asStringValue() != null) 
23361        xml.attribute("value", value.asStringValue());
23362        
23363      xml.enter(FHIR_NS, name);
23364      composeElementElements(value);
23365      composeElementClose(value);
23366      xml.exit(FHIR_NS, name);
23367    }    
23368  }    
23369
23370  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
23371    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
23372      composeElementAttributes(value);
23373      if (value.asStringValue() != null) 
23374        xml.attribute("value", value.asStringValue());
23375        
23376      xml.enter(FHIR_NS, name);
23377      composeElementElements(value);
23378      composeElementClose(value);
23379      xml.exit(FHIR_NS, name);
23380    }    
23381  }    
23382
23383  protected void composeTime(String name, TimeType value) throws IOException  {
23384    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
23385      composeElementAttributes(value);
23386      if (value.asStringValue() != null) 
23387        xml.attribute("value", value.asStringValue());
23388        
23389      xml.enter(FHIR_NS, name);
23390      composeElementElements(value);
23391      composeElementClose(value);
23392      xml.exit(FHIR_NS, name);
23393    }    
23394  }    
23395
23396  protected void composeId(String name, IdType value) throws IOException  {
23397    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
23398      composeElementAttributes(value);
23399      if (value.asStringValue() != null) 
23400        xml.attribute("value", value.asStringValue());
23401        
23402      xml.enter(FHIR_NS, name);
23403      composeElementElements(value);
23404      composeElementClose(value);
23405      xml.exit(FHIR_NS, name);
23406    }    
23407  }    
23408
23409  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
23410    if (value != null) { // positiveInt
23411      composeElementAttributes(value);
23412      if (value.asStringValue() != null) 
23413        xml.attribute("value", value.asStringValue());
23414        
23415      xml.enter(FHIR_NS, name);
23416      composeElementElements(value);
23417      composeElementClose(value);
23418      xml.exit(FHIR_NS, name);
23419    }    
23420  }    
23421
23422  protected void composeDecimal(String name, DecimalType value) throws IOException  {
23423    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
23424      composeElementAttributes(value);
23425      if (value.asStringValue() != null) 
23426        xml.attribute("value", value.asStringValue());
23427        
23428      xml.enter(FHIR_NS, name);
23429      composeElementElements(value);
23430      composeElementClose(value);
23431      xml.exit(FHIR_NS, name);
23432    }    
23433  }    
23434
23435  protected void composeExtension(String name, Extension element) throws IOException {
23436    if (element != null) {
23437      composeElementAttributes(element);
23438      if (element.hasUrlElement())
23439        xml.attribute("url", element.getUrlElement().getValue());
23440      xml.enter(FHIR_NS, name);
23441      composeExtensionElements(element);
23442      composeElementClose(element);
23443      xml.exit(FHIR_NS, name);
23444    }
23445  }
23446
23447  protected void composeExtensionElements(Extension element) throws IOException {
23448      composeElementElements(element);
23449      if (element.hasValue()) {
23450        composeType("value", element.getValue());
23451      }  }
23452
23453  protected void composeNarrative(String name, Narrative element) throws IOException {
23454    if (element != null) {
23455      composeElementAttributes(element);
23456      xml.enter(FHIR_NS, name);
23457      composeNarrativeElements(element);
23458      composeElementClose(element);
23459      xml.exit(FHIR_NS, name);
23460    }
23461  }
23462
23463  protected void composeNarrativeElements(Narrative element) throws IOException {
23464      composeElementElements(element);
23465      if (element.hasStatusElement())
23466        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
23467      if (element.hasDiv()) {
23468        composeXhtml("div", element.getDiv());
23469      }
23470  }
23471
23472  protected void composeCount(String name, Count element) throws IOException {
23473    if (element != null) {
23474      composeTypeAttributes(element);
23475      xml.enter(FHIR_NS, name);
23476      composeCountElements(element);
23477      composeElementClose(element);
23478      xml.exit(FHIR_NS, name);
23479    }
23480  }
23481
23482  protected void composeCountElements(Count element) throws IOException {
23483      composeQuantityElements(element);
23484  }
23485
23486  protected void composeMoney(String name, Money element) throws IOException {
23487    if (element != null) {
23488      composeTypeAttributes(element);
23489      xml.enter(FHIR_NS, name);
23490      composeMoneyElements(element);
23491      composeElementClose(element);
23492      xml.exit(FHIR_NS, name);
23493    }
23494  }
23495
23496  protected void composeMoneyElements(Money element) throws IOException {
23497      composeQuantityElements(element);
23498  }
23499
23500  protected void composeDistance(String name, Distance element) throws IOException {
23501    if (element != null) {
23502      composeTypeAttributes(element);
23503      xml.enter(FHIR_NS, name);
23504      composeDistanceElements(element);
23505      composeElementClose(element);
23506      xml.exit(FHIR_NS, name);
23507    }
23508  }
23509
23510  protected void composeDistanceElements(Distance element) throws IOException {
23511      composeQuantityElements(element);
23512  }
23513
23514  protected void composeAge(String name, Age element) throws IOException {
23515    if (element != null) {
23516      composeTypeAttributes(element);
23517      xml.enter(FHIR_NS, name);
23518      composeAgeElements(element);
23519      composeElementClose(element);
23520      xml.exit(FHIR_NS, name);
23521    }
23522  }
23523
23524  protected void composeAgeElements(Age element) throws IOException {
23525      composeQuantityElements(element);
23526  }
23527
23528  protected void composeDuration(String name, Duration element) throws IOException {
23529    if (element != null) {
23530      composeTypeAttributes(element);
23531      xml.enter(FHIR_NS, name);
23532      composeDurationElements(element);
23533      composeElementClose(element);
23534      xml.exit(FHIR_NS, name);
23535    }
23536  }
23537
23538  protected void composeDurationElements(Duration element) throws IOException {
23539      composeQuantityElements(element);
23540  }
23541
23542  protected void composeMeta(String name, Meta element) throws IOException {
23543    if (element != null) {
23544      composeTypeAttributes(element);
23545      xml.enter(FHIR_NS, name);
23546      composeMetaElements(element);
23547      composeElementClose(element);
23548      xml.exit(FHIR_NS, name);
23549    }
23550  }
23551
23552  protected void composeMetaElements(Meta element) throws IOException {
23553      composeElementElements(element);
23554      if (element.hasVersionIdElement()) {
23555        composeId("versionId", element.getVersionIdElement());
23556      }
23557      if (element.hasLastUpdatedElement()) {
23558        composeInstant("lastUpdated", element.getLastUpdatedElement());
23559      }
23560      if (element.hasSourceElement()) {
23561        composeUri("source", element.getSourceElement());
23562      }
23563      if (element.hasProfile()) { 
23564        for (CanonicalType e : element.getProfile()) 
23565          composeCanonical("profile", e);
23566      }
23567      if (element.hasSecurity()) { 
23568        for (Coding e : element.getSecurity()) 
23569          composeCoding("security", e);
23570      }
23571      if (element.hasTag()) { 
23572        for (Coding e : element.getTag()) 
23573          composeCoding("tag", e);
23574      }
23575  }
23576
23577  protected void composeAddress(String name, Address element) throws IOException {
23578    if (element != null) {
23579      composeTypeAttributes(element);
23580      xml.enter(FHIR_NS, name);
23581      composeAddressElements(element);
23582      composeElementClose(element);
23583      xml.exit(FHIR_NS, name);
23584    }
23585  }
23586
23587  protected void composeAddressElements(Address element) throws IOException {
23588      composeElementElements(element);
23589      if (element.hasUseElement())
23590        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
23591      if (element.hasTypeElement())
23592        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
23593      if (element.hasTextElement()) {
23594        composeString("text", element.getTextElement());
23595      }
23596      if (element.hasLine()) { 
23597        for (StringType e : element.getLine()) 
23598          composeString("line", e);
23599      }
23600      if (element.hasCityElement()) {
23601        composeString("city", element.getCityElement());
23602      }
23603      if (element.hasDistrictElement()) {
23604        composeString("district", element.getDistrictElement());
23605      }
23606      if (element.hasStateElement()) {
23607        composeString("state", element.getStateElement());
23608      }
23609      if (element.hasPostalCodeElement()) {
23610        composeString("postalCode", element.getPostalCodeElement());
23611      }
23612      if (element.hasCountryElement()) {
23613        composeString("country", element.getCountryElement());
23614      }
23615      if (element.hasPeriod()) {
23616        composePeriod("period", element.getPeriod());
23617      }
23618  }
23619
23620  protected void composeContributor(String name, Contributor element) throws IOException {
23621    if (element != null) {
23622      composeTypeAttributes(element);
23623      xml.enter(FHIR_NS, name);
23624      composeContributorElements(element);
23625      composeElementClose(element);
23626      xml.exit(FHIR_NS, name);
23627    }
23628  }
23629
23630  protected void composeContributorElements(Contributor element) throws IOException {
23631      composeElementElements(element);
23632      if (element.hasTypeElement())
23633        composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
23634      if (element.hasNameElement()) {
23635        composeString("name", element.getNameElement());
23636      }
23637      if (element.hasContact()) { 
23638        for (ContactDetail e : element.getContact()) 
23639          composeContactDetail("contact", e);
23640      }
23641  }
23642
23643  protected void composeAttachment(String name, Attachment element) throws IOException {
23644    if (element != null) {
23645      composeTypeAttributes(element);
23646      xml.enter(FHIR_NS, name);
23647      composeAttachmentElements(element);
23648      composeElementClose(element);
23649      xml.exit(FHIR_NS, name);
23650    }
23651  }
23652
23653  protected void composeAttachmentElements(Attachment element) throws IOException {
23654      composeElementElements(element);
23655      if (element.hasContentTypeElement()) {
23656        composeCode("contentType", element.getContentTypeElement());
23657      }
23658      if (element.hasLanguageElement()) {
23659        composeCode("language", element.getLanguageElement());
23660      }
23661      if (element.hasDataElement()) {
23662        composeBase64Binary("data", element.getDataElement());
23663      }
23664      if (element.hasUrlElement()) {
23665        composeUrl("url", element.getUrlElement());
23666      }
23667      if (element.hasSizeElement()) {
23668        composeUnsignedInt("size", element.getSizeElement());
23669      }
23670      if (element.hasHashElement()) {
23671        composeBase64Binary("hash", element.getHashElement());
23672      }
23673      if (element.hasTitleElement()) {
23674        composeString("title", element.getTitleElement());
23675      }
23676      if (element.hasCreationElement()) {
23677        composeDateTime("creation", element.getCreationElement());
23678      }
23679  }
23680
23681  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
23682    if (element != null) {
23683      composeTypeAttributes(element);
23684      xml.enter(FHIR_NS, name);
23685      composeDataRequirementElements(element);
23686      composeElementClose(element);
23687      xml.exit(FHIR_NS, name);
23688    }
23689  }
23690
23691  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
23692      composeElementElements(element);
23693      if (element.hasTypeElement()) {
23694        composeCode("type", element.getTypeElement());
23695      }
23696      if (element.hasProfile()) { 
23697        for (CanonicalType e : element.getProfile()) 
23698          composeCanonical("profile", e);
23699      }
23700      if (element.hasSubject()) {
23701        composeType("subject", element.getSubject());
23702      }      if (element.hasMustSupport()) { 
23703        for (StringType e : element.getMustSupport()) 
23704          composeString("mustSupport", e);
23705      }
23706      if (element.hasCodeFilter()) { 
23707        for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
23708          composeDataRequirementDataRequirementCodeFilterComponent("codeFilter", e);
23709      }
23710      if (element.hasDateFilter()) { 
23711        for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
23712          composeDataRequirementDataRequirementDateFilterComponent("dateFilter", e);
23713      }
23714      if (element.hasLimitElement()) {
23715        composePositiveInt("limit", element.getLimitElement());
23716      }
23717      if (element.hasSort()) { 
23718        for (DataRequirement.DataRequirementSortComponent e : element.getSort()) 
23719          composeDataRequirementDataRequirementSortComponent("sort", e);
23720      }
23721  }
23722
23723  protected void composeDataRequirementDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
23724    if (element != null) {
23725      composeElementAttributes(element);
23726      xml.enter(FHIR_NS, name);
23727      composeDataRequirementDataRequirementCodeFilterComponentElements(element);
23728      composeElementClose(element);
23729      xml.exit(FHIR_NS, name);
23730    }
23731  }
23732
23733  protected void composeDataRequirementDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
23734      composeElementElements(element);
23735      if (element.hasPathElement()) {
23736        composeString("path", element.getPathElement());
23737      }
23738      if (element.hasValueSet()) {
23739        composeType("valueSet", element.getValueSet());
23740      }      if (element.hasCode()) { 
23741        for (Coding e : element.getCode()) 
23742          composeCoding("code", e);
23743      }
23744  }
23745
23746  protected void composeDataRequirementDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
23747    if (element != null) {
23748      composeElementAttributes(element);
23749      xml.enter(FHIR_NS, name);
23750      composeDataRequirementDataRequirementDateFilterComponentElements(element);
23751      composeElementClose(element);
23752      xml.exit(FHIR_NS, name);
23753    }
23754  }
23755
23756  protected void composeDataRequirementDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
23757      composeElementElements(element);
23758      if (element.hasPathElement()) {
23759        composeString("path", element.getPathElement());
23760      }
23761      if (element.hasValue()) {
23762        composeType("value", element.getValue());
23763      }  }
23764
23765  protected void composeDataRequirementDataRequirementSortComponent(String name, DataRequirement.DataRequirementSortComponent element) throws IOException {
23766    if (element != null) {
23767      composeElementAttributes(element);
23768      xml.enter(FHIR_NS, name);
23769      composeDataRequirementDataRequirementSortComponentElements(element);
23770      composeElementClose(element);
23771      xml.exit(FHIR_NS, name);
23772    }
23773  }
23774
23775  protected void composeDataRequirementDataRequirementSortComponentElements(DataRequirement.DataRequirementSortComponent element) throws IOException {
23776      composeElementElements(element);
23777      if (element.hasPathElement()) {
23778        composeString("path", element.getPathElement());
23779      }
23780      if (element.hasDirectionElement())
23781        composeEnumeration("direction", element.getDirectionElement(), new DataRequirement.SortDirectionEnumFactory());
23782  }
23783
23784  protected void composeDosage(String name, Dosage element) throws IOException {
23785    if (element != null) {
23786      composeTypeAttributes(element);
23787      xml.enter(FHIR_NS, name);
23788      composeDosageElements(element);
23789      composeElementClose(element);
23790      xml.exit(FHIR_NS, name);
23791    }
23792  }
23793
23794  protected void composeDosageElements(Dosage element) throws IOException {
23795      composeBackboneElementElements(element);
23796      if (element.hasSequenceElement()) {
23797        composeInteger("sequence", element.getSequenceElement());
23798      }
23799      if (element.hasTextElement()) {
23800        composeString("text", element.getTextElement());
23801      }
23802      if (element.hasAdditionalInstruction()) { 
23803        for (CodeableConcept e : element.getAdditionalInstruction()) 
23804          composeCodeableConcept("additionalInstruction", e);
23805      }
23806      if (element.hasPatientInstructionElement()) {
23807        composeString("patientInstruction", element.getPatientInstructionElement());
23808      }
23809      if (element.hasTiming()) {
23810        composeTiming("timing", element.getTiming());
23811      }
23812      if (element.hasAsNeeded()) {
23813        composeType("asNeeded", element.getAsNeeded());
23814      }      if (element.hasSite()) {
23815        composeCodeableConcept("site", element.getSite());
23816      }
23817      if (element.hasRoute()) {
23818        composeCodeableConcept("route", element.getRoute());
23819      }
23820      if (element.hasMethod()) {
23821        composeCodeableConcept("method", element.getMethod());
23822      }
23823      if (element.hasDoseAndRate()) { 
23824        for (Dosage.DosageDoseAndRateComponent e : element.getDoseAndRate()) 
23825          composeDosageDosageDoseAndRateComponent("doseAndRate", e);
23826      }
23827      if (element.hasMaxDosePerPeriod()) {
23828        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
23829      }
23830      if (element.hasMaxDosePerAdministration()) {
23831        composeSimpleQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
23832      }
23833      if (element.hasMaxDosePerLifetime()) {
23834        composeSimpleQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
23835      }
23836  }
23837
23838  protected void composeDosageDosageDoseAndRateComponent(String name, Dosage.DosageDoseAndRateComponent element) throws IOException {
23839    if (element != null) {
23840      composeElementAttributes(element);
23841      xml.enter(FHIR_NS, name);
23842      composeDosageDosageDoseAndRateComponentElements(element);
23843      composeElementClose(element);
23844      xml.exit(FHIR_NS, name);
23845    }
23846  }
23847
23848  protected void composeDosageDosageDoseAndRateComponentElements(Dosage.DosageDoseAndRateComponent element) throws IOException {
23849      composeElementElements(element);
23850      if (element.hasType()) {
23851        composeCodeableConcept("type", element.getType());
23852      }
23853      if (element.hasDose()) {
23854        composeType("dose", element.getDose());
23855      }      if (element.hasRate()) {
23856        composeType("rate", element.getRate());
23857      }  }
23858
23859  protected void composeHumanName(String name, HumanName element) throws IOException {
23860    if (element != null) {
23861      composeTypeAttributes(element);
23862      xml.enter(FHIR_NS, name);
23863      composeHumanNameElements(element);
23864      composeElementClose(element);
23865      xml.exit(FHIR_NS, name);
23866    }
23867  }
23868
23869  protected void composeHumanNameElements(HumanName element) throws IOException {
23870      composeElementElements(element);
23871      if (element.hasUseElement())
23872        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
23873      if (element.hasTextElement()) {
23874        composeString("text", element.getTextElement());
23875      }
23876      if (element.hasFamilyElement()) {
23877        composeString("family", element.getFamilyElement());
23878      }
23879      if (element.hasGiven()) { 
23880        for (StringType e : element.getGiven()) 
23881          composeString("given", e);
23882      }
23883      if (element.hasPrefix()) { 
23884        for (StringType e : element.getPrefix()) 
23885          composeString("prefix", e);
23886      }
23887      if (element.hasSuffix()) { 
23888        for (StringType e : element.getSuffix()) 
23889          composeString("suffix", e);
23890      }
23891      if (element.hasPeriod()) {
23892        composePeriod("period", element.getPeriod());
23893      }
23894  }
23895
23896  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
23897    if (element != null) {
23898      composeTypeAttributes(element);
23899      xml.enter(FHIR_NS, name);
23900      composeContactPointElements(element);
23901      composeElementClose(element);
23902      xml.exit(FHIR_NS, name);
23903    }
23904  }
23905
23906  protected void composeContactPointElements(ContactPoint element) throws IOException {
23907      composeElementElements(element);
23908      if (element.hasSystemElement())
23909        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
23910      if (element.hasValueElement()) {
23911        composeString("value", element.getValueElement());
23912      }
23913      if (element.hasUseElement())
23914        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
23915      if (element.hasRankElement()) {
23916        composePositiveInt("rank", element.getRankElement());
23917      }
23918      if (element.hasPeriod()) {
23919        composePeriod("period", element.getPeriod());
23920      }
23921  }
23922
23923  protected void composeIdentifier(String name, Identifier element) throws IOException {
23924    if (element != null) {
23925      composeTypeAttributes(element);
23926      xml.enter(FHIR_NS, name);
23927      composeIdentifierElements(element);
23928      composeElementClose(element);
23929      xml.exit(FHIR_NS, name);
23930    }
23931  }
23932
23933  protected void composeIdentifierElements(Identifier element) throws IOException {
23934      composeElementElements(element);
23935      if (element.hasUseElement())
23936        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
23937      if (element.hasType()) {
23938        composeCodeableConcept("type", element.getType());
23939      }
23940      if (element.hasSystemElement()) {
23941        composeUri("system", element.getSystemElement());
23942      }
23943      if (element.hasValueElement()) {
23944        composeString("value", element.getValueElement());
23945      }
23946      if (element.hasPeriod()) {
23947        composePeriod("period", element.getPeriod());
23948      }
23949      if (element.hasAssigner()) {
23950        composeReference("assigner", element.getAssigner());
23951      }
23952  }
23953
23954  protected void composeCoding(String name, Coding element) throws IOException {
23955    if (element != null) {
23956      composeTypeAttributes(element);
23957      xml.enter(FHIR_NS, name);
23958      composeCodingElements(element);
23959      composeElementClose(element);
23960      xml.exit(FHIR_NS, name);
23961    }
23962  }
23963
23964  protected void composeCodingElements(Coding element) throws IOException {
23965      composeElementElements(element);
23966      if (element.hasSystemElement()) {
23967        composeUri("system", element.getSystemElement());
23968      }
23969      if (element.hasVersionElement()) {
23970        composeString("version", element.getVersionElement());
23971      }
23972      if (element.hasCodeElement()) {
23973        composeCode("code", element.getCodeElement());
23974      }
23975      if (element.hasDisplayElement()) {
23976        composeString("display", element.getDisplayElement());
23977      }
23978      if (element.hasUserSelectedElement()) {
23979        composeBoolean("userSelected", element.getUserSelectedElement());
23980      }
23981  }
23982
23983  protected void composeSampledData(String name, SampledData element) throws IOException {
23984    if (element != null) {
23985      composeTypeAttributes(element);
23986      xml.enter(FHIR_NS, name);
23987      composeSampledDataElements(element);
23988      composeElementClose(element);
23989      xml.exit(FHIR_NS, name);
23990    }
23991  }
23992
23993  protected void composeSampledDataElements(SampledData element) throws IOException {
23994      composeElementElements(element);
23995      if (element.hasOrigin()) {
23996        composeSimpleQuantity("origin", element.getOrigin());
23997      }
23998      if (element.hasPeriodElement()) {
23999        composeDecimal("period", element.getPeriodElement());
24000      }
24001      if (element.hasFactorElement()) {
24002        composeDecimal("factor", element.getFactorElement());
24003      }
24004      if (element.hasLowerLimitElement()) {
24005        composeDecimal("lowerLimit", element.getLowerLimitElement());
24006      }
24007      if (element.hasUpperLimitElement()) {
24008        composeDecimal("upperLimit", element.getUpperLimitElement());
24009      }
24010      if (element.hasDimensionsElement()) {
24011        composePositiveInt("dimensions", element.getDimensionsElement());
24012      }
24013      if (element.hasDataElement()) {
24014        composeString("data", element.getDataElement());
24015      }
24016  }
24017
24018  protected void composeRatio(String name, Ratio element) throws IOException {
24019    if (element != null) {
24020      composeTypeAttributes(element);
24021      xml.enter(FHIR_NS, name);
24022      composeRatioElements(element);
24023      composeElementClose(element);
24024      xml.exit(FHIR_NS, name);
24025    }
24026  }
24027
24028  protected void composeRatioElements(Ratio element) throws IOException {
24029      composeElementElements(element);
24030      if (element.hasNumerator()) {
24031        composeQuantity("numerator", element.getNumerator());
24032      }
24033      if (element.hasDenominator()) {
24034        composeQuantity("denominator", element.getDenominator());
24035      }
24036  }
24037
24038  protected void composeReference(String name, Reference element) throws IOException {
24039    if (element != null) {
24040      composeTypeAttributes(element);
24041      xml.enter(FHIR_NS, name);
24042      composeReferenceElements(element);
24043      composeElementClose(element);
24044      xml.exit(FHIR_NS, name);
24045    }
24046  }
24047
24048  protected void composeReferenceElements(Reference element) throws IOException {
24049      composeElementElements(element);
24050      if (element.hasReferenceElement()) {
24051        composeString("reference", element.getReferenceElement());
24052      }
24053      if (element.hasTypeElement()) {
24054        composeUri("type", element.getTypeElement());
24055      }
24056      if (element.hasIdentifier()) {
24057        composeIdentifier("identifier", element.getIdentifier());
24058      }
24059      if (element.hasDisplayElement()) {
24060        composeString("display", element.getDisplayElement());
24061      }
24062  }
24063
24064  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
24065    if (element != null) {
24066      composeTypeAttributes(element);
24067      xml.enter(FHIR_NS, name);
24068      composeTriggerDefinitionElements(element);
24069      composeElementClose(element);
24070      xml.exit(FHIR_NS, name);
24071    }
24072  }
24073
24074  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
24075      composeElementElements(element);
24076      if (element.hasTypeElement())
24077        composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
24078      if (element.hasNameElement()) {
24079        composeString("name", element.getNameElement());
24080      }
24081      if (element.hasTiming()) {
24082        composeType("timing", element.getTiming());
24083      }      if (element.hasData()) {
24084        composeDataRequirement("data", element.getData());
24085      }
24086      if (element.hasCondition()) {
24087        composeTriggerDefinitionTriggerDefinitionConditionComponent("condition", element.getCondition());
24088      }
24089  }
24090
24091  protected void composeTriggerDefinitionTriggerDefinitionConditionComponent(String name, TriggerDefinition.TriggerDefinitionConditionComponent element) throws IOException {
24092    if (element != null) {
24093      composeElementAttributes(element);
24094      xml.enter(FHIR_NS, name);
24095      composeTriggerDefinitionTriggerDefinitionConditionComponentElements(element);
24096      composeElementClose(element);
24097      xml.exit(FHIR_NS, name);
24098    }
24099  }
24100
24101  protected void composeTriggerDefinitionTriggerDefinitionConditionComponentElements(TriggerDefinition.TriggerDefinitionConditionComponent element) throws IOException {
24102      composeElementElements(element);
24103      if (element.hasDescriptionElement()) {
24104        composeString("description", element.getDescriptionElement());
24105      }
24106      if (element.hasLanguageElement())
24107        composeEnumeration("language", element.getLanguageElement(), new TriggerDefinition.ExpressionLanguageEnumFactory());
24108      if (element.hasExpressionElement()) {
24109        composeString("expression", element.getExpressionElement());
24110      }
24111  }
24112
24113  protected void composeQuantity(String name, Quantity element) throws IOException {
24114    if (element != null) {
24115      composeTypeAttributes(element);
24116      xml.enter(FHIR_NS, name);
24117      composeQuantityElements(element);
24118      composeElementClose(element);
24119      xml.exit(FHIR_NS, name);
24120    }
24121  }
24122
24123  protected void composeQuantityElements(Quantity element) throws IOException {
24124      composeElementElements(element);
24125      if (element.hasValueElement()) {
24126        composeDecimal("value", element.getValueElement());
24127      }
24128      if (element.hasComparatorElement())
24129        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
24130      if (element.hasUnitElement()) {
24131        composeString("unit", element.getUnitElement());
24132      }
24133      if (element.hasSystemElement()) {
24134        composeUri("system", element.getSystemElement());
24135      }
24136      if (element.hasCodeElement()) {
24137        composeCode("code", element.getCodeElement());
24138      }
24139  }
24140
24141  protected void composePeriod(String name, Period element) throws IOException {
24142    if (element != null) {
24143      composeTypeAttributes(element);
24144      xml.enter(FHIR_NS, name);
24145      composePeriodElements(element);
24146      composeElementClose(element);
24147      xml.exit(FHIR_NS, name);
24148    }
24149  }
24150
24151  protected void composePeriodElements(Period element) throws IOException {
24152      composeElementElements(element);
24153      if (element.hasStartElement()) {
24154        composeDateTime("start", element.getStartElement());
24155      }
24156      if (element.hasEndElement()) {
24157        composeDateTime("end", element.getEndElement());
24158      }
24159  }
24160
24161  protected void composeRange(String name, Range element) throws IOException {
24162    if (element != null) {
24163      composeTypeAttributes(element);
24164      xml.enter(FHIR_NS, name);
24165      composeRangeElements(element);
24166      composeElementClose(element);
24167      xml.exit(FHIR_NS, name);
24168    }
24169  }
24170
24171  protected void composeRangeElements(Range element) throws IOException {
24172      composeElementElements(element);
24173      if (element.hasLow()) {
24174        composeSimpleQuantity("low", element.getLow());
24175      }
24176      if (element.hasHigh()) {
24177        composeSimpleQuantity("high", element.getHigh());
24178      }
24179  }
24180
24181  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
24182    if (element != null) {
24183      composeTypeAttributes(element);
24184      xml.enter(FHIR_NS, name);
24185      composeRelatedArtifactElements(element);
24186      composeElementClose(element);
24187      xml.exit(FHIR_NS, name);
24188    }
24189  }
24190
24191  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
24192      composeElementElements(element);
24193      if (element.hasTypeElement())
24194        composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
24195      if (element.hasDisplayElement()) {
24196        composeString("display", element.getDisplayElement());
24197      }
24198      if (element.hasCitationElement()) {
24199        composeString("citation", element.getCitationElement());
24200      }
24201      if (element.hasUrlElement()) {
24202        composeUrl("url", element.getUrlElement());
24203      }
24204      if (element.hasDocument()) {
24205        composeAttachment("document", element.getDocument());
24206      }
24207      if (element.hasResourceElement()) {
24208        composeCanonical("resource", element.getResourceElement());
24209      }
24210  }
24211
24212  protected void composeAnnotation(String name, Annotation element) throws IOException {
24213    if (element != null) {
24214      composeTypeAttributes(element);
24215      xml.enter(FHIR_NS, name);
24216      composeAnnotationElements(element);
24217      composeElementClose(element);
24218      xml.exit(FHIR_NS, name);
24219    }
24220  }
24221
24222  protected void composeAnnotationElements(Annotation element) throws IOException {
24223      composeElementElements(element);
24224      if (element.hasAuthor()) {
24225        composeType("author", element.getAuthor());
24226      }      if (element.hasTimeElement()) {
24227        composeDateTime("time", element.getTimeElement());
24228      }
24229      if (element.hasTextElement()) {
24230        composeString("text", element.getTextElement());
24231      }
24232  }
24233
24234  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
24235    if (element != null) {
24236      composeTypeAttributes(element);
24237      xml.enter(FHIR_NS, name);
24238      composeContactDetailElements(element);
24239      composeElementClose(element);
24240      xml.exit(FHIR_NS, name);
24241    }
24242  }
24243
24244  protected void composeContactDetailElements(ContactDetail element) throws IOException {
24245      composeElementElements(element);
24246      if (element.hasNameElement()) {
24247        composeString("name", element.getNameElement());
24248      }
24249      if (element.hasTelecom()) { 
24250        for (ContactPoint e : element.getTelecom()) 
24251          composeContactPoint("telecom", e);
24252      }
24253  }
24254
24255  protected void composeUsageContext(String name, UsageContext element) throws IOException {
24256    if (element != null) {
24257      composeTypeAttributes(element);
24258      xml.enter(FHIR_NS, name);
24259      composeUsageContextElements(element);
24260      composeElementClose(element);
24261      xml.exit(FHIR_NS, name);
24262    }
24263  }
24264
24265  protected void composeUsageContextElements(UsageContext element) throws IOException {
24266      composeElementElements(element);
24267      if (element.hasCode()) {
24268        composeCoding("code", element.getCode());
24269      }
24270      if (element.hasValue()) {
24271        composeType("value", element.getValue());
24272      }  }
24273
24274  protected void composeSignature(String name, Signature element) throws IOException {
24275    if (element != null) {
24276      composeTypeAttributes(element);
24277      xml.enter(FHIR_NS, name);
24278      composeSignatureElements(element);
24279      composeElementClose(element);
24280      xml.exit(FHIR_NS, name);
24281    }
24282  }
24283
24284  protected void composeSignatureElements(Signature element) throws IOException {
24285      composeElementElements(element);
24286      if (element.hasType()) { 
24287        for (Coding e : element.getType()) 
24288          composeCoding("type", e);
24289      }
24290      if (element.hasWhenElement()) {
24291        composeInstant("when", element.getWhenElement());
24292      }
24293      if (element.hasWho()) {
24294        composeType("who", element.getWho());
24295      }      if (element.hasOnBehalfOf()) {
24296        composeType("onBehalfOf", element.getOnBehalfOf());
24297      }      if (element.hasTargetFormatElement()) {
24298        composeCode("targetFormat", element.getTargetFormatElement());
24299      }
24300      if (element.hasSigFormatElement()) {
24301        composeCode("sigFormat", element.getSigFormatElement());
24302      }
24303      if (element.hasBlobElement()) {
24304        composeBase64Binary("blob", element.getBlobElement());
24305      }
24306  }
24307
24308  protected void composeTiming(String name, Timing element) throws IOException {
24309    if (element != null) {
24310      composeTypeAttributes(element);
24311      xml.enter(FHIR_NS, name);
24312      composeTimingElements(element);
24313      composeElementClose(element);
24314      xml.exit(FHIR_NS, name);
24315    }
24316  }
24317
24318  protected void composeTimingElements(Timing element) throws IOException {
24319      composeBackboneElementElements(element);
24320      if (element.hasEvent()) { 
24321        for (DateTimeType e : element.getEvent())
24322          composeDateTime("event", e);
24323      }
24324      if (element.hasRepeat()) {
24325        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
24326      }
24327      if (element.hasCode()) {
24328        composeCodeableConcept("code", element.getCode());
24329      }
24330  }
24331
24332  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
24333    if (element != null) {
24334      composeElementAttributes(element);
24335      xml.enter(FHIR_NS, name);
24336      composeTimingTimingRepeatComponentElements(element);
24337      composeElementClose(element);
24338      xml.exit(FHIR_NS, name);
24339    }
24340  }
24341
24342  protected void composeTimingTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
24343      composeElementElements(element);
24344      if (element.hasBounds()) {
24345        composeType("bounds", element.getBounds());
24346      }      if (element.hasCountElement()) {
24347        composeInteger("count", element.getCountElement());
24348      }
24349      if (element.hasCountMaxElement()) {
24350        composeInteger("countMax", element.getCountMaxElement());
24351      }
24352      if (element.hasDurationElement()) {
24353        composeDecimal("duration", element.getDurationElement());
24354      }
24355      if (element.hasDurationMaxElement()) {
24356        composeDecimal("durationMax", element.getDurationMaxElement());
24357      }
24358      if (element.hasDurationUnitElement())
24359        composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
24360      if (element.hasFrequencyElement()) {
24361        composeInteger("frequency", element.getFrequencyElement());
24362      }
24363      if (element.hasFrequencyMaxElement()) {
24364        composeInteger("frequencyMax", element.getFrequencyMaxElement());
24365      }
24366      if (element.hasPeriodElement()) {
24367        composeDecimal("period", element.getPeriodElement());
24368      }
24369      if (element.hasPeriodMaxElement()) {
24370        composeDecimal("periodMax", element.getPeriodMaxElement());
24371      }
24372      if (element.hasPeriodUnitElement())
24373        composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
24374        if (element.hasDayOfWeek()) 
24375          for (Enumeration<Timing.DayOfWeek> e : element.getDayOfWeek()) 
24376            composeEnumeration("dayOfWeek", e, new Timing.DayOfWeekEnumFactory());
24377      if (element.hasTimeOfDay()) { 
24378        for (TimeType e : element.getTimeOfDay()) 
24379          composeTime("timeOfDay", e);
24380      }
24381        if (element.hasWhen()) 
24382          for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
24383            composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
24384      if (element.hasOffsetElement()) {
24385        composeUnsignedInt("offset", element.getOffsetElement());
24386      }
24387  }
24388
24389  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
24390    if (element != null) {
24391      composeTypeAttributes(element);
24392      xml.enter(FHIR_NS, name);
24393      composeCodeableConceptElements(element);
24394      composeElementClose(element);
24395      xml.exit(FHIR_NS, name);
24396    }
24397  }
24398
24399  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
24400      composeElementElements(element);
24401      if (element.hasCoding()) { 
24402        for (Coding e : element.getCoding()) 
24403          composeCoding("coding", e);
24404      }
24405      if (element.hasTextElement()) {
24406        composeString("text", element.getTextElement());
24407      }
24408  }
24409
24410  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
24411    if (element != null) {
24412      composeTypeAttributes(element);
24413      xml.enter(FHIR_NS, name);
24414      composeParameterDefinitionElements(element);
24415      composeElementClose(element);
24416      xml.exit(FHIR_NS, name);
24417    }
24418  }
24419
24420  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
24421      composeElementElements(element);
24422      if (element.hasNameElement()) {
24423        composeCode("name", element.getNameElement());
24424      }
24425      if (element.hasUseElement())
24426        composeEnumeration("use", element.getUseElement(), new ParameterDefinition.ParameterUseEnumFactory());
24427      if (element.hasMinElement()) {
24428        composeInteger("min", element.getMinElement());
24429      }
24430      if (element.hasMaxElement()) {
24431        composeString("max", element.getMaxElement());
24432      }
24433      if (element.hasDocumentationElement()) {
24434        composeString("documentation", element.getDocumentationElement());
24435      }
24436      if (element.hasTypeElement()) {
24437        composeCode("type", element.getTypeElement());
24438      }
24439      if (element.hasProfileElement()) {
24440        composeCanonical("profile", element.getProfileElement());
24441      }
24442  }
24443
24444  protected void composeSimpleQuantity(String name, SimpleQuantity element) throws IOException {
24445    if (element != null) {
24446      composeTypeAttributes(element);
24447      xml.enter(FHIR_NS, name);
24448      composeSimpleQuantityElements(element);
24449      composeElementClose(element);
24450      xml.exit(FHIR_NS, name);
24451    }
24452  }
24453
24454  protected void composeSimpleQuantityElements(SimpleQuantity element) throws IOException {
24455      composeElementElements(element);
24456      if (element.hasValueElement()) {
24457        composeDecimal("value", element.getValueElement());
24458      }
24459      if (element.hasComparatorElement())
24460        composeEnumeration("comparator", element.getComparatorElement(), new SimpleQuantity.QuantityComparatorEnumFactory());
24461      if (element.hasUnitElement()) {
24462        composeString("unit", element.getUnitElement());
24463      }
24464      if (element.hasSystemElement()) {
24465        composeUri("system", element.getSystemElement());
24466      }
24467      if (element.hasCodeElement()) {
24468        composeCode("code", element.getCodeElement());
24469      }
24470  }
24471
24472  protected void composeMarketingStatus(String name, MarketingStatus element) throws IOException {
24473    if (element != null) {
24474      composeElementAttributes(element);
24475      xml.enter(FHIR_NS, name);
24476      composeMarketingStatusElements(element);
24477      composeElementClose(element);
24478      xml.exit(FHIR_NS, name);
24479    }
24480  }
24481
24482  protected void composeMarketingStatusElements(MarketingStatus element) throws IOException {
24483      composeBackboneElementElements(element);
24484      if (element.hasCountry()) {
24485        composeCodeableConcept("country", element.getCountry());
24486      }
24487      if (element.hasJurisdiction()) {
24488        composeCodeableConcept("jurisdiction", element.getJurisdiction());
24489      }
24490      if (element.hasStatus()) {
24491        composeCodeableConcept("status", element.getStatus());
24492      }
24493      if (element.hasDateRange()) {
24494        composePeriod("dateRange", element.getDateRange());
24495      }
24496      if (element.hasRestoreDateElement()) {
24497        composeDateTime("restoreDate", element.getRestoreDateElement());
24498      }
24499  }
24500
24501  protected void composeSubstanceAmount(String name, SubstanceAmount element) throws IOException {
24502    if (element != null) {
24503      composeElementAttributes(element);
24504      xml.enter(FHIR_NS, name);
24505      composeSubstanceAmountElements(element);
24506      composeElementClose(element);
24507      xml.exit(FHIR_NS, name);
24508    }
24509  }
24510
24511  protected void composeSubstanceAmountElements(SubstanceAmount element) throws IOException {
24512      composeBackboneElementElements(element);
24513      if (element.hasAmount()) {
24514        composeType("amount", element.getAmount());
24515      }      if (element.hasAmountType()) {
24516        composeCodeableConcept("amountType", element.getAmountType());
24517      }
24518      if (element.hasAmountTextElement()) {
24519        composeString("amountText", element.getAmountTextElement());
24520      }
24521      if (element.hasReferenceRange()) {
24522        composeSubstanceAmountSubstanceAmountReferenceRangeComponent("referenceRange", element.getReferenceRange());
24523      }
24524  }
24525
24526  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponent(String name, SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
24527    if (element != null) {
24528      composeElementAttributes(element);
24529      xml.enter(FHIR_NS, name);
24530      composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(element);
24531      composeElementClose(element);
24532      xml.exit(FHIR_NS, name);
24533    }
24534  }
24535
24536  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
24537      composeElementElements(element);
24538      if (element.hasLowLimit()) {
24539        composeQuantity("lowLimit", element.getLowLimit());
24540      }
24541      if (element.hasHighLimit()) {
24542        composeQuantity("highLimit", element.getHighLimit());
24543      }
24544  }
24545
24546  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
24547    if (element != null) {
24548      composeElementAttributes(element);
24549      xml.enter(FHIR_NS, name);
24550      composeElementDefinitionElements(element);
24551      composeElementClose(element);
24552      xml.exit(FHIR_NS, name);
24553    }
24554  }
24555
24556  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
24557      composeBackboneElementElements(element);
24558      if (element.hasPathElement()) {
24559        composeString("path", element.getPathElement());
24560      }
24561        if (element.hasRepresentation()) 
24562          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
24563            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
24564      if (element.hasSliceNameElement()) {
24565        composeString("sliceName", element.getSliceNameElement());
24566      }
24567      if (element.hasLabelElement()) {
24568        composeString("label", element.getLabelElement());
24569      }
24570      if (element.hasCode()) { 
24571        for (Coding e : element.getCode()) 
24572          composeCoding("code", e);
24573      }
24574      if (element.hasSlicing()) {
24575        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
24576      }
24577      if (element.hasShortElement()) {
24578        composeString("short", element.getShortElement());
24579      }
24580      if (element.hasDefinitionElement()) {
24581        composeMarkdown("definition", element.getDefinitionElement());
24582      }
24583      if (element.hasCommentElement()) {
24584        composeMarkdown("comment", element.getCommentElement());
24585      }
24586      if (element.hasRequirementsElement()) {
24587        composeMarkdown("requirements", element.getRequirementsElement());
24588      }
24589      if (element.hasAlias()) { 
24590        for (StringType e : element.getAlias()) 
24591          composeString("alias", e);
24592      }
24593      if (element.hasMinElement()) {
24594        composeUnsignedInt("min", element.getMinElement());
24595      }
24596      if (element.hasMaxElement()) {
24597        composeString("max", element.getMaxElement());
24598      }
24599      if (element.hasBase()) {
24600        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
24601      }
24602      if (element.hasContentReferenceElement()) {
24603        composeUri("contentReference", element.getContentReferenceElement());
24604      }
24605      if (element.hasType()) { 
24606        for (ElementDefinition.TypeRefComponent e : element.getType()) 
24607          composeElementDefinitionTypeRefComponent("type", e);
24608      }
24609      if (element.hasDefaultValue()) {
24610        composeType("defaultValue", element.getDefaultValue());
24611      }      if (element.hasMeaningWhenMissingElement()) {
24612        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
24613      }
24614      if (element.hasOrderMeaningElement()) {
24615        composeString("orderMeaning", element.getOrderMeaningElement());
24616      }
24617      if (element.hasFixed()) {
24618        composeType("fixed", element.getFixed());
24619      }      if (element.hasPattern()) {
24620        composeType("pattern", element.getPattern());
24621      }      if (element.hasExample()) { 
24622        for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
24623          composeElementDefinitionElementDefinitionExampleComponent("example", e);
24624      }
24625      if (element.hasMinValue()) {
24626        composeType("minValue", element.getMinValue());
24627      }      if (element.hasMaxValue()) {
24628        composeType("maxValue", element.getMaxValue());
24629      }      if (element.hasMaxLengthElement()) {
24630        composeInteger("maxLength", element.getMaxLengthElement());
24631      }
24632      if (element.hasCondition()) { 
24633        for (IdType e : element.getCondition()) 
24634          composeId("condition", e);
24635      }
24636      if (element.hasConstraint()) { 
24637        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
24638          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
24639      }
24640      if (element.hasMustSupportElement()) {
24641        composeBoolean("mustSupport", element.getMustSupportElement());
24642      }
24643      if (element.hasIsModifierElement()) {
24644        composeBoolean("isModifier", element.getIsModifierElement());
24645      }
24646      if (element.hasIsModifierReasonElement()) {
24647        composeString("isModifierReason", element.getIsModifierReasonElement());
24648      }
24649      if (element.hasIsSummaryElement()) {
24650        composeBoolean("isSummary", element.getIsSummaryElement());
24651      }
24652      if (element.hasBinding()) {
24653        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
24654      }
24655      if (element.hasMapping()) { 
24656        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
24657          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
24658      }
24659  }
24660
24661  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
24662    if (element != null) {
24663      composeElementAttributes(element);
24664      xml.enter(FHIR_NS, name);
24665      composeElementDefinitionElementDefinitionSlicingComponentElements(element);
24666      composeElementClose(element);
24667      xml.exit(FHIR_NS, name);
24668    }
24669  }
24670
24671  protected void composeElementDefinitionElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
24672      composeElementElements(element);
24673      if (element.hasDiscriminator()) { 
24674        for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
24675          composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
24676      }
24677      if (element.hasDescriptionElement()) {
24678        composeString("description", element.getDescriptionElement());
24679      }
24680      if (element.hasOrderedElement()) {
24681        composeBoolean("ordered", element.getOrderedElement());
24682      }
24683      if (element.hasRulesElement())
24684        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
24685  }
24686
24687  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
24688    if (element != null) {
24689      composeElementAttributes(element);
24690      xml.enter(FHIR_NS, name);
24691      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(element);
24692      composeElementClose(element);
24693      xml.exit(FHIR_NS, name);
24694    }
24695  }
24696
24697  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
24698      composeElementElements(element);
24699      if (element.hasTypeElement())
24700        composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
24701      if (element.hasPathElement()) {
24702        composeString("path", element.getPathElement());
24703      }
24704  }
24705
24706  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
24707    if (element != null) {
24708      composeElementAttributes(element);
24709      xml.enter(FHIR_NS, name);
24710      composeElementDefinitionElementDefinitionBaseComponentElements(element);
24711      composeElementClose(element);
24712      xml.exit(FHIR_NS, name);
24713    }
24714  }
24715
24716  protected void composeElementDefinitionElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
24717      composeElementElements(element);
24718      if (element.hasPathElement()) {
24719        composeString("path", element.getPathElement());
24720      }
24721      if (element.hasMinElement()) {
24722        composeUnsignedInt("min", element.getMinElement());
24723      }
24724      if (element.hasMaxElement()) {
24725        composeString("max", element.getMaxElement());
24726      }
24727  }
24728
24729  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
24730    if (element != null) {
24731      composeElementAttributes(element);
24732      xml.enter(FHIR_NS, name);
24733      composeElementDefinitionTypeRefComponentElements(element);
24734      composeElementClose(element);
24735      xml.exit(FHIR_NS, name);
24736    }
24737  }
24738
24739  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
24740      composeElementElements(element);
24741      if (element.hasCodeElement()) {
24742        composeUri("code", element.getCodeElement());
24743      }
24744      if (element.hasProfile()) { 
24745        for (CanonicalType e : element.getProfile()) 
24746          composeCanonical("profile", e);
24747      }
24748      if (element.hasTargetProfile()) { 
24749        for (CanonicalType e : element.getTargetProfile()) 
24750          composeCanonical("targetProfile", e);
24751      }
24752        if (element.hasAggregation()) 
24753          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
24754            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
24755      if (element.hasVersioningElement())
24756        composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
24757  }
24758
24759  protected void composeElementDefinitionElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
24760    if (element != null) {
24761      composeElementAttributes(element);
24762      xml.enter(FHIR_NS, name);
24763      composeElementDefinitionElementDefinitionExampleComponentElements(element);
24764      composeElementClose(element);
24765      xml.exit(FHIR_NS, name);
24766    }
24767  }
24768
24769  protected void composeElementDefinitionElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
24770      composeElementElements(element);
24771      if (element.hasLabelElement()) {
24772        composeString("label", element.getLabelElement());
24773      }
24774      if (element.hasValue()) {
24775        composeType("value", element.getValue());
24776      }  }
24777
24778  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
24779    if (element != null) {
24780      composeElementAttributes(element);
24781      xml.enter(FHIR_NS, name);
24782      composeElementDefinitionElementDefinitionConstraintComponentElements(element);
24783      composeElementClose(element);
24784      xml.exit(FHIR_NS, name);
24785    }
24786  }
24787
24788  protected void composeElementDefinitionElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
24789      composeElementElements(element);
24790      if (element.hasKeyElement()) {
24791        composeId("key", element.getKeyElement());
24792      }
24793      if (element.hasRequirementsElement()) {
24794        composeString("requirements", element.getRequirementsElement());
24795      }
24796      if (element.hasSeverityElement())
24797        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
24798      if (element.hasHumanElement()) {
24799        composeString("human", element.getHumanElement());
24800      }
24801      if (element.hasExpressionElement()) {
24802        composeString("expression", element.getExpressionElement());
24803      }
24804      if (element.hasXpathElement()) {
24805        composeString("xpath", element.getXpathElement());
24806      }
24807      if (element.hasSourceElement()) {
24808        composeCanonical("source", element.getSourceElement());
24809      }
24810  }
24811
24812  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
24813    if (element != null) {
24814      composeElementAttributes(element);
24815      xml.enter(FHIR_NS, name);
24816      composeElementDefinitionElementDefinitionBindingComponentElements(element);
24817      composeElementClose(element);
24818      xml.exit(FHIR_NS, name);
24819    }
24820  }
24821
24822  protected void composeElementDefinitionElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
24823      composeElementElements(element);
24824      if (element.hasStrengthElement())
24825        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
24826      if (element.hasDescriptionElement()) {
24827        composeString("description", element.getDescriptionElement());
24828      }
24829      if (element.hasValueSet()) {
24830        composeType("valueSet", element.getValueSet());
24831      }  }
24832
24833  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
24834    if (element != null) {
24835      composeElementAttributes(element);
24836      xml.enter(FHIR_NS, name);
24837      composeElementDefinitionElementDefinitionMappingComponentElements(element);
24838      composeElementClose(element);
24839      xml.exit(FHIR_NS, name);
24840    }
24841  }
24842
24843  protected void composeElementDefinitionElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
24844      composeElementElements(element);
24845      if (element.hasIdentityElement()) {
24846        composeId("identity", element.getIdentityElement());
24847      }
24848      if (element.hasLanguageElement()) {
24849        composeCode("language", element.getLanguageElement());
24850      }
24851      if (element.hasMapElement()) {
24852        composeString("map", element.getMapElement());
24853      }
24854      if (element.hasCommentElement()) {
24855        composeString("comment", element.getCommentElement());
24856      }
24857  }
24858
24859  protected void composeSubstanceMoiety(String name, SubstanceMoiety element) throws IOException {
24860    if (element != null) {
24861      composeElementAttributes(element);
24862      xml.enter(FHIR_NS, name);
24863      composeSubstanceMoietyElements(element);
24864      composeElementClose(element);
24865      xml.exit(FHIR_NS, name);
24866    }
24867  }
24868
24869  protected void composeSubstanceMoietyElements(SubstanceMoiety element) throws IOException {
24870      composeBackboneElementElements(element);
24871      if (element.hasRole()) {
24872        composeCodeableConcept("role", element.getRole());
24873      }
24874      if (element.hasIdentifier()) {
24875        composeIdentifier("identifier", element.getIdentifier());
24876      }
24877      if (element.hasNameElement()) {
24878        composeString("name", element.getNameElement());
24879      }
24880      if (element.hasStereochemistry()) {
24881        composeCodeableConcept("stereochemistry", element.getStereochemistry());
24882      }
24883      if (element.hasOpticalActivity()) {
24884        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
24885      }
24886      if (element.hasMolecularFormulaElement()) {
24887        composeString("molecularFormula", element.getMolecularFormulaElement());
24888      }
24889      if (element.hasAmount()) {
24890        composeSubstanceAmount("amount", element.getAmount());
24891      }
24892  }
24893
24894  protected void composeProductShelfLife(String name, ProductShelfLife element) throws IOException {
24895    if (element != null) {
24896      composeElementAttributes(element);
24897      xml.enter(FHIR_NS, name);
24898      composeProductShelfLifeElements(element);
24899      composeElementClose(element);
24900      xml.exit(FHIR_NS, name);
24901    }
24902  }
24903
24904  protected void composeProductShelfLifeElements(ProductShelfLife element) throws IOException {
24905      composeBackboneElementElements(element);
24906      if (element.hasIdentifier()) {
24907        composeIdentifier("identifier", element.getIdentifier());
24908      }
24909      if (element.hasType()) {
24910        composeCodeableConcept("type", element.getType());
24911      }
24912      if (element.hasPeriod()) {
24913        composeQuantity("period", element.getPeriod());
24914      }
24915      if (element.hasSpecialPrecautionsForStorage()) { 
24916        for (CodeableConcept e : element.getSpecialPrecautionsForStorage()) 
24917          composeCodeableConcept("specialPrecautionsForStorage", e);
24918      }
24919  }
24920
24921  protected void composeProdCharacteristic(String name, ProdCharacteristic element) throws IOException {
24922    if (element != null) {
24923      composeElementAttributes(element);
24924      xml.enter(FHIR_NS, name);
24925      composeProdCharacteristicElements(element);
24926      composeElementClose(element);
24927      xml.exit(FHIR_NS, name);
24928    }
24929  }
24930
24931  protected void composeProdCharacteristicElements(ProdCharacteristic element) throws IOException {
24932      composeBackboneElementElements(element);
24933      if (element.hasHeight()) {
24934        composeQuantity("height", element.getHeight());
24935      }
24936      if (element.hasWidth()) {
24937        composeQuantity("width", element.getWidth());
24938      }
24939      if (element.hasDepth()) {
24940        composeQuantity("depth", element.getDepth());
24941      }
24942      if (element.hasWeight()) {
24943        composeQuantity("weight", element.getWeight());
24944      }
24945      if (element.hasNominalVolume()) {
24946        composeQuantity("nominalVolume", element.getNominalVolume());
24947      }
24948      if (element.hasExternalDiameter()) {
24949        composeQuantity("externalDiameter", element.getExternalDiameter());
24950      }
24951      if (element.hasShapeElement()) {
24952        composeString("shape", element.getShapeElement());
24953      }
24954      if (element.hasColor()) { 
24955        for (StringType e : element.getColor()) 
24956          composeString("color", e);
24957      }
24958      if (element.hasImprint()) { 
24959        for (StringType e : element.getImprint()) 
24960          composeString("imprint", e);
24961      }
24962      if (element.hasImage()) { 
24963        for (Attachment e : element.getImage()) 
24964          composeAttachment("image", e);
24965      }
24966      if (element.hasScoring()) {
24967        composeCodeableConcept("scoring", element.getScoring());
24968      }
24969  }
24970
24971  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
24972    composeResourceAttributes(element);
24973  }
24974
24975  protected void composeDomainResourceElements(DomainResource element) throws IOException {
24976    composeResourceElements(element);
24977      if (element.hasText()) {
24978        composeNarrative("text", element.getText());
24979      }
24980      if (element.hasContained()) { 
24981        for (Resource e : element.getContained()) 
24982        {
24983          xml.enter(FHIR_NS, "contained");
24984          composeResource(e);
24985          xml.exit(FHIR_NS, "contained");
24986        }
24987      }
24988      if (element.hasExtension()) 
24989        for (Extension e : element.getExtension()) 
24990          composeExtension("extension", e);
24991      if (element.hasModifierExtension()) { 
24992        for (Extension e : element.getModifierExtension()) 
24993          composeExtension("modifierExtension", e);
24994      }
24995  }
24996
24997  protected void composeParameters(String name, Parameters element) throws IOException {
24998    if (element != null) {
24999      composeResourceAttributes(element);
25000      xml.enter(FHIR_NS, name);
25001      composeParametersElements(element);
25002      composeElementClose(element);
25003      xml.exit(FHIR_NS, name);
25004    }
25005  }
25006
25007  protected void composeParametersElements(Parameters element) throws IOException {
25008      composeResourceElements(element);
25009      if (element.hasParameter()) { 
25010        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
25011          composeParametersParametersParameterComponent("parameter", e);
25012      }
25013  }
25014
25015  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
25016    if (element != null) {
25017      composeElementAttributes(element);
25018      xml.enter(FHIR_NS, name);
25019      composeParametersParametersParameterComponentElements(element);
25020      composeElementClose(element);
25021      xml.exit(FHIR_NS, name);
25022    }
25023  }
25024
25025  protected void composeParametersParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
25026      composeBackboneElementElements(element);
25027      if (element.hasNameElement()) {
25028        composeString("name", element.getNameElement());
25029      }
25030      if (element.hasValue()) {
25031        composeType("value", element.getValue());
25032      }      if (element.hasResource()) {
25033        xml.enter(FHIR_NS, "resource");
25034        composeResource(element.getResource());
25035        xml.exit(FHIR_NS, "resource");
25036      }
25037      if (element.hasPart()) { 
25038        for (Parameters.ParametersParameterComponent e : element.getPart()) 
25039          composeParametersParametersParameterComponent("part", e);
25040      }
25041  }
25042
25043  protected void composeResourceAttributes(Resource element) throws IOException {
25044    if (style != OutputStyle.CANONICAL)
25045      for (String comment : element.getFormatCommentsPre())
25046        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
25047  }
25048
25049  protected void composeResourceElements(Resource element) throws IOException {
25050      if (element.hasIdElement()) {
25051        composeId("id", element.getIdElement());
25052      }
25053      if (element.hasMeta()) {
25054        composeMeta("meta", element.getMeta());
25055      }
25056      if (element.hasImplicitRulesElement()) {
25057        composeUri("implicitRules", element.getImplicitRulesElement());
25058      }
25059      if (element.hasLanguageElement()) {
25060        composeCode("language", element.getLanguageElement());
25061      }
25062  }
25063
25064  protected void composeAccount(String name, Account element) throws IOException {
25065    if (element != null) {
25066      composeDomainResourceAttributes(element);
25067      xml.enter(FHIR_NS, name);
25068      composeAccountElements(element);
25069      composeElementClose(element);
25070      xml.exit(FHIR_NS, name);
25071    }
25072  }
25073
25074  protected void composeAccountElements(Account element) throws IOException {
25075      composeDomainResourceElements(element);
25076      if (element.hasIdentifier()) { 
25077        for (Identifier e : element.getIdentifier()) 
25078          composeIdentifier("identifier", e);
25079      }
25080      if (element.hasStatusElement())
25081        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
25082      if (element.hasType()) {
25083        composeCodeableConcept("type", element.getType());
25084      }
25085      if (element.hasNameElement()) {
25086        composeString("name", element.getNameElement());
25087      }
25088      if (element.hasSubject()) {
25089        composeReference("subject", element.getSubject());
25090      }
25091      if (element.hasServicePeriod()) {
25092        composePeriod("servicePeriod", element.getServicePeriod());
25093      }
25094      if (element.hasCoverage()) { 
25095        for (Account.CoverageComponent e : element.getCoverage()) 
25096          composeAccountCoverageComponent("coverage", e);
25097      }
25098      if (element.hasOwner()) {
25099        composeReference("owner", element.getOwner());
25100      }
25101      if (element.hasDescriptionElement()) {
25102        composeString("description", element.getDescriptionElement());
25103      }
25104      if (element.hasGuarantor()) { 
25105        for (Account.GuarantorComponent e : element.getGuarantor()) 
25106          composeAccountGuarantorComponent("guarantor", e);
25107      }
25108      if (element.hasPartOf()) {
25109        composeReference("partOf", element.getPartOf());
25110      }
25111  }
25112
25113  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
25114    if (element != null) {
25115      composeElementAttributes(element);
25116      xml.enter(FHIR_NS, name);
25117      composeAccountCoverageComponentElements(element);
25118      composeElementClose(element);
25119      xml.exit(FHIR_NS, name);
25120    }
25121  }
25122
25123  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
25124      composeBackboneElementElements(element);
25125      if (element.hasCoverage()) {
25126        composeReference("coverage", element.getCoverage());
25127      }
25128      if (element.hasPriorityElement()) {
25129        composePositiveInt("priority", element.getPriorityElement());
25130      }
25131  }
25132
25133  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
25134    if (element != null) {
25135      composeElementAttributes(element);
25136      xml.enter(FHIR_NS, name);
25137      composeAccountGuarantorComponentElements(element);
25138      composeElementClose(element);
25139      xml.exit(FHIR_NS, name);
25140    }
25141  }
25142
25143  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
25144      composeBackboneElementElements(element);
25145      if (element.hasParty()) {
25146        composeReference("party", element.getParty());
25147      }
25148      if (element.hasOnHoldElement()) {
25149        composeBoolean("onHold", element.getOnHoldElement());
25150      }
25151      if (element.hasPeriod()) {
25152        composePeriod("period", element.getPeriod());
25153      }
25154  }
25155
25156  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
25157    if (element != null) {
25158      composeDomainResourceAttributes(element);
25159      xml.enter(FHIR_NS, name);
25160      composeActivityDefinitionElements(element);
25161      composeElementClose(element);
25162      xml.exit(FHIR_NS, name);
25163    }
25164  }
25165
25166  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
25167      composeDomainResourceElements(element);
25168      if (element.hasUrlElement()) {
25169        composeUri("url", element.getUrlElement());
25170      }
25171      if (element.hasIdentifier()) { 
25172        for (Identifier e : element.getIdentifier()) 
25173          composeIdentifier("identifier", e);
25174      }
25175      if (element.hasVersionElement()) {
25176        composeString("version", element.getVersionElement());
25177      }
25178      if (element.hasNameElement()) {
25179        composeString("name", element.getNameElement());
25180      }
25181      if (element.hasTitleElement()) {
25182        composeString("title", element.getTitleElement());
25183      }
25184      if (element.hasSubtitleElement()) {
25185        composeString("subtitle", element.getSubtitleElement());
25186      }
25187      if (element.hasStatusElement())
25188        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
25189      if (element.hasExperimentalElement()) {
25190        composeBoolean("experimental", element.getExperimentalElement());
25191      }
25192      if (element.hasSubject()) {
25193        composeType("subject", element.getSubject());
25194      }      if (element.hasDateElement()) {
25195        composeDateTime("date", element.getDateElement());
25196      }
25197      if (element.hasPublisherElement()) {
25198        composeString("publisher", element.getPublisherElement());
25199      }
25200      if (element.hasContact()) { 
25201        for (ContactDetail e : element.getContact()) 
25202          composeContactDetail("contact", e);
25203      }
25204      if (element.hasDescriptionElement()) {
25205        composeMarkdown("description", element.getDescriptionElement());
25206      }
25207      if (element.hasUseContext()) { 
25208        for (UsageContext e : element.getUseContext()) 
25209          composeUsageContext("useContext", e);
25210      }
25211      if (element.hasJurisdiction()) { 
25212        for (CodeableConcept e : element.getJurisdiction()) 
25213          composeCodeableConcept("jurisdiction", e);
25214      }
25215      if (element.hasPurposeElement()) {
25216        composeMarkdown("purpose", element.getPurposeElement());
25217      }
25218      if (element.hasUsageElement()) {
25219        composeString("usage", element.getUsageElement());
25220      }
25221      if (element.hasCopyrightElement()) {
25222        composeMarkdown("copyright", element.getCopyrightElement());
25223      }
25224      if (element.hasApprovalDateElement()) {
25225        composeDate("approvalDate", element.getApprovalDateElement());
25226      }
25227      if (element.hasLastReviewDateElement()) {
25228        composeDate("lastReviewDate", element.getLastReviewDateElement());
25229      }
25230      if (element.hasEffectivePeriod()) {
25231        composePeriod("effectivePeriod", element.getEffectivePeriod());
25232      }
25233      if (element.hasTopic()) { 
25234        for (CodeableConcept e : element.getTopic()) 
25235          composeCodeableConcept("topic", e);
25236      }
25237      if (element.hasContributor()) { 
25238        for (Contributor e : element.getContributor()) 
25239          composeContributor("contributor", e);
25240      }
25241      if (element.hasRelatedArtifact()) { 
25242        for (RelatedArtifact e : element.getRelatedArtifact()) 
25243          composeRelatedArtifact("relatedArtifact", e);
25244      }
25245      if (element.hasLibrary()) { 
25246        for (CanonicalType e : element.getLibrary()) 
25247          composeCanonical("library", e);
25248      }
25249      if (element.hasKindElement())
25250        composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.ActivityDefinitionKindEnumFactory());
25251      if (element.hasCode()) {
25252        composeCodeableConcept("code", element.getCode());
25253      }
25254      if (element.hasDoNotPerformElement()) {
25255        composeBoolean("doNotPerform", element.getDoNotPerformElement());
25256      }
25257      if (element.hasTiming()) {
25258        composeType("timing", element.getTiming());
25259      }      if (element.hasLocation()) {
25260        composeReference("location", element.getLocation());
25261      }
25262      if (element.hasParticipant()) { 
25263        for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
25264          composeActivityDefinitionActivityDefinitionParticipantComponent("participant", e);
25265      }
25266      if (element.hasProduct()) {
25267        composeType("product", element.getProduct());
25268      }      if (element.hasQuantity()) {
25269        composeSimpleQuantity("quantity", element.getQuantity());
25270      }
25271      if (element.hasDosage()) { 
25272        for (Dosage e : element.getDosage()) 
25273          composeDosage("dosage", e);
25274      }
25275      if (element.hasBodySite()) { 
25276        for (CodeableConcept e : element.getBodySite()) 
25277          composeCodeableConcept("bodySite", e);
25278      }
25279      if (element.hasSpecimenRequirement()) { 
25280        for (Reference e : element.getSpecimenRequirement()) 
25281          composeReference("specimenRequirement", e);
25282      }
25283      if (element.hasTransformElement()) {
25284        composeCanonical("transform", element.getTransformElement());
25285      }
25286      if (element.hasDynamicValue()) { 
25287        for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
25288          composeActivityDefinitionActivityDefinitionDynamicValueComponent("dynamicValue", e);
25289      }
25290  }
25291
25292  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
25293    if (element != null) {
25294      composeElementAttributes(element);
25295      xml.enter(FHIR_NS, name);
25296      composeActivityDefinitionActivityDefinitionParticipantComponentElements(element);
25297      composeElementClose(element);
25298      xml.exit(FHIR_NS, name);
25299    }
25300  }
25301
25302  protected void composeActivityDefinitionActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
25303      composeBackboneElementElements(element);
25304      if (element.hasTypeElement())
25305        composeEnumeration("type", element.getTypeElement(), new ActivityDefinition.ActivityParticipantTypeEnumFactory());
25306      if (element.hasRole()) {
25307        composeCodeableConcept("role", element.getRole());
25308      }
25309  }
25310
25311  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
25312    if (element != null) {
25313      composeElementAttributes(element);
25314      xml.enter(FHIR_NS, name);
25315      composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(element);
25316      composeElementClose(element);
25317      xml.exit(FHIR_NS, name);
25318    }
25319  }
25320
25321  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
25322      composeBackboneElementElements(element);
25323      if (element.hasDescriptionElement()) {
25324        composeString("description", element.getDescriptionElement());
25325      }
25326      if (element.hasPathElement()) {
25327        composeString("path", element.getPathElement());
25328      }
25329      if (element.hasLanguageElement()) {
25330        composeString("language", element.getLanguageElement());
25331      }
25332      if (element.hasExpressionElement()) {
25333        composeString("expression", element.getExpressionElement());
25334      }
25335  }
25336
25337  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
25338    if (element != null) {
25339      composeDomainResourceAttributes(element);
25340      xml.enter(FHIR_NS, name);
25341      composeAdverseEventElements(element);
25342      composeElementClose(element);
25343      xml.exit(FHIR_NS, name);
25344    }
25345  }
25346
25347  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
25348      composeDomainResourceElements(element);
25349      if (element.hasIdentifier()) {
25350        composeIdentifier("identifier", element.getIdentifier());
25351      }
25352      if (element.hasActualityElement())
25353        composeEnumeration("actuality", element.getActualityElement(), new AdverseEvent.AdverseEventActualityEnumFactory());
25354      if (element.hasCategory()) { 
25355        for (CodeableConcept e : element.getCategory()) 
25356          composeCodeableConcept("category", e);
25357      }
25358      if (element.hasEvent()) {
25359        composeCodeableConcept("event", element.getEvent());
25360      }
25361      if (element.hasSubject()) {
25362        composeReference("subject", element.getSubject());
25363      }
25364      if (element.hasContext()) {
25365        composeReference("context", element.getContext());
25366      }
25367      if (element.hasDateElement()) {
25368        composeDateTime("date", element.getDateElement());
25369      }
25370      if (element.hasResultingCondition()) { 
25371        for (Reference e : element.getResultingCondition()) 
25372          composeReference("resultingCondition", e);
25373      }
25374      if (element.hasLocation()) {
25375        composeReference("location", element.getLocation());
25376      }
25377      if (element.hasSeriousness()) {
25378        composeCodeableConcept("seriousness", element.getSeriousness());
25379      }
25380      if (element.hasSeverity()) {
25381        composeCodeableConcept("severity", element.getSeverity());
25382      }
25383      if (element.hasOutcome()) {
25384        composeCodeableConcept("outcome", element.getOutcome());
25385      }
25386      if (element.hasRecorder()) {
25387        composeReference("recorder", element.getRecorder());
25388      }
25389      if (element.hasContributor()) { 
25390        for (Reference e : element.getContributor()) 
25391          composeReference("contributor", e);
25392      }
25393      if (element.hasSuspectEntity()) { 
25394        for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
25395          composeAdverseEventAdverseEventSuspectEntityComponent("suspectEntity", e);
25396      }
25397      if (element.hasSubjectMedicalHistory()) { 
25398        for (Reference e : element.getSubjectMedicalHistory()) 
25399          composeReference("subjectMedicalHistory", e);
25400      }
25401      if (element.hasReferenceDocument()) { 
25402        for (Reference e : element.getReferenceDocument()) 
25403          composeReference("referenceDocument", e);
25404      }
25405      if (element.hasStudy()) { 
25406        for (Reference e : element.getStudy()) 
25407          composeReference("study", e);
25408      }
25409  }
25410
25411  protected void composeAdverseEventAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
25412    if (element != null) {
25413      composeElementAttributes(element);
25414      xml.enter(FHIR_NS, name);
25415      composeAdverseEventAdverseEventSuspectEntityComponentElements(element);
25416      composeElementClose(element);
25417      xml.exit(FHIR_NS, name);
25418    }
25419  }
25420
25421  protected void composeAdverseEventAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
25422      composeBackboneElementElements(element);
25423      if (element.hasInstance()) {
25424        composeReference("instance", element.getInstance());
25425      }
25426      if (element.hasCausality()) { 
25427        for (AdverseEvent.AdverseEventSuspectEntityCausalityComponent e : element.getCausality()) 
25428          composeAdverseEventAdverseEventSuspectEntityCausalityComponent("causality", e);
25429      }
25430  }
25431
25432  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponent(String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
25433    if (element != null) {
25434      composeElementAttributes(element);
25435      xml.enter(FHIR_NS, name);
25436      composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(element);
25437      composeElementClose(element);
25438      xml.exit(FHIR_NS, name);
25439    }
25440  }
25441
25442  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
25443      composeBackboneElementElements(element);
25444      if (element.hasAssessment()) {
25445        composeCodeableConcept("assessment", element.getAssessment());
25446      }
25447      if (element.hasProductRelatednessElement()) {
25448        composeString("productRelatedness", element.getProductRelatednessElement());
25449      }
25450      if (element.hasAuthor()) {
25451        composeReference("author", element.getAuthor());
25452      }
25453      if (element.hasMethod()) {
25454        composeCodeableConcept("method", element.getMethod());
25455      }
25456  }
25457
25458  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
25459    if (element != null) {
25460      composeDomainResourceAttributes(element);
25461      xml.enter(FHIR_NS, name);
25462      composeAllergyIntoleranceElements(element);
25463      composeElementClose(element);
25464      xml.exit(FHIR_NS, name);
25465    }
25466  }
25467
25468  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
25469      composeDomainResourceElements(element);
25470      if (element.hasIdentifier()) { 
25471        for (Identifier e : element.getIdentifier()) 
25472          composeIdentifier("identifier", e);
25473      }
25474      if (element.hasClinicalStatusElement())
25475        composeEnumeration("clinicalStatus", element.getClinicalStatusElement(), new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory());
25476      if (element.hasVerificationStatusElement())
25477        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory());
25478      if (element.hasTypeElement())
25479        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
25480        if (element.hasCategory()) 
25481          for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
25482            composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
25483      if (element.hasCriticalityElement())
25484        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
25485      if (element.hasCode()) {
25486        composeCodeableConcept("code", element.getCode());
25487      }
25488      if (element.hasPatient()) {
25489        composeReference("patient", element.getPatient());
25490      }
25491      if (element.hasEncounter()) {
25492        composeReference("encounter", element.getEncounter());
25493      }
25494      if (element.hasOnset()) {
25495        composeType("onset", element.getOnset());
25496      }      if (element.hasAssertedDateElement()) {
25497        composeDateTime("assertedDate", element.getAssertedDateElement());
25498      }
25499      if (element.hasRecorder()) {
25500        composeReference("recorder", element.getRecorder());
25501      }
25502      if (element.hasAsserter()) {
25503        composeReference("asserter", element.getAsserter());
25504      }
25505      if (element.hasLastOccurrenceElement()) {
25506        composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
25507      }
25508      if (element.hasNote()) { 
25509        for (Annotation e : element.getNote()) 
25510          composeAnnotation("note", e);
25511      }
25512      if (element.hasReaction()) { 
25513        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
25514          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
25515      }
25516  }
25517
25518  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
25519    if (element != null) {
25520      composeElementAttributes(element);
25521      xml.enter(FHIR_NS, name);
25522      composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(element);
25523      composeElementClose(element);
25524      xml.exit(FHIR_NS, name);
25525    }
25526  }
25527
25528  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
25529      composeBackboneElementElements(element);
25530      if (element.hasSubstance()) {
25531        composeCodeableConcept("substance", element.getSubstance());
25532      }
25533      if (element.hasManifestation()) { 
25534        for (CodeableConcept e : element.getManifestation()) 
25535          composeCodeableConcept("manifestation", e);
25536      }
25537      if (element.hasDescriptionElement()) {
25538        composeString("description", element.getDescriptionElement());
25539      }
25540      if (element.hasOnsetElement()) {
25541        composeDateTime("onset", element.getOnsetElement());
25542      }
25543      if (element.hasSeverityElement())
25544        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
25545      if (element.hasExposureRoute()) {
25546        composeCodeableConcept("exposureRoute", element.getExposureRoute());
25547      }
25548      if (element.hasNote()) { 
25549        for (Annotation e : element.getNote()) 
25550          composeAnnotation("note", e);
25551      }
25552  }
25553
25554  protected void composeAppointment(String name, Appointment element) throws IOException {
25555    if (element != null) {
25556      composeDomainResourceAttributes(element);
25557      xml.enter(FHIR_NS, name);
25558      composeAppointmentElements(element);
25559      composeElementClose(element);
25560      xml.exit(FHIR_NS, name);
25561    }
25562  }
25563
25564  protected void composeAppointmentElements(Appointment element) throws IOException {
25565      composeDomainResourceElements(element);
25566      if (element.hasIdentifier()) { 
25567        for (Identifier e : element.getIdentifier()) 
25568          composeIdentifier("identifier", e);
25569      }
25570      if (element.hasStatusElement())
25571        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
25572      if (element.hasServiceCategory()) { 
25573        for (CodeableConcept e : element.getServiceCategory()) 
25574          composeCodeableConcept("serviceCategory", e);
25575      }
25576      if (element.hasServiceType()) { 
25577        for (CodeableConcept e : element.getServiceType()) 
25578          composeCodeableConcept("serviceType", e);
25579      }
25580      if (element.hasSpecialty()) { 
25581        for (CodeableConcept e : element.getSpecialty()) 
25582          composeCodeableConcept("specialty", e);
25583      }
25584      if (element.hasAppointmentType()) {
25585        composeCodeableConcept("appointmentType", element.getAppointmentType());
25586      }
25587      if (element.hasReason()) { 
25588        for (CodeableConcept e : element.getReason()) 
25589          composeCodeableConcept("reason", e);
25590      }
25591      if (element.hasIndication()) { 
25592        for (Reference e : element.getIndication()) 
25593          composeReference("indication", e);
25594      }
25595      if (element.hasPriorityElement()) {
25596        composeUnsignedInt("priority", element.getPriorityElement());
25597      }
25598      if (element.hasDescriptionElement()) {
25599        composeString("description", element.getDescriptionElement());
25600      }
25601      if (element.hasSupportingInformation()) { 
25602        for (Reference e : element.getSupportingInformation()) 
25603          composeReference("supportingInformation", e);
25604      }
25605      if (element.hasStartElement()) {
25606        composeInstant("start", element.getStartElement());
25607      }
25608      if (element.hasEndElement()) {
25609        composeInstant("end", element.getEndElement());
25610      }
25611      if (element.hasMinutesDurationElement()) {
25612        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
25613      }
25614      if (element.hasSlot()) { 
25615        for (Reference e : element.getSlot()) 
25616          composeReference("slot", e);
25617      }
25618      if (element.hasCreatedElement()) {
25619        composeDateTime("created", element.getCreatedElement());
25620      }
25621      if (element.hasCommentElement()) {
25622        composeString("comment", element.getCommentElement());
25623      }
25624      if (element.hasPatientInstructionElement()) {
25625        composeString("patientInstruction", element.getPatientInstructionElement());
25626      }
25627      if (element.hasBasedOn()) { 
25628        for (Reference e : element.getBasedOn()) 
25629          composeReference("basedOn", e);
25630      }
25631      if (element.hasParticipant()) { 
25632        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
25633          composeAppointmentAppointmentParticipantComponent("participant", e);
25634      }
25635      if (element.hasRequestedPeriod()) { 
25636        for (Period e : element.getRequestedPeriod()) 
25637          composePeriod("requestedPeriod", e);
25638      }
25639  }
25640
25641  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
25642    if (element != null) {
25643      composeElementAttributes(element);
25644      xml.enter(FHIR_NS, name);
25645      composeAppointmentAppointmentParticipantComponentElements(element);
25646      composeElementClose(element);
25647      xml.exit(FHIR_NS, name);
25648    }
25649  }
25650
25651  protected void composeAppointmentAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
25652      composeBackboneElementElements(element);
25653      if (element.hasType()) { 
25654        for (CodeableConcept e : element.getType()) 
25655          composeCodeableConcept("type", e);
25656      }
25657      if (element.hasActor()) {
25658        composeReference("actor", element.getActor());
25659      }
25660      if (element.hasRequiredElement())
25661        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
25662      if (element.hasStatusElement())
25663        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
25664      if (element.hasPeriod()) {
25665        composePeriod("period", element.getPeriod());
25666      }
25667  }
25668
25669  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
25670    if (element != null) {
25671      composeDomainResourceAttributes(element);
25672      xml.enter(FHIR_NS, name);
25673      composeAppointmentResponseElements(element);
25674      composeElementClose(element);
25675      xml.exit(FHIR_NS, name);
25676    }
25677  }
25678
25679  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
25680      composeDomainResourceElements(element);
25681      if (element.hasIdentifier()) { 
25682        for (Identifier e : element.getIdentifier()) 
25683          composeIdentifier("identifier", e);
25684      }
25685      if (element.hasAppointment()) {
25686        composeReference("appointment", element.getAppointment());
25687      }
25688      if (element.hasStartElement()) {
25689        composeInstant("start", element.getStartElement());
25690      }
25691      if (element.hasEndElement()) {
25692        composeInstant("end", element.getEndElement());
25693      }
25694      if (element.hasParticipantType()) { 
25695        for (CodeableConcept e : element.getParticipantType()) 
25696          composeCodeableConcept("participantType", e);
25697      }
25698      if (element.hasActor()) {
25699        composeReference("actor", element.getActor());
25700      }
25701      if (element.hasParticipantStatusElement())
25702        composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.ParticipantStatusEnumFactory());
25703      if (element.hasCommentElement()) {
25704        composeString("comment", element.getCommentElement());
25705      }
25706  }
25707
25708  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
25709    if (element != null) {
25710      composeDomainResourceAttributes(element);
25711      xml.enter(FHIR_NS, name);
25712      composeAuditEventElements(element);
25713      composeElementClose(element);
25714      xml.exit(FHIR_NS, name);
25715    }
25716  }
25717
25718  protected void composeAuditEventElements(AuditEvent element) throws IOException {
25719      composeDomainResourceElements(element);
25720      if (element.hasType()) {
25721        composeCoding("type", element.getType());
25722      }
25723      if (element.hasSubtype()) { 
25724        for (Coding e : element.getSubtype()) 
25725          composeCoding("subtype", e);
25726      }
25727      if (element.hasActionElement())
25728        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
25729      if (element.hasPeriod()) {
25730        composePeriod("period", element.getPeriod());
25731      }
25732      if (element.hasRecordedElement()) {
25733        composeInstant("recorded", element.getRecordedElement());
25734      }
25735      if (element.hasOutcomeElement())
25736        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
25737      if (element.hasOutcomeDescElement()) {
25738        composeString("outcomeDesc", element.getOutcomeDescElement());
25739      }
25740      if (element.hasPurposeOfEvent()) { 
25741        for (CodeableConcept e : element.getPurposeOfEvent()) 
25742          composeCodeableConcept("purposeOfEvent", e);
25743      }
25744      if (element.hasAgent()) { 
25745        for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
25746          composeAuditEventAuditEventAgentComponent("agent", e);
25747      }
25748      if (element.hasSource()) {
25749        composeAuditEventAuditEventSourceComponent("source", element.getSource());
25750      }
25751      if (element.hasEntity()) { 
25752        for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
25753          composeAuditEventAuditEventEntityComponent("entity", e);
25754      }
25755  }
25756
25757  protected void composeAuditEventAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
25758    if (element != null) {
25759      composeElementAttributes(element);
25760      xml.enter(FHIR_NS, name);
25761      composeAuditEventAuditEventAgentComponentElements(element);
25762      composeElementClose(element);
25763      xml.exit(FHIR_NS, name);
25764    }
25765  }
25766
25767  protected void composeAuditEventAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
25768      composeBackboneElementElements(element);
25769      if (element.hasType()) {
25770        composeCodeableConcept("type", element.getType());
25771      }
25772      if (element.hasRole()) { 
25773        for (CodeableConcept e : element.getRole()) 
25774          composeCodeableConcept("role", e);
25775      }
25776      if (element.hasReference()) {
25777        composeReference("reference", element.getReference());
25778      }
25779      if (element.hasUserId()) {
25780        composeIdentifier("userId", element.getUserId());
25781      }
25782      if (element.hasAltIdElement()) {
25783        composeString("altId", element.getAltIdElement());
25784      }
25785      if (element.hasNameElement()) {
25786        composeString("name", element.getNameElement());
25787      }
25788      if (element.hasRequestorElement()) {
25789        composeBoolean("requestor", element.getRequestorElement());
25790      }
25791      if (element.hasLocation()) {
25792        composeReference("location", element.getLocation());
25793      }
25794      if (element.hasPolicy()) { 
25795        for (UriType e : element.getPolicy()) 
25796          composeUri("policy", e);
25797      }
25798      if (element.hasMedia()) {
25799        composeCoding("media", element.getMedia());
25800      }
25801      if (element.hasNetwork()) {
25802        composeAuditEventAuditEventAgentNetworkComponent("network", element.getNetwork());
25803      }
25804      if (element.hasPurposeOfUse()) { 
25805        for (CodeableConcept e : element.getPurposeOfUse()) 
25806          composeCodeableConcept("purposeOfUse", e);
25807      }
25808  }
25809
25810  protected void composeAuditEventAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
25811    if (element != null) {
25812      composeElementAttributes(element);
25813      xml.enter(FHIR_NS, name);
25814      composeAuditEventAuditEventAgentNetworkComponentElements(element);
25815      composeElementClose(element);
25816      xml.exit(FHIR_NS, name);
25817    }
25818  }
25819
25820  protected void composeAuditEventAuditEventAgentNetworkComponentElements(AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
25821      composeBackboneElementElements(element);
25822      if (element.hasAddressElement()) {
25823        composeString("address", element.getAddressElement());
25824      }
25825      if (element.hasTypeElement())
25826        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventAgentNetworkTypeEnumFactory());
25827  }
25828
25829  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
25830    if (element != null) {
25831      composeElementAttributes(element);
25832      xml.enter(FHIR_NS, name);
25833      composeAuditEventAuditEventSourceComponentElements(element);
25834      composeElementClose(element);
25835      xml.exit(FHIR_NS, name);
25836    }
25837  }
25838
25839  protected void composeAuditEventAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
25840      composeBackboneElementElements(element);
25841      if (element.hasSiteElement()) {
25842        composeString("site", element.getSiteElement());
25843      }
25844      if (element.hasIdentifier()) {
25845        composeIdentifier("identifier", element.getIdentifier());
25846      }
25847      if (element.hasType()) { 
25848        for (Coding e : element.getType()) 
25849          composeCoding("type", e);
25850      }
25851  }
25852
25853  protected void composeAuditEventAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
25854    if (element != null) {
25855      composeElementAttributes(element);
25856      xml.enter(FHIR_NS, name);
25857      composeAuditEventAuditEventEntityComponentElements(element);
25858      composeElementClose(element);
25859      xml.exit(FHIR_NS, name);
25860    }
25861  }
25862
25863  protected void composeAuditEventAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
25864      composeBackboneElementElements(element);
25865      if (element.hasIdentifier()) {
25866        composeIdentifier("identifier", element.getIdentifier());
25867      }
25868      if (element.hasReference()) {
25869        composeReference("reference", element.getReference());
25870      }
25871      if (element.hasType()) {
25872        composeCoding("type", element.getType());
25873      }
25874      if (element.hasRole()) {
25875        composeCoding("role", element.getRole());
25876      }
25877      if (element.hasLifecycle()) {
25878        composeCoding("lifecycle", element.getLifecycle());
25879      }
25880      if (element.hasSecurityLabel()) { 
25881        for (Coding e : element.getSecurityLabel()) 
25882          composeCoding("securityLabel", e);
25883      }
25884      if (element.hasNameElement()) {
25885        composeString("name", element.getNameElement());
25886      }
25887      if (element.hasDescriptionElement()) {
25888        composeString("description", element.getDescriptionElement());
25889      }
25890      if (element.hasQueryElement()) {
25891        composeBase64Binary("query", element.getQueryElement());
25892      }
25893      if (element.hasDetail()) { 
25894        for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
25895          composeAuditEventAuditEventEntityDetailComponent("detail", e);
25896      }
25897  }
25898
25899  protected void composeAuditEventAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
25900    if (element != null) {
25901      composeElementAttributes(element);
25902      xml.enter(FHIR_NS, name);
25903      composeAuditEventAuditEventEntityDetailComponentElements(element);
25904      composeElementClose(element);
25905      xml.exit(FHIR_NS, name);
25906    }
25907  }
25908
25909  protected void composeAuditEventAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
25910      composeBackboneElementElements(element);
25911      if (element.hasTypeElement()) {
25912        composeString("type", element.getTypeElement());
25913      }
25914      if (element.hasValue()) {
25915        composeType("value", element.getValue());
25916      }  }
25917
25918  protected void composeBasic(String name, Basic element) throws IOException {
25919    if (element != null) {
25920      composeDomainResourceAttributes(element);
25921      xml.enter(FHIR_NS, name);
25922      composeBasicElements(element);
25923      composeElementClose(element);
25924      xml.exit(FHIR_NS, name);
25925    }
25926  }
25927
25928  protected void composeBasicElements(Basic element) throws IOException {
25929      composeDomainResourceElements(element);
25930      if (element.hasIdentifier()) { 
25931        for (Identifier e : element.getIdentifier()) 
25932          composeIdentifier("identifier", e);
25933      }
25934      if (element.hasCode()) {
25935        composeCodeableConcept("code", element.getCode());
25936      }
25937      if (element.hasSubject()) {
25938        composeReference("subject", element.getSubject());
25939      }
25940      if (element.hasCreatedElement()) {
25941        composeDate("created", element.getCreatedElement());
25942      }
25943      if (element.hasAuthor()) {
25944        composeReference("author", element.getAuthor());
25945      }
25946  }
25947
25948  protected void composeBinary(String name, Binary element) throws IOException {
25949    if (element != null) {
25950      composeResourceAttributes(element);
25951      xml.enter(FHIR_NS, name);
25952      composeBinaryElements(element);
25953      composeElementClose(element);
25954      xml.exit(FHIR_NS, name);
25955    }
25956  }
25957
25958  protected void composeBinaryElements(Binary element) throws IOException {
25959      composeResourceElements(element);
25960      if (element.hasContentTypeElement()) {
25961        composeCode("contentType", element.getContentTypeElement());
25962      }
25963      if (element.hasSecurityContext()) {
25964        composeReference("securityContext", element.getSecurityContext());
25965      }
25966      if (element.hasContentElement()) {
25967        composeBase64Binary("content", element.getContentElement());
25968      }
25969  }
25970
25971  protected void composeBiologicallyDerivedProduct(String name, BiologicallyDerivedProduct element) throws IOException {
25972    if (element != null) {
25973      composeDomainResourceAttributes(element);
25974      xml.enter(FHIR_NS, name);
25975      composeBiologicallyDerivedProductElements(element);
25976      composeElementClose(element);
25977      xml.exit(FHIR_NS, name);
25978    }
25979  }
25980
25981  protected void composeBiologicallyDerivedProductElements(BiologicallyDerivedProduct element) throws IOException {
25982      composeDomainResourceElements(element);
25983      if (element.hasIdentifier()) { 
25984        for (Identifier e : element.getIdentifier()) 
25985          composeIdentifier("identifier", e);
25986      }
25987      if (element.hasProductCategoryElement())
25988        composeEnumeration("productCategory", element.getProductCategoryElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory());
25989      if (element.hasProductCode()) {
25990        composeCodeableConcept("productCode", element.getProductCode());
25991      }
25992      if (element.hasStatusElement())
25993        composeEnumeration("status", element.getStatusElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory());
25994      if (element.hasRequest()) { 
25995        for (Reference e : element.getRequest()) 
25996          composeReference("request", e);
25997      }
25998      if (element.hasQuantityElement()) {
25999        composeInteger("quantity", element.getQuantityElement());
26000      }
26001      if (element.hasParent()) {
26002        composeReference("parent", element.getParent());
26003      }
26004      if (element.hasCollection()) {
26005        composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent("collection", element.getCollection());
26006      }
26007      if (element.hasProcessing()) { 
26008        for (BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent e : element.getProcessing()) 
26009          composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent("processing", e);
26010      }
26011      if (element.hasManipulation()) {
26012        composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent("manipulation", element.getManipulation());
26013      }
26014      if (element.hasStorage()) { 
26015        for (BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent e : element.getStorage()) 
26016          composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent("storage", e);
26017      }
26018  }
26019
26020  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
26021    if (element != null) {
26022      composeElementAttributes(element);
26023      xml.enter(FHIR_NS, name);
26024      composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(element);
26025      composeElementClose(element);
26026      xml.exit(FHIR_NS, name);
26027    }
26028  }
26029
26030  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
26031      composeBackboneElementElements(element);
26032      if (element.hasCollector()) {
26033        composeReference("collector", element.getCollector());
26034      }
26035      if (element.hasSource()) {
26036        composeReference("source", element.getSource());
26037      }
26038      if (element.hasCollected()) {
26039        composeType("collected", element.getCollected());
26040      }  }
26041
26042  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
26043    if (element != null) {
26044      composeElementAttributes(element);
26045      xml.enter(FHIR_NS, name);
26046      composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(element);
26047      composeElementClose(element);
26048      xml.exit(FHIR_NS, name);
26049    }
26050  }
26051
26052  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
26053      composeBackboneElementElements(element);
26054      if (element.hasDescriptionElement()) {
26055        composeString("description", element.getDescriptionElement());
26056      }
26057      if (element.hasProcedure()) {
26058        composeCodeableConcept("procedure", element.getProcedure());
26059      }
26060      if (element.hasAdditive()) {
26061        composeReference("additive", element.getAdditive());
26062      }
26063      if (element.hasTime()) {
26064        composeType("time", element.getTime());
26065      }  }
26066
26067  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
26068    if (element != null) {
26069      composeElementAttributes(element);
26070      xml.enter(FHIR_NS, name);
26071      composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(element);
26072      composeElementClose(element);
26073      xml.exit(FHIR_NS, name);
26074    }
26075  }
26076
26077  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
26078      composeBackboneElementElements(element);
26079      if (element.hasDescriptionElement()) {
26080        composeString("description", element.getDescriptionElement());
26081      }
26082      if (element.hasTime()) {
26083        composeType("time", element.getTime());
26084      }  }
26085
26086  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
26087    if (element != null) {
26088      composeElementAttributes(element);
26089      xml.enter(FHIR_NS, name);
26090      composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(element);
26091      composeElementClose(element);
26092      xml.exit(FHIR_NS, name);
26093    }
26094  }
26095
26096  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
26097      composeBackboneElementElements(element);
26098      if (element.hasDescriptionElement()) {
26099        composeString("description", element.getDescriptionElement());
26100      }
26101      if (element.hasTemperatureElement()) {
26102        composeDecimal("temperature", element.getTemperatureElement());
26103      }
26104      if (element.hasScaleElement())
26105        composeEnumeration("scale", element.getScaleElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory());
26106      if (element.hasDuration()) {
26107        composePeriod("duration", element.getDuration());
26108      }
26109  }
26110
26111  protected void composeBodyStructure(String name, BodyStructure element) throws IOException {
26112    if (element != null) {
26113      composeDomainResourceAttributes(element);
26114      xml.enter(FHIR_NS, name);
26115      composeBodyStructureElements(element);
26116      composeElementClose(element);
26117      xml.exit(FHIR_NS, name);
26118    }
26119  }
26120
26121  protected void composeBodyStructureElements(BodyStructure element) throws IOException {
26122      composeDomainResourceElements(element);
26123      if (element.hasIdentifier()) { 
26124        for (Identifier e : element.getIdentifier()) 
26125          composeIdentifier("identifier", e);
26126      }
26127      if (element.hasActiveElement()) {
26128        composeBoolean("active", element.getActiveElement());
26129      }
26130      if (element.hasMorphology()) {
26131        composeCodeableConcept("morphology", element.getMorphology());
26132      }
26133      if (element.hasLocation()) {
26134        composeCodeableConcept("location", element.getLocation());
26135      }
26136      if (element.hasLocationQualifier()) { 
26137        for (CodeableConcept e : element.getLocationQualifier()) 
26138          composeCodeableConcept("locationQualifier", e);
26139      }
26140      if (element.hasDescriptionElement()) {
26141        composeString("description", element.getDescriptionElement());
26142      }
26143      if (element.hasImage()) { 
26144        for (Attachment e : element.getImage()) 
26145          composeAttachment("image", e);
26146      }
26147      if (element.hasPatient()) {
26148        composeReference("patient", element.getPatient());
26149      }
26150  }
26151
26152  protected void composeBundle(String name, Bundle element) throws IOException {
26153    if (element != null) {
26154      composeResourceAttributes(element);
26155      xml.enter(FHIR_NS, name);
26156      composeBundleElements(element);
26157      composeElementClose(element);
26158      xml.exit(FHIR_NS, name);
26159    }
26160  }
26161
26162  protected void composeBundleElements(Bundle element) throws IOException {
26163      composeResourceElements(element);
26164      if (element.hasIdentifier()) {
26165        composeIdentifier("identifier", element.getIdentifier());
26166      }
26167      if (element.hasTypeElement())
26168        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
26169      if (element.hasTimestampElement()) {
26170        composeInstant("timestamp", element.getTimestampElement());
26171      }
26172      if (element.hasTotalElement()) {
26173        composeUnsignedInt("total", element.getTotalElement());
26174      }
26175      if (element.hasLink()) { 
26176        for (Bundle.BundleLinkComponent e : element.getLink()) 
26177          composeBundleBundleLinkComponent("link", e);
26178      }
26179      if (element.hasEntry()) { 
26180        for (Bundle.BundleEntryComponent e : element.getEntry()) 
26181          composeBundleBundleEntryComponent("entry", e);
26182      }
26183      if (element.hasSignature()) {
26184        composeSignature("signature", element.getSignature());
26185      }
26186  }
26187
26188  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
26189    if (element != null) {
26190      composeElementAttributes(element);
26191      xml.enter(FHIR_NS, name);
26192      composeBundleBundleLinkComponentElements(element);
26193      composeElementClose(element);
26194      xml.exit(FHIR_NS, name);
26195    }
26196  }
26197
26198  protected void composeBundleBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
26199      composeBackboneElementElements(element);
26200      if (element.hasRelationElement()) {
26201        composeString("relation", element.getRelationElement());
26202      }
26203      if (element.hasUrlElement()) {
26204        composeUri("url", element.getUrlElement());
26205      }
26206  }
26207
26208  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
26209    if (element != null) {
26210      composeElementAttributes(element);
26211      xml.enter(FHIR_NS, name);
26212      composeBundleBundleEntryComponentElements(element);
26213      composeElementClose(element);
26214      xml.exit(FHIR_NS, name);
26215    }
26216  }
26217
26218  protected void composeBundleBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
26219      composeBackboneElementElements(element);
26220      if (element.hasLink()) { 
26221        for (Bundle.BundleLinkComponent e : element.getLink()) 
26222          composeBundleBundleLinkComponent("link", e);
26223      }
26224      if (element.hasFullUrlElement()) {
26225        composeUri("fullUrl", element.getFullUrlElement());
26226      }
26227      if (element.hasResource()) {
26228        xml.enter(FHIR_NS, "resource");
26229        composeResource(element.getResource());
26230        xml.exit(FHIR_NS, "resource");
26231      }
26232      if (element.hasSearch()) {
26233        composeBundleBundleEntrySearchComponent("search", element.getSearch());
26234      }
26235      if (element.hasRequest()) {
26236        composeBundleBundleEntryRequestComponent("request", element.getRequest());
26237      }
26238      if (element.hasResponse()) {
26239        composeBundleBundleEntryResponseComponent("response", element.getResponse());
26240      }
26241  }
26242
26243  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
26244    if (element != null) {
26245      composeElementAttributes(element);
26246      xml.enter(FHIR_NS, name);
26247      composeBundleBundleEntrySearchComponentElements(element);
26248      composeElementClose(element);
26249      xml.exit(FHIR_NS, name);
26250    }
26251  }
26252
26253  protected void composeBundleBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
26254      composeBackboneElementElements(element);
26255      if (element.hasModeElement())
26256        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
26257      if (element.hasScoreElement()) {
26258        composeDecimal("score", element.getScoreElement());
26259      }
26260  }
26261
26262  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
26263    if (element != null) {
26264      composeElementAttributes(element);
26265      xml.enter(FHIR_NS, name);
26266      composeBundleBundleEntryRequestComponentElements(element);
26267      composeElementClose(element);
26268      xml.exit(FHIR_NS, name);
26269    }
26270  }
26271
26272  protected void composeBundleBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
26273      composeBackboneElementElements(element);
26274      if (element.hasMethodElement())
26275        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
26276      if (element.hasUrlElement()) {
26277        composeUri("url", element.getUrlElement());
26278      }
26279      if (element.hasIfNoneMatchElement()) {
26280        composeString("ifNoneMatch", element.getIfNoneMatchElement());
26281      }
26282      if (element.hasIfModifiedSinceElement()) {
26283        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
26284      }
26285      if (element.hasIfMatchElement()) {
26286        composeString("ifMatch", element.getIfMatchElement());
26287      }
26288      if (element.hasIfNoneExistElement()) {
26289        composeString("ifNoneExist", element.getIfNoneExistElement());
26290      }
26291  }
26292
26293  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
26294    if (element != null) {
26295      composeElementAttributes(element);
26296      xml.enter(FHIR_NS, name);
26297      composeBundleBundleEntryResponseComponentElements(element);
26298      composeElementClose(element);
26299      xml.exit(FHIR_NS, name);
26300    }
26301  }
26302
26303  protected void composeBundleBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
26304      composeBackboneElementElements(element);
26305      if (element.hasStatusElement()) {
26306        composeString("status", element.getStatusElement());
26307      }
26308      if (element.hasLocationElement()) {
26309        composeUri("location", element.getLocationElement());
26310      }
26311      if (element.hasEtagElement()) {
26312        composeString("etag", element.getEtagElement());
26313      }
26314      if (element.hasLastModifiedElement()) {
26315        composeInstant("lastModified", element.getLastModifiedElement());
26316      }
26317      if (element.hasOutcome()) {
26318        xml.enter(FHIR_NS, "outcome");
26319        composeResource(element.getOutcome());
26320        xml.exit(FHIR_NS, "outcome");
26321      }
26322  }
26323
26324  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
26325    if (element != null) {
26326      composeDomainResourceAttributes(element);
26327      xml.enter(FHIR_NS, name);
26328      composeCapabilityStatementElements(element);
26329      composeElementClose(element);
26330      xml.exit(FHIR_NS, name);
26331    }
26332  }
26333
26334  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
26335      composeDomainResourceElements(element);
26336      if (element.hasUrlElement()) {
26337        composeUri("url", element.getUrlElement());
26338      }
26339      if (element.hasVersionElement()) {
26340        composeString("version", element.getVersionElement());
26341      }
26342      if (element.hasNameElement()) {
26343        composeString("name", element.getNameElement());
26344      }
26345      if (element.hasTitleElement()) {
26346        composeString("title", element.getTitleElement());
26347      }
26348      if (element.hasStatusElement())
26349        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
26350      if (element.hasExperimentalElement()) {
26351        composeBoolean("experimental", element.getExperimentalElement());
26352      }
26353      if (element.hasDateElement()) {
26354        composeDateTime("date", element.getDateElement());
26355      }
26356      if (element.hasPublisherElement()) {
26357        composeString("publisher", element.getPublisherElement());
26358      }
26359      if (element.hasContact()) { 
26360        for (ContactDetail e : element.getContact()) 
26361          composeContactDetail("contact", e);
26362      }
26363      if (element.hasDescriptionElement()) {
26364        composeMarkdown("description", element.getDescriptionElement());
26365      }
26366      if (element.hasUseContext()) { 
26367        for (UsageContext e : element.getUseContext()) 
26368          composeUsageContext("useContext", e);
26369      }
26370      if (element.hasJurisdiction()) { 
26371        for (CodeableConcept e : element.getJurisdiction()) 
26372          composeCodeableConcept("jurisdiction", e);
26373      }
26374      if (element.hasPurposeElement()) {
26375        composeMarkdown("purpose", element.getPurposeElement());
26376      }
26377      if (element.hasCopyrightElement()) {
26378        composeMarkdown("copyright", element.getCopyrightElement());
26379      }
26380      if (element.hasKindElement())
26381        composeEnumeration("kind", element.getKindElement(), new CapabilityStatement.CapabilityStatementKindEnumFactory());
26382      if (element.hasInstantiates()) { 
26383        for (CanonicalType e : element.getInstantiates()) 
26384          composeCanonical("instantiates", e);
26385      }
26386      if (element.hasSoftware()) {
26387        composeCapabilityStatementCapabilityStatementSoftwareComponent("software", element.getSoftware());
26388      }
26389      if (element.hasImplementation()) {
26390        composeCapabilityStatementCapabilityStatementImplementationComponent("implementation", element.getImplementation());
26391      }
26392      if (element.hasFhirVersionElement()) {
26393        composeId("fhirVersion", element.getFhirVersionElement());
26394      }
26395      if (element.hasFormat()) { 
26396        for (CodeType e : element.getFormat()) 
26397          composeCode("format", e);
26398      }
26399      if (element.hasPatchFormat()) { 
26400        for (CodeType e : element.getPatchFormat()) 
26401          composeCode("patchFormat", e);
26402      }
26403      if (element.hasImplementationGuide()) { 
26404        for (CanonicalType e : element.getImplementationGuide()) 
26405          composeCanonical("implementationGuide", e);
26406      }
26407      if (element.hasRest()) { 
26408        for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
26409          composeCapabilityStatementCapabilityStatementRestComponent("rest", e);
26410      }
26411      if (element.hasMessaging()) { 
26412        for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
26413          composeCapabilityStatementCapabilityStatementMessagingComponent("messaging", e);
26414      }
26415      if (element.hasDocument()) { 
26416        for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
26417          composeCapabilityStatementCapabilityStatementDocumentComponent("document", e);
26418      }
26419  }
26420
26421  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
26422    if (element != null) {
26423      composeElementAttributes(element);
26424      xml.enter(FHIR_NS, name);
26425      composeCapabilityStatementCapabilityStatementSoftwareComponentElements(element);
26426      composeElementClose(element);
26427      xml.exit(FHIR_NS, name);
26428    }
26429  }
26430
26431  protected void composeCapabilityStatementCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
26432      composeBackboneElementElements(element);
26433      if (element.hasNameElement()) {
26434        composeString("name", element.getNameElement());
26435      }
26436      if (element.hasVersionElement()) {
26437        composeString("version", element.getVersionElement());
26438      }
26439      if (element.hasReleaseDateElement()) {
26440        composeDateTime("releaseDate", element.getReleaseDateElement());
26441      }
26442  }
26443
26444  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
26445    if (element != null) {
26446      composeElementAttributes(element);
26447      xml.enter(FHIR_NS, name);
26448      composeCapabilityStatementCapabilityStatementImplementationComponentElements(element);
26449      composeElementClose(element);
26450      xml.exit(FHIR_NS, name);
26451    }
26452  }
26453
26454  protected void composeCapabilityStatementCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
26455      composeBackboneElementElements(element);
26456      if (element.hasDescriptionElement()) {
26457        composeString("description", element.getDescriptionElement());
26458      }
26459      if (element.hasUrlElement()) {
26460        composeUrl("url", element.getUrlElement());
26461      }
26462  }
26463
26464  protected void composeCapabilityStatementCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
26465    if (element != null) {
26466      composeElementAttributes(element);
26467      xml.enter(FHIR_NS, name);
26468      composeCapabilityStatementCapabilityStatementRestComponentElements(element);
26469      composeElementClose(element);
26470      xml.exit(FHIR_NS, name);
26471    }
26472  }
26473
26474  protected void composeCapabilityStatementCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
26475      composeBackboneElementElements(element);
26476      if (element.hasModeElement())
26477        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
26478      if (element.hasDocumentationElement()) {
26479        composeString("documentation", element.getDocumentationElement());
26480      }
26481      if (element.hasSecurity()) {
26482        composeCapabilityStatementCapabilityStatementRestSecurityComponent("security", element.getSecurity());
26483      }
26484      if (element.hasResource()) { 
26485        for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
26486          composeCapabilityStatementCapabilityStatementRestResourceComponent("resource", e);
26487      }
26488      if (element.hasInteraction()) { 
26489        for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
26490          composeCapabilityStatementSystemInteractionComponent("interaction", e);
26491      }
26492      if (element.hasSearchParam()) { 
26493        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
26494          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
26495      }
26496      if (element.hasOperation()) { 
26497        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
26498          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
26499      }
26500      if (element.hasCompartment()) { 
26501        for (CanonicalType e : element.getCompartment()) 
26502          composeCanonical("compartment", e);
26503      }
26504  }
26505
26506  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
26507    if (element != null) {
26508      composeElementAttributes(element);
26509      xml.enter(FHIR_NS, name);
26510      composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(element);
26511      composeElementClose(element);
26512      xml.exit(FHIR_NS, name);
26513    }
26514  }
26515
26516  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
26517      composeBackboneElementElements(element);
26518      if (element.hasCorsElement()) {
26519        composeBoolean("cors", element.getCorsElement());
26520      }
26521      if (element.hasService()) { 
26522        for (CodeableConcept e : element.getService()) 
26523          composeCodeableConcept("service", e);
26524      }
26525      if (element.hasDescriptionElement()) {
26526        composeString("description", element.getDescriptionElement());
26527      }
26528  }
26529
26530  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
26531    if (element != null) {
26532      composeElementAttributes(element);
26533      xml.enter(FHIR_NS, name);
26534      composeCapabilityStatementCapabilityStatementRestResourceComponentElements(element);
26535      composeElementClose(element);
26536      xml.exit(FHIR_NS, name);
26537    }
26538  }
26539
26540  protected void composeCapabilityStatementCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
26541      composeBackboneElementElements(element);
26542      if (element.hasTypeElement()) {
26543        composeCode("type", element.getTypeElement());
26544      }
26545      if (element.hasProfileElement()) {
26546        composeCanonical("profile", element.getProfileElement());
26547      }
26548      if (element.hasSupportedProfile()) { 
26549        for (CanonicalType e : element.getSupportedProfile()) 
26550          composeCanonical("supportedProfile", e);
26551      }
26552      if (element.hasDocumentationElement()) {
26553        composeMarkdown("documentation", element.getDocumentationElement());
26554      }
26555      if (element.hasInteraction()) { 
26556        for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
26557          composeCapabilityStatementResourceInteractionComponent("interaction", e);
26558      }
26559      if (element.hasVersioningElement())
26560        composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
26561      if (element.hasReadHistoryElement()) {
26562        composeBoolean("readHistory", element.getReadHistoryElement());
26563      }
26564      if (element.hasUpdateCreateElement()) {
26565        composeBoolean("updateCreate", element.getUpdateCreateElement());
26566      }
26567      if (element.hasConditionalCreateElement()) {
26568        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
26569      }
26570      if (element.hasConditionalReadElement())
26571        composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
26572      if (element.hasConditionalUpdateElement()) {
26573        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
26574      }
26575      if (element.hasConditionalDeleteElement())
26576        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
26577        if (element.hasReferencePolicy()) 
26578          for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
26579            composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
26580      if (element.hasSearchInclude()) { 
26581        for (StringType e : element.getSearchInclude()) 
26582          composeString("searchInclude", e);
26583      }
26584      if (element.hasSearchRevInclude()) { 
26585        for (StringType e : element.getSearchRevInclude()) 
26586          composeString("searchRevInclude", e);
26587      }
26588      if (element.hasSearchParam()) { 
26589        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
26590          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
26591      }
26592      if (element.hasOperation()) { 
26593        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
26594          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
26595      }
26596  }
26597
26598  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
26599    if (element != null) {
26600      composeElementAttributes(element);
26601      xml.enter(FHIR_NS, name);
26602      composeCapabilityStatementResourceInteractionComponentElements(element);
26603      composeElementClose(element);
26604      xml.exit(FHIR_NS, name);
26605    }
26606  }
26607
26608  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
26609      composeBackboneElementElements(element);
26610      if (element.hasCodeElement())
26611        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
26612      if (element.hasDocumentationElement()) {
26613        composeString("documentation", element.getDocumentationElement());
26614      }
26615  }
26616
26617  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
26618    if (element != null) {
26619      composeElementAttributes(element);
26620      xml.enter(FHIR_NS, name);
26621      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(element);
26622      composeElementClose(element);
26623      xml.exit(FHIR_NS, name);
26624    }
26625  }
26626
26627  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
26628      composeBackboneElementElements(element);
26629      if (element.hasNameElement()) {
26630        composeString("name", element.getNameElement());
26631      }
26632      if (element.hasDefinitionElement()) {
26633        composeCanonical("definition", element.getDefinitionElement());
26634      }
26635      if (element.hasTypeElement())
26636        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
26637      if (element.hasDocumentationElement()) {
26638        composeString("documentation", element.getDocumentationElement());
26639      }
26640  }
26641
26642  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
26643    if (element != null) {
26644      composeElementAttributes(element);
26645      xml.enter(FHIR_NS, name);
26646      composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(element);
26647      composeElementClose(element);
26648      xml.exit(FHIR_NS, name);
26649    }
26650  }
26651
26652  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
26653      composeBackboneElementElements(element);
26654      if (element.hasNameElement()) {
26655        composeString("name", element.getNameElement());
26656      }
26657      if (element.hasDefinitionElement()) {
26658        composeCanonical("definition", element.getDefinitionElement());
26659      }
26660      if (element.hasDocumentationElement()) {
26661        composeMarkdown("documentation", element.getDocumentationElement());
26662      }
26663  }
26664
26665  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
26666    if (element != null) {
26667      composeElementAttributes(element);
26668      xml.enter(FHIR_NS, name);
26669      composeCapabilityStatementSystemInteractionComponentElements(element);
26670      composeElementClose(element);
26671      xml.exit(FHIR_NS, name);
26672    }
26673  }
26674
26675  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
26676      composeBackboneElementElements(element);
26677      if (element.hasCodeElement())
26678        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
26679      if (element.hasDocumentationElement()) {
26680        composeString("documentation", element.getDocumentationElement());
26681      }
26682  }
26683
26684  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
26685    if (element != null) {
26686      composeElementAttributes(element);
26687      xml.enter(FHIR_NS, name);
26688      composeCapabilityStatementCapabilityStatementMessagingComponentElements(element);
26689      composeElementClose(element);
26690      xml.exit(FHIR_NS, name);
26691    }
26692  }
26693
26694  protected void composeCapabilityStatementCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
26695      composeBackboneElementElements(element);
26696      if (element.hasEndpoint()) { 
26697        for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
26698          composeCapabilityStatementCapabilityStatementMessagingEndpointComponent("endpoint", e);
26699      }
26700      if (element.hasReliableCacheElement()) {
26701        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
26702      }
26703      if (element.hasDocumentationElement()) {
26704        composeString("documentation", element.getDocumentationElement());
26705      }
26706      if (element.hasSupportedMessage()) { 
26707        for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
26708          composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
26709      }
26710  }
26711
26712  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
26713    if (element != null) {
26714      composeElementAttributes(element);
26715      xml.enter(FHIR_NS, name);
26716      composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(element);
26717      composeElementClose(element);
26718      xml.exit(FHIR_NS, name);
26719    }
26720  }
26721
26722  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
26723      composeBackboneElementElements(element);
26724      if (element.hasProtocol()) {
26725        composeCoding("protocol", element.getProtocol());
26726      }
26727      if (element.hasAddressElement()) {
26728        composeUrl("address", element.getAddressElement());
26729      }
26730  }
26731
26732  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
26733    if (element != null) {
26734      composeElementAttributes(element);
26735      xml.enter(FHIR_NS, name);
26736      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(element);
26737      composeElementClose(element);
26738      xml.exit(FHIR_NS, name);
26739    }
26740  }
26741
26742  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
26743      composeBackboneElementElements(element);
26744      if (element.hasModeElement())
26745        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
26746      if (element.hasDefinitionElement()) {
26747        composeCanonical("definition", element.getDefinitionElement());
26748      }
26749  }
26750
26751  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
26752    if (element != null) {
26753      composeElementAttributes(element);
26754      xml.enter(FHIR_NS, name);
26755      composeCapabilityStatementCapabilityStatementDocumentComponentElements(element);
26756      composeElementClose(element);
26757      xml.exit(FHIR_NS, name);
26758    }
26759  }
26760
26761  protected void composeCapabilityStatementCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
26762      composeBackboneElementElements(element);
26763      if (element.hasModeElement())
26764        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
26765      if (element.hasDocumentationElement()) {
26766        composeString("documentation", element.getDocumentationElement());
26767      }
26768      if (element.hasProfileElement()) {
26769        composeCanonical("profile", element.getProfileElement());
26770      }
26771  }
26772
26773  protected void composeCarePlan(String name, CarePlan element) throws IOException {
26774    if (element != null) {
26775      composeDomainResourceAttributes(element);
26776      xml.enter(FHIR_NS, name);
26777      composeCarePlanElements(element);
26778      composeElementClose(element);
26779      xml.exit(FHIR_NS, name);
26780    }
26781  }
26782
26783  protected void composeCarePlanElements(CarePlan element) throws IOException {
26784      composeDomainResourceElements(element);
26785      if (element.hasIdentifier()) { 
26786        for (Identifier e : element.getIdentifier()) 
26787          composeIdentifier("identifier", e);
26788      }
26789      if (element.hasInstantiates()) { 
26790        for (UriType e : element.getInstantiates()) 
26791          composeUri("instantiates", e);
26792      }
26793      if (element.hasBasedOn()) { 
26794        for (Reference e : element.getBasedOn()) 
26795          composeReference("basedOn", e);
26796      }
26797      if (element.hasReplaces()) { 
26798        for (Reference e : element.getReplaces()) 
26799          composeReference("replaces", e);
26800      }
26801      if (element.hasPartOf()) { 
26802        for (Reference e : element.getPartOf()) 
26803          composeReference("partOf", e);
26804      }
26805      if (element.hasStatusElement())
26806        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
26807      if (element.hasIntentElement())
26808        composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
26809      if (element.hasCategory()) { 
26810        for (CodeableConcept e : element.getCategory()) 
26811          composeCodeableConcept("category", e);
26812      }
26813      if (element.hasTitleElement()) {
26814        composeString("title", element.getTitleElement());
26815      }
26816      if (element.hasDescriptionElement()) {
26817        composeString("description", element.getDescriptionElement());
26818      }
26819      if (element.hasSubject()) {
26820        composeReference("subject", element.getSubject());
26821      }
26822      if (element.hasContext()) {
26823        composeReference("context", element.getContext());
26824      }
26825      if (element.hasPeriod()) {
26826        composePeriod("period", element.getPeriod());
26827      }
26828      if (element.hasAuthor()) { 
26829        for (Reference e : element.getAuthor()) 
26830          composeReference("author", e);
26831      }
26832      if (element.hasCareTeam()) { 
26833        for (Reference e : element.getCareTeam()) 
26834          composeReference("careTeam", e);
26835      }
26836      if (element.hasAddresses()) { 
26837        for (Reference e : element.getAddresses()) 
26838          composeReference("addresses", e);
26839      }
26840      if (element.hasSupportingInfo()) { 
26841        for (Reference e : element.getSupportingInfo()) 
26842          composeReference("supportingInfo", e);
26843      }
26844      if (element.hasGoal()) { 
26845        for (Reference e : element.getGoal()) 
26846          composeReference("goal", e);
26847      }
26848      if (element.hasActivity()) { 
26849        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
26850          composeCarePlanCarePlanActivityComponent("activity", e);
26851      }
26852      if (element.hasNote()) { 
26853        for (Annotation e : element.getNote()) 
26854          composeAnnotation("note", e);
26855      }
26856  }
26857
26858  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
26859    if (element != null) {
26860      composeElementAttributes(element);
26861      xml.enter(FHIR_NS, name);
26862      composeCarePlanCarePlanActivityComponentElements(element);
26863      composeElementClose(element);
26864      xml.exit(FHIR_NS, name);
26865    }
26866  }
26867
26868  protected void composeCarePlanCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
26869      composeBackboneElementElements(element);
26870      if (element.hasOutcomeCodeableConcept()) { 
26871        for (CodeableConcept e : element.getOutcomeCodeableConcept()) 
26872          composeCodeableConcept("outcomeCodeableConcept", e);
26873      }
26874      if (element.hasOutcomeReference()) { 
26875        for (Reference e : element.getOutcomeReference()) 
26876          composeReference("outcomeReference", e);
26877      }
26878      if (element.hasProgress()) { 
26879        for (Annotation e : element.getProgress()) 
26880          composeAnnotation("progress", e);
26881      }
26882      if (element.hasReference()) {
26883        composeReference("reference", element.getReference());
26884      }
26885      if (element.hasDetail()) {
26886        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
26887      }
26888  }
26889
26890  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
26891    if (element != null) {
26892      composeElementAttributes(element);
26893      xml.enter(FHIR_NS, name);
26894      composeCarePlanCarePlanActivityDetailComponentElements(element);
26895      composeElementClose(element);
26896      xml.exit(FHIR_NS, name);
26897    }
26898  }
26899
26900  protected void composeCarePlanCarePlanActivityDetailComponentElements(CarePlan.CarePlanActivityDetailComponent element) throws IOException {
26901      composeBackboneElementElements(element);
26902      if (element.hasKindElement())
26903        composeEnumeration("kind", element.getKindElement(), new CarePlan.CarePlanActivityKindEnumFactory());
26904      if (element.hasInstantiatesElement()) {
26905        composeUri("instantiates", element.getInstantiatesElement());
26906      }
26907      if (element.hasCode()) {
26908        composeCodeableConcept("code", element.getCode());
26909      }
26910      if (element.hasReasonCode()) { 
26911        for (CodeableConcept e : element.getReasonCode()) 
26912          composeCodeableConcept("reasonCode", e);
26913      }
26914      if (element.hasReasonReference()) { 
26915        for (Reference e : element.getReasonReference()) 
26916          composeReference("reasonReference", e);
26917      }
26918      if (element.hasGoal()) { 
26919        for (Reference e : element.getGoal()) 
26920          composeReference("goal", e);
26921      }
26922      if (element.hasStatusElement())
26923        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
26924      if (element.hasStatusReasonElement()) {
26925        composeString("statusReason", element.getStatusReasonElement());
26926      }
26927      if (element.hasDoNotPerformElement()) {
26928        composeBoolean("doNotPerform", element.getDoNotPerformElement());
26929      }
26930      if (element.hasScheduled()) {
26931        composeType("scheduled", element.getScheduled());
26932      }      if (element.hasLocation()) {
26933        composeReference("location", element.getLocation());
26934      }
26935      if (element.hasPerformer()) { 
26936        for (Reference e : element.getPerformer()) 
26937          composeReference("performer", e);
26938      }
26939      if (element.hasProduct()) {
26940        composeType("product", element.getProduct());
26941      }      if (element.hasDailyAmount()) {
26942        composeSimpleQuantity("dailyAmount", element.getDailyAmount());
26943      }
26944      if (element.hasQuantity()) {
26945        composeSimpleQuantity("quantity", element.getQuantity());
26946      }
26947      if (element.hasDescriptionElement()) {
26948        composeString("description", element.getDescriptionElement());
26949      }
26950  }
26951
26952  protected void composeCareTeam(String name, CareTeam element) throws IOException {
26953    if (element != null) {
26954      composeDomainResourceAttributes(element);
26955      xml.enter(FHIR_NS, name);
26956      composeCareTeamElements(element);
26957      composeElementClose(element);
26958      xml.exit(FHIR_NS, name);
26959    }
26960  }
26961
26962  protected void composeCareTeamElements(CareTeam element) throws IOException {
26963      composeDomainResourceElements(element);
26964      if (element.hasIdentifier()) { 
26965        for (Identifier e : element.getIdentifier()) 
26966          composeIdentifier("identifier", e);
26967      }
26968      if (element.hasStatusElement())
26969        composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
26970      if (element.hasCategory()) { 
26971        for (CodeableConcept e : element.getCategory()) 
26972          composeCodeableConcept("category", e);
26973      }
26974      if (element.hasNameElement()) {
26975        composeString("name", element.getNameElement());
26976      }
26977      if (element.hasSubject()) {
26978        composeReference("subject", element.getSubject());
26979      }
26980      if (element.hasContext()) {
26981        composeReference("context", element.getContext());
26982      }
26983      if (element.hasPeriod()) {
26984        composePeriod("period", element.getPeriod());
26985      }
26986      if (element.hasParticipant()) { 
26987        for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
26988          composeCareTeamCareTeamParticipantComponent("participant", e);
26989      }
26990      if (element.hasReasonCode()) { 
26991        for (CodeableConcept e : element.getReasonCode()) 
26992          composeCodeableConcept("reasonCode", e);
26993      }
26994      if (element.hasReasonReference()) { 
26995        for (Reference e : element.getReasonReference()) 
26996          composeReference("reasonReference", e);
26997      }
26998      if (element.hasManagingOrganization()) { 
26999        for (Reference e : element.getManagingOrganization()) 
27000          composeReference("managingOrganization", e);
27001      }
27002      if (element.hasTelecom()) { 
27003        for (ContactPoint e : element.getTelecom()) 
27004          composeContactPoint("telecom", e);
27005      }
27006      if (element.hasNote()) { 
27007        for (Annotation e : element.getNote()) 
27008          composeAnnotation("note", e);
27009      }
27010  }
27011
27012  protected void composeCareTeamCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
27013    if (element != null) {
27014      composeElementAttributes(element);
27015      xml.enter(FHIR_NS, name);
27016      composeCareTeamCareTeamParticipantComponentElements(element);
27017      composeElementClose(element);
27018      xml.exit(FHIR_NS, name);
27019    }
27020  }
27021
27022  protected void composeCareTeamCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
27023      composeBackboneElementElements(element);
27024      if (element.hasRole()) {
27025        composeCodeableConcept("role", element.getRole());
27026      }
27027      if (element.hasMember()) {
27028        composeReference("member", element.getMember());
27029      }
27030      if (element.hasOnBehalfOf()) {
27031        composeReference("onBehalfOf", element.getOnBehalfOf());
27032      }
27033      if (element.hasPeriod()) {
27034        composePeriod("period", element.getPeriod());
27035      }
27036  }
27037
27038  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
27039    if (element != null) {
27040      composeDomainResourceAttributes(element);
27041      xml.enter(FHIR_NS, name);
27042      composeChargeItemElements(element);
27043      composeElementClose(element);
27044      xml.exit(FHIR_NS, name);
27045    }
27046  }
27047
27048  protected void composeChargeItemElements(ChargeItem element) throws IOException {
27049      composeDomainResourceElements(element);
27050      if (element.hasIdentifier()) { 
27051        for (Identifier e : element.getIdentifier()) 
27052          composeIdentifier("identifier", e);
27053      }
27054      if (element.hasDefinition()) { 
27055        for (UriType e : element.getDefinition()) 
27056          composeUri("definition", e);
27057      }
27058      if (element.hasStatusElement())
27059        composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
27060      if (element.hasPartOf()) { 
27061        for (Reference e : element.getPartOf()) 
27062          composeReference("partOf", e);
27063      }
27064      if (element.hasCode()) {
27065        composeCodeableConcept("code", element.getCode());
27066      }
27067      if (element.hasSubject()) {
27068        composeReference("subject", element.getSubject());
27069      }
27070      if (element.hasContext()) {
27071        composeReference("context", element.getContext());
27072      }
27073      if (element.hasOccurrence()) {
27074        composeType("occurrence", element.getOccurrence());
27075      }      if (element.hasParticipant()) { 
27076        for (ChargeItem.ChargeItemParticipantComponent e : element.getParticipant()) 
27077          composeChargeItemChargeItemParticipantComponent("participant", e);
27078      }
27079      if (element.hasPerformingOrganization()) {
27080        composeReference("performingOrganization", element.getPerformingOrganization());
27081      }
27082      if (element.hasRequestingOrganization()) {
27083        composeReference("requestingOrganization", element.getRequestingOrganization());
27084      }
27085      if (element.hasCostCenter()) {
27086        composeReference("costCenter", element.getCostCenter());
27087      }
27088      if (element.hasQuantity()) {
27089        composeQuantity("quantity", element.getQuantity());
27090      }
27091      if (element.hasBodysite()) { 
27092        for (CodeableConcept e : element.getBodysite()) 
27093          composeCodeableConcept("bodysite", e);
27094      }
27095      if (element.hasFactorOverrideElement()) {
27096        composeDecimal("factorOverride", element.getFactorOverrideElement());
27097      }
27098      if (element.hasPriceOverride()) {
27099        composeMoney("priceOverride", element.getPriceOverride());
27100      }
27101      if (element.hasOverrideReasonElement()) {
27102        composeString("overrideReason", element.getOverrideReasonElement());
27103      }
27104      if (element.hasEnterer()) {
27105        composeReference("enterer", element.getEnterer());
27106      }
27107      if (element.hasEnteredDateElement()) {
27108        composeDateTime("enteredDate", element.getEnteredDateElement());
27109      }
27110      if (element.hasReason()) { 
27111        for (CodeableConcept e : element.getReason()) 
27112          composeCodeableConcept("reason", e);
27113      }
27114      if (element.hasService()) { 
27115        for (Reference e : element.getService()) 
27116          composeReference("service", e);
27117      }
27118      if (element.hasAccount()) { 
27119        for (Reference e : element.getAccount()) 
27120          composeReference("account", e);
27121      }
27122      if (element.hasNote()) { 
27123        for (Annotation e : element.getNote()) 
27124          composeAnnotation("note", e);
27125      }
27126      if (element.hasSupportingInformation()) { 
27127        for (Reference e : element.getSupportingInformation()) 
27128          composeReference("supportingInformation", e);
27129      }
27130  }
27131
27132  protected void composeChargeItemChargeItemParticipantComponent(String name, ChargeItem.ChargeItemParticipantComponent element) throws IOException {
27133    if (element != null) {
27134      composeElementAttributes(element);
27135      xml.enter(FHIR_NS, name);
27136      composeChargeItemChargeItemParticipantComponentElements(element);
27137      composeElementClose(element);
27138      xml.exit(FHIR_NS, name);
27139    }
27140  }
27141
27142  protected void composeChargeItemChargeItemParticipantComponentElements(ChargeItem.ChargeItemParticipantComponent element) throws IOException {
27143      composeBackboneElementElements(element);
27144      if (element.hasRole()) {
27145        composeCodeableConcept("role", element.getRole());
27146      }
27147      if (element.hasActor()) {
27148        composeReference("actor", element.getActor());
27149      }
27150  }
27151
27152  protected void composeClaim(String name, Claim element) throws IOException {
27153    if (element != null) {
27154      composeDomainResourceAttributes(element);
27155      xml.enter(FHIR_NS, name);
27156      composeClaimElements(element);
27157      composeElementClose(element);
27158      xml.exit(FHIR_NS, name);
27159    }
27160  }
27161
27162  protected void composeClaimElements(Claim element) throws IOException {
27163      composeDomainResourceElements(element);
27164      if (element.hasIdentifier()) { 
27165        for (Identifier e : element.getIdentifier()) 
27166          composeIdentifier("identifier", e);
27167      }
27168      if (element.hasStatusElement())
27169        composeEnumeration("status", element.getStatusElement(), new Claim.ClaimStatusEnumFactory());
27170      if (element.hasType()) {
27171        composeCodeableConcept("type", element.getType());
27172      }
27173      if (element.hasSubType()) { 
27174        for (CodeableConcept e : element.getSubType()) 
27175          composeCodeableConcept("subType", e);
27176      }
27177      if (element.hasUseElement())
27178        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
27179      if (element.hasPatient()) {
27180        composeReference("patient", element.getPatient());
27181      }
27182      if (element.hasBillablePeriod()) {
27183        composePeriod("billablePeriod", element.getBillablePeriod());
27184      }
27185      if (element.hasCreatedElement()) {
27186        composeDateTime("created", element.getCreatedElement());
27187      }
27188      if (element.hasEnterer()) {
27189        composeReference("enterer", element.getEnterer());
27190      }
27191      if (element.hasInsurer()) {
27192        composeReference("insurer", element.getInsurer());
27193      }
27194      if (element.hasProvider()) {
27195        composeReference("provider", element.getProvider());
27196      }
27197      if (element.hasPriority()) {
27198        composeCodeableConcept("priority", element.getPriority());
27199      }
27200      if (element.hasFundsReserve()) {
27201        composeCodeableConcept("fundsReserve", element.getFundsReserve());
27202      }
27203      if (element.hasRelated()) { 
27204        for (Claim.RelatedClaimComponent e : element.getRelated()) 
27205          composeClaimRelatedClaimComponent("related", e);
27206      }
27207      if (element.hasPrescription()) {
27208        composeReference("prescription", element.getPrescription());
27209      }
27210      if (element.hasOriginalPrescription()) {
27211        composeReference("originalPrescription", element.getOriginalPrescription());
27212      }
27213      if (element.hasPayee()) {
27214        composeClaimPayeeComponent("payee", element.getPayee());
27215      }
27216      if (element.hasReferral()) {
27217        composeReference("referral", element.getReferral());
27218      }
27219      if (element.hasFacility()) {
27220        composeReference("facility", element.getFacility());
27221      }
27222      if (element.hasCareTeam()) { 
27223        for (Claim.CareTeamComponent e : element.getCareTeam()) 
27224          composeClaimCareTeamComponent("careTeam", e);
27225      }
27226      if (element.hasInformation()) { 
27227        for (Claim.SpecialConditionComponent e : element.getInformation()) 
27228          composeClaimSpecialConditionComponent("information", e);
27229      }
27230      if (element.hasDiagnosis()) { 
27231        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
27232          composeClaimDiagnosisComponent("diagnosis", e);
27233      }
27234      if (element.hasProcedure()) { 
27235        for (Claim.ProcedureComponent e : element.getProcedure()) 
27236          composeClaimProcedureComponent("procedure", e);
27237      }
27238      if (element.hasInsurance()) { 
27239        for (Claim.InsuranceComponent e : element.getInsurance()) 
27240          composeClaimInsuranceComponent("insurance", e);
27241      }
27242      if (element.hasAccident()) {
27243        composeClaimAccidentComponent("accident", element.getAccident());
27244      }
27245      if (element.hasItem()) { 
27246        for (Claim.ItemComponent e : element.getItem()) 
27247          composeClaimItemComponent("item", e);
27248      }
27249      if (element.hasTotal()) {
27250        composeMoney("total", element.getTotal());
27251      }
27252  }
27253
27254  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
27255    if (element != null) {
27256      composeElementAttributes(element);
27257      xml.enter(FHIR_NS, name);
27258      composeClaimRelatedClaimComponentElements(element);
27259      composeElementClose(element);
27260      xml.exit(FHIR_NS, name);
27261    }
27262  }
27263
27264  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
27265      composeBackboneElementElements(element);
27266      if (element.hasClaim()) {
27267        composeReference("claim", element.getClaim());
27268      }
27269      if (element.hasRelationship()) {
27270        composeCodeableConcept("relationship", element.getRelationship());
27271      }
27272      if (element.hasReference()) {
27273        composeIdentifier("reference", element.getReference());
27274      }
27275  }
27276
27277  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
27278    if (element != null) {
27279      composeElementAttributes(element);
27280      xml.enter(FHIR_NS, name);
27281      composeClaimPayeeComponentElements(element);
27282      composeElementClose(element);
27283      xml.exit(FHIR_NS, name);
27284    }
27285  }
27286
27287  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
27288      composeBackboneElementElements(element);
27289      if (element.hasType()) {
27290        composeCodeableConcept("type", element.getType());
27291      }
27292      if (element.hasResource()) {
27293        composeCoding("resource", element.getResource());
27294      }
27295      if (element.hasParty()) {
27296        composeReference("party", element.getParty());
27297      }
27298  }
27299
27300  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
27301    if (element != null) {
27302      composeElementAttributes(element);
27303      xml.enter(FHIR_NS, name);
27304      composeClaimCareTeamComponentElements(element);
27305      composeElementClose(element);
27306      xml.exit(FHIR_NS, name);
27307    }
27308  }
27309
27310  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
27311      composeBackboneElementElements(element);
27312      if (element.hasSequenceElement()) {
27313        composePositiveInt("sequence", element.getSequenceElement());
27314      }
27315      if (element.hasProvider()) {
27316        composeReference("provider", element.getProvider());
27317      }
27318      if (element.hasResponsibleElement()) {
27319        composeBoolean("responsible", element.getResponsibleElement());
27320      }
27321      if (element.hasRole()) {
27322        composeCodeableConcept("role", element.getRole());
27323      }
27324      if (element.hasQualification()) {
27325        composeCodeableConcept("qualification", element.getQualification());
27326      }
27327  }
27328
27329  protected void composeClaimSpecialConditionComponent(String name, Claim.SpecialConditionComponent element) throws IOException {
27330    if (element != null) {
27331      composeElementAttributes(element);
27332      xml.enter(FHIR_NS, name);
27333      composeClaimSpecialConditionComponentElements(element);
27334      composeElementClose(element);
27335      xml.exit(FHIR_NS, name);
27336    }
27337  }
27338
27339  protected void composeClaimSpecialConditionComponentElements(Claim.SpecialConditionComponent element) throws IOException {
27340      composeBackboneElementElements(element);
27341      if (element.hasSequenceElement()) {
27342        composePositiveInt("sequence", element.getSequenceElement());
27343      }
27344      if (element.hasCategory()) {
27345        composeCodeableConcept("category", element.getCategory());
27346      }
27347      if (element.hasCode()) {
27348        composeCodeableConcept("code", element.getCode());
27349      }
27350      if (element.hasTiming()) {
27351        composeType("timing", element.getTiming());
27352      }      if (element.hasValue()) {
27353        composeType("value", element.getValue());
27354      }      if (element.hasReason()) {
27355        composeCodeableConcept("reason", element.getReason());
27356      }
27357  }
27358
27359  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
27360    if (element != null) {
27361      composeElementAttributes(element);
27362      xml.enter(FHIR_NS, name);
27363      composeClaimDiagnosisComponentElements(element);
27364      composeElementClose(element);
27365      xml.exit(FHIR_NS, name);
27366    }
27367  }
27368
27369  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
27370      composeBackboneElementElements(element);
27371      if (element.hasSequenceElement()) {
27372        composePositiveInt("sequence", element.getSequenceElement());
27373      }
27374      if (element.hasDiagnosis()) {
27375        composeType("diagnosis", element.getDiagnosis());
27376      }      if (element.hasType()) { 
27377        for (CodeableConcept e : element.getType()) 
27378          composeCodeableConcept("type", e);
27379      }
27380      if (element.hasPackageCode()) {
27381        composeCodeableConcept("packageCode", element.getPackageCode());
27382      }
27383  }
27384
27385  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
27386    if (element != null) {
27387      composeElementAttributes(element);
27388      xml.enter(FHIR_NS, name);
27389      composeClaimProcedureComponentElements(element);
27390      composeElementClose(element);
27391      xml.exit(FHIR_NS, name);
27392    }
27393  }
27394
27395  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
27396      composeBackboneElementElements(element);
27397      if (element.hasSequenceElement()) {
27398        composePositiveInt("sequence", element.getSequenceElement());
27399      }
27400      if (element.hasDateElement()) {
27401        composeDateTime("date", element.getDateElement());
27402      }
27403      if (element.hasProcedure()) {
27404        composeType("procedure", element.getProcedure());
27405      }  }
27406
27407  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
27408    if (element != null) {
27409      composeElementAttributes(element);
27410      xml.enter(FHIR_NS, name);
27411      composeClaimInsuranceComponentElements(element);
27412      composeElementClose(element);
27413      xml.exit(FHIR_NS, name);
27414    }
27415  }
27416
27417  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
27418      composeBackboneElementElements(element);
27419      if (element.hasSequenceElement()) {
27420        composePositiveInt("sequence", element.getSequenceElement());
27421      }
27422      if (element.hasFocalElement()) {
27423        composeBoolean("focal", element.getFocalElement());
27424      }
27425      if (element.hasIdentifier()) {
27426        composeIdentifier("identifier", element.getIdentifier());
27427      }
27428      if (element.hasCoverage()) {
27429        composeReference("coverage", element.getCoverage());
27430      }
27431      if (element.hasBusinessArrangementElement()) {
27432        composeString("businessArrangement", element.getBusinessArrangementElement());
27433      }
27434      if (element.hasPreAuthRef()) { 
27435        for (StringType e : element.getPreAuthRef()) 
27436          composeString("preAuthRef", e);
27437      }
27438      if (element.hasClaimResponse()) {
27439        composeReference("claimResponse", element.getClaimResponse());
27440      }
27441  }
27442
27443  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
27444    if (element != null) {
27445      composeElementAttributes(element);
27446      xml.enter(FHIR_NS, name);
27447      composeClaimAccidentComponentElements(element);
27448      composeElementClose(element);
27449      xml.exit(FHIR_NS, name);
27450    }
27451  }
27452
27453  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
27454      composeBackboneElementElements(element);
27455      if (element.hasDateElement()) {
27456        composeDate("date", element.getDateElement());
27457      }
27458      if (element.hasType()) {
27459        composeCodeableConcept("type", element.getType());
27460      }
27461      if (element.hasLocation()) {
27462        composeType("location", element.getLocation());
27463      }  }
27464
27465  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
27466    if (element != null) {
27467      composeElementAttributes(element);
27468      xml.enter(FHIR_NS, name);
27469      composeClaimItemComponentElements(element);
27470      composeElementClose(element);
27471      xml.exit(FHIR_NS, name);
27472    }
27473  }
27474
27475  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
27476      composeBackboneElementElements(element);
27477      if (element.hasSequenceElement()) {
27478        composePositiveInt("sequence", element.getSequenceElement());
27479      }
27480      if (element.hasCareTeamSequence()) { 
27481        for (PositiveIntType e : element.getCareTeamSequence()) 
27482          composePositiveInt("careTeamSequence", e);
27483      }
27484      if (element.hasDiagnosisSequence()) { 
27485        for (PositiveIntType e : element.getDiagnosisSequence()) 
27486          composePositiveInt("diagnosisSequence", e);
27487      }
27488      if (element.hasProcedureSequence()) { 
27489        for (PositiveIntType e : element.getProcedureSequence()) 
27490          composePositiveInt("procedureSequence", e);
27491      }
27492      if (element.hasInformationSequence()) { 
27493        for (PositiveIntType e : element.getInformationSequence()) 
27494          composePositiveInt("informationSequence", e);
27495      }
27496      if (element.hasRevenue()) {
27497        composeCodeableConcept("revenue", element.getRevenue());
27498      }
27499      if (element.hasCategory()) {
27500        composeCodeableConcept("category", element.getCategory());
27501      }
27502      if (element.hasService()) {
27503        composeCodeableConcept("service", element.getService());
27504      }
27505      if (element.hasModifier()) { 
27506        for (CodeableConcept e : element.getModifier()) 
27507          composeCodeableConcept("modifier", e);
27508      }
27509      if (element.hasProgramCode()) { 
27510        for (CodeableConcept e : element.getProgramCode()) 
27511          composeCodeableConcept("programCode", e);
27512      }
27513      if (element.hasServiced()) {
27514        composeType("serviced", element.getServiced());
27515      }      if (element.hasLocation()) {
27516        composeType("location", element.getLocation());
27517      }      if (element.hasQuantity()) {
27518        composeSimpleQuantity("quantity", element.getQuantity());
27519      }
27520      if (element.hasUnitPrice()) {
27521        composeMoney("unitPrice", element.getUnitPrice());
27522      }
27523      if (element.hasFactorElement()) {
27524        composeDecimal("factor", element.getFactorElement());
27525      }
27526      if (element.hasNet()) {
27527        composeMoney("net", element.getNet());
27528      }
27529      if (element.hasUdi()) { 
27530        for (Reference e : element.getUdi()) 
27531          composeReference("udi", e);
27532      }
27533      if (element.hasBodySite()) {
27534        composeCodeableConcept("bodySite", element.getBodySite());
27535      }
27536      if (element.hasSubSite()) { 
27537        for (CodeableConcept e : element.getSubSite()) 
27538          composeCodeableConcept("subSite", e);
27539      }
27540      if (element.hasEncounter()) { 
27541        for (Reference e : element.getEncounter()) 
27542          composeReference("encounter", e);
27543      }
27544      if (element.hasDetail()) { 
27545        for (Claim.DetailComponent e : element.getDetail()) 
27546          composeClaimDetailComponent("detail", e);
27547      }
27548  }
27549
27550  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
27551    if (element != null) {
27552      composeElementAttributes(element);
27553      xml.enter(FHIR_NS, name);
27554      composeClaimDetailComponentElements(element);
27555      composeElementClose(element);
27556      xml.exit(FHIR_NS, name);
27557    }
27558  }
27559
27560  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
27561      composeBackboneElementElements(element);
27562      if (element.hasSequenceElement()) {
27563        composePositiveInt("sequence", element.getSequenceElement());
27564      }
27565      if (element.hasRevenue()) {
27566        composeCodeableConcept("revenue", element.getRevenue());
27567      }
27568      if (element.hasCategory()) {
27569        composeCodeableConcept("category", element.getCategory());
27570      }
27571      if (element.hasService()) {
27572        composeCodeableConcept("service", element.getService());
27573      }
27574      if (element.hasModifier()) { 
27575        for (CodeableConcept e : element.getModifier()) 
27576          composeCodeableConcept("modifier", e);
27577      }
27578      if (element.hasProgramCode()) { 
27579        for (CodeableConcept e : element.getProgramCode()) 
27580          composeCodeableConcept("programCode", e);
27581      }
27582      if (element.hasQuantity()) {
27583        composeSimpleQuantity("quantity", element.getQuantity());
27584      }
27585      if (element.hasUnitPrice()) {
27586        composeMoney("unitPrice", element.getUnitPrice());
27587      }
27588      if (element.hasFactorElement()) {
27589        composeDecimal("factor", element.getFactorElement());
27590      }
27591      if (element.hasNet()) {
27592        composeMoney("net", element.getNet());
27593      }
27594      if (element.hasUdi()) { 
27595        for (Reference e : element.getUdi()) 
27596          composeReference("udi", e);
27597      }
27598      if (element.hasSubDetail()) { 
27599        for (Claim.SubDetailComponent e : element.getSubDetail()) 
27600          composeClaimSubDetailComponent("subDetail", e);
27601      }
27602  }
27603
27604  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
27605    if (element != null) {
27606      composeElementAttributes(element);
27607      xml.enter(FHIR_NS, name);
27608      composeClaimSubDetailComponentElements(element);
27609      composeElementClose(element);
27610      xml.exit(FHIR_NS, name);
27611    }
27612  }
27613
27614  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
27615      composeBackboneElementElements(element);
27616      if (element.hasSequenceElement()) {
27617        composePositiveInt("sequence", element.getSequenceElement());
27618      }
27619      if (element.hasRevenue()) {
27620        composeCodeableConcept("revenue", element.getRevenue());
27621      }
27622      if (element.hasCategory()) {
27623        composeCodeableConcept("category", element.getCategory());
27624      }
27625      if (element.hasService()) {
27626        composeCodeableConcept("service", element.getService());
27627      }
27628      if (element.hasModifier()) { 
27629        for (CodeableConcept e : element.getModifier()) 
27630          composeCodeableConcept("modifier", e);
27631      }
27632      if (element.hasProgramCode()) { 
27633        for (CodeableConcept e : element.getProgramCode()) 
27634          composeCodeableConcept("programCode", e);
27635      }
27636      if (element.hasQuantity()) {
27637        composeSimpleQuantity("quantity", element.getQuantity());
27638      }
27639      if (element.hasUnitPrice()) {
27640        composeMoney("unitPrice", element.getUnitPrice());
27641      }
27642      if (element.hasFactorElement()) {
27643        composeDecimal("factor", element.getFactorElement());
27644      }
27645      if (element.hasNet()) {
27646        composeMoney("net", element.getNet());
27647      }
27648      if (element.hasUdi()) { 
27649        for (Reference e : element.getUdi()) 
27650          composeReference("udi", e);
27651      }
27652  }
27653
27654  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
27655    if (element != null) {
27656      composeDomainResourceAttributes(element);
27657      xml.enter(FHIR_NS, name);
27658      composeClaimResponseElements(element);
27659      composeElementClose(element);
27660      xml.exit(FHIR_NS, name);
27661    }
27662  }
27663
27664  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
27665      composeDomainResourceElements(element);
27666      if (element.hasIdentifier()) { 
27667        for (Identifier e : element.getIdentifier()) 
27668          composeIdentifier("identifier", e);
27669      }
27670      if (element.hasStatusElement())
27671        composeEnumeration("status", element.getStatusElement(), new ClaimResponse.ClaimResponseStatusEnumFactory());
27672      if (element.hasType()) {
27673        composeCodeableConcept("type", element.getType());
27674      }
27675      if (element.hasSubType()) { 
27676        for (CodeableConcept e : element.getSubType()) 
27677          composeCodeableConcept("subType", e);
27678      }
27679      if (element.hasUseElement())
27680        composeEnumeration("use", element.getUseElement(), new ClaimResponse.UseEnumFactory());
27681      if (element.hasPatient()) {
27682        composeReference("patient", element.getPatient());
27683      }
27684      if (element.hasCreatedElement()) {
27685        composeDateTime("created", element.getCreatedElement());
27686      }
27687      if (element.hasInsurer()) {
27688        composeReference("insurer", element.getInsurer());
27689      }
27690      if (element.hasRequestProvider()) {
27691        composeReference("requestProvider", element.getRequestProvider());
27692      }
27693      if (element.hasRequest()) {
27694        composeReference("request", element.getRequest());
27695      }
27696      if (element.hasOutcomeElement())
27697        composeEnumeration("outcome", element.getOutcomeElement(), new ClaimResponse.RemittanceOutcomeEnumFactory());
27698      if (element.hasDispositionElement()) {
27699        composeString("disposition", element.getDispositionElement());
27700      }
27701      if (element.hasPayeeType()) {
27702        composeCodeableConcept("payeeType", element.getPayeeType());
27703      }
27704      if (element.hasItem()) { 
27705        for (ClaimResponse.ItemComponent e : element.getItem()) 
27706          composeClaimResponseItemComponent("item", e);
27707      }
27708      if (element.hasAddItem()) { 
27709        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
27710          composeClaimResponseAddedItemComponent("addItem", e);
27711      }
27712      if (element.hasError()) { 
27713        for (ClaimResponse.ErrorComponent e : element.getError()) 
27714          composeClaimResponseErrorComponent("error", e);
27715      }
27716      if (element.hasTotal()) { 
27717        for (ClaimResponse.TotalComponent e : element.getTotal()) 
27718          composeClaimResponseTotalComponent("total", e);
27719      }
27720      if (element.hasPayment()) {
27721        composeClaimResponsePaymentComponent("payment", element.getPayment());
27722      }
27723      if (element.hasReserved()) {
27724        composeCoding("reserved", element.getReserved());
27725      }
27726      if (element.hasForm()) {
27727        composeCodeableConcept("form", element.getForm());
27728      }
27729      if (element.hasProcessNote()) { 
27730        for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
27731          composeClaimResponseNoteComponent("processNote", e);
27732      }
27733      if (element.hasCommunicationRequest()) { 
27734        for (Reference e : element.getCommunicationRequest()) 
27735          composeReference("communicationRequest", e);
27736      }
27737      if (element.hasInsurance()) { 
27738        for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
27739          composeClaimResponseInsuranceComponent("insurance", e);
27740      }
27741  }
27742
27743  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
27744    if (element != null) {
27745      composeElementAttributes(element);
27746      xml.enter(FHIR_NS, name);
27747      composeClaimResponseItemComponentElements(element);
27748      composeElementClose(element);
27749      xml.exit(FHIR_NS, name);
27750    }
27751  }
27752
27753  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
27754      composeBackboneElementElements(element);
27755      if (element.hasItemSequenceElement()) {
27756        composePositiveInt("itemSequence", element.getItemSequenceElement());
27757      }
27758      if (element.hasNoteNumber()) { 
27759        for (PositiveIntType e : element.getNoteNumber()) 
27760          composePositiveInt("noteNumber", e);
27761      }
27762      if (element.hasAdjudication()) { 
27763        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
27764          composeClaimResponseAdjudicationComponent("adjudication", e);
27765      }
27766      if (element.hasDetail()) { 
27767        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
27768          composeClaimResponseItemDetailComponent("detail", e);
27769      }
27770  }
27771
27772  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
27773    if (element != null) {
27774      composeElementAttributes(element);
27775      xml.enter(FHIR_NS, name);
27776      composeClaimResponseAdjudicationComponentElements(element);
27777      composeElementClose(element);
27778      xml.exit(FHIR_NS, name);
27779    }
27780  }
27781
27782  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
27783      composeBackboneElementElements(element);
27784      if (element.hasCategory()) {
27785        composeCodeableConcept("category", element.getCategory());
27786      }
27787      if (element.hasReason()) {
27788        composeCodeableConcept("reason", element.getReason());
27789      }
27790      if (element.hasAmount()) {
27791        composeMoney("amount", element.getAmount());
27792      }
27793      if (element.hasValueElement()) {
27794        composeDecimal("value", element.getValueElement());
27795      }
27796  }
27797
27798  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
27799    if (element != null) {
27800      composeElementAttributes(element);
27801      xml.enter(FHIR_NS, name);
27802      composeClaimResponseItemDetailComponentElements(element);
27803      composeElementClose(element);
27804      xml.exit(FHIR_NS, name);
27805    }
27806  }
27807
27808  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
27809      composeBackboneElementElements(element);
27810      if (element.hasDetailSequenceElement()) {
27811        composePositiveInt("detailSequence", element.getDetailSequenceElement());
27812      }
27813      if (element.hasNoteNumber()) { 
27814        for (PositiveIntType e : element.getNoteNumber()) 
27815          composePositiveInt("noteNumber", e);
27816      }
27817      if (element.hasAdjudication()) { 
27818        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
27819          composeClaimResponseAdjudicationComponent("adjudication", e);
27820      }
27821      if (element.hasSubDetail()) { 
27822        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
27823          composeClaimResponseSubDetailComponent("subDetail", e);
27824      }
27825  }
27826
27827  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
27828    if (element != null) {
27829      composeElementAttributes(element);
27830      xml.enter(FHIR_NS, name);
27831      composeClaimResponseSubDetailComponentElements(element);
27832      composeElementClose(element);
27833      xml.exit(FHIR_NS, name);
27834    }
27835  }
27836
27837  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
27838      composeBackboneElementElements(element);
27839      if (element.hasSubDetailSequenceElement()) {
27840        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
27841      }
27842      if (element.hasNoteNumber()) { 
27843        for (PositiveIntType e : element.getNoteNumber()) 
27844          composePositiveInt("noteNumber", e);
27845      }
27846      if (element.hasAdjudication()) { 
27847        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
27848          composeClaimResponseAdjudicationComponent("adjudication", e);
27849      }
27850  }
27851
27852  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
27853    if (element != null) {
27854      composeElementAttributes(element);
27855      xml.enter(FHIR_NS, name);
27856      composeClaimResponseAddedItemComponentElements(element);
27857      composeElementClose(element);
27858      xml.exit(FHIR_NS, name);
27859    }
27860  }
27861
27862  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
27863      composeBackboneElementElements(element);
27864      if (element.hasItemSequence()) { 
27865        for (PositiveIntType e : element.getItemSequence()) 
27866          composePositiveInt("itemSequence", e);
27867      }
27868      if (element.hasDetailSequence()) { 
27869        for (PositiveIntType e : element.getDetailSequence()) 
27870          composePositiveInt("detailSequence", e);
27871      }
27872      if (element.hasSubdetailSequence()) { 
27873        for (PositiveIntType e : element.getSubdetailSequence()) 
27874          composePositiveInt("subdetailSequence", e);
27875      }
27876      if (element.hasService()) {
27877        composeCodeableConcept("service", element.getService());
27878      }
27879      if (element.hasModifier()) { 
27880        for (CodeableConcept e : element.getModifier()) 
27881          composeCodeableConcept("modifier", e);
27882      }
27883      if (element.hasFee()) {
27884        composeMoney("fee", element.getFee());
27885      }
27886      if (element.hasNoteNumber()) { 
27887        for (PositiveIntType e : element.getNoteNumber()) 
27888          composePositiveInt("noteNumber", e);
27889      }
27890      if (element.hasAdjudication()) { 
27891        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
27892          composeClaimResponseAdjudicationComponent("adjudication", e);
27893      }
27894  }
27895
27896  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
27897    if (element != null) {
27898      composeElementAttributes(element);
27899      xml.enter(FHIR_NS, name);
27900      composeClaimResponseErrorComponentElements(element);
27901      composeElementClose(element);
27902      xml.exit(FHIR_NS, name);
27903    }
27904  }
27905
27906  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
27907      composeBackboneElementElements(element);
27908      if (element.hasItemSequenceElement()) {
27909        composePositiveInt("itemSequence", element.getItemSequenceElement());
27910      }
27911      if (element.hasDetailSequenceElement()) {
27912        composePositiveInt("detailSequence", element.getDetailSequenceElement());
27913      }
27914      if (element.hasSubDetailSequenceElement()) {
27915        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
27916      }
27917      if (element.hasCode()) {
27918        composeCodeableConcept("code", element.getCode());
27919      }
27920  }
27921
27922  protected void composeClaimResponseTotalComponent(String name, ClaimResponse.TotalComponent element) throws IOException {
27923    if (element != null) {
27924      composeElementAttributes(element);
27925      xml.enter(FHIR_NS, name);
27926      composeClaimResponseTotalComponentElements(element);
27927      composeElementClose(element);
27928      xml.exit(FHIR_NS, name);
27929    }
27930  }
27931
27932  protected void composeClaimResponseTotalComponentElements(ClaimResponse.TotalComponent element) throws IOException {
27933      composeBackboneElementElements(element);
27934      if (element.hasCategory()) {
27935        composeCodeableConcept("category", element.getCategory());
27936      }
27937      if (element.hasAmount()) {
27938        composeMoney("amount", element.getAmount());
27939      }
27940  }
27941
27942  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
27943    if (element != null) {
27944      composeElementAttributes(element);
27945      xml.enter(FHIR_NS, name);
27946      composeClaimResponsePaymentComponentElements(element);
27947      composeElementClose(element);
27948      xml.exit(FHIR_NS, name);
27949    }
27950  }
27951
27952  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
27953      composeBackboneElementElements(element);
27954      if (element.hasType()) {
27955        composeCodeableConcept("type", element.getType());
27956      }
27957      if (element.hasAdjustment()) {
27958        composeMoney("adjustment", element.getAdjustment());
27959      }
27960      if (element.hasAdjustmentReason()) {
27961        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
27962      }
27963      if (element.hasDateElement()) {
27964        composeDate("date", element.getDateElement());
27965      }
27966      if (element.hasAmount()) {
27967        composeMoney("amount", element.getAmount());
27968      }
27969      if (element.hasIdentifier()) {
27970        composeIdentifier("identifier", element.getIdentifier());
27971      }
27972  }
27973
27974  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
27975    if (element != null) {
27976      composeElementAttributes(element);
27977      xml.enter(FHIR_NS, name);
27978      composeClaimResponseNoteComponentElements(element);
27979      composeElementClose(element);
27980      xml.exit(FHIR_NS, name);
27981    }
27982  }
27983
27984  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
27985      composeBackboneElementElements(element);
27986      if (element.hasNumberElement()) {
27987        composePositiveInt("number", element.getNumberElement());
27988      }
27989      if (element.hasTypeElement())
27990        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
27991      if (element.hasTextElement()) {
27992        composeString("text", element.getTextElement());
27993      }
27994      if (element.hasLanguage()) {
27995        composeCodeableConcept("language", element.getLanguage());
27996      }
27997  }
27998
27999  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
28000    if (element != null) {
28001      composeElementAttributes(element);
28002      xml.enter(FHIR_NS, name);
28003      composeClaimResponseInsuranceComponentElements(element);
28004      composeElementClose(element);
28005      xml.exit(FHIR_NS, name);
28006    }
28007  }
28008
28009  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
28010      composeBackboneElementElements(element);
28011      if (element.hasSequenceElement()) {
28012        composePositiveInt("sequence", element.getSequenceElement());
28013      }
28014      if (element.hasFocalElement()) {
28015        composeBoolean("focal", element.getFocalElement());
28016      }
28017      if (element.hasCoverage()) {
28018        composeReference("coverage", element.getCoverage());
28019      }
28020      if (element.hasBusinessArrangementElement()) {
28021        composeString("businessArrangement", element.getBusinessArrangementElement());
28022      }
28023      if (element.hasPreAuthRef()) { 
28024        for (StringType e : element.getPreAuthRef()) 
28025          composeString("preAuthRef", e);
28026      }
28027      if (element.hasClaimResponse()) {
28028        composeReference("claimResponse", element.getClaimResponse());
28029      }
28030  }
28031
28032  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
28033    if (element != null) {
28034      composeDomainResourceAttributes(element);
28035      xml.enter(FHIR_NS, name);
28036      composeClinicalImpressionElements(element);
28037      composeElementClose(element);
28038      xml.exit(FHIR_NS, name);
28039    }
28040  }
28041
28042  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
28043      composeDomainResourceElements(element);
28044      if (element.hasIdentifier()) { 
28045        for (Identifier e : element.getIdentifier()) 
28046          composeIdentifier("identifier", e);
28047      }
28048      if (element.hasStatusElement())
28049        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
28050      if (element.hasCode()) {
28051        composeCodeableConcept("code", element.getCode());
28052      }
28053      if (element.hasDescriptionElement()) {
28054        composeString("description", element.getDescriptionElement());
28055      }
28056      if (element.hasSubject()) {
28057        composeReference("subject", element.getSubject());
28058      }
28059      if (element.hasContext()) {
28060        composeReference("context", element.getContext());
28061      }
28062      if (element.hasEffective()) {
28063        composeType("effective", element.getEffective());
28064      }      if (element.hasDateElement()) {
28065        composeDateTime("date", element.getDateElement());
28066      }
28067      if (element.hasAssessor()) {
28068        composeReference("assessor", element.getAssessor());
28069      }
28070      if (element.hasPrevious()) {
28071        composeReference("previous", element.getPrevious());
28072      }
28073      if (element.hasProblem()) { 
28074        for (Reference e : element.getProblem()) 
28075          composeReference("problem", e);
28076      }
28077      if (element.hasInvestigation()) { 
28078        for (ClinicalImpression.ClinicalImpressionInvestigationComponent e : element.getInvestigation()) 
28079          composeClinicalImpressionClinicalImpressionInvestigationComponent("investigation", e);
28080      }
28081      if (element.hasProtocol()) { 
28082        for (UriType e : element.getProtocol()) 
28083          composeUri("protocol", e);
28084      }
28085      if (element.hasSummaryElement()) {
28086        composeString("summary", element.getSummaryElement());
28087      }
28088      if (element.hasFinding()) { 
28089        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
28090          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
28091      }
28092      if (element.hasPrognosisCodeableConcept()) { 
28093        for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
28094          composeCodeableConcept("prognosisCodeableConcept", e);
28095      }
28096      if (element.hasPrognosisReference()) { 
28097        for (Reference e : element.getPrognosisReference()) 
28098          composeReference("prognosisReference", e);
28099      }
28100      if (element.hasAction()) { 
28101        for (Reference e : element.getAction()) 
28102          composeReference("action", e);
28103      }
28104      if (element.hasNote()) { 
28105        for (Annotation e : element.getNote()) 
28106          composeAnnotation("note", e);
28107      }
28108  }
28109
28110  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
28111    if (element != null) {
28112      composeElementAttributes(element);
28113      xml.enter(FHIR_NS, name);
28114      composeClinicalImpressionClinicalImpressionInvestigationComponentElements(element);
28115      composeElementClose(element);
28116      xml.exit(FHIR_NS, name);
28117    }
28118  }
28119
28120  protected void composeClinicalImpressionClinicalImpressionInvestigationComponentElements(ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
28121      composeBackboneElementElements(element);
28122      if (element.hasCode()) {
28123        composeCodeableConcept("code", element.getCode());
28124      }
28125      if (element.hasItem()) { 
28126        for (Reference e : element.getItem()) 
28127          composeReference("item", e);
28128      }
28129  }
28130
28131  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
28132    if (element != null) {
28133      composeElementAttributes(element);
28134      xml.enter(FHIR_NS, name);
28135      composeClinicalImpressionClinicalImpressionFindingComponentElements(element);
28136      composeElementClose(element);
28137      xml.exit(FHIR_NS, name);
28138    }
28139  }
28140
28141  protected void composeClinicalImpressionClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
28142      composeBackboneElementElements(element);
28143      if (element.hasItemCodeableConcept()) {
28144        composeCodeableConcept("itemCodeableConcept", element.getItemCodeableConcept());
28145      }
28146      if (element.hasItemReference()) {
28147        composeReference("itemReference", element.getItemReference());
28148      }
28149      if (element.hasBasisElement()) {
28150        composeString("basis", element.getBasisElement());
28151      }
28152  }
28153
28154  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
28155    if (element != null) {
28156      composeDomainResourceAttributes(element);
28157      xml.enter(FHIR_NS, name);
28158      composeCodeSystemElements(element);
28159      composeElementClose(element);
28160      xml.exit(FHIR_NS, name);
28161    }
28162  }
28163
28164  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
28165      composeDomainResourceElements(element);
28166      if (element.hasUrlElement()) {
28167        composeUri("url", element.getUrlElement());
28168      }
28169      if (element.hasIdentifier()) {
28170        composeIdentifier("identifier", element.getIdentifier());
28171      }
28172      if (element.hasVersionElement()) {
28173        composeString("version", element.getVersionElement());
28174      }
28175      if (element.hasNameElement()) {
28176        composeString("name", element.getNameElement());
28177      }
28178      if (element.hasTitleElement()) {
28179        composeString("title", element.getTitleElement());
28180      }
28181      if (element.hasStatusElement())
28182        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28183      if (element.hasExperimentalElement()) {
28184        composeBoolean("experimental", element.getExperimentalElement());
28185      }
28186      if (element.hasDateElement()) {
28187        composeDateTime("date", element.getDateElement());
28188      }
28189      if (element.hasPublisherElement()) {
28190        composeString("publisher", element.getPublisherElement());
28191      }
28192      if (element.hasContact()) { 
28193        for (ContactDetail e : element.getContact()) 
28194          composeContactDetail("contact", e);
28195      }
28196      if (element.hasDescriptionElement()) {
28197        composeMarkdown("description", element.getDescriptionElement());
28198      }
28199      if (element.hasUseContext()) { 
28200        for (UsageContext e : element.getUseContext()) 
28201          composeUsageContext("useContext", e);
28202      }
28203      if (element.hasJurisdiction()) { 
28204        for (CodeableConcept e : element.getJurisdiction()) 
28205          composeCodeableConcept("jurisdiction", e);
28206      }
28207      if (element.hasPurposeElement()) {
28208        composeMarkdown("purpose", element.getPurposeElement());
28209      }
28210      if (element.hasCopyrightElement()) {
28211        composeMarkdown("copyright", element.getCopyrightElement());
28212      }
28213      if (element.hasCaseSensitiveElement()) {
28214        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
28215      }
28216      if (element.hasValueSetElement()) {
28217        composeCanonical("valueSet", element.getValueSetElement());
28218      }
28219      if (element.hasHierarchyMeaningElement())
28220        composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
28221      if (element.hasCompositionalElement()) {
28222        composeBoolean("compositional", element.getCompositionalElement());
28223      }
28224      if (element.hasVersionNeededElement()) {
28225        composeBoolean("versionNeeded", element.getVersionNeededElement());
28226      }
28227      if (element.hasContentElement())
28228        composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
28229      if (element.hasSupplementsElement()) {
28230        composeCanonical("supplements", element.getSupplementsElement());
28231      }
28232      if (element.hasCountElement()) {
28233        composeUnsignedInt("count", element.getCountElement());
28234      }
28235      if (element.hasFilter()) { 
28236        for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
28237          composeCodeSystemCodeSystemFilterComponent("filter", e);
28238      }
28239      if (element.hasProperty()) { 
28240        for (CodeSystem.PropertyComponent e : element.getProperty()) 
28241          composeCodeSystemPropertyComponent("property", e);
28242      }
28243      if (element.hasConcept()) { 
28244        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
28245          composeCodeSystemConceptDefinitionComponent("concept", e);
28246      }
28247  }
28248
28249  protected void composeCodeSystemCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
28250    if (element != null) {
28251      composeElementAttributes(element);
28252      xml.enter(FHIR_NS, name);
28253      composeCodeSystemCodeSystemFilterComponentElements(element);
28254      composeElementClose(element);
28255      xml.exit(FHIR_NS, name);
28256    }
28257  }
28258
28259  protected void composeCodeSystemCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
28260      composeBackboneElementElements(element);
28261      if (element.hasCodeElement()) {
28262        composeCode("code", element.getCodeElement());
28263      }
28264      if (element.hasDescriptionElement()) {
28265        composeString("description", element.getDescriptionElement());
28266      }
28267        if (element.hasOperator()) 
28268          for (Enumeration<CodeSystem.FilterOperator> e : element.getOperator()) 
28269            composeEnumeration("operator", e, new CodeSystem.FilterOperatorEnumFactory());
28270      if (element.hasValueElement()) {
28271        composeString("value", element.getValueElement());
28272      }
28273  }
28274
28275  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
28276    if (element != null) {
28277      composeElementAttributes(element);
28278      xml.enter(FHIR_NS, name);
28279      composeCodeSystemPropertyComponentElements(element);
28280      composeElementClose(element);
28281      xml.exit(FHIR_NS, name);
28282    }
28283  }
28284
28285  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
28286      composeBackboneElementElements(element);
28287      if (element.hasCodeElement()) {
28288        composeCode("code", element.getCodeElement());
28289      }
28290      if (element.hasUriElement()) {
28291        composeUri("uri", element.getUriElement());
28292      }
28293      if (element.hasDescriptionElement()) {
28294        composeString("description", element.getDescriptionElement());
28295      }
28296      if (element.hasTypeElement())
28297        composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
28298  }
28299
28300  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
28301    if (element != null) {
28302      composeElementAttributes(element);
28303      xml.enter(FHIR_NS, name);
28304      composeCodeSystemConceptDefinitionComponentElements(element);
28305      composeElementClose(element);
28306      xml.exit(FHIR_NS, name);
28307    }
28308  }
28309
28310  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
28311      composeBackboneElementElements(element);
28312      if (element.hasCodeElement()) {
28313        composeCode("code", element.getCodeElement());
28314      }
28315      if (element.hasDisplayElement()) {
28316        composeString("display", element.getDisplayElement());
28317      }
28318      if (element.hasDefinitionElement()) {
28319        composeString("definition", element.getDefinitionElement());
28320      }
28321      if (element.hasDesignation()) { 
28322        for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
28323          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
28324      }
28325      if (element.hasProperty()) { 
28326        for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
28327          composeCodeSystemConceptPropertyComponent("property", e);
28328      }
28329      if (element.hasConcept()) { 
28330        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
28331          composeCodeSystemConceptDefinitionComponent("concept", e);
28332      }
28333  }
28334
28335  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
28336    if (element != null) {
28337      composeElementAttributes(element);
28338      xml.enter(FHIR_NS, name);
28339      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
28340      composeElementClose(element);
28341      xml.exit(FHIR_NS, name);
28342    }
28343  }
28344
28345  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
28346      composeBackboneElementElements(element);
28347      if (element.hasLanguageElement()) {
28348        composeCode("language", element.getLanguageElement());
28349      }
28350      if (element.hasUse()) {
28351        composeCoding("use", element.getUse());
28352      }
28353      if (element.hasValueElement()) {
28354        composeString("value", element.getValueElement());
28355      }
28356  }
28357
28358  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
28359    if (element != null) {
28360      composeElementAttributes(element);
28361      xml.enter(FHIR_NS, name);
28362      composeCodeSystemConceptPropertyComponentElements(element);
28363      composeElementClose(element);
28364      xml.exit(FHIR_NS, name);
28365    }
28366  }
28367
28368  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
28369      composeBackboneElementElements(element);
28370      if (element.hasCodeElement()) {
28371        composeCode("code", element.getCodeElement());
28372      }
28373      if (element.hasValue()) {
28374        composeType("value", element.getValue());
28375      }  }
28376
28377  protected void composeCommunication(String name, Communication element) throws IOException {
28378    if (element != null) {
28379      composeDomainResourceAttributes(element);
28380      xml.enter(FHIR_NS, name);
28381      composeCommunicationElements(element);
28382      composeElementClose(element);
28383      xml.exit(FHIR_NS, name);
28384    }
28385  }
28386
28387  protected void composeCommunicationElements(Communication element) throws IOException {
28388      composeDomainResourceElements(element);
28389      if (element.hasIdentifier()) { 
28390        for (Identifier e : element.getIdentifier()) 
28391          composeIdentifier("identifier", e);
28392      }
28393      if (element.hasInstantiates()) { 
28394        for (UriType e : element.getInstantiates()) 
28395          composeUri("instantiates", e);
28396      }
28397      if (element.hasBasedOn()) { 
28398        for (Reference e : element.getBasedOn()) 
28399          composeReference("basedOn", e);
28400      }
28401      if (element.hasPartOf()) { 
28402        for (Reference e : element.getPartOf()) 
28403          composeReference("partOf", e);
28404      }
28405      if (element.hasInResponseTo()) { 
28406        for (Reference e : element.getInResponseTo()) 
28407          composeReference("inResponseTo", e);
28408      }
28409      if (element.hasStatusElement())
28410        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
28411      if (element.hasStatusReason()) {
28412        composeCodeableConcept("statusReason", element.getStatusReason());
28413      }
28414      if (element.hasCategory()) { 
28415        for (CodeableConcept e : element.getCategory()) 
28416          composeCodeableConcept("category", e);
28417      }
28418      if (element.hasPriorityElement())
28419        composeEnumeration("priority", element.getPriorityElement(), new Communication.CommunicationPriorityEnumFactory());
28420      if (element.hasMedium()) { 
28421        for (CodeableConcept e : element.getMedium()) 
28422          composeCodeableConcept("medium", e);
28423      }
28424      if (element.hasSubject()) {
28425        composeReference("subject", element.getSubject());
28426      }
28427      if (element.hasRecipient()) { 
28428        for (Reference e : element.getRecipient()) 
28429          composeReference("recipient", e);
28430      }
28431      if (element.hasTopic()) {
28432        composeCodeableConcept("topic", element.getTopic());
28433      }
28434      if (element.hasAbout()) { 
28435        for (Reference e : element.getAbout()) 
28436          composeReference("about", e);
28437      }
28438      if (element.hasContext()) {
28439        composeReference("context", element.getContext());
28440      }
28441      if (element.hasSentElement()) {
28442        composeDateTime("sent", element.getSentElement());
28443      }
28444      if (element.hasReceivedElement()) {
28445        composeDateTime("received", element.getReceivedElement());
28446      }
28447      if (element.hasSender()) {
28448        composeReference("sender", element.getSender());
28449      }
28450      if (element.hasReasonCode()) { 
28451        for (CodeableConcept e : element.getReasonCode()) 
28452          composeCodeableConcept("reasonCode", e);
28453      }
28454      if (element.hasReasonReference()) { 
28455        for (Reference e : element.getReasonReference()) 
28456          composeReference("reasonReference", e);
28457      }
28458      if (element.hasPayload()) { 
28459        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
28460          composeCommunicationCommunicationPayloadComponent("payload", e);
28461      }
28462      if (element.hasNote()) { 
28463        for (Annotation e : element.getNote()) 
28464          composeAnnotation("note", e);
28465      }
28466  }
28467
28468  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
28469    if (element != null) {
28470      composeElementAttributes(element);
28471      xml.enter(FHIR_NS, name);
28472      composeCommunicationCommunicationPayloadComponentElements(element);
28473      composeElementClose(element);
28474      xml.exit(FHIR_NS, name);
28475    }
28476  }
28477
28478  protected void composeCommunicationCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
28479      composeBackboneElementElements(element);
28480      if (element.hasContent()) {
28481        composeType("content", element.getContent());
28482      }  }
28483
28484  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
28485    if (element != null) {
28486      composeDomainResourceAttributes(element);
28487      xml.enter(FHIR_NS, name);
28488      composeCommunicationRequestElements(element);
28489      composeElementClose(element);
28490      xml.exit(FHIR_NS, name);
28491    }
28492  }
28493
28494  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
28495      composeDomainResourceElements(element);
28496      if (element.hasIdentifier()) { 
28497        for (Identifier e : element.getIdentifier()) 
28498          composeIdentifier("identifier", e);
28499      }
28500      if (element.hasBasedOn()) { 
28501        for (Reference e : element.getBasedOn()) 
28502          composeReference("basedOn", e);
28503      }
28504      if (element.hasReplaces()) { 
28505        for (Reference e : element.getReplaces()) 
28506          composeReference("replaces", e);
28507      }
28508      if (element.hasGroupIdentifier()) {
28509        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
28510      }
28511      if (element.hasStatusElement())
28512        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
28513      if (element.hasCategory()) { 
28514        for (CodeableConcept e : element.getCategory()) 
28515          composeCodeableConcept("category", e);
28516      }
28517      if (element.hasPriorityElement())
28518        composeEnumeration("priority", element.getPriorityElement(), new CommunicationRequest.CommunicationPriorityEnumFactory());
28519      if (element.hasMedium()) { 
28520        for (CodeableConcept e : element.getMedium()) 
28521          composeCodeableConcept("medium", e);
28522      }
28523      if (element.hasSubject()) {
28524        composeReference("subject", element.getSubject());
28525      }
28526      if (element.hasRecipient()) { 
28527        for (Reference e : element.getRecipient()) 
28528          composeReference("recipient", e);
28529      }
28530      if (element.hasAbout()) { 
28531        for (Reference e : element.getAbout()) 
28532          composeReference("about", e);
28533      }
28534      if (element.hasContext()) {
28535        composeReference("context", element.getContext());
28536      }
28537      if (element.hasPayload()) { 
28538        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
28539          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
28540      }
28541      if (element.hasOccurrence()) {
28542        composeType("occurrence", element.getOccurrence());
28543      }      if (element.hasAuthoredOnElement()) {
28544        composeDateTime("authoredOn", element.getAuthoredOnElement());
28545      }
28546      if (element.hasRequester()) {
28547        composeReference("requester", element.getRequester());
28548      }
28549      if (element.hasSender()) {
28550        composeReference("sender", element.getSender());
28551      }
28552      if (element.hasReasonCode()) { 
28553        for (CodeableConcept e : element.getReasonCode()) 
28554          composeCodeableConcept("reasonCode", e);
28555      }
28556      if (element.hasReasonReference()) { 
28557        for (Reference e : element.getReasonReference()) 
28558          composeReference("reasonReference", e);
28559      }
28560      if (element.hasNote()) { 
28561        for (Annotation e : element.getNote()) 
28562          composeAnnotation("note", e);
28563      }
28564  }
28565
28566  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
28567    if (element != null) {
28568      composeElementAttributes(element);
28569      xml.enter(FHIR_NS, name);
28570      composeCommunicationRequestCommunicationRequestPayloadComponentElements(element);
28571      composeElementClose(element);
28572      xml.exit(FHIR_NS, name);
28573    }
28574  }
28575
28576  protected void composeCommunicationRequestCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
28577      composeBackboneElementElements(element);
28578      if (element.hasContent()) {
28579        composeType("content", element.getContent());
28580      }  }
28581
28582  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
28583    if (element != null) {
28584      composeDomainResourceAttributes(element);
28585      xml.enter(FHIR_NS, name);
28586      composeCompartmentDefinitionElements(element);
28587      composeElementClose(element);
28588      xml.exit(FHIR_NS, name);
28589    }
28590  }
28591
28592  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
28593      composeDomainResourceElements(element);
28594      if (element.hasUrlElement()) {
28595        composeUri("url", element.getUrlElement());
28596      }
28597      if (element.hasNameElement()) {
28598        composeString("name", element.getNameElement());
28599      }
28600      if (element.hasTitleElement()) {
28601        composeString("title", element.getTitleElement());
28602      }
28603      if (element.hasStatusElement())
28604        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28605      if (element.hasExperimentalElement()) {
28606        composeBoolean("experimental", element.getExperimentalElement());
28607      }
28608      if (element.hasDateElement()) {
28609        composeDateTime("date", element.getDateElement());
28610      }
28611      if (element.hasPublisherElement()) {
28612        composeString("publisher", element.getPublisherElement());
28613      }
28614      if (element.hasContact()) { 
28615        for (ContactDetail e : element.getContact()) 
28616          composeContactDetail("contact", e);
28617      }
28618      if (element.hasDescriptionElement()) {
28619        composeMarkdown("description", element.getDescriptionElement());
28620      }
28621      if (element.hasUseContext()) { 
28622        for (UsageContext e : element.getUseContext()) 
28623          composeUsageContext("useContext", e);
28624      }
28625      if (element.hasJurisdiction()) { 
28626        for (CodeableConcept e : element.getJurisdiction()) 
28627          composeCodeableConcept("jurisdiction", e);
28628      }
28629      if (element.hasPurposeElement()) {
28630        composeMarkdown("purpose", element.getPurposeElement());
28631      }
28632      if (element.hasCodeElement())
28633        composeEnumeration("code", element.getCodeElement(), new CompartmentDefinition.CompartmentTypeEnumFactory());
28634      if (element.hasSearchElement()) {
28635        composeBoolean("search", element.getSearchElement());
28636      }
28637      if (element.hasResource()) { 
28638        for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
28639          composeCompartmentDefinitionCompartmentDefinitionResourceComponent("resource", e);
28640      }
28641  }
28642
28643  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
28644    if (element != null) {
28645      composeElementAttributes(element);
28646      xml.enter(FHIR_NS, name);
28647      composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(element);
28648      composeElementClose(element);
28649      xml.exit(FHIR_NS, name);
28650    }
28651  }
28652
28653  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
28654      composeBackboneElementElements(element);
28655      if (element.hasCodeElement()) {
28656        composeCode("code", element.getCodeElement());
28657      }
28658      if (element.hasParam()) { 
28659        for (StringType e : element.getParam()) 
28660          composeString("param", e);
28661      }
28662      if (element.hasDocumentationElement()) {
28663        composeString("documentation", element.getDocumentationElement());
28664      }
28665  }
28666
28667  protected void composeComposition(String name, Composition element) throws IOException {
28668    if (element != null) {
28669      composeDomainResourceAttributes(element);
28670      xml.enter(FHIR_NS, name);
28671      composeCompositionElements(element);
28672      composeElementClose(element);
28673      xml.exit(FHIR_NS, name);
28674    }
28675  }
28676
28677  protected void composeCompositionElements(Composition element) throws IOException {
28678      composeDomainResourceElements(element);
28679      if (element.hasIdentifier()) {
28680        composeIdentifier("identifier", element.getIdentifier());
28681      }
28682      if (element.hasStatusElement())
28683        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
28684      if (element.hasType()) {
28685        composeCodeableConcept("type", element.getType());
28686      }
28687      if (element.hasClass_()) {
28688        composeCodeableConcept("class", element.getClass_());
28689      }
28690      if (element.hasSubject()) {
28691        composeReference("subject", element.getSubject());
28692      }
28693      if (element.hasEncounter()) {
28694        composeReference("encounter", element.getEncounter());
28695      }
28696      if (element.hasDateElement()) {
28697        composeDateTime("date", element.getDateElement());
28698      }
28699      if (element.hasAuthor()) { 
28700        for (Reference e : element.getAuthor()) 
28701          composeReference("author", e);
28702      }
28703      if (element.hasTitleElement()) {
28704        composeString("title", element.getTitleElement());
28705      }
28706      if (element.hasConfidentialityElement())
28707        composeEnumeration("confidentiality", element.getConfidentialityElement(), new Composition.DocumentConfidentialityEnumFactory());
28708      if (element.hasAttester()) { 
28709        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
28710          composeCompositionCompositionAttesterComponent("attester", e);
28711      }
28712      if (element.hasCustodian()) {
28713        composeReference("custodian", element.getCustodian());
28714      }
28715      if (element.hasRelatesTo()) { 
28716        for (Composition.CompositionRelatesToComponent e : element.getRelatesTo()) 
28717          composeCompositionCompositionRelatesToComponent("relatesTo", e);
28718      }
28719      if (element.hasEvent()) { 
28720        for (Composition.CompositionEventComponent e : element.getEvent()) 
28721          composeCompositionCompositionEventComponent("event", e);
28722      }
28723      if (element.hasSection()) { 
28724        for (Composition.SectionComponent e : element.getSection()) 
28725          composeCompositionSectionComponent("section", e);
28726      }
28727  }
28728
28729  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
28730    if (element != null) {
28731      composeElementAttributes(element);
28732      xml.enter(FHIR_NS, name);
28733      composeCompositionCompositionAttesterComponentElements(element);
28734      composeElementClose(element);
28735      xml.exit(FHIR_NS, name);
28736    }
28737  }
28738
28739  protected void composeCompositionCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
28740      composeBackboneElementElements(element);
28741      if (element.hasModeElement())
28742        composeEnumeration("mode", element.getModeElement(), new Composition.CompositionAttestationModeEnumFactory());
28743      if (element.hasTimeElement()) {
28744        composeDateTime("time", element.getTimeElement());
28745      }
28746      if (element.hasParty()) {
28747        composeReference("party", element.getParty());
28748      }
28749  }
28750
28751  protected void composeCompositionCompositionRelatesToComponent(String name, Composition.CompositionRelatesToComponent element) throws IOException {
28752    if (element != null) {
28753      composeElementAttributes(element);
28754      xml.enter(FHIR_NS, name);
28755      composeCompositionCompositionRelatesToComponentElements(element);
28756      composeElementClose(element);
28757      xml.exit(FHIR_NS, name);
28758    }
28759  }
28760
28761  protected void composeCompositionCompositionRelatesToComponentElements(Composition.CompositionRelatesToComponent element) throws IOException {
28762      composeBackboneElementElements(element);
28763      if (element.hasCodeElement())
28764        composeEnumeration("code", element.getCodeElement(), new Composition.DocumentRelationshipTypeEnumFactory());
28765      if (element.hasTarget()) {
28766        composeType("target", element.getTarget());
28767      }  }
28768
28769  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
28770    if (element != null) {
28771      composeElementAttributes(element);
28772      xml.enter(FHIR_NS, name);
28773      composeCompositionCompositionEventComponentElements(element);
28774      composeElementClose(element);
28775      xml.exit(FHIR_NS, name);
28776    }
28777  }
28778
28779  protected void composeCompositionCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
28780      composeBackboneElementElements(element);
28781      if (element.hasCode()) { 
28782        for (CodeableConcept e : element.getCode()) 
28783          composeCodeableConcept("code", e);
28784      }
28785      if (element.hasPeriod()) {
28786        composePeriod("period", element.getPeriod());
28787      }
28788      if (element.hasDetail()) { 
28789        for (Reference e : element.getDetail()) 
28790          composeReference("detail", e);
28791      }
28792  }
28793
28794  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
28795    if (element != null) {
28796      composeElementAttributes(element);
28797      xml.enter(FHIR_NS, name);
28798      composeCompositionSectionComponentElements(element);
28799      composeElementClose(element);
28800      xml.exit(FHIR_NS, name);
28801    }
28802  }
28803
28804  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
28805      composeBackboneElementElements(element);
28806      if (element.hasTitleElement()) {
28807        composeString("title", element.getTitleElement());
28808      }
28809      if (element.hasCode()) {
28810        composeCodeableConcept("code", element.getCode());
28811      }
28812      if (element.hasAuthor()) { 
28813        for (Reference e : element.getAuthor()) 
28814          composeReference("author", e);
28815      }
28816      if (element.hasText()) {
28817        composeNarrative("text", element.getText());
28818      }
28819      if (element.hasModeElement())
28820        composeEnumeration("mode", element.getModeElement(), new Composition.SectionModeEnumFactory());
28821      if (element.hasOrderedBy()) {
28822        composeCodeableConcept("orderedBy", element.getOrderedBy());
28823      }
28824      if (element.hasEntry()) { 
28825        for (Reference e : element.getEntry()) 
28826          composeReference("entry", e);
28827      }
28828      if (element.hasEmptyReason()) {
28829        composeCodeableConcept("emptyReason", element.getEmptyReason());
28830      }
28831      if (element.hasSection()) { 
28832        for (Composition.SectionComponent e : element.getSection()) 
28833          composeCompositionSectionComponent("section", e);
28834      }
28835  }
28836
28837  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
28838    if (element != null) {
28839      composeDomainResourceAttributes(element);
28840      xml.enter(FHIR_NS, name);
28841      composeConceptMapElements(element);
28842      composeElementClose(element);
28843      xml.exit(FHIR_NS, name);
28844    }
28845  }
28846
28847  protected void composeConceptMapElements(ConceptMap element) throws IOException {
28848      composeDomainResourceElements(element);
28849      if (element.hasUrlElement()) {
28850        composeUri("url", element.getUrlElement());
28851      }
28852      if (element.hasIdentifier()) {
28853        composeIdentifier("identifier", element.getIdentifier());
28854      }
28855      if (element.hasVersionElement()) {
28856        composeString("version", element.getVersionElement());
28857      }
28858      if (element.hasNameElement()) {
28859        composeString("name", element.getNameElement());
28860      }
28861      if (element.hasTitleElement()) {
28862        composeString("title", element.getTitleElement());
28863      }
28864      if (element.hasStatusElement())
28865        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28866      if (element.hasExperimentalElement()) {
28867        composeBoolean("experimental", element.getExperimentalElement());
28868      }
28869      if (element.hasDateElement()) {
28870        composeDateTime("date", element.getDateElement());
28871      }
28872      if (element.hasPublisherElement()) {
28873        composeString("publisher", element.getPublisherElement());
28874      }
28875      if (element.hasContact()) { 
28876        for (ContactDetail e : element.getContact()) 
28877          composeContactDetail("contact", e);
28878      }
28879      if (element.hasDescriptionElement()) {
28880        composeMarkdown("description", element.getDescriptionElement());
28881      }
28882      if (element.hasUseContext()) { 
28883        for (UsageContext e : element.getUseContext()) 
28884          composeUsageContext("useContext", e);
28885      }
28886      if (element.hasJurisdiction()) { 
28887        for (CodeableConcept e : element.getJurisdiction()) 
28888          composeCodeableConcept("jurisdiction", e);
28889      }
28890      if (element.hasPurposeElement()) {
28891        composeMarkdown("purpose", element.getPurposeElement());
28892      }
28893      if (element.hasCopyrightElement()) {
28894        composeMarkdown("copyright", element.getCopyrightElement());
28895      }
28896      if (element.hasSource()) {
28897        composeType("source", element.getSource());
28898      }      if (element.hasTarget()) {
28899        composeType("target", element.getTarget());
28900      }      if (element.hasGroup()) { 
28901        for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
28902          composeConceptMapConceptMapGroupComponent("group", e);
28903      }
28904  }
28905
28906  protected void composeConceptMapConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
28907    if (element != null) {
28908      composeElementAttributes(element);
28909      xml.enter(FHIR_NS, name);
28910      composeConceptMapConceptMapGroupComponentElements(element);
28911      composeElementClose(element);
28912      xml.exit(FHIR_NS, name);
28913    }
28914  }
28915
28916  protected void composeConceptMapConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
28917      composeBackboneElementElements(element);
28918      if (element.hasSourceElement()) {
28919        composeUri("source", element.getSourceElement());
28920      }
28921      if (element.hasSourceVersionElement()) {
28922        composeString("sourceVersion", element.getSourceVersionElement());
28923      }
28924      if (element.hasTargetElement()) {
28925        composeUri("target", element.getTargetElement());
28926      }
28927      if (element.hasTargetVersionElement()) {
28928        composeString("targetVersion", element.getTargetVersionElement());
28929      }
28930      if (element.hasElement()) { 
28931        for (ConceptMap.SourceElementComponent e : element.getElement()) 
28932          composeConceptMapSourceElementComponent("element", e);
28933      }
28934      if (element.hasUnmapped()) {
28935        composeConceptMapConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
28936      }
28937  }
28938
28939  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
28940    if (element != null) {
28941      composeElementAttributes(element);
28942      xml.enter(FHIR_NS, name);
28943      composeConceptMapSourceElementComponentElements(element);
28944      composeElementClose(element);
28945      xml.exit(FHIR_NS, name);
28946    }
28947  }
28948
28949  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
28950      composeBackboneElementElements(element);
28951      if (element.hasCodeElement()) {
28952        composeCode("code", element.getCodeElement());
28953      }
28954      if (element.hasDisplayElement()) {
28955        composeString("display", element.getDisplayElement());
28956      }
28957      if (element.hasTarget()) { 
28958        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
28959          composeConceptMapTargetElementComponent("target", e);
28960      }
28961  }
28962
28963  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
28964    if (element != null) {
28965      composeElementAttributes(element);
28966      xml.enter(FHIR_NS, name);
28967      composeConceptMapTargetElementComponentElements(element);
28968      composeElementClose(element);
28969      xml.exit(FHIR_NS, name);
28970    }
28971  }
28972
28973  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
28974      composeBackboneElementElements(element);
28975      if (element.hasCodeElement()) {
28976        composeCode("code", element.getCodeElement());
28977      }
28978      if (element.hasDisplayElement()) {
28979        composeString("display", element.getDisplayElement());
28980      }
28981      if (element.hasEquivalenceElement())
28982        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
28983      if (element.hasCommentElement()) {
28984        composeString("comment", element.getCommentElement());
28985      }
28986      if (element.hasDependsOn()) { 
28987        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
28988          composeConceptMapOtherElementComponent("dependsOn", e);
28989      }
28990      if (element.hasProduct()) { 
28991        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
28992          composeConceptMapOtherElementComponent("product", e);
28993      }
28994  }
28995
28996  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
28997    if (element != null) {
28998      composeElementAttributes(element);
28999      xml.enter(FHIR_NS, name);
29000      composeConceptMapOtherElementComponentElements(element);
29001      composeElementClose(element);
29002      xml.exit(FHIR_NS, name);
29003    }
29004  }
29005
29006  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
29007      composeBackboneElementElements(element);
29008      if (element.hasPropertyElement()) {
29009        composeUri("property", element.getPropertyElement());
29010      }
29011      if (element.hasSystemElement()) {
29012        composeCanonical("system", element.getSystemElement());
29013      }
29014      if (element.hasValueElement()) {
29015        composeString("value", element.getValueElement());
29016      }
29017      if (element.hasDisplayElement()) {
29018        composeString("display", element.getDisplayElement());
29019      }
29020  }
29021
29022  protected void composeConceptMapConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
29023    if (element != null) {
29024      composeElementAttributes(element);
29025      xml.enter(FHIR_NS, name);
29026      composeConceptMapConceptMapGroupUnmappedComponentElements(element);
29027      composeElementClose(element);
29028      xml.exit(FHIR_NS, name);
29029    }
29030  }
29031
29032  protected void composeConceptMapConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
29033      composeBackboneElementElements(element);
29034      if (element.hasModeElement())
29035        composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
29036      if (element.hasCodeElement()) {
29037        composeCode("code", element.getCodeElement());
29038      }
29039      if (element.hasDisplayElement()) {
29040        composeString("display", element.getDisplayElement());
29041      }
29042      if (element.hasUrlElement()) {
29043        composeCanonical("url", element.getUrlElement());
29044      }
29045  }
29046
29047  protected void composeCondition(String name, Condition element) throws IOException {
29048    if (element != null) {
29049      composeDomainResourceAttributes(element);
29050      xml.enter(FHIR_NS, name);
29051      composeConditionElements(element);
29052      composeElementClose(element);
29053      xml.exit(FHIR_NS, name);
29054    }
29055  }
29056
29057  protected void composeConditionElements(Condition element) throws IOException {
29058      composeDomainResourceElements(element);
29059      if (element.hasIdentifier()) { 
29060        for (Identifier e : element.getIdentifier()) 
29061          composeIdentifier("identifier", e);
29062      }
29063      if (element.hasClinicalStatusElement())
29064        composeEnumeration("clinicalStatus", element.getClinicalStatusElement(), new Condition.ConditionClinicalStatusEnumFactory());
29065      if (element.hasVerificationStatusElement())
29066        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new Condition.ConditionVerificationStatusEnumFactory());
29067      if (element.hasCategory()) { 
29068        for (CodeableConcept e : element.getCategory()) 
29069          composeCodeableConcept("category", e);
29070      }
29071      if (element.hasSeverity()) {
29072        composeCodeableConcept("severity", element.getSeverity());
29073      }
29074      if (element.hasCode()) {
29075        composeCodeableConcept("code", element.getCode());
29076      }
29077      if (element.hasBodySite()) { 
29078        for (CodeableConcept e : element.getBodySite()) 
29079          composeCodeableConcept("bodySite", e);
29080      }
29081      if (element.hasSubject()) {
29082        composeReference("subject", element.getSubject());
29083      }
29084      if (element.hasContext()) {
29085        composeReference("context", element.getContext());
29086      }
29087      if (element.hasOnset()) {
29088        composeType("onset", element.getOnset());
29089      }      if (element.hasAbatement()) {
29090        composeType("abatement", element.getAbatement());
29091      }      if (element.hasAssertedDateElement()) {
29092        composeDateTime("assertedDate", element.getAssertedDateElement());
29093      }
29094      if (element.hasRecorder()) {
29095        composeReference("recorder", element.getRecorder());
29096      }
29097      if (element.hasAsserter()) {
29098        composeReference("asserter", element.getAsserter());
29099      }
29100      if (element.hasStage()) { 
29101        for (Condition.ConditionStageComponent e : element.getStage()) 
29102          composeConditionConditionStageComponent("stage", e);
29103      }
29104      if (element.hasEvidence()) { 
29105        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
29106          composeConditionConditionEvidenceComponent("evidence", e);
29107      }
29108      if (element.hasNote()) { 
29109        for (Annotation e : element.getNote()) 
29110          composeAnnotation("note", e);
29111      }
29112  }
29113
29114  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
29115    if (element != null) {
29116      composeElementAttributes(element);
29117      xml.enter(FHIR_NS, name);
29118      composeConditionConditionStageComponentElements(element);
29119      composeElementClose(element);
29120      xml.exit(FHIR_NS, name);
29121    }
29122  }
29123
29124  protected void composeConditionConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
29125      composeBackboneElementElements(element);
29126      if (element.hasSummary()) {
29127        composeCodeableConcept("summary", element.getSummary());
29128      }
29129      if (element.hasAssessment()) { 
29130        for (Reference e : element.getAssessment()) 
29131          composeReference("assessment", e);
29132      }
29133      if (element.hasType()) {
29134        composeCodeableConcept("type", element.getType());
29135      }
29136  }
29137
29138  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
29139    if (element != null) {
29140      composeElementAttributes(element);
29141      xml.enter(FHIR_NS, name);
29142      composeConditionConditionEvidenceComponentElements(element);
29143      composeElementClose(element);
29144      xml.exit(FHIR_NS, name);
29145    }
29146  }
29147
29148  protected void composeConditionConditionEvidenceComponentElements(Condition.ConditionEvidenceComponent element) throws IOException {
29149      composeBackboneElementElements(element);
29150      if (element.hasCode()) { 
29151        for (CodeableConcept e : element.getCode()) 
29152          composeCodeableConcept("code", e);
29153      }
29154      if (element.hasDetail()) { 
29155        for (Reference e : element.getDetail()) 
29156          composeReference("detail", e);
29157      }
29158  }
29159
29160  protected void composeConsent(String name, Consent element) throws IOException {
29161    if (element != null) {
29162      composeDomainResourceAttributes(element);
29163      xml.enter(FHIR_NS, name);
29164      composeConsentElements(element);
29165      composeElementClose(element);
29166      xml.exit(FHIR_NS, name);
29167    }
29168  }
29169
29170  protected void composeConsentElements(Consent element) throws IOException {
29171      composeDomainResourceElements(element);
29172      if (element.hasIdentifier()) { 
29173        for (Identifier e : element.getIdentifier()) 
29174          composeIdentifier("identifier", e);
29175      }
29176      if (element.hasStatusElement())
29177        composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
29178      if (element.hasScope()) {
29179        composeCodeableConcept("scope", element.getScope());
29180      }
29181      if (element.hasCategory()) { 
29182        for (CodeableConcept e : element.getCategory()) 
29183          composeCodeableConcept("category", e);
29184      }
29185      if (element.hasPatient()) {
29186        composeReference("patient", element.getPatient());
29187      }
29188      if (element.hasDateTimeElement()) {
29189        composeDateTime("dateTime", element.getDateTimeElement());
29190      }
29191      if (element.hasPerformer()) { 
29192        for (Reference e : element.getPerformer()) 
29193          composeReference("performer", e);
29194      }
29195      if (element.hasOrganization()) { 
29196        for (Reference e : element.getOrganization()) 
29197          composeReference("organization", e);
29198      }
29199      if (element.hasSource()) {
29200        composeType("source", element.getSource());
29201      }      if (element.hasPolicy()) { 
29202        for (Consent.ConsentPolicyComponent e : element.getPolicy()) 
29203          composeConsentConsentPolicyComponent("policy", e);
29204      }
29205      if (element.hasPolicyRule()) {
29206        composeCodeableConcept("policyRule", element.getPolicyRule());
29207      }
29208      if (element.hasVerification()) { 
29209        for (Consent.ConsentVerificationComponent e : element.getVerification()) 
29210          composeConsentConsentVerificationComponent("verification", e);
29211      }
29212      if (element.hasProvision()) {
29213        composeConsentprovisionComponent("provision", element.getProvision());
29214      }
29215  }
29216
29217  protected void composeConsentConsentPolicyComponent(String name, Consent.ConsentPolicyComponent element) throws IOException {
29218    if (element != null) {
29219      composeElementAttributes(element);
29220      xml.enter(FHIR_NS, name);
29221      composeConsentConsentPolicyComponentElements(element);
29222      composeElementClose(element);
29223      xml.exit(FHIR_NS, name);
29224    }
29225  }
29226
29227  protected void composeConsentConsentPolicyComponentElements(Consent.ConsentPolicyComponent element) throws IOException {
29228      composeBackboneElementElements(element);
29229      if (element.hasAuthorityElement()) {
29230        composeUri("authority", element.getAuthorityElement());
29231      }
29232      if (element.hasUriElement()) {
29233        composeUri("uri", element.getUriElement());
29234      }
29235  }
29236
29237  protected void composeConsentConsentVerificationComponent(String name, Consent.ConsentVerificationComponent element) throws IOException {
29238    if (element != null) {
29239      composeElementAttributes(element);
29240      xml.enter(FHIR_NS, name);
29241      composeConsentConsentVerificationComponentElements(element);
29242      composeElementClose(element);
29243      xml.exit(FHIR_NS, name);
29244    }
29245  }
29246
29247  protected void composeConsentConsentVerificationComponentElements(Consent.ConsentVerificationComponent element) throws IOException {
29248      composeBackboneElementElements(element);
29249      if (element.hasVerifiedElement()) {
29250        composeBoolean("verified", element.getVerifiedElement());
29251      }
29252      if (element.hasVerifiedWith()) {
29253        composeReference("verifiedWith", element.getVerifiedWith());
29254      }
29255      if (element.hasVerificationDateElement()) {
29256        composeDateTime("verificationDate", element.getVerificationDateElement());
29257      }
29258  }
29259
29260  protected void composeConsentprovisionComponent(String name, Consent.provisionComponent element) throws IOException {
29261    if (element != null) {
29262      composeElementAttributes(element);
29263      xml.enter(FHIR_NS, name);
29264      composeConsentprovisionComponentElements(element);
29265      composeElementClose(element);
29266      xml.exit(FHIR_NS, name);
29267    }
29268  }
29269
29270  protected void composeConsentprovisionComponentElements(Consent.provisionComponent element) throws IOException {
29271      composeBackboneElementElements(element);
29272      if (element.hasTypeElement())
29273        composeEnumeration("type", element.getTypeElement(), new Consent.ConsentProvisionTypeEnumFactory());
29274      if (element.hasPeriod()) {
29275        composePeriod("period", element.getPeriod());
29276      }
29277      if (element.hasActor()) { 
29278        for (Consent.provisionActorComponent e : element.getActor()) 
29279          composeConsentprovisionActorComponent("actor", e);
29280      }
29281      if (element.hasAction()) { 
29282        for (CodeableConcept e : element.getAction()) 
29283          composeCodeableConcept("action", e);
29284      }
29285      if (element.hasSecurityLabel()) { 
29286        for (Coding e : element.getSecurityLabel()) 
29287          composeCoding("securityLabel", e);
29288      }
29289      if (element.hasPurpose()) { 
29290        for (Coding e : element.getPurpose()) 
29291          composeCoding("purpose", e);
29292      }
29293      if (element.hasClass_()) { 
29294        for (Coding e : element.getClass_()) 
29295          composeCoding("class", e);
29296      }
29297      if (element.hasCode()) { 
29298        for (CodeableConcept e : element.getCode()) 
29299          composeCodeableConcept("code", e);
29300      }
29301      if (element.hasDataPeriod()) {
29302        composePeriod("dataPeriod", element.getDataPeriod());
29303      }
29304      if (element.hasData()) { 
29305        for (Consent.provisionDataComponent e : element.getData()) 
29306          composeConsentprovisionDataComponent("data", e);
29307      }
29308      if (element.hasProvision()) { 
29309        for (Consent.provisionComponent e : element.getProvision()) 
29310          composeConsentprovisionComponent("provision", e);
29311      }
29312  }
29313
29314  protected void composeConsentprovisionActorComponent(String name, Consent.provisionActorComponent element) throws IOException {
29315    if (element != null) {
29316      composeElementAttributes(element);
29317      xml.enter(FHIR_NS, name);
29318      composeConsentprovisionActorComponentElements(element);
29319      composeElementClose(element);
29320      xml.exit(FHIR_NS, name);
29321    }
29322  }
29323
29324  protected void composeConsentprovisionActorComponentElements(Consent.provisionActorComponent element) throws IOException {
29325      composeBackboneElementElements(element);
29326      if (element.hasRole()) {
29327        composeCodeableConcept("role", element.getRole());
29328      }
29329      if (element.hasReference()) {
29330        composeReference("reference", element.getReference());
29331      }
29332  }
29333
29334  protected void composeConsentprovisionDataComponent(String name, Consent.provisionDataComponent element) throws IOException {
29335    if (element != null) {
29336      composeElementAttributes(element);
29337      xml.enter(FHIR_NS, name);
29338      composeConsentprovisionDataComponentElements(element);
29339      composeElementClose(element);
29340      xml.exit(FHIR_NS, name);
29341    }
29342  }
29343
29344  protected void composeConsentprovisionDataComponentElements(Consent.provisionDataComponent element) throws IOException {
29345      composeBackboneElementElements(element);
29346      if (element.hasMeaningElement())
29347        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
29348      if (element.hasReference()) {
29349        composeReference("reference", element.getReference());
29350      }
29351  }
29352
29353  protected void composeContract(String name, Contract element) throws IOException {
29354    if (element != null) {
29355      composeDomainResourceAttributes(element);
29356      xml.enter(FHIR_NS, name);
29357      composeContractElements(element);
29358      composeElementClose(element);
29359      xml.exit(FHIR_NS, name);
29360    }
29361  }
29362
29363  protected void composeContractElements(Contract element) throws IOException {
29364      composeDomainResourceElements(element);
29365      if (element.hasIdentifier()) { 
29366        for (Identifier e : element.getIdentifier()) 
29367          composeIdentifier("identifier", e);
29368      }
29369      if (element.hasStatusElement())
29370        composeEnumeration("status", element.getStatusElement(), new Contract.ContractStatusEnumFactory());
29371      if (element.hasContentDerivative()) {
29372        composeCodeableConcept("contentDerivative", element.getContentDerivative());
29373      }
29374      if (element.hasIssuedElement()) {
29375        composeDateTime("issued", element.getIssuedElement());
29376      }
29377      if (element.hasApplies()) {
29378        composePeriod("applies", element.getApplies());
29379      }
29380      if (element.hasSubject()) { 
29381        for (Reference e : element.getSubject()) 
29382          composeReference("subject", e);
29383      }
29384      if (element.hasAuthority()) { 
29385        for (Reference e : element.getAuthority()) 
29386          composeReference("authority", e);
29387      }
29388      if (element.hasDomain()) { 
29389        for (Reference e : element.getDomain()) 
29390          composeReference("domain", e);
29391      }
29392      if (element.hasType()) {
29393        composeCodeableConcept("type", element.getType());
29394      }
29395      if (element.hasSubType()) { 
29396        for (CodeableConcept e : element.getSubType()) 
29397          composeCodeableConcept("subType", e);
29398      }
29399      if (element.hasTerm()) { 
29400        for (Contract.TermComponent e : element.getTerm()) 
29401          composeContractTermComponent("term", e);
29402      }
29403      if (element.hasSigner()) { 
29404        for (Contract.SignatoryComponent e : element.getSigner()) 
29405          composeContractSignatoryComponent("signer", e);
29406      }
29407      if (element.hasFriendly()) { 
29408        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
29409          composeContractFriendlyLanguageComponent("friendly", e);
29410      }
29411      if (element.hasLegal()) { 
29412        for (Contract.LegalLanguageComponent e : element.getLegal()) 
29413          composeContractLegalLanguageComponent("legal", e);
29414      }
29415      if (element.hasRule()) {
29416        composeContractComputableLanguageComponent("rule", element.getRule());
29417      }
29418      if (element.hasLegallyBinding()) {
29419        composeType("legallyBinding", element.getLegallyBinding());
29420      }  }
29421
29422  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
29423    if (element != null) {
29424      composeElementAttributes(element);
29425      xml.enter(FHIR_NS, name);
29426      composeContractTermComponentElements(element);
29427      composeElementClose(element);
29428      xml.exit(FHIR_NS, name);
29429    }
29430  }
29431
29432  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
29433      composeBackboneElementElements(element);
29434      if (element.hasIdentifier()) {
29435        composeIdentifier("identifier", element.getIdentifier());
29436      }
29437      if (element.hasIssuedElement()) {
29438        composeDateTime("issued", element.getIssuedElement());
29439      }
29440      if (element.hasApplies()) {
29441        composePeriod("applies", element.getApplies());
29442      }
29443      if (element.hasType()) {
29444        composeCodeableConcept("type", element.getType());
29445      }
29446      if (element.hasSubType()) {
29447        composeCodeableConcept("subType", element.getSubType());
29448      }
29449      if (element.hasOffer()) {
29450        composeContractContractOfferComponent("offer", element.getOffer());
29451      }
29452      if (element.hasAsset()) { 
29453        for (Contract.ContractAssetComponent e : element.getAsset()) 
29454          composeContractContractAssetComponent("asset", e);
29455      }
29456      if (element.hasAgent()) { 
29457        for (Contract.AgentComponent e : element.getAgent()) 
29458          composeContractAgentComponent("agent", e);
29459      }
29460      if (element.hasAction()) { 
29461        for (CodeableConcept e : element.getAction()) 
29462          composeCodeableConcept("action", e);
29463      }
29464      if (element.hasActionReason()) { 
29465        for (CodeableConcept e : element.getActionReason()) 
29466          composeCodeableConcept("actionReason", e);
29467      }
29468      if (element.hasGroup()) { 
29469        for (Contract.TermComponent e : element.getGroup()) 
29470          composeContractTermComponent("group", e);
29471      }
29472  }
29473
29474  protected void composeContractContractOfferComponent(String name, Contract.ContractOfferComponent element) throws IOException {
29475    if (element != null) {
29476      composeElementAttributes(element);
29477      xml.enter(FHIR_NS, name);
29478      composeContractContractOfferComponentElements(element);
29479      composeElementClose(element);
29480      xml.exit(FHIR_NS, name);
29481    }
29482  }
29483
29484  protected void composeContractContractOfferComponentElements(Contract.ContractOfferComponent element) throws IOException {
29485      composeBackboneElementElements(element);
29486      if (element.hasTopic()) {
29487        composeReference("topic", element.getTopic());
29488      }
29489      if (element.hasType()) {
29490        composeCodeableConcept("type", element.getType());
29491      }
29492      if (element.hasDecision()) {
29493        composeCodeableConcept("decision", element.getDecision());
29494      }
29495      if (element.hasTextElement()) {
29496        composeString("text", element.getTextElement());
29497      }
29498      if (element.hasLinkIdElement()) {
29499        composeString("linkId", element.getLinkIdElement());
29500      }
29501  }
29502
29503  protected void composeContractContractAssetComponent(String name, Contract.ContractAssetComponent element) throws IOException {
29504    if (element != null) {
29505      composeElementAttributes(element);
29506      xml.enter(FHIR_NS, name);
29507      composeContractContractAssetComponentElements(element);
29508      composeElementClose(element);
29509      xml.exit(FHIR_NS, name);
29510    }
29511  }
29512
29513  protected void composeContractContractAssetComponentElements(Contract.ContractAssetComponent element) throws IOException {
29514      composeBackboneElementElements(element);
29515      if (element.hasClass_()) {
29516        composeCoding("class", element.getClass_());
29517      }
29518      if (element.hasCode()) {
29519        composeCoding("code", element.getCode());
29520      }
29521      if (element.hasPeriod()) {
29522        composePeriod("period", element.getPeriod());
29523      }
29524      if (element.hasDataPeriod()) {
29525        composePeriod("dataPeriod", element.getDataPeriod());
29526      }
29527      if (element.hasData()) { 
29528        for (Contract.AssetDataComponent e : element.getData()) 
29529          composeContractAssetDataComponent("data", e);
29530      }
29531      if (element.hasValuedItem()) { 
29532        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
29533          composeContractValuedItemComponent("valuedItem", e);
29534      }
29535      if (element.hasSecurityLabel()) { 
29536        for (Coding e : element.getSecurityLabel()) 
29537          composeCoding("securityLabel", e);
29538      }
29539  }
29540
29541  protected void composeContractAssetDataComponent(String name, Contract.AssetDataComponent element) throws IOException {
29542    if (element != null) {
29543      composeElementAttributes(element);
29544      xml.enter(FHIR_NS, name);
29545      composeContractAssetDataComponentElements(element);
29546      composeElementClose(element);
29547      xml.exit(FHIR_NS, name);
29548    }
29549  }
29550
29551  protected void composeContractAssetDataComponentElements(Contract.AssetDataComponent element) throws IOException {
29552      composeBackboneElementElements(element);
29553      if (element.hasMeaningElement())
29554        composeEnumeration("meaning", element.getMeaningElement(), new Contract.ContractDataMeaningEnumFactory());
29555      if (element.hasReference()) {
29556        composeReference("reference", element.getReference());
29557      }
29558  }
29559
29560  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
29561    if (element != null) {
29562      composeElementAttributes(element);
29563      xml.enter(FHIR_NS, name);
29564      composeContractValuedItemComponentElements(element);
29565      composeElementClose(element);
29566      xml.exit(FHIR_NS, name);
29567    }
29568  }
29569
29570  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
29571      composeBackboneElementElements(element);
29572      if (element.hasEntity()) {
29573        composeType("entity", element.getEntity());
29574      }      if (element.hasIdentifier()) {
29575        composeIdentifier("identifier", element.getIdentifier());
29576      }
29577      if (element.hasEffectiveTimeElement()) {
29578        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
29579      }
29580      if (element.hasQuantity()) {
29581        composeSimpleQuantity("quantity", element.getQuantity());
29582      }
29583      if (element.hasUnitPrice()) {
29584        composeMoney("unitPrice", element.getUnitPrice());
29585      }
29586      if (element.hasFactorElement()) {
29587        composeDecimal("factor", element.getFactorElement());
29588      }
29589      if (element.hasPointsElement()) {
29590        composeDecimal("points", element.getPointsElement());
29591      }
29592      if (element.hasNet()) {
29593        composeMoney("net", element.getNet());
29594      }
29595  }
29596
29597  protected void composeContractAgentComponent(String name, Contract.AgentComponent element) throws IOException {
29598    if (element != null) {
29599      composeElementAttributes(element);
29600      xml.enter(FHIR_NS, name);
29601      composeContractAgentComponentElements(element);
29602      composeElementClose(element);
29603      xml.exit(FHIR_NS, name);
29604    }
29605  }
29606
29607  protected void composeContractAgentComponentElements(Contract.AgentComponent element) throws IOException {
29608      composeBackboneElementElements(element);
29609      if (element.hasActor()) {
29610        composeReference("actor", element.getActor());
29611      }
29612      if (element.hasRole()) { 
29613        for (CodeableConcept e : element.getRole()) 
29614          composeCodeableConcept("role", e);
29615      }
29616  }
29617
29618  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
29619    if (element != null) {
29620      composeElementAttributes(element);
29621      xml.enter(FHIR_NS, name);
29622      composeContractSignatoryComponentElements(element);
29623      composeElementClose(element);
29624      xml.exit(FHIR_NS, name);
29625    }
29626  }
29627
29628  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
29629      composeBackboneElementElements(element);
29630      if (element.hasType()) {
29631        composeCoding("type", element.getType());
29632      }
29633      if (element.hasParty()) {
29634        composeReference("party", element.getParty());
29635      }
29636      if (element.hasSignature()) { 
29637        for (Signature e : element.getSignature()) 
29638          composeSignature("signature", e);
29639      }
29640  }
29641
29642  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
29643    if (element != null) {
29644      composeElementAttributes(element);
29645      xml.enter(FHIR_NS, name);
29646      composeContractFriendlyLanguageComponentElements(element);
29647      composeElementClose(element);
29648      xml.exit(FHIR_NS, name);
29649    }
29650  }
29651
29652  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
29653      composeBackboneElementElements(element);
29654      if (element.hasContent()) {
29655        composeType("content", element.getContent());
29656      }  }
29657
29658  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
29659    if (element != null) {
29660      composeElementAttributes(element);
29661      xml.enter(FHIR_NS, name);
29662      composeContractLegalLanguageComponentElements(element);
29663      composeElementClose(element);
29664      xml.exit(FHIR_NS, name);
29665    }
29666  }
29667
29668  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
29669      composeBackboneElementElements(element);
29670      if (element.hasContent()) {
29671        composeType("content", element.getContent());
29672      }  }
29673
29674  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
29675    if (element != null) {
29676      composeElementAttributes(element);
29677      xml.enter(FHIR_NS, name);
29678      composeContractComputableLanguageComponentElements(element);
29679      composeElementClose(element);
29680      xml.exit(FHIR_NS, name);
29681    }
29682  }
29683
29684  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
29685      composeBackboneElementElements(element);
29686      if (element.hasContent()) {
29687        composeType("content", element.getContent());
29688      }  }
29689
29690  protected void composeCoverage(String name, Coverage element) throws IOException {
29691    if (element != null) {
29692      composeDomainResourceAttributes(element);
29693      xml.enter(FHIR_NS, name);
29694      composeCoverageElements(element);
29695      composeElementClose(element);
29696      xml.exit(FHIR_NS, name);
29697    }
29698  }
29699
29700  protected void composeCoverageElements(Coverage element) throws IOException {
29701      composeDomainResourceElements(element);
29702      if (element.hasIdentifier()) { 
29703        for (Identifier e : element.getIdentifier()) 
29704          composeIdentifier("identifier", e);
29705      }
29706      if (element.hasStatusElement())
29707        composeEnumeration("status", element.getStatusElement(), new Coverage.CoverageStatusEnumFactory());
29708      if (element.hasType()) {
29709        composeCodeableConcept("type", element.getType());
29710      }
29711      if (element.hasPolicyHolder()) {
29712        composeReference("policyHolder", element.getPolicyHolder());
29713      }
29714      if (element.hasSubscriber()) {
29715        composeReference("subscriber", element.getSubscriber());
29716      }
29717      if (element.hasSubscriberIdElement()) {
29718        composeString("subscriberId", element.getSubscriberIdElement());
29719      }
29720      if (element.hasBeneficiary()) {
29721        composeReference("beneficiary", element.getBeneficiary());
29722      }
29723      if (element.hasDependentElement()) {
29724        composeString("dependent", element.getDependentElement());
29725      }
29726      if (element.hasRelationship()) {
29727        composeCodeableConcept("relationship", element.getRelationship());
29728      }
29729      if (element.hasPeriod()) {
29730        composePeriod("period", element.getPeriod());
29731      }
29732      if (element.hasPayor()) { 
29733        for (Reference e : element.getPayor()) 
29734          composeReference("payor", e);
29735      }
29736      if (element.hasClass_()) { 
29737        for (Coverage.ClassComponent e : element.getClass_()) 
29738          composeCoverageClassComponent("class", e);
29739      }
29740      if (element.hasOrderElement()) {
29741        composePositiveInt("order", element.getOrderElement());
29742      }
29743      if (element.hasNetworkElement()) {
29744        composeString("network", element.getNetworkElement());
29745      }
29746      if (element.hasCopay()) { 
29747        for (Coverage.CoPayComponent e : element.getCopay()) 
29748          composeCoverageCoPayComponent("copay", e);
29749      }
29750      if (element.hasContract()) { 
29751        for (Reference e : element.getContract()) 
29752          composeReference("contract", e);
29753      }
29754  }
29755
29756  protected void composeCoverageClassComponent(String name, Coverage.ClassComponent element) throws IOException {
29757    if (element != null) {
29758      composeElementAttributes(element);
29759      xml.enter(FHIR_NS, name);
29760      composeCoverageClassComponentElements(element);
29761      composeElementClose(element);
29762      xml.exit(FHIR_NS, name);
29763    }
29764  }
29765
29766  protected void composeCoverageClassComponentElements(Coverage.ClassComponent element) throws IOException {
29767      composeBackboneElementElements(element);
29768      if (element.hasType()) {
29769        composeCoding("type", element.getType());
29770      }
29771      if (element.hasValueElement()) {
29772        composeString("value", element.getValueElement());
29773      }
29774      if (element.hasNameElement()) {
29775        composeString("name", element.getNameElement());
29776      }
29777  }
29778
29779  protected void composeCoverageCoPayComponent(String name, Coverage.CoPayComponent element) throws IOException {
29780    if (element != null) {
29781      composeElementAttributes(element);
29782      xml.enter(FHIR_NS, name);
29783      composeCoverageCoPayComponentElements(element);
29784      composeElementClose(element);
29785      xml.exit(FHIR_NS, name);
29786    }
29787  }
29788
29789  protected void composeCoverageCoPayComponentElements(Coverage.CoPayComponent element) throws IOException {
29790      composeBackboneElementElements(element);
29791      if (element.hasType()) {
29792        composeCoding("type", element.getType());
29793      }
29794      if (element.hasValue()) {
29795        composeQuantity("value", element.getValue());
29796      }
29797  }
29798
29799  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
29800    if (element != null) {
29801      composeDomainResourceAttributes(element);
29802      xml.enter(FHIR_NS, name);
29803      composeDetectedIssueElements(element);
29804      composeElementClose(element);
29805      xml.exit(FHIR_NS, name);
29806    }
29807  }
29808
29809  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
29810      composeDomainResourceElements(element);
29811      if (element.hasIdentifier()) { 
29812        for (Identifier e : element.getIdentifier()) 
29813          composeIdentifier("identifier", e);
29814      }
29815      if (element.hasStatusElement())
29816        composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
29817      if (element.hasCategory()) {
29818        composeCodeableConcept("category", element.getCategory());
29819      }
29820      if (element.hasSeverityElement())
29821        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
29822      if (element.hasPatient()) {
29823        composeReference("patient", element.getPatient());
29824      }
29825      if (element.hasDateElement()) {
29826        composeDateTime("date", element.getDateElement());
29827      }
29828      if (element.hasAuthor()) {
29829        composeReference("author", element.getAuthor());
29830      }
29831      if (element.hasImplicated()) { 
29832        for (Reference e : element.getImplicated()) 
29833          composeReference("implicated", e);
29834      }
29835      if (element.hasDetailElement()) {
29836        composeString("detail", element.getDetailElement());
29837      }
29838      if (element.hasReferenceElement()) {
29839        composeUri("reference", element.getReferenceElement());
29840      }
29841      if (element.hasMitigation()) { 
29842        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
29843          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
29844      }
29845  }
29846
29847  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
29848    if (element != null) {
29849      composeElementAttributes(element);
29850      xml.enter(FHIR_NS, name);
29851      composeDetectedIssueDetectedIssueMitigationComponentElements(element);
29852      composeElementClose(element);
29853      xml.exit(FHIR_NS, name);
29854    }
29855  }
29856
29857  protected void composeDetectedIssueDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
29858      composeBackboneElementElements(element);
29859      if (element.hasAction()) {
29860        composeCodeableConcept("action", element.getAction());
29861      }
29862      if (element.hasDateElement()) {
29863        composeDateTime("date", element.getDateElement());
29864      }
29865      if (element.hasAuthor()) {
29866        composeReference("author", element.getAuthor());
29867      }
29868  }
29869
29870  protected void composeDevice(String name, Device element) throws IOException {
29871    if (element != null) {
29872      composeDomainResourceAttributes(element);
29873      xml.enter(FHIR_NS, name);
29874      composeDeviceElements(element);
29875      composeElementClose(element);
29876      xml.exit(FHIR_NS, name);
29877    }
29878  }
29879
29880  protected void composeDeviceElements(Device element) throws IOException {
29881      composeDomainResourceElements(element);
29882      if (element.hasIdentifier()) { 
29883        for (Identifier e : element.getIdentifier()) 
29884          composeIdentifier("identifier", e);
29885      }
29886      if (element.hasUdi()) {
29887        composeDeviceDeviceUdiComponent("udi", element.getUdi());
29888      }
29889      if (element.hasStatusElement())
29890        composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
29891      if (element.hasType()) {
29892        composeCodeableConcept("type", element.getType());
29893      }
29894      if (element.hasLotNumberElement()) {
29895        composeString("lotNumber", element.getLotNumberElement());
29896      }
29897      if (element.hasManufacturerElement()) {
29898        composeString("manufacturer", element.getManufacturerElement());
29899      }
29900      if (element.hasManufactureDateElement()) {
29901        composeDateTime("manufactureDate", element.getManufactureDateElement());
29902      }
29903      if (element.hasExpirationDateElement()) {
29904        composeDateTime("expirationDate", element.getExpirationDateElement());
29905      }
29906      if (element.hasModelElement()) {
29907        composeString("model", element.getModelElement());
29908      }
29909      if (element.hasVersionElement()) {
29910        composeString("version", element.getVersionElement());
29911      }
29912      if (element.hasPatient()) {
29913        composeReference("patient", element.getPatient());
29914      }
29915      if (element.hasOwner()) {
29916        composeReference("owner", element.getOwner());
29917      }
29918      if (element.hasContact()) { 
29919        for (ContactPoint e : element.getContact()) 
29920          composeContactPoint("contact", e);
29921      }
29922      if (element.hasLocation()) {
29923        composeReference("location", element.getLocation());
29924      }
29925      if (element.hasUrlElement()) {
29926        composeUri("url", element.getUrlElement());
29927      }
29928      if (element.hasNote()) { 
29929        for (Annotation e : element.getNote()) 
29930          composeAnnotation("note", e);
29931      }
29932      if (element.hasSafety()) { 
29933        for (CodeableConcept e : element.getSafety()) 
29934          composeCodeableConcept("safety", e);
29935      }
29936  }
29937
29938  protected void composeDeviceDeviceUdiComponent(String name, Device.DeviceUdiComponent element) throws IOException {
29939    if (element != null) {
29940      composeElementAttributes(element);
29941      xml.enter(FHIR_NS, name);
29942      composeDeviceDeviceUdiComponentElements(element);
29943      composeElementClose(element);
29944      xml.exit(FHIR_NS, name);
29945    }
29946  }
29947
29948  protected void composeDeviceDeviceUdiComponentElements(Device.DeviceUdiComponent element) throws IOException {
29949      composeBackboneElementElements(element);
29950      if (element.hasDeviceIdentifierElement()) {
29951        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
29952      }
29953      if (element.hasNameElement()) {
29954        composeString("name", element.getNameElement());
29955      }
29956      if (element.hasJurisdictionElement()) {
29957        composeUri("jurisdiction", element.getJurisdictionElement());
29958      }
29959      if (element.hasCarrierHRFElement()) {
29960        composeString("carrierHRF", element.getCarrierHRFElement());
29961      }
29962      if (element.hasCarrierAIDCElement()) {
29963        composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
29964      }
29965      if (element.hasIssuerElement()) {
29966        composeUri("issuer", element.getIssuerElement());
29967      }
29968      if (element.hasEntryTypeElement())
29969        composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
29970  }
29971
29972  protected void composeDeviceComponent(String name, DeviceComponent element) throws IOException {
29973    if (element != null) {
29974      composeDomainResourceAttributes(element);
29975      xml.enter(FHIR_NS, name);
29976      composeDeviceComponentElements(element);
29977      composeElementClose(element);
29978      xml.exit(FHIR_NS, name);
29979    }
29980  }
29981
29982  protected void composeDeviceComponentElements(DeviceComponent element) throws IOException {
29983      composeDomainResourceElements(element);
29984      if (element.hasIdentifier()) { 
29985        for (Identifier e : element.getIdentifier()) 
29986          composeIdentifier("identifier", e);
29987      }
29988      if (element.hasType()) {
29989        composeCodeableConcept("type", element.getType());
29990      }
29991      if (element.hasLastSystemChangeElement()) {
29992        composeInstant("lastSystemChange", element.getLastSystemChangeElement());
29993      }
29994      if (element.hasSource()) {
29995        composeReference("source", element.getSource());
29996      }
29997      if (element.hasParent()) {
29998        composeReference("parent", element.getParent());
29999      }
30000      if (element.hasOperationalStatus()) { 
30001        for (CodeableConcept e : element.getOperationalStatus()) 
30002          composeCodeableConcept("operationalStatus", e);
30003      }
30004      if (element.hasParameterGroup()) {
30005        composeCodeableConcept("parameterGroup", element.getParameterGroup());
30006      }
30007      if (element.hasMeasurementPrincipleElement())
30008        composeEnumeration("measurementPrinciple", element.getMeasurementPrincipleElement(), new DeviceComponent.MeasmntPrincipleEnumFactory());
30009      if (element.hasProductionSpecification()) { 
30010        for (DeviceComponent.DeviceComponentProductionSpecificationComponent e : element.getProductionSpecification()) 
30011          composeDeviceComponentDeviceComponentProductionSpecificationComponent("productionSpecification", e);
30012      }
30013      if (element.hasLanguageCode()) {
30014        composeCodeableConcept("languageCode", element.getLanguageCode());
30015      }
30016      if (element.hasProperty()) { 
30017        for (DeviceComponent.DeviceComponentPropertyComponent e : element.getProperty()) 
30018          composeDeviceComponentDeviceComponentPropertyComponent("property", e);
30019      }
30020  }
30021
30022  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponent(String name, DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
30023    if (element != null) {
30024      composeElementAttributes(element);
30025      xml.enter(FHIR_NS, name);
30026      composeDeviceComponentDeviceComponentProductionSpecificationComponentElements(element);
30027      composeElementClose(element);
30028      xml.exit(FHIR_NS, name);
30029    }
30030  }
30031
30032  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponentElements(DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
30033      composeBackboneElementElements(element);
30034      if (element.hasSpecType()) {
30035        composeCodeableConcept("specType", element.getSpecType());
30036      }
30037      if (element.hasComponentId()) {
30038        composeIdentifier("componentId", element.getComponentId());
30039      }
30040      if (element.hasProductionSpecElement()) {
30041        composeString("productionSpec", element.getProductionSpecElement());
30042      }
30043  }
30044
30045  protected void composeDeviceComponentDeviceComponentPropertyComponent(String name, DeviceComponent.DeviceComponentPropertyComponent element) throws IOException {
30046    if (element != null) {
30047      composeElementAttributes(element);
30048      xml.enter(FHIR_NS, name);
30049      composeDeviceComponentDeviceComponentPropertyComponentElements(element);
30050      composeElementClose(element);
30051      xml.exit(FHIR_NS, name);
30052    }
30053  }
30054
30055  protected void composeDeviceComponentDeviceComponentPropertyComponentElements(DeviceComponent.DeviceComponentPropertyComponent element) throws IOException {
30056      composeBackboneElementElements(element);
30057      if (element.hasType()) {
30058        composeCodeableConcept("type", element.getType());
30059      }
30060      if (element.hasValueQuantity()) { 
30061        for (Quantity e : element.getValueQuantity()) 
30062          composeQuantity("valueQuantity", e);
30063      }
30064      if (element.hasValueCode()) { 
30065        for (CodeableConcept e : element.getValueCode()) 
30066          composeCodeableConcept("valueCode", e);
30067      }
30068  }
30069
30070  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
30071    if (element != null) {
30072      composeDomainResourceAttributes(element);
30073      xml.enter(FHIR_NS, name);
30074      composeDeviceMetricElements(element);
30075      composeElementClose(element);
30076      xml.exit(FHIR_NS, name);
30077    }
30078  }
30079
30080  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
30081      composeDomainResourceElements(element);
30082      if (element.hasIdentifier()) { 
30083        for (Identifier e : element.getIdentifier()) 
30084          composeIdentifier("identifier", e);
30085      }
30086      if (element.hasType()) {
30087        composeCodeableConcept("type", element.getType());
30088      }
30089      if (element.hasUnit()) {
30090        composeCodeableConcept("unit", element.getUnit());
30091      }
30092      if (element.hasSource()) {
30093        composeReference("source", element.getSource());
30094      }
30095      if (element.hasParent()) {
30096        composeReference("parent", element.getParent());
30097      }
30098      if (element.hasOperationalStatusElement())
30099        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
30100      if (element.hasColorElement())
30101        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
30102      if (element.hasCategoryElement())
30103        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
30104      if (element.hasMeasurementPeriod()) {
30105        composeTiming("measurementPeriod", element.getMeasurementPeriod());
30106      }
30107      if (element.hasCalibration()) { 
30108        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
30109          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
30110      }
30111  }
30112
30113  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
30114    if (element != null) {
30115      composeElementAttributes(element);
30116      xml.enter(FHIR_NS, name);
30117      composeDeviceMetricDeviceMetricCalibrationComponentElements(element);
30118      composeElementClose(element);
30119      xml.exit(FHIR_NS, name);
30120    }
30121  }
30122
30123  protected void composeDeviceMetricDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
30124      composeBackboneElementElements(element);
30125      if (element.hasTypeElement())
30126        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
30127      if (element.hasStateElement())
30128        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
30129      if (element.hasTimeElement()) {
30130        composeInstant("time", element.getTimeElement());
30131      }
30132  }
30133
30134  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
30135    if (element != null) {
30136      composeDomainResourceAttributes(element);
30137      xml.enter(FHIR_NS, name);
30138      composeDeviceRequestElements(element);
30139      composeElementClose(element);
30140      xml.exit(FHIR_NS, name);
30141    }
30142  }
30143
30144  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
30145      composeDomainResourceElements(element);
30146      if (element.hasIdentifier()) { 
30147        for (Identifier e : element.getIdentifier()) 
30148          composeIdentifier("identifier", e);
30149      }
30150      if (element.hasInstantiates()) { 
30151        for (UriType e : element.getInstantiates()) 
30152          composeUri("instantiates", e);
30153      }
30154      if (element.hasBasedOn()) { 
30155        for (Reference e : element.getBasedOn()) 
30156          composeReference("basedOn", e);
30157      }
30158      if (element.hasPriorRequest()) { 
30159        for (Reference e : element.getPriorRequest()) 
30160          composeReference("priorRequest", e);
30161      }
30162      if (element.hasGroupIdentifier()) {
30163        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
30164      }
30165      if (element.hasStatusElement())
30166        composeEnumeration("status", element.getStatusElement(), new DeviceRequest.DeviceRequestStatusEnumFactory());
30167      if (element.hasIntent()) {
30168        composeCodeableConcept("intent", element.getIntent());
30169      }
30170      if (element.hasPriorityElement())
30171        composeEnumeration("priority", element.getPriorityElement(), new DeviceRequest.RequestPriorityEnumFactory());
30172      if (element.hasCode()) {
30173        composeType("code", element.getCode());
30174      }      if (element.hasParameter()) { 
30175        for (DeviceRequest.DeviceRequestParameterComponent e : element.getParameter()) 
30176          composeDeviceRequestDeviceRequestParameterComponent("parameter", e);
30177      }
30178      if (element.hasSubject()) {
30179        composeReference("subject", element.getSubject());
30180      }
30181      if (element.hasContext()) {
30182        composeReference("context", element.getContext());
30183      }
30184      if (element.hasOccurrence()) {
30185        composeType("occurrence", element.getOccurrence());
30186      }      if (element.hasAuthoredOnElement()) {
30187        composeDateTime("authoredOn", element.getAuthoredOnElement());
30188      }
30189      if (element.hasRequester()) {
30190        composeReference("requester", element.getRequester());
30191      }
30192      if (element.hasPerformerType()) {
30193        composeCodeableConcept("performerType", element.getPerformerType());
30194      }
30195      if (element.hasPerformer()) {
30196        composeReference("performer", element.getPerformer());
30197      }
30198      if (element.hasReasonCode()) { 
30199        for (CodeableConcept e : element.getReasonCode()) 
30200          composeCodeableConcept("reasonCode", e);
30201      }
30202      if (element.hasReasonReference()) { 
30203        for (Reference e : element.getReasonReference()) 
30204          composeReference("reasonReference", e);
30205      }
30206      if (element.hasInsurance()) { 
30207        for (Reference e : element.getInsurance()) 
30208          composeReference("insurance", e);
30209      }
30210      if (element.hasSupportingInfo()) { 
30211        for (Reference e : element.getSupportingInfo()) 
30212          composeReference("supportingInfo", e);
30213      }
30214      if (element.hasNote()) { 
30215        for (Annotation e : element.getNote()) 
30216          composeAnnotation("note", e);
30217      }
30218      if (element.hasRelevantHistory()) { 
30219        for (Reference e : element.getRelevantHistory()) 
30220          composeReference("relevantHistory", e);
30221      }
30222  }
30223
30224  protected void composeDeviceRequestDeviceRequestParameterComponent(String name, DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
30225    if (element != null) {
30226      composeElementAttributes(element);
30227      xml.enter(FHIR_NS, name);
30228      composeDeviceRequestDeviceRequestParameterComponentElements(element);
30229      composeElementClose(element);
30230      xml.exit(FHIR_NS, name);
30231    }
30232  }
30233
30234  protected void composeDeviceRequestDeviceRequestParameterComponentElements(DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
30235      composeBackboneElementElements(element);
30236      if (element.hasCode()) {
30237        composeCodeableConcept("code", element.getCode());
30238      }
30239      if (element.hasValue()) {
30240        composeType("value", element.getValue());
30241      }  }
30242
30243  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
30244    if (element != null) {
30245      composeDomainResourceAttributes(element);
30246      xml.enter(FHIR_NS, name);
30247      composeDeviceUseStatementElements(element);
30248      composeElementClose(element);
30249      xml.exit(FHIR_NS, name);
30250    }
30251  }
30252
30253  protected void composeDeviceUseStatementElements(DeviceUseStatement element) throws IOException {
30254      composeDomainResourceElements(element);
30255      if (element.hasIdentifier()) { 
30256        for (Identifier e : element.getIdentifier()) 
30257          composeIdentifier("identifier", e);
30258      }
30259      if (element.hasBasedOn()) { 
30260        for (Reference e : element.getBasedOn()) 
30261          composeReference("basedOn", e);
30262      }
30263      if (element.hasStatusElement())
30264        composeEnumeration("status", element.getStatusElement(), new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
30265      if (element.hasSubject()) {
30266        composeReference("subject", element.getSubject());
30267      }
30268      if (element.hasDerivedFrom()) { 
30269        for (Reference e : element.getDerivedFrom()) 
30270          composeReference("derivedFrom", e);
30271      }
30272      if (element.hasTiming()) {
30273        composeType("timing", element.getTiming());
30274      }      if (element.hasRecordedOnElement()) {
30275        composeDateTime("recordedOn", element.getRecordedOnElement());
30276      }
30277      if (element.hasSource()) {
30278        composeReference("source", element.getSource());
30279      }
30280      if (element.hasDevice()) {
30281        composeReference("device", element.getDevice());
30282      }
30283      if (element.hasReasonCode()) { 
30284        for (CodeableConcept e : element.getReasonCode()) 
30285          composeCodeableConcept("reasonCode", e);
30286      }
30287      if (element.hasReasonReference()) { 
30288        for (Reference e : element.getReasonReference()) 
30289          composeReference("reasonReference", e);
30290      }
30291      if (element.hasBodySite()) {
30292        composeCodeableConcept("bodySite", element.getBodySite());
30293      }
30294      if (element.hasNote()) { 
30295        for (Annotation e : element.getNote()) 
30296          composeAnnotation("note", e);
30297      }
30298  }
30299
30300  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
30301    if (element != null) {
30302      composeDomainResourceAttributes(element);
30303      xml.enter(FHIR_NS, name);
30304      composeDiagnosticReportElements(element);
30305      composeElementClose(element);
30306      xml.exit(FHIR_NS, name);
30307    }
30308  }
30309
30310  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
30311      composeDomainResourceElements(element);
30312      if (element.hasIdentifier()) { 
30313        for (Identifier e : element.getIdentifier()) 
30314          composeIdentifier("identifier", e);
30315      }
30316      if (element.hasBasedOn()) { 
30317        for (Reference e : element.getBasedOn()) 
30318          composeReference("basedOn", e);
30319      }
30320      if (element.hasStatusElement())
30321        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
30322      if (element.hasCategory()) {
30323        composeCodeableConcept("category", element.getCategory());
30324      }
30325      if (element.hasCode()) {
30326        composeCodeableConcept("code", element.getCode());
30327      }
30328      if (element.hasSubject()) {
30329        composeReference("subject", element.getSubject());
30330      }
30331      if (element.hasContext()) {
30332        composeReference("context", element.getContext());
30333      }
30334      if (element.hasEffective()) {
30335        composeType("effective", element.getEffective());
30336      }      if (element.hasIssuedElement()) {
30337        composeInstant("issued", element.getIssuedElement());
30338      }
30339      if (element.hasPerformer()) { 
30340        for (Reference e : element.getPerformer()) 
30341          composeReference("performer", e);
30342      }
30343      if (element.hasResultsInterpreter()) { 
30344        for (Reference e : element.getResultsInterpreter()) 
30345          composeReference("resultsInterpreter", e);
30346      }
30347      if (element.hasSpecimen()) { 
30348        for (Reference e : element.getSpecimen()) 
30349          composeReference("specimen", e);
30350      }
30351      if (element.hasResult()) { 
30352        for (Reference e : element.getResult()) 
30353          composeReference("result", e);
30354      }
30355      if (element.hasImagingStudy()) { 
30356        for (Reference e : element.getImagingStudy()) 
30357          composeReference("imagingStudy", e);
30358      }
30359      if (element.hasMedia()) { 
30360        for (DiagnosticReport.DiagnosticReportMediaComponent e : element.getMedia()) 
30361          composeDiagnosticReportDiagnosticReportMediaComponent("media", e);
30362      }
30363      if (element.hasConclusionElement()) {
30364        composeString("conclusion", element.getConclusionElement());
30365      }
30366      if (element.hasCodedDiagnosis()) { 
30367        for (CodeableConcept e : element.getCodedDiagnosis()) 
30368          composeCodeableConcept("codedDiagnosis", e);
30369      }
30370      if (element.hasPresentedForm()) { 
30371        for (Attachment e : element.getPresentedForm()) 
30372          composeAttachment("presentedForm", e);
30373      }
30374  }
30375
30376  protected void composeDiagnosticReportDiagnosticReportMediaComponent(String name, DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
30377    if (element != null) {
30378      composeElementAttributes(element);
30379      xml.enter(FHIR_NS, name);
30380      composeDiagnosticReportDiagnosticReportMediaComponentElements(element);
30381      composeElementClose(element);
30382      xml.exit(FHIR_NS, name);
30383    }
30384  }
30385
30386  protected void composeDiagnosticReportDiagnosticReportMediaComponentElements(DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
30387      composeBackboneElementElements(element);
30388      if (element.hasCommentElement()) {
30389        composeString("comment", element.getCommentElement());
30390      }
30391      if (element.hasLink()) {
30392        composeReference("link", element.getLink());
30393      }
30394  }
30395
30396  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
30397    if (element != null) {
30398      composeDomainResourceAttributes(element);
30399      xml.enter(FHIR_NS, name);
30400      composeDocumentManifestElements(element);
30401      composeElementClose(element);
30402      xml.exit(FHIR_NS, name);
30403    }
30404  }
30405
30406  protected void composeDocumentManifestElements(DocumentManifest element) throws IOException {
30407      composeDomainResourceElements(element);
30408      if (element.hasMasterIdentifier()) {
30409        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
30410      }
30411      if (element.hasIdentifier()) { 
30412        for (Identifier e : element.getIdentifier()) 
30413          composeIdentifier("identifier", e);
30414      }
30415      if (element.hasStatusElement())
30416        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
30417      if (element.hasType()) {
30418        composeCodeableConcept("type", element.getType());
30419      }
30420      if (element.hasSubject()) {
30421        composeReference("subject", element.getSubject());
30422      }
30423      if (element.hasCreatedElement()) {
30424        composeDateTime("created", element.getCreatedElement());
30425      }
30426      if (element.hasAgent()) { 
30427        for (DocumentManifest.DocumentManifestAgentComponent e : element.getAgent()) 
30428          composeDocumentManifestDocumentManifestAgentComponent("agent", e);
30429      }
30430      if (element.hasRecipient()) { 
30431        for (Reference e : element.getRecipient()) 
30432          composeReference("recipient", e);
30433      }
30434      if (element.hasSourceElement()) {
30435        composeUri("source", element.getSourceElement());
30436      }
30437      if (element.hasDescriptionElement()) {
30438        composeString("description", element.getDescriptionElement());
30439      }
30440      if (element.hasContent()) { 
30441        for (Reference e : element.getContent()) 
30442          composeReference("content", e);
30443      }
30444      if (element.hasRelated()) { 
30445        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
30446          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
30447      }
30448  }
30449
30450  protected void composeDocumentManifestDocumentManifestAgentComponent(String name, DocumentManifest.DocumentManifestAgentComponent element) throws IOException {
30451    if (element != null) {
30452      composeElementAttributes(element);
30453      xml.enter(FHIR_NS, name);
30454      composeDocumentManifestDocumentManifestAgentComponentElements(element);
30455      composeElementClose(element);
30456      xml.exit(FHIR_NS, name);
30457    }
30458  }
30459
30460  protected void composeDocumentManifestDocumentManifestAgentComponentElements(DocumentManifest.DocumentManifestAgentComponent element) throws IOException {
30461      composeBackboneElementElements(element);
30462      if (element.hasType()) {
30463        composeCodeableConcept("type", element.getType());
30464      }
30465      if (element.hasWho()) {
30466        composeReference("who", element.getWho());
30467      }
30468  }
30469
30470  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
30471    if (element != null) {
30472      composeElementAttributes(element);
30473      xml.enter(FHIR_NS, name);
30474      composeDocumentManifestDocumentManifestRelatedComponentElements(element);
30475      composeElementClose(element);
30476      xml.exit(FHIR_NS, name);
30477    }
30478  }
30479
30480  protected void composeDocumentManifestDocumentManifestRelatedComponentElements(DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
30481      composeBackboneElementElements(element);
30482      if (element.hasIdentifier()) {
30483        composeIdentifier("identifier", element.getIdentifier());
30484      }
30485      if (element.hasRef()) {
30486        composeReference("ref", element.getRef());
30487      }
30488  }
30489
30490  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
30491    if (element != null) {
30492      composeDomainResourceAttributes(element);
30493      xml.enter(FHIR_NS, name);
30494      composeDocumentReferenceElements(element);
30495      composeElementClose(element);
30496      xml.exit(FHIR_NS, name);
30497    }
30498  }
30499
30500  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
30501      composeDomainResourceElements(element);
30502      if (element.hasMasterIdentifier()) {
30503        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
30504      }
30505      if (element.hasIdentifier()) { 
30506        for (Identifier e : element.getIdentifier()) 
30507          composeIdentifier("identifier", e);
30508      }
30509      if (element.hasStatusElement())
30510        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
30511      if (element.hasDocStatusElement())
30512        composeEnumeration("docStatus", element.getDocStatusElement(), new DocumentReference.ReferredDocumentStatusEnumFactory());
30513      if (element.hasType()) {
30514        composeCodeableConcept("type", element.getType());
30515      }
30516      if (element.hasClass_()) {
30517        composeCodeableConcept("class", element.getClass_());
30518      }
30519      if (element.hasSubject()) {
30520        composeReference("subject", element.getSubject());
30521      }
30522      if (element.hasCreatedElement()) {
30523        composeDateTime("created", element.getCreatedElement());
30524      }
30525      if (element.hasDateElement()) {
30526        composeInstant("date", element.getDateElement());
30527      }
30528      if (element.hasAgent()) { 
30529        for (DocumentReference.DocumentReferenceAgentComponent e : element.getAgent()) 
30530          composeDocumentReferenceDocumentReferenceAgentComponent("agent", e);
30531      }
30532      if (element.hasAuthenticator()) {
30533        composeReference("authenticator", element.getAuthenticator());
30534      }
30535      if (element.hasCustodian()) {
30536        composeReference("custodian", element.getCustodian());
30537      }
30538      if (element.hasRelatesTo()) { 
30539        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
30540          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
30541      }
30542      if (element.hasDescriptionElement()) {
30543        composeString("description", element.getDescriptionElement());
30544      }
30545      if (element.hasSecurityLabel()) { 
30546        for (CodeableConcept e : element.getSecurityLabel()) 
30547          composeCodeableConcept("securityLabel", e);
30548      }
30549      if (element.hasContent()) { 
30550        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
30551          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
30552      }
30553      if (element.hasContext()) {
30554        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
30555      }
30556  }
30557
30558  protected void composeDocumentReferenceDocumentReferenceAgentComponent(String name, DocumentReference.DocumentReferenceAgentComponent element) throws IOException {
30559    if (element != null) {
30560      composeElementAttributes(element);
30561      xml.enter(FHIR_NS, name);
30562      composeDocumentReferenceDocumentReferenceAgentComponentElements(element);
30563      composeElementClose(element);
30564      xml.exit(FHIR_NS, name);
30565    }
30566  }
30567
30568  protected void composeDocumentReferenceDocumentReferenceAgentComponentElements(DocumentReference.DocumentReferenceAgentComponent element) throws IOException {
30569      composeBackboneElementElements(element);
30570      if (element.hasType()) {
30571        composeCodeableConcept("type", element.getType());
30572      }
30573      if (element.hasWho()) {
30574        composeReference("who", element.getWho());
30575      }
30576  }
30577
30578  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
30579    if (element != null) {
30580      composeElementAttributes(element);
30581      xml.enter(FHIR_NS, name);
30582      composeDocumentReferenceDocumentReferenceRelatesToComponentElements(element);
30583      composeElementClose(element);
30584      xml.exit(FHIR_NS, name);
30585    }
30586  }
30587
30588  protected void composeDocumentReferenceDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
30589      composeBackboneElementElements(element);
30590      if (element.hasCodeElement())
30591        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
30592      if (element.hasTarget()) {
30593        composeReference("target", element.getTarget());
30594      }
30595  }
30596
30597  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
30598    if (element != null) {
30599      composeElementAttributes(element);
30600      xml.enter(FHIR_NS, name);
30601      composeDocumentReferenceDocumentReferenceContentComponentElements(element);
30602      composeElementClose(element);
30603      xml.exit(FHIR_NS, name);
30604    }
30605  }
30606
30607  protected void composeDocumentReferenceDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
30608      composeBackboneElementElements(element);
30609      if (element.hasAttachment()) {
30610        composeAttachment("attachment", element.getAttachment());
30611      }
30612      if (element.hasFormat()) {
30613        composeCoding("format", element.getFormat());
30614      }
30615  }
30616
30617  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
30618    if (element != null) {
30619      composeElementAttributes(element);
30620      xml.enter(FHIR_NS, name);
30621      composeDocumentReferenceDocumentReferenceContextComponentElements(element);
30622      composeElementClose(element);
30623      xml.exit(FHIR_NS, name);
30624    }
30625  }
30626
30627  protected void composeDocumentReferenceDocumentReferenceContextComponentElements(DocumentReference.DocumentReferenceContextComponent element) throws IOException {
30628      composeBackboneElementElements(element);
30629      if (element.hasEncounter()) {
30630        composeReference("encounter", element.getEncounter());
30631      }
30632      if (element.hasEvent()) { 
30633        for (CodeableConcept e : element.getEvent()) 
30634          composeCodeableConcept("event", e);
30635      }
30636      if (element.hasPeriod()) {
30637        composePeriod("period", element.getPeriod());
30638      }
30639      if (element.hasFacilityType()) {
30640        composeCodeableConcept("facilityType", element.getFacilityType());
30641      }
30642      if (element.hasPracticeSetting()) {
30643        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
30644      }
30645      if (element.hasSourcePatientInfo()) {
30646        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
30647      }
30648      if (element.hasRelated()) { 
30649        for (DocumentReference.DocumentReferenceContextRelatedComponent e : element.getRelated()) 
30650          composeDocumentReferenceDocumentReferenceContextRelatedComponent("related", e);
30651      }
30652  }
30653
30654  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponent(String name, DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
30655    if (element != null) {
30656      composeElementAttributes(element);
30657      xml.enter(FHIR_NS, name);
30658      composeDocumentReferenceDocumentReferenceContextRelatedComponentElements(element);
30659      composeElementClose(element);
30660      xml.exit(FHIR_NS, name);
30661    }
30662  }
30663
30664  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponentElements(DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
30665      composeBackboneElementElements(element);
30666      if (element.hasIdentifier()) {
30667        composeIdentifier("identifier", element.getIdentifier());
30668      }
30669      if (element.hasRef()) {
30670        composeReference("ref", element.getRef());
30671      }
30672  }
30673
30674  protected void composeEligibilityRequest(String name, EligibilityRequest element) throws IOException {
30675    if (element != null) {
30676      composeDomainResourceAttributes(element);
30677      xml.enter(FHIR_NS, name);
30678      composeEligibilityRequestElements(element);
30679      composeElementClose(element);
30680      xml.exit(FHIR_NS, name);
30681    }
30682  }
30683
30684  protected void composeEligibilityRequestElements(EligibilityRequest element) throws IOException {
30685      composeDomainResourceElements(element);
30686      if (element.hasIdentifier()) { 
30687        for (Identifier e : element.getIdentifier()) 
30688          composeIdentifier("identifier", e);
30689      }
30690      if (element.hasStatusElement())
30691        composeEnumeration("status", element.getStatusElement(), new EligibilityRequest.EligibilityRequestStatusEnumFactory());
30692      if (element.hasPriority()) {
30693        composeCodeableConcept("priority", element.getPriority());
30694      }
30695      if (element.hasPatient()) {
30696        composeReference("patient", element.getPatient());
30697      }
30698      if (element.hasServiced()) {
30699        composeType("serviced", element.getServiced());
30700      }      if (element.hasCreatedElement()) {
30701        composeDateTime("created", element.getCreatedElement());
30702      }
30703      if (element.hasEnterer()) {
30704        composeReference("enterer", element.getEnterer());
30705      }
30706      if (element.hasProvider()) {
30707        composeReference("provider", element.getProvider());
30708      }
30709      if (element.hasInsurer()) {
30710        composeReference("insurer", element.getInsurer());
30711      }
30712      if (element.hasFacility()) {
30713        composeReference("facility", element.getFacility());
30714      }
30715      if (element.hasCoverage()) {
30716        composeReference("coverage", element.getCoverage());
30717      }
30718      if (element.hasBusinessArrangementElement()) {
30719        composeString("businessArrangement", element.getBusinessArrangementElement());
30720      }
30721      if (element.hasBenefitCategory()) {
30722        composeCodeableConcept("benefitCategory", element.getBenefitCategory());
30723      }
30724      if (element.hasBenefitSubCategory()) {
30725        composeCodeableConcept("benefitSubCategory", element.getBenefitSubCategory());
30726      }
30727      if (element.hasAuthorization()) { 
30728        for (EligibilityRequest.AuthorizationComponent e : element.getAuthorization()) 
30729          composeEligibilityRequestAuthorizationComponent("authorization", e);
30730      }
30731  }
30732
30733  protected void composeEligibilityRequestAuthorizationComponent(String name, EligibilityRequest.AuthorizationComponent element) throws IOException {
30734    if (element != null) {
30735      composeElementAttributes(element);
30736      xml.enter(FHIR_NS, name);
30737      composeEligibilityRequestAuthorizationComponentElements(element);
30738      composeElementClose(element);
30739      xml.exit(FHIR_NS, name);
30740    }
30741  }
30742
30743  protected void composeEligibilityRequestAuthorizationComponentElements(EligibilityRequest.AuthorizationComponent element) throws IOException {
30744      composeBackboneElementElements(element);
30745      if (element.hasSequenceElement()) {
30746        composePositiveInt("sequence", element.getSequenceElement());
30747      }
30748      if (element.hasService()) {
30749        composeCodeableConcept("service", element.getService());
30750      }
30751      if (element.hasModifier()) { 
30752        for (CodeableConcept e : element.getModifier()) 
30753          composeCodeableConcept("modifier", e);
30754      }
30755      if (element.hasQuantity()) {
30756        composeSimpleQuantity("quantity", element.getQuantity());
30757      }
30758      if (element.hasUnitPrice()) {
30759        composeMoney("unitPrice", element.getUnitPrice());
30760      }
30761      if (element.hasFacility()) {
30762        composeReference("facility", element.getFacility());
30763      }
30764      if (element.hasDiagnosis()) { 
30765        for (EligibilityRequest.DiagnosisComponent e : element.getDiagnosis()) 
30766          composeEligibilityRequestDiagnosisComponent("diagnosis", e);
30767      }
30768  }
30769
30770  protected void composeEligibilityRequestDiagnosisComponent(String name, EligibilityRequest.DiagnosisComponent element) throws IOException {
30771    if (element != null) {
30772      composeElementAttributes(element);
30773      xml.enter(FHIR_NS, name);
30774      composeEligibilityRequestDiagnosisComponentElements(element);
30775      composeElementClose(element);
30776      xml.exit(FHIR_NS, name);
30777    }
30778  }
30779
30780  protected void composeEligibilityRequestDiagnosisComponentElements(EligibilityRequest.DiagnosisComponent element) throws IOException {
30781      composeBackboneElementElements(element);
30782      if (element.hasDiagnosis()) {
30783        composeType("diagnosis", element.getDiagnosis());
30784      }  }
30785
30786  protected void composeEligibilityResponse(String name, EligibilityResponse element) throws IOException {
30787    if (element != null) {
30788      composeDomainResourceAttributes(element);
30789      xml.enter(FHIR_NS, name);
30790      composeEligibilityResponseElements(element);
30791      composeElementClose(element);
30792      xml.exit(FHIR_NS, name);
30793    }
30794  }
30795
30796  protected void composeEligibilityResponseElements(EligibilityResponse element) throws IOException {
30797      composeDomainResourceElements(element);
30798      if (element.hasIdentifier()) { 
30799        for (Identifier e : element.getIdentifier()) 
30800          composeIdentifier("identifier", e);
30801      }
30802      if (element.hasStatusElement())
30803        composeEnumeration("status", element.getStatusElement(), new EligibilityResponse.EligibilityResponseStatusEnumFactory());
30804      if (element.hasCreatedElement()) {
30805        composeDateTime("created", element.getCreatedElement());
30806      }
30807      if (element.hasRequestProvider()) {
30808        composeReference("requestProvider", element.getRequestProvider());
30809      }
30810      if (element.hasRequest()) {
30811        composeReference("request", element.getRequest());
30812      }
30813      if (element.hasOutcomeElement())
30814        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
30815      if (element.hasDispositionElement()) {
30816        composeString("disposition", element.getDispositionElement());
30817      }
30818      if (element.hasInsurer()) {
30819        composeReference("insurer", element.getInsurer());
30820      }
30821      if (element.hasInforceElement()) {
30822        composeBoolean("inforce", element.getInforceElement());
30823      }
30824      if (element.hasInsurance()) { 
30825        for (EligibilityResponse.InsuranceComponent e : element.getInsurance()) 
30826          composeEligibilityResponseInsuranceComponent("insurance", e);
30827      }
30828      if (element.hasPreAuthRefElement()) {
30829        composeString("preAuthRef", element.getPreAuthRefElement());
30830      }
30831      if (element.hasAuthorization()) { 
30832        for (EligibilityResponse.AuthorizationComponent e : element.getAuthorization()) 
30833          composeEligibilityResponseAuthorizationComponent("authorization", e);
30834      }
30835      if (element.hasForm()) {
30836        composeCodeableConcept("form", element.getForm());
30837      }
30838      if (element.hasError()) { 
30839        for (EligibilityResponse.ErrorsComponent e : element.getError()) 
30840          composeEligibilityResponseErrorsComponent("error", e);
30841      }
30842  }
30843
30844  protected void composeEligibilityResponseInsuranceComponent(String name, EligibilityResponse.InsuranceComponent element) throws IOException {
30845    if (element != null) {
30846      composeElementAttributes(element);
30847      xml.enter(FHIR_NS, name);
30848      composeEligibilityResponseInsuranceComponentElements(element);
30849      composeElementClose(element);
30850      xml.exit(FHIR_NS, name);
30851    }
30852  }
30853
30854  protected void composeEligibilityResponseInsuranceComponentElements(EligibilityResponse.InsuranceComponent element) throws IOException {
30855      composeBackboneElementElements(element);
30856      if (element.hasCoverage()) {
30857        composeReference("coverage", element.getCoverage());
30858      }
30859      if (element.hasContract()) {
30860        composeReference("contract", element.getContract());
30861      }
30862      if (element.hasBenefitBalance()) { 
30863        for (EligibilityResponse.BenefitsComponent e : element.getBenefitBalance()) 
30864          composeEligibilityResponseBenefitsComponent("benefitBalance", e);
30865      }
30866  }
30867
30868  protected void composeEligibilityResponseBenefitsComponent(String name, EligibilityResponse.BenefitsComponent element) throws IOException {
30869    if (element != null) {
30870      composeElementAttributes(element);
30871      xml.enter(FHIR_NS, name);
30872      composeEligibilityResponseBenefitsComponentElements(element);
30873      composeElementClose(element);
30874      xml.exit(FHIR_NS, name);
30875    }
30876  }
30877
30878  protected void composeEligibilityResponseBenefitsComponentElements(EligibilityResponse.BenefitsComponent element) throws IOException {
30879      composeBackboneElementElements(element);
30880      if (element.hasCategory()) {
30881        composeCodeableConcept("category", element.getCategory());
30882      }
30883      if (element.hasSubCategory()) {
30884        composeCodeableConcept("subCategory", element.getSubCategory());
30885      }
30886      if (element.hasExcludedElement()) {
30887        composeBoolean("excluded", element.getExcludedElement());
30888      }
30889      if (element.hasNameElement()) {
30890        composeString("name", element.getNameElement());
30891      }
30892      if (element.hasDescriptionElement()) {
30893        composeString("description", element.getDescriptionElement());
30894      }
30895      if (element.hasNetwork()) {
30896        composeCodeableConcept("network", element.getNetwork());
30897      }
30898      if (element.hasUnit()) {
30899        composeCodeableConcept("unit", element.getUnit());
30900      }
30901      if (element.hasTerm()) {
30902        composeCodeableConcept("term", element.getTerm());
30903      }
30904      if (element.hasFinancial()) { 
30905        for (EligibilityResponse.BenefitComponent e : element.getFinancial()) 
30906          composeEligibilityResponseBenefitComponent("financial", e);
30907      }
30908  }
30909
30910  protected void composeEligibilityResponseBenefitComponent(String name, EligibilityResponse.BenefitComponent element) throws IOException {
30911    if (element != null) {
30912      composeElementAttributes(element);
30913      xml.enter(FHIR_NS, name);
30914      composeEligibilityResponseBenefitComponentElements(element);
30915      composeElementClose(element);
30916      xml.exit(FHIR_NS, name);
30917    }
30918  }
30919
30920  protected void composeEligibilityResponseBenefitComponentElements(EligibilityResponse.BenefitComponent element) throws IOException {
30921      composeBackboneElementElements(element);
30922      if (element.hasType()) {
30923        composeCodeableConcept("type", element.getType());
30924      }
30925      if (element.hasAllowed()) {
30926        composeType("allowed", element.getAllowed());
30927      }      if (element.hasUsed()) {
30928        composeType("used", element.getUsed());
30929      }  }
30930
30931  protected void composeEligibilityResponseAuthorizationComponent(String name, EligibilityResponse.AuthorizationComponent element) throws IOException {
30932    if (element != null) {
30933      composeElementAttributes(element);
30934      xml.enter(FHIR_NS, name);
30935      composeEligibilityResponseAuthorizationComponentElements(element);
30936      composeElementClose(element);
30937      xml.exit(FHIR_NS, name);
30938    }
30939  }
30940
30941  protected void composeEligibilityResponseAuthorizationComponentElements(EligibilityResponse.AuthorizationComponent element) throws IOException {
30942      composeBackboneElementElements(element);
30943      if (element.hasAuthorizationSequenceElement()) {
30944        composePositiveInt("authorizationSequence", element.getAuthorizationSequenceElement());
30945      }
30946      if (element.hasRequiredElement()) {
30947        composeBoolean("required", element.getRequiredElement());
30948      }
30949      if (element.hasNote()) { 
30950        for (Annotation e : element.getNote()) 
30951          composeAnnotation("note", e);
30952      }
30953  }
30954
30955  protected void composeEligibilityResponseErrorsComponent(String name, EligibilityResponse.ErrorsComponent element) throws IOException {
30956    if (element != null) {
30957      composeElementAttributes(element);
30958      xml.enter(FHIR_NS, name);
30959      composeEligibilityResponseErrorsComponentElements(element);
30960      composeElementClose(element);
30961      xml.exit(FHIR_NS, name);
30962    }
30963  }
30964
30965  protected void composeEligibilityResponseErrorsComponentElements(EligibilityResponse.ErrorsComponent element) throws IOException {
30966      composeBackboneElementElements(element);
30967      if (element.hasCode()) {
30968        composeCodeableConcept("code", element.getCode());
30969      }
30970  }
30971
30972  protected void composeEncounter(String name, Encounter element) throws IOException {
30973    if (element != null) {
30974      composeDomainResourceAttributes(element);
30975      xml.enter(FHIR_NS, name);
30976      composeEncounterElements(element);
30977      composeElementClose(element);
30978      xml.exit(FHIR_NS, name);
30979    }
30980  }
30981
30982  protected void composeEncounterElements(Encounter element) throws IOException {
30983      composeDomainResourceElements(element);
30984      if (element.hasIdentifier()) { 
30985        for (Identifier e : element.getIdentifier()) 
30986          composeIdentifier("identifier", e);
30987      }
30988      if (element.hasStatusElement())
30989        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
30990      if (element.hasStatusHistory()) { 
30991        for (Encounter.StatusHistoryComponent e : element.getStatusHistory()) 
30992          composeEncounterStatusHistoryComponent("statusHistory", e);
30993      }
30994      if (element.hasClass_()) {
30995        composeCoding("class", element.getClass_());
30996      }
30997      if (element.hasClassHistory()) { 
30998        for (Encounter.ClassHistoryComponent e : element.getClassHistory()) 
30999          composeEncounterClassHistoryComponent("classHistory", e);
31000      }
31001      if (element.hasType()) { 
31002        for (CodeableConcept e : element.getType()) 
31003          composeCodeableConcept("type", e);
31004      }
31005      if (element.hasServiceType()) {
31006        composeCodeableConcept("serviceType", element.getServiceType());
31007      }
31008      if (element.hasPriority()) {
31009        composeCodeableConcept("priority", element.getPriority());
31010      }
31011      if (element.hasSubject()) {
31012        composeReference("subject", element.getSubject());
31013      }
31014      if (element.hasEpisodeOfCare()) { 
31015        for (Reference e : element.getEpisodeOfCare()) 
31016          composeReference("episodeOfCare", e);
31017      }
31018      if (element.hasBasedOn()) { 
31019        for (Reference e : element.getBasedOn()) 
31020          composeReference("basedOn", e);
31021      }
31022      if (element.hasParticipant()) { 
31023        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
31024          composeEncounterEncounterParticipantComponent("participant", e);
31025      }
31026      if (element.hasAppointment()) {
31027        composeReference("appointment", element.getAppointment());
31028      }
31029      if (element.hasPeriod()) {
31030        composePeriod("period", element.getPeriod());
31031      }
31032      if (element.hasLength()) {
31033        composeDuration("length", element.getLength());
31034      }
31035      if (element.hasReason()) { 
31036        for (CodeableConcept e : element.getReason()) 
31037          composeCodeableConcept("reason", e);
31038      }
31039      if (element.hasDiagnosis()) { 
31040        for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
31041          composeEncounterDiagnosisComponent("diagnosis", e);
31042      }
31043      if (element.hasAccount()) { 
31044        for (Reference e : element.getAccount()) 
31045          composeReference("account", e);
31046      }
31047      if (element.hasHospitalization()) {
31048        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
31049      }
31050      if (element.hasLocation()) { 
31051        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
31052          composeEncounterEncounterLocationComponent("location", e);
31053      }
31054      if (element.hasServiceProvider()) {
31055        composeReference("serviceProvider", element.getServiceProvider());
31056      }
31057      if (element.hasPartOf()) {
31058        composeReference("partOf", element.getPartOf());
31059      }
31060  }
31061
31062  protected void composeEncounterStatusHistoryComponent(String name, Encounter.StatusHistoryComponent element) throws IOException {
31063    if (element != null) {
31064      composeElementAttributes(element);
31065      xml.enter(FHIR_NS, name);
31066      composeEncounterStatusHistoryComponentElements(element);
31067      composeElementClose(element);
31068      xml.exit(FHIR_NS, name);
31069    }
31070  }
31071
31072  protected void composeEncounterStatusHistoryComponentElements(Encounter.StatusHistoryComponent element) throws IOException {
31073      composeBackboneElementElements(element);
31074      if (element.hasStatusElement())
31075        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
31076      if (element.hasPeriod()) {
31077        composePeriod("period", element.getPeriod());
31078      }
31079  }
31080
31081  protected void composeEncounterClassHistoryComponent(String name, Encounter.ClassHistoryComponent element) throws IOException {
31082    if (element != null) {
31083      composeElementAttributes(element);
31084      xml.enter(FHIR_NS, name);
31085      composeEncounterClassHistoryComponentElements(element);
31086      composeElementClose(element);
31087      xml.exit(FHIR_NS, name);
31088    }
31089  }
31090
31091  protected void composeEncounterClassHistoryComponentElements(Encounter.ClassHistoryComponent element) throws IOException {
31092      composeBackboneElementElements(element);
31093      if (element.hasClass_()) {
31094        composeCoding("class", element.getClass_());
31095      }
31096      if (element.hasPeriod()) {
31097        composePeriod("period", element.getPeriod());
31098      }
31099  }
31100
31101  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
31102    if (element != null) {
31103      composeElementAttributes(element);
31104      xml.enter(FHIR_NS, name);
31105      composeEncounterEncounterParticipantComponentElements(element);
31106      composeElementClose(element);
31107      xml.exit(FHIR_NS, name);
31108    }
31109  }
31110
31111  protected void composeEncounterEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
31112      composeBackboneElementElements(element);
31113      if (element.hasType()) { 
31114        for (CodeableConcept e : element.getType()) 
31115          composeCodeableConcept("type", e);
31116      }
31117      if (element.hasPeriod()) {
31118        composePeriod("period", element.getPeriod());
31119      }
31120      if (element.hasIndividual()) {
31121        composeReference("individual", element.getIndividual());
31122      }
31123  }
31124
31125  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
31126    if (element != null) {
31127      composeElementAttributes(element);
31128      xml.enter(FHIR_NS, name);
31129      composeEncounterDiagnosisComponentElements(element);
31130      composeElementClose(element);
31131      xml.exit(FHIR_NS, name);
31132    }
31133  }
31134
31135  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
31136      composeBackboneElementElements(element);
31137      if (element.hasCondition()) {
31138        composeReference("condition", element.getCondition());
31139      }
31140      if (element.hasRole()) {
31141        composeCodeableConcept("role", element.getRole());
31142      }
31143      if (element.hasRankElement()) {
31144        composePositiveInt("rank", element.getRankElement());
31145      }
31146  }
31147
31148  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
31149    if (element != null) {
31150      composeElementAttributes(element);
31151      xml.enter(FHIR_NS, name);
31152      composeEncounterEncounterHospitalizationComponentElements(element);
31153      composeElementClose(element);
31154      xml.exit(FHIR_NS, name);
31155    }
31156  }
31157
31158  protected void composeEncounterEncounterHospitalizationComponentElements(Encounter.EncounterHospitalizationComponent element) throws IOException {
31159      composeBackboneElementElements(element);
31160      if (element.hasPreAdmissionIdentifier()) {
31161        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
31162      }
31163      if (element.hasOrigin()) {
31164        composeReference("origin", element.getOrigin());
31165      }
31166      if (element.hasAdmitSource()) {
31167        composeCodeableConcept("admitSource", element.getAdmitSource());
31168      }
31169      if (element.hasReAdmission()) {
31170        composeCodeableConcept("reAdmission", element.getReAdmission());
31171      }
31172      if (element.hasDietPreference()) { 
31173        for (CodeableConcept e : element.getDietPreference()) 
31174          composeCodeableConcept("dietPreference", e);
31175      }
31176      if (element.hasSpecialCourtesy()) { 
31177        for (CodeableConcept e : element.getSpecialCourtesy()) 
31178          composeCodeableConcept("specialCourtesy", e);
31179      }
31180      if (element.hasSpecialArrangement()) { 
31181        for (CodeableConcept e : element.getSpecialArrangement()) 
31182          composeCodeableConcept("specialArrangement", e);
31183      }
31184      if (element.hasDestination()) {
31185        composeReference("destination", element.getDestination());
31186      }
31187      if (element.hasDischargeDisposition()) {
31188        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
31189      }
31190  }
31191
31192  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
31193    if (element != null) {
31194      composeElementAttributes(element);
31195      xml.enter(FHIR_NS, name);
31196      composeEncounterEncounterLocationComponentElements(element);
31197      composeElementClose(element);
31198      xml.exit(FHIR_NS, name);
31199    }
31200  }
31201
31202  protected void composeEncounterEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
31203      composeBackboneElementElements(element);
31204      if (element.hasLocation()) {
31205        composeReference("location", element.getLocation());
31206      }
31207      if (element.hasStatusElement())
31208        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
31209      if (element.hasPeriod()) {
31210        composePeriod("period", element.getPeriod());
31211      }
31212  }
31213
31214  protected void composeEndpoint(String name, Endpoint element) throws IOException {
31215    if (element != null) {
31216      composeDomainResourceAttributes(element);
31217      xml.enter(FHIR_NS, name);
31218      composeEndpointElements(element);
31219      composeElementClose(element);
31220      xml.exit(FHIR_NS, name);
31221    }
31222  }
31223
31224  protected void composeEndpointElements(Endpoint element) throws IOException {
31225      composeDomainResourceElements(element);
31226      if (element.hasIdentifier()) { 
31227        for (Identifier e : element.getIdentifier()) 
31228          composeIdentifier("identifier", e);
31229      }
31230      if (element.hasStatusElement())
31231        composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
31232      if (element.hasConnectionType()) {
31233        composeCoding("connectionType", element.getConnectionType());
31234      }
31235      if (element.hasNameElement()) {
31236        composeString("name", element.getNameElement());
31237      }
31238      if (element.hasManagingOrganization()) {
31239        composeReference("managingOrganization", element.getManagingOrganization());
31240      }
31241      if (element.hasContact()) { 
31242        for (ContactPoint e : element.getContact()) 
31243          composeContactPoint("contact", e);
31244      }
31245      if (element.hasPeriod()) {
31246        composePeriod("period", element.getPeriod());
31247      }
31248      if (element.hasPayloadType()) { 
31249        for (CodeableConcept e : element.getPayloadType()) 
31250          composeCodeableConcept("payloadType", e);
31251      }
31252      if (element.hasPayloadMimeType()) { 
31253        for (CodeType e : element.getPayloadMimeType()) 
31254          composeCode("payloadMimeType", e);
31255      }
31256      if (element.hasAddressElement()) {
31257        composeUrl("address", element.getAddressElement());
31258      }
31259      if (element.hasHeader()) { 
31260        for (StringType e : element.getHeader()) 
31261          composeString("header", e);
31262      }
31263  }
31264
31265  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
31266    if (element != null) {
31267      composeDomainResourceAttributes(element);
31268      xml.enter(FHIR_NS, name);
31269      composeEnrollmentRequestElements(element);
31270      composeElementClose(element);
31271      xml.exit(FHIR_NS, name);
31272    }
31273  }
31274
31275  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
31276      composeDomainResourceElements(element);
31277      if (element.hasIdentifier()) { 
31278        for (Identifier e : element.getIdentifier()) 
31279          composeIdentifier("identifier", e);
31280      }
31281      if (element.hasStatusElement())
31282        composeEnumeration("status", element.getStatusElement(), new EnrollmentRequest.EnrollmentRequestStatusEnumFactory());
31283      if (element.hasCreatedElement()) {
31284        composeDateTime("created", element.getCreatedElement());
31285      }
31286      if (element.hasInsurer()) {
31287        composeReference("insurer", element.getInsurer());
31288      }
31289      if (element.hasProvider()) {
31290        composeReference("provider", element.getProvider());
31291      }
31292      if (element.hasCandidate()) {
31293        composeReference("candidate", element.getCandidate());
31294      }
31295      if (element.hasCoverage()) {
31296        composeReference("coverage", element.getCoverage());
31297      }
31298  }
31299
31300  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
31301    if (element != null) {
31302      composeDomainResourceAttributes(element);
31303      xml.enter(FHIR_NS, name);
31304      composeEnrollmentResponseElements(element);
31305      composeElementClose(element);
31306      xml.exit(FHIR_NS, name);
31307    }
31308  }
31309
31310  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
31311      composeDomainResourceElements(element);
31312      if (element.hasIdentifier()) { 
31313        for (Identifier e : element.getIdentifier()) 
31314          composeIdentifier("identifier", e);
31315      }
31316      if (element.hasStatusElement())
31317        composeEnumeration("status", element.getStatusElement(), new EnrollmentResponse.EnrollmentResponseStatusEnumFactory());
31318      if (element.hasRequest()) {
31319        composeReference("request", element.getRequest());
31320      }
31321      if (element.hasOutcomeElement())
31322        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
31323      if (element.hasDispositionElement()) {
31324        composeString("disposition", element.getDispositionElement());
31325      }
31326      if (element.hasCreatedElement()) {
31327        composeDateTime("created", element.getCreatedElement());
31328      }
31329      if (element.hasOrganization()) {
31330        composeReference("organization", element.getOrganization());
31331      }
31332      if (element.hasRequestProvider()) {
31333        composeReference("requestProvider", element.getRequestProvider());
31334      }
31335  }
31336
31337  protected void composeEntryDefinition(String name, EntryDefinition element) throws IOException {
31338    if (element != null) {
31339      composeDomainResourceAttributes(element);
31340      xml.enter(FHIR_NS, name);
31341      composeEntryDefinitionElements(element);
31342      composeElementClose(element);
31343      xml.exit(FHIR_NS, name);
31344    }
31345  }
31346
31347  protected void composeEntryDefinitionElements(EntryDefinition element) throws IOException {
31348      composeDomainResourceElements(element);
31349      if (element.hasType()) {
31350        composeCodeableConcept("type", element.getType());
31351      }
31352      if (element.hasPurpose()) {
31353        composeCodeableConcept("purpose", element.getPurpose());
31354      }
31355      if (element.hasReferencedItem()) {
31356        composeReference("referencedItem", element.getReferencedItem());
31357      }
31358      if (element.hasIdentifier()) {
31359        composeIdentifier("identifier", element.getIdentifier());
31360      }
31361      if (element.hasAdditionalIdentifier()) { 
31362        for (Identifier e : element.getAdditionalIdentifier()) 
31363          composeIdentifier("additionalIdentifier", e);
31364      }
31365      if (element.hasClassification()) { 
31366        for (CodeableConcept e : element.getClassification()) 
31367          composeCodeableConcept("classification", e);
31368      }
31369      if (element.hasStatus()) {
31370        composeCodeableConcept("status", element.getStatus());
31371      }
31372      if (element.hasValidityPeriod()) {
31373        composePeriod("validityPeriod", element.getValidityPeriod());
31374      }
31375      if (element.hasLastUpdatedElement()) {
31376        composeDateTime("lastUpdated", element.getLastUpdatedElement());
31377      }
31378      if (element.hasAdditionalCharacteristic()) { 
31379        for (CodeableConcept e : element.getAdditionalCharacteristic()) 
31380          composeCodeableConcept("additionalCharacteristic", e);
31381      }
31382      if (element.hasAdditionalClassification()) { 
31383        for (CodeableConcept e : element.getAdditionalClassification()) 
31384          composeCodeableConcept("additionalClassification", e);
31385      }
31386      if (element.hasRelatedEntry()) { 
31387        for (EntryDefinition.EntryDefinitionRelatedEntryComponent e : element.getRelatedEntry()) 
31388          composeEntryDefinitionEntryDefinitionRelatedEntryComponent("relatedEntry", e);
31389      }
31390  }
31391
31392  protected void composeEntryDefinitionEntryDefinitionRelatedEntryComponent(String name, EntryDefinition.EntryDefinitionRelatedEntryComponent element) throws IOException {
31393    if (element != null) {
31394      composeElementAttributes(element);
31395      xml.enter(FHIR_NS, name);
31396      composeEntryDefinitionEntryDefinitionRelatedEntryComponentElements(element);
31397      composeElementClose(element);
31398      xml.exit(FHIR_NS, name);
31399    }
31400  }
31401
31402  protected void composeEntryDefinitionEntryDefinitionRelatedEntryComponentElements(EntryDefinition.EntryDefinitionRelatedEntryComponent element) throws IOException {
31403      composeBackboneElementElements(element);
31404      if (element.hasRelationtype()) {
31405        composeCodeableConcept("relationtype", element.getRelationtype());
31406      }
31407      if (element.hasItem()) {
31408        composeReference("item", element.getItem());
31409      }
31410  }
31411
31412  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
31413    if (element != null) {
31414      composeDomainResourceAttributes(element);
31415      xml.enter(FHIR_NS, name);
31416      composeEpisodeOfCareElements(element);
31417      composeElementClose(element);
31418      xml.exit(FHIR_NS, name);
31419    }
31420  }
31421
31422  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
31423      composeDomainResourceElements(element);
31424      if (element.hasIdentifier()) { 
31425        for (Identifier e : element.getIdentifier()) 
31426          composeIdentifier("identifier", e);
31427      }
31428      if (element.hasStatusElement())
31429        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
31430      if (element.hasStatusHistory()) { 
31431        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
31432          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
31433      }
31434      if (element.hasType()) { 
31435        for (CodeableConcept e : element.getType()) 
31436          composeCodeableConcept("type", e);
31437      }
31438      if (element.hasDiagnosis()) { 
31439        for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
31440          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
31441      }
31442      if (element.hasPatient()) {
31443        composeReference("patient", element.getPatient());
31444      }
31445      if (element.hasManagingOrganization()) {
31446        composeReference("managingOrganization", element.getManagingOrganization());
31447      }
31448      if (element.hasPeriod()) {
31449        composePeriod("period", element.getPeriod());
31450      }
31451      if (element.hasReferralRequest()) { 
31452        for (Reference e : element.getReferralRequest()) 
31453          composeReference("referralRequest", e);
31454      }
31455      if (element.hasCareManager()) {
31456        composeReference("careManager", element.getCareManager());
31457      }
31458      if (element.hasTeam()) { 
31459        for (Reference e : element.getTeam()) 
31460          composeReference("team", e);
31461      }
31462      if (element.hasAccount()) { 
31463        for (Reference e : element.getAccount()) 
31464          composeReference("account", e);
31465      }
31466  }
31467
31468  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
31469    if (element != null) {
31470      composeElementAttributes(element);
31471      xml.enter(FHIR_NS, name);
31472      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(element);
31473      composeElementClose(element);
31474      xml.exit(FHIR_NS, name);
31475    }
31476  }
31477
31478  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
31479      composeBackboneElementElements(element);
31480      if (element.hasStatusElement())
31481        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
31482      if (element.hasPeriod()) {
31483        composePeriod("period", element.getPeriod());
31484      }
31485  }
31486
31487  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
31488    if (element != null) {
31489      composeElementAttributes(element);
31490      xml.enter(FHIR_NS, name);
31491      composeEpisodeOfCareDiagnosisComponentElements(element);
31492      composeElementClose(element);
31493      xml.exit(FHIR_NS, name);
31494    }
31495  }
31496
31497  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
31498      composeBackboneElementElements(element);
31499      if (element.hasCondition()) {
31500        composeReference("condition", element.getCondition());
31501      }
31502      if (element.hasRole()) {
31503        composeCodeableConcept("role", element.getRole());
31504      }
31505      if (element.hasRankElement()) {
31506        composePositiveInt("rank", element.getRankElement());
31507      }
31508  }
31509
31510  protected void composeEventDefinition(String name, EventDefinition element) throws IOException {
31511    if (element != null) {
31512      composeDomainResourceAttributes(element);
31513      xml.enter(FHIR_NS, name);
31514      composeEventDefinitionElements(element);
31515      composeElementClose(element);
31516      xml.exit(FHIR_NS, name);
31517    }
31518  }
31519
31520  protected void composeEventDefinitionElements(EventDefinition element) throws IOException {
31521      composeDomainResourceElements(element);
31522      if (element.hasUrlElement()) {
31523        composeUri("url", element.getUrlElement());
31524      }
31525      if (element.hasIdentifier()) { 
31526        for (Identifier e : element.getIdentifier()) 
31527          composeIdentifier("identifier", e);
31528      }
31529      if (element.hasVersionElement()) {
31530        composeString("version", element.getVersionElement());
31531      }
31532      if (element.hasNameElement()) {
31533        composeString("name", element.getNameElement());
31534      }
31535      if (element.hasTitleElement()) {
31536        composeString("title", element.getTitleElement());
31537      }
31538      if (element.hasSubtitleElement()) {
31539        composeString("subtitle", element.getSubtitleElement());
31540      }
31541      if (element.hasStatusElement())
31542        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31543      if (element.hasExperimentalElement()) {
31544        composeBoolean("experimental", element.getExperimentalElement());
31545      }
31546      if (element.hasSubject()) {
31547        composeType("subject", element.getSubject());
31548      }      if (element.hasDateElement()) {
31549        composeDateTime("date", element.getDateElement());
31550      }
31551      if (element.hasPublisherElement()) {
31552        composeString("publisher", element.getPublisherElement());
31553      }
31554      if (element.hasContact()) { 
31555        for (ContactDetail e : element.getContact()) 
31556          composeContactDetail("contact", e);
31557      }
31558      if (element.hasDescriptionElement()) {
31559        composeMarkdown("description", element.getDescriptionElement());
31560      }
31561      if (element.hasUseContext()) { 
31562        for (UsageContext e : element.getUseContext()) 
31563          composeUsageContext("useContext", e);
31564      }
31565      if (element.hasJurisdiction()) { 
31566        for (CodeableConcept e : element.getJurisdiction()) 
31567          composeCodeableConcept("jurisdiction", e);
31568      }
31569      if (element.hasPurposeElement()) {
31570        composeMarkdown("purpose", element.getPurposeElement());
31571      }
31572      if (element.hasUsageElement()) {
31573        composeString("usage", element.getUsageElement());
31574      }
31575      if (element.hasCopyrightElement()) {
31576        composeMarkdown("copyright", element.getCopyrightElement());
31577      }
31578      if (element.hasApprovalDateElement()) {
31579        composeDate("approvalDate", element.getApprovalDateElement());
31580      }
31581      if (element.hasLastReviewDateElement()) {
31582        composeDate("lastReviewDate", element.getLastReviewDateElement());
31583      }
31584      if (element.hasEffectivePeriod()) {
31585        composePeriod("effectivePeriod", element.getEffectivePeriod());
31586      }
31587      if (element.hasTopic()) { 
31588        for (CodeableConcept e : element.getTopic()) 
31589          composeCodeableConcept("topic", e);
31590      }
31591      if (element.hasContributor()) { 
31592        for (Contributor e : element.getContributor()) 
31593          composeContributor("contributor", e);
31594      }
31595      if (element.hasRelatedArtifact()) { 
31596        for (RelatedArtifact e : element.getRelatedArtifact()) 
31597          composeRelatedArtifact("relatedArtifact", e);
31598      }
31599      if (element.hasTrigger()) {
31600        composeTriggerDefinition("trigger", element.getTrigger());
31601      }
31602  }
31603
31604  protected void composeExampleScenario(String name, ExampleScenario element) throws IOException {
31605    if (element != null) {
31606      composeDomainResourceAttributes(element);
31607      xml.enter(FHIR_NS, name);
31608      composeExampleScenarioElements(element);
31609      composeElementClose(element);
31610      xml.exit(FHIR_NS, name);
31611    }
31612  }
31613
31614  protected void composeExampleScenarioElements(ExampleScenario element) throws IOException {
31615      composeDomainResourceElements(element);
31616      if (element.hasUrlElement()) {
31617        composeUri("url", element.getUrlElement());
31618      }
31619      if (element.hasIdentifier()) { 
31620        for (Identifier e : element.getIdentifier()) 
31621          composeIdentifier("identifier", e);
31622      }
31623      if (element.hasVersionElement()) {
31624        composeString("version", element.getVersionElement());
31625      }
31626      if (element.hasNameElement()) {
31627        composeString("name", element.getNameElement());
31628      }
31629      if (element.hasStatusElement())
31630        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31631      if (element.hasExperimentalElement()) {
31632        composeBoolean("experimental", element.getExperimentalElement());
31633      }
31634      if (element.hasDateElement()) {
31635        composeDateTime("date", element.getDateElement());
31636      }
31637      if (element.hasPublisherElement()) {
31638        composeString("publisher", element.getPublisherElement());
31639      }
31640      if (element.hasContact()) { 
31641        for (ContactDetail e : element.getContact()) 
31642          composeContactDetail("contact", e);
31643      }
31644      if (element.hasUseContext()) { 
31645        for (UsageContext e : element.getUseContext()) 
31646          composeUsageContext("useContext", e);
31647      }
31648      if (element.hasJurisdiction()) { 
31649        for (CodeableConcept e : element.getJurisdiction()) 
31650          composeCodeableConcept("jurisdiction", e);
31651      }
31652      if (element.hasCopyrightElement()) {
31653        composeMarkdown("copyright", element.getCopyrightElement());
31654      }
31655      if (element.hasPurposeElement()) {
31656        composeMarkdown("purpose", element.getPurposeElement());
31657      }
31658      if (element.hasActor()) { 
31659        for (ExampleScenario.ExampleScenarioActorComponent e : element.getActor()) 
31660          composeExampleScenarioExampleScenarioActorComponent("actor", e);
31661      }
31662      if (element.hasInstance()) { 
31663        for (ExampleScenario.ExampleScenarioInstanceComponent e : element.getInstance()) 
31664          composeExampleScenarioExampleScenarioInstanceComponent("instance", e);
31665      }
31666      if (element.hasProcess()) { 
31667        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
31668          composeExampleScenarioExampleScenarioProcessComponent("process", e);
31669      }
31670      if (element.hasWorkflow()) { 
31671        for (CanonicalType e : element.getWorkflow()) 
31672          composeCanonical("workflow", e);
31673      }
31674  }
31675
31676  protected void composeExampleScenarioExampleScenarioActorComponent(String name, ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
31677    if (element != null) {
31678      composeElementAttributes(element);
31679      xml.enter(FHIR_NS, name);
31680      composeExampleScenarioExampleScenarioActorComponentElements(element);
31681      composeElementClose(element);
31682      xml.exit(FHIR_NS, name);
31683    }
31684  }
31685
31686  protected void composeExampleScenarioExampleScenarioActorComponentElements(ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
31687      composeBackboneElementElements(element);
31688      if (element.hasActorIdElement()) {
31689        composeString("actorId", element.getActorIdElement());
31690      }
31691      if (element.hasTypeElement())
31692        composeEnumeration("type", element.getTypeElement(), new ExampleScenario.ExampleScenarioActorTypeEnumFactory());
31693      if (element.hasNameElement()) {
31694        composeString("name", element.getNameElement());
31695      }
31696      if (element.hasDescriptionElement()) {
31697        composeMarkdown("description", element.getDescriptionElement());
31698      }
31699  }
31700
31701  protected void composeExampleScenarioExampleScenarioInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
31702    if (element != null) {
31703      composeElementAttributes(element);
31704      xml.enter(FHIR_NS, name);
31705      composeExampleScenarioExampleScenarioInstanceComponentElements(element);
31706      composeElementClose(element);
31707      xml.exit(FHIR_NS, name);
31708    }
31709  }
31710
31711  protected void composeExampleScenarioExampleScenarioInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
31712      composeBackboneElementElements(element);
31713      if (element.hasResourceIdElement()) {
31714        composeString("resourceId", element.getResourceIdElement());
31715      }
31716      if (element.hasResourceTypeElement())
31717        composeEnumeration("resourceType", element.getResourceTypeElement(), new ExampleScenario.FHIRResourceTypeEnumFactory());
31718      if (element.hasNameElement()) {
31719        composeString("name", element.getNameElement());
31720      }
31721      if (element.hasDescriptionElement()) {
31722        composeMarkdown("description", element.getDescriptionElement());
31723      }
31724      if (element.hasVersion()) { 
31725        for (ExampleScenario.ExampleScenarioInstanceVersionComponent e : element.getVersion()) 
31726          composeExampleScenarioExampleScenarioInstanceVersionComponent("version", e);
31727      }
31728      if (element.hasContainedInstance()) { 
31729        for (ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent e : element.getContainedInstance()) 
31730          composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("containedInstance", e);
31731      }
31732  }
31733
31734  protected void composeExampleScenarioExampleScenarioInstanceVersionComponent(String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
31735    if (element != null) {
31736      composeElementAttributes(element);
31737      xml.enter(FHIR_NS, name);
31738      composeExampleScenarioExampleScenarioInstanceVersionComponentElements(element);
31739      composeElementClose(element);
31740      xml.exit(FHIR_NS, name);
31741    }
31742  }
31743
31744  protected void composeExampleScenarioExampleScenarioInstanceVersionComponentElements(ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
31745      composeBackboneElementElements(element);
31746      if (element.hasVersionIdElement()) {
31747        composeString("versionId", element.getVersionIdElement());
31748      }
31749      if (element.hasDescriptionElement()) {
31750        composeMarkdown("description", element.getDescriptionElement());
31751      }
31752  }
31753
31754  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
31755    if (element != null) {
31756      composeElementAttributes(element);
31757      xml.enter(FHIR_NS, name);
31758      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(element);
31759      composeElementClose(element);
31760      xml.exit(FHIR_NS, name);
31761    }
31762  }
31763
31764  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
31765      composeBackboneElementElements(element);
31766      if (element.hasResourceIdElement()) {
31767        composeString("resourceId", element.getResourceIdElement());
31768      }
31769      if (element.hasVersionIdElement()) {
31770        composeString("versionId", element.getVersionIdElement());
31771      }
31772  }
31773
31774  protected void composeExampleScenarioExampleScenarioProcessComponent(String name, ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
31775    if (element != null) {
31776      composeElementAttributes(element);
31777      xml.enter(FHIR_NS, name);
31778      composeExampleScenarioExampleScenarioProcessComponentElements(element);
31779      composeElementClose(element);
31780      xml.exit(FHIR_NS, name);
31781    }
31782  }
31783
31784  protected void composeExampleScenarioExampleScenarioProcessComponentElements(ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
31785      composeBackboneElementElements(element);
31786      if (element.hasTitleElement()) {
31787        composeString("title", element.getTitleElement());
31788      }
31789      if (element.hasDescriptionElement()) {
31790        composeMarkdown("description", element.getDescriptionElement());
31791      }
31792      if (element.hasPreConditionsElement()) {
31793        composeMarkdown("preConditions", element.getPreConditionsElement());
31794      }
31795      if (element.hasPostConditionsElement()) {
31796        composeMarkdown("postConditions", element.getPostConditionsElement());
31797      }
31798      if (element.hasStep()) { 
31799        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
31800          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
31801      }
31802  }
31803
31804  protected void composeExampleScenarioExampleScenarioProcessStepComponent(String name, ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
31805    if (element != null) {
31806      composeElementAttributes(element);
31807      xml.enter(FHIR_NS, name);
31808      composeExampleScenarioExampleScenarioProcessStepComponentElements(element);
31809      composeElementClose(element);
31810      xml.exit(FHIR_NS, name);
31811    }
31812  }
31813
31814  protected void composeExampleScenarioExampleScenarioProcessStepComponentElements(ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
31815      composeBackboneElementElements(element);
31816      if (element.hasProcess()) { 
31817        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
31818          composeExampleScenarioExampleScenarioProcessComponent("process", e);
31819      }
31820      if (element.hasPauseElement()) {
31821        composeBoolean("pause", element.getPauseElement());
31822      }
31823      if (element.hasOperation()) {
31824        composeExampleScenarioExampleScenarioProcessStepOperationComponent("operation", element.getOperation());
31825      }
31826      if (element.hasAlternative()) {
31827        composeExampleScenarioExampleScenarioProcessStepAlternativeComponent("alternative", element.getAlternative());
31828      }
31829  }
31830
31831  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponent(String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
31832    if (element != null) {
31833      composeElementAttributes(element);
31834      xml.enter(FHIR_NS, name);
31835      composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(element);
31836      composeElementClose(element);
31837      xml.exit(FHIR_NS, name);
31838    }
31839  }
31840
31841  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
31842      composeBackboneElementElements(element);
31843      if (element.hasNumberElement()) {
31844        composeString("number", element.getNumberElement());
31845      }
31846      if (element.hasTypeElement()) {
31847        composeString("type", element.getTypeElement());
31848      }
31849      if (element.hasNameElement()) {
31850        composeString("name", element.getNameElement());
31851      }
31852      if (element.hasInitiatorElement()) {
31853        composeString("initiator", element.getInitiatorElement());
31854      }
31855      if (element.hasReceiverElement()) {
31856        composeString("receiver", element.getReceiverElement());
31857      }
31858      if (element.hasDescriptionElement()) {
31859        composeMarkdown("description", element.getDescriptionElement());
31860      }
31861      if (element.hasInitiatorActiveElement()) {
31862        composeBoolean("initiatorActive", element.getInitiatorActiveElement());
31863      }
31864      if (element.hasReceiverActiveElement()) {
31865        composeBoolean("receiverActive", element.getReceiverActiveElement());
31866      }
31867      if (element.hasRequest()) {
31868        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("request", element.getRequest());
31869      }
31870      if (element.hasResponse()) {
31871        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("response", element.getResponse());
31872      }
31873  }
31874
31875  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
31876    if (element != null) {
31877      composeElementAttributes(element);
31878      xml.enter(FHIR_NS, name);
31879      composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(element);
31880      composeElementClose(element);
31881      xml.exit(FHIR_NS, name);
31882    }
31883  }
31884
31885  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
31886      composeBackboneElementElements(element);
31887      if (element.hasNameElement()) {
31888        composeString("name", element.getNameElement());
31889      }
31890      if (element.hasOption()) { 
31891        for (ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent e : element.getOption()) 
31892          composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent("option", e);
31893      }
31894  }
31895
31896  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent element) throws IOException {
31897    if (element != null) {
31898      composeElementAttributes(element);
31899      xml.enter(FHIR_NS, name);
31900      composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponentElements(element);
31901      composeElementClose(element);
31902      xml.exit(FHIR_NS, name);
31903    }
31904  }
31905
31906  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent element) throws IOException {
31907      composeBackboneElementElements(element);
31908      if (element.hasDescriptionElement()) {
31909        composeMarkdown("description", element.getDescriptionElement());
31910      }
31911      if (element.hasStep()) { 
31912        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
31913          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
31914      }
31915      if (element.hasPause()) { 
31916        for (BooleanType e : element.getPause()) 
31917          composeBoolean("pause", e);
31918      }
31919  }
31920
31921  protected void composeExpansionProfile(String name, ExpansionProfile element) throws IOException {
31922    if (element != null) {
31923      composeDomainResourceAttributes(element);
31924      xml.enter(FHIR_NS, name);
31925      composeExpansionProfileElements(element);
31926      composeElementClose(element);
31927      xml.exit(FHIR_NS, name);
31928    }
31929  }
31930
31931  protected void composeExpansionProfileElements(ExpansionProfile element) throws IOException {
31932      composeDomainResourceElements(element);
31933      if (element.hasUrlElement()) {
31934        composeUri("url", element.getUrlElement());
31935      }
31936      if (element.hasIdentifier()) {
31937        composeIdentifier("identifier", element.getIdentifier());
31938      }
31939      if (element.hasVersionElement()) {
31940        composeString("version", element.getVersionElement());
31941      }
31942      if (element.hasNameElement()) {
31943        composeString("name", element.getNameElement());
31944      }
31945      if (element.hasStatusElement())
31946        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31947      if (element.hasExperimentalElement()) {
31948        composeBoolean("experimental", element.getExperimentalElement());
31949      }
31950      if (element.hasDateElement()) {
31951        composeDateTime("date", element.getDateElement());
31952      }
31953      if (element.hasPublisherElement()) {
31954        composeString("publisher", element.getPublisherElement());
31955      }
31956      if (element.hasContact()) { 
31957        for (ContactDetail e : element.getContact()) 
31958          composeContactDetail("contact", e);
31959      }
31960      if (element.hasDescriptionElement()) {
31961        composeMarkdown("description", element.getDescriptionElement());
31962      }
31963      if (element.hasUseContext()) { 
31964        for (UsageContext e : element.getUseContext()) 
31965          composeUsageContext("useContext", e);
31966      }
31967      if (element.hasJurisdiction()) { 
31968        for (CodeableConcept e : element.getJurisdiction()) 
31969          composeCodeableConcept("jurisdiction", e);
31970      }
31971      if (element.hasFixedVersion()) { 
31972        for (ExpansionProfile.ExpansionProfileFixedVersionComponent e : element.getFixedVersion()) 
31973          composeExpansionProfileExpansionProfileFixedVersionComponent("fixedVersion", e);
31974      }
31975      if (element.hasExcludedSystem()) {
31976        composeExpansionProfileExpansionProfileExcludedSystemComponent("excludedSystem", element.getExcludedSystem());
31977      }
31978      if (element.hasIncludeDesignationsElement()) {
31979        composeBoolean("includeDesignations", element.getIncludeDesignationsElement());
31980      }
31981      if (element.hasDesignation()) {
31982        composeExpansionProfileExpansionProfileDesignationComponent("designation", element.getDesignation());
31983      }
31984      if (element.hasIncludeDefinitionElement()) {
31985        composeBoolean("includeDefinition", element.getIncludeDefinitionElement());
31986      }
31987      if (element.hasActiveOnlyElement()) {
31988        composeBoolean("activeOnly", element.getActiveOnlyElement());
31989      }
31990      if (element.hasExcludeNestedElement()) {
31991        composeBoolean("excludeNested", element.getExcludeNestedElement());
31992      }
31993      if (element.hasExcludeNotForUIElement()) {
31994        composeBoolean("excludeNotForUI", element.getExcludeNotForUIElement());
31995      }
31996      if (element.hasExcludePostCoordinatedElement()) {
31997        composeBoolean("excludePostCoordinated", element.getExcludePostCoordinatedElement());
31998      }
31999      if (element.hasDisplayLanguageElement()) {
32000        composeCode("displayLanguage", element.getDisplayLanguageElement());
32001      }
32002      if (element.hasLimitedExpansionElement()) {
32003        composeBoolean("limitedExpansion", element.getLimitedExpansionElement());
32004      }
32005  }
32006
32007  protected void composeExpansionProfileExpansionProfileFixedVersionComponent(String name, ExpansionProfile.ExpansionProfileFixedVersionComponent element) throws IOException {
32008    if (element != null) {
32009      composeElementAttributes(element);
32010      xml.enter(FHIR_NS, name);
32011      composeExpansionProfileExpansionProfileFixedVersionComponentElements(element);
32012      composeElementClose(element);
32013      xml.exit(FHIR_NS, name);
32014    }
32015  }
32016
32017  protected void composeExpansionProfileExpansionProfileFixedVersionComponentElements(ExpansionProfile.ExpansionProfileFixedVersionComponent element) throws IOException {
32018      composeBackboneElementElements(element);
32019      if (element.hasSystemElement()) {
32020        composeUri("system", element.getSystemElement());
32021      }
32022      if (element.hasVersionElement()) {
32023        composeString("version", element.getVersionElement());
32024      }
32025      if (element.hasModeElement())
32026        composeEnumeration("mode", element.getModeElement(), new ExpansionProfile.SystemVersionProcessingModeEnumFactory());
32027  }
32028
32029  protected void composeExpansionProfileExpansionProfileExcludedSystemComponent(String name, ExpansionProfile.ExpansionProfileExcludedSystemComponent element) throws IOException {
32030    if (element != null) {
32031      composeElementAttributes(element);
32032      xml.enter(FHIR_NS, name);
32033      composeExpansionProfileExpansionProfileExcludedSystemComponentElements(element);
32034      composeElementClose(element);
32035      xml.exit(FHIR_NS, name);
32036    }
32037  }
32038
32039  protected void composeExpansionProfileExpansionProfileExcludedSystemComponentElements(ExpansionProfile.ExpansionProfileExcludedSystemComponent element) throws IOException {
32040      composeBackboneElementElements(element);
32041      if (element.hasSystemElement()) {
32042        composeUri("system", element.getSystemElement());
32043      }
32044      if (element.hasVersionElement()) {
32045        composeString("version", element.getVersionElement());
32046      }
32047  }
32048
32049  protected void composeExpansionProfileExpansionProfileDesignationComponent(String name, ExpansionProfile.ExpansionProfileDesignationComponent element) throws IOException {
32050    if (element != null) {
32051      composeElementAttributes(element);
32052      xml.enter(FHIR_NS, name);
32053      composeExpansionProfileExpansionProfileDesignationComponentElements(element);
32054      composeElementClose(element);
32055      xml.exit(FHIR_NS, name);
32056    }
32057  }
32058
32059  protected void composeExpansionProfileExpansionProfileDesignationComponentElements(ExpansionProfile.ExpansionProfileDesignationComponent element) throws IOException {
32060      composeBackboneElementElements(element);
32061      if (element.hasInclude()) {
32062        composeExpansionProfileDesignationIncludeComponent("include", element.getInclude());
32063      }
32064      if (element.hasExclude()) {
32065        composeExpansionProfileDesignationExcludeComponent("exclude", element.getExclude());
32066      }
32067  }
32068
32069  protected void composeExpansionProfileDesignationIncludeComponent(String name, ExpansionProfile.DesignationIncludeComponent element) throws IOException {
32070    if (element != null) {
32071      composeElementAttributes(element);
32072      xml.enter(FHIR_NS, name);
32073      composeExpansionProfileDesignationIncludeComponentElements(element);
32074      composeElementClose(element);
32075      xml.exit(FHIR_NS, name);
32076    }
32077  }
32078
32079  protected void composeExpansionProfileDesignationIncludeComponentElements(ExpansionProfile.DesignationIncludeComponent element) throws IOException {
32080      composeBackboneElementElements(element);
32081      if (element.hasDesignation()) { 
32082        for (ExpansionProfile.DesignationIncludeDesignationComponent e : element.getDesignation()) 
32083          composeExpansionProfileDesignationIncludeDesignationComponent("designation", e);
32084      }
32085  }
32086
32087  protected void composeExpansionProfileDesignationIncludeDesignationComponent(String name, ExpansionProfile.DesignationIncludeDesignationComponent element) throws IOException {
32088    if (element != null) {
32089      composeElementAttributes(element);
32090      xml.enter(FHIR_NS, name);
32091      composeExpansionProfileDesignationIncludeDesignationComponentElements(element);
32092      composeElementClose(element);
32093      xml.exit(FHIR_NS, name);
32094    }
32095  }
32096
32097  protected void composeExpansionProfileDesignationIncludeDesignationComponentElements(ExpansionProfile.DesignationIncludeDesignationComponent element) throws IOException {
32098      composeBackboneElementElements(element);
32099      if (element.hasLanguageElement()) {
32100        composeCode("language", element.getLanguageElement());
32101      }
32102      if (element.hasUse()) {
32103        composeCoding("use", element.getUse());
32104      }
32105  }
32106
32107  protected void composeExpansionProfileDesignationExcludeComponent(String name, ExpansionProfile.DesignationExcludeComponent element) throws IOException {
32108    if (element != null) {
32109      composeElementAttributes(element);
32110      xml.enter(FHIR_NS, name);
32111      composeExpansionProfileDesignationExcludeComponentElements(element);
32112      composeElementClose(element);
32113      xml.exit(FHIR_NS, name);
32114    }
32115  }
32116
32117  protected void composeExpansionProfileDesignationExcludeComponentElements(ExpansionProfile.DesignationExcludeComponent element) throws IOException {
32118      composeBackboneElementElements(element);
32119      if (element.hasDesignation()) { 
32120        for (ExpansionProfile.DesignationExcludeDesignationComponent e : element.getDesignation()) 
32121          composeExpansionProfileDesignationExcludeDesignationComponent("designation", e);
32122      }
32123  }
32124
32125  protected void composeExpansionProfileDesignationExcludeDesignationComponent(String name, ExpansionProfile.DesignationExcludeDesignationComponent element) throws IOException {
32126    if (element != null) {
32127      composeElementAttributes(element);
32128      xml.enter(FHIR_NS, name);
32129      composeExpansionProfileDesignationExcludeDesignationComponentElements(element);
32130      composeElementClose(element);
32131      xml.exit(FHIR_NS, name);
32132    }
32133  }
32134
32135  protected void composeExpansionProfileDesignationExcludeDesignationComponentElements(ExpansionProfile.DesignationExcludeDesignationComponent element) throws IOException {
32136      composeBackboneElementElements(element);
32137      if (element.hasLanguageElement()) {
32138        composeCode("language", element.getLanguageElement());
32139      }
32140      if (element.hasUse()) {
32141        composeCoding("use", element.getUse());
32142      }
32143  }
32144
32145  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
32146    if (element != null) {
32147      composeDomainResourceAttributes(element);
32148      xml.enter(FHIR_NS, name);
32149      composeExplanationOfBenefitElements(element);
32150      composeElementClose(element);
32151      xml.exit(FHIR_NS, name);
32152    }
32153  }
32154
32155  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
32156      composeDomainResourceElements(element);
32157      if (element.hasIdentifier()) { 
32158        for (Identifier e : element.getIdentifier()) 
32159          composeIdentifier("identifier", e);
32160      }
32161      if (element.hasStatusElement())
32162        composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
32163      if (element.hasType()) {
32164        composeCodeableConcept("type", element.getType());
32165      }
32166      if (element.hasSubType()) { 
32167        for (CodeableConcept e : element.getSubType()) 
32168          composeCodeableConcept("subType", e);
32169      }
32170      if (element.hasUseElement())
32171        composeEnumeration("use", element.getUseElement(), new ExplanationOfBenefit.UseEnumFactory());
32172      if (element.hasPatient()) {
32173        composeReference("patient", element.getPatient());
32174      }
32175      if (element.hasBillablePeriod()) {
32176        composePeriod("billablePeriod", element.getBillablePeriod());
32177      }
32178      if (element.hasCreatedElement()) {
32179        composeDateTime("created", element.getCreatedElement());
32180      }
32181      if (element.hasEnterer()) {
32182        composeReference("enterer", element.getEnterer());
32183      }
32184      if (element.hasInsurer()) {
32185        composeReference("insurer", element.getInsurer());
32186      }
32187      if (element.hasProvider()) {
32188        composeReference("provider", element.getProvider());
32189      }
32190      if (element.hasReferral()) {
32191        composeReference("referral", element.getReferral());
32192      }
32193      if (element.hasFacility()) {
32194        composeReference("facility", element.getFacility());
32195      }
32196      if (element.hasClaim()) {
32197        composeReference("claim", element.getClaim());
32198      }
32199      if (element.hasClaimResponse()) {
32200        composeReference("claimResponse", element.getClaimResponse());
32201      }
32202      if (element.hasOutcomeElement())
32203        composeEnumeration("outcome", element.getOutcomeElement(), new ExplanationOfBenefit.RemittanceOutcomeEnumFactory());
32204      if (element.hasDispositionElement()) {
32205        composeString("disposition", element.getDispositionElement());
32206      }
32207      if (element.hasRelated()) { 
32208        for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
32209          composeExplanationOfBenefitRelatedClaimComponent("related", e);
32210      }
32211      if (element.hasPrescription()) {
32212        composeReference("prescription", element.getPrescription());
32213      }
32214      if (element.hasOriginalPrescription()) {
32215        composeReference("originalPrescription", element.getOriginalPrescription());
32216      }
32217      if (element.hasPayee()) {
32218        composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
32219      }
32220      if (element.hasInformation()) { 
32221        for (ExplanationOfBenefit.SupportingInformationComponent e : element.getInformation()) 
32222          composeExplanationOfBenefitSupportingInformationComponent("information", e);
32223      }
32224      if (element.hasCareTeam()) { 
32225        for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
32226          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
32227      }
32228      if (element.hasDiagnosis()) { 
32229        for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
32230          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
32231      }
32232      if (element.hasProcedure()) { 
32233        for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
32234          composeExplanationOfBenefitProcedureComponent("procedure", e);
32235      }
32236      if (element.hasPrecedenceElement()) {
32237        composePositiveInt("precedence", element.getPrecedenceElement());
32238      }
32239      if (element.hasInsurance()) {
32240        composeExplanationOfBenefitInsuranceComponent("insurance", element.getInsurance());
32241      }
32242      if (element.hasAccident()) {
32243        composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
32244      }
32245      if (element.hasItem()) { 
32246        for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
32247          composeExplanationOfBenefitItemComponent("item", e);
32248      }
32249      if (element.hasAddItem()) { 
32250        for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
32251          composeExplanationOfBenefitAddedItemComponent("addItem", e);
32252      }
32253      if (element.hasTotal()) { 
32254        for (ExplanationOfBenefit.TotalComponent e : element.getTotal()) 
32255          composeExplanationOfBenefitTotalComponent("total", e);
32256      }
32257      if (element.hasPayment()) {
32258        composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
32259      }
32260      if (element.hasForm()) {
32261        composeCodeableConcept("form", element.getForm());
32262      }
32263      if (element.hasProcessNote()) { 
32264        for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
32265          composeExplanationOfBenefitNoteComponent("processNote", e);
32266      }
32267      if (element.hasBenefitBalance()) { 
32268        for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
32269          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
32270      }
32271  }
32272
32273  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
32274    if (element != null) {
32275      composeElementAttributes(element);
32276      xml.enter(FHIR_NS, name);
32277      composeExplanationOfBenefitRelatedClaimComponentElements(element);
32278      composeElementClose(element);
32279      xml.exit(FHIR_NS, name);
32280    }
32281  }
32282
32283  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
32284      composeBackboneElementElements(element);
32285      if (element.hasClaim()) {
32286        composeReference("claim", element.getClaim());
32287      }
32288      if (element.hasRelationship()) {
32289        composeCodeableConcept("relationship", element.getRelationship());
32290      }
32291      if (element.hasReference()) {
32292        composeIdentifier("reference", element.getReference());
32293      }
32294  }
32295
32296  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
32297    if (element != null) {
32298      composeElementAttributes(element);
32299      xml.enter(FHIR_NS, name);
32300      composeExplanationOfBenefitPayeeComponentElements(element);
32301      composeElementClose(element);
32302      xml.exit(FHIR_NS, name);
32303    }
32304  }
32305
32306  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
32307      composeBackboneElementElements(element);
32308      if (element.hasType()) {
32309        composeCodeableConcept("type", element.getType());
32310      }
32311      if (element.hasResource()) {
32312        composeCoding("resource", element.getResource());
32313      }
32314      if (element.hasParty()) {
32315        composeReference("party", element.getParty());
32316      }
32317  }
32318
32319  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
32320    if (element != null) {
32321      composeElementAttributes(element);
32322      xml.enter(FHIR_NS, name);
32323      composeExplanationOfBenefitSupportingInformationComponentElements(element);
32324      composeElementClose(element);
32325      xml.exit(FHIR_NS, name);
32326    }
32327  }
32328
32329  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
32330      composeBackboneElementElements(element);
32331      if (element.hasSequenceElement()) {
32332        composePositiveInt("sequence", element.getSequenceElement());
32333      }
32334      if (element.hasCategory()) {
32335        composeCodeableConcept("category", element.getCategory());
32336      }
32337      if (element.hasCode()) {
32338        composeCodeableConcept("code", element.getCode());
32339      }
32340      if (element.hasTiming()) {
32341        composeType("timing", element.getTiming());
32342      }      if (element.hasValue()) {
32343        composeType("value", element.getValue());
32344      }      if (element.hasReason()) {
32345        composeCoding("reason", element.getReason());
32346      }
32347  }
32348
32349  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
32350    if (element != null) {
32351      composeElementAttributes(element);
32352      xml.enter(FHIR_NS, name);
32353      composeExplanationOfBenefitCareTeamComponentElements(element);
32354      composeElementClose(element);
32355      xml.exit(FHIR_NS, name);
32356    }
32357  }
32358
32359  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
32360      composeBackboneElementElements(element);
32361      if (element.hasSequenceElement()) {
32362        composePositiveInt("sequence", element.getSequenceElement());
32363      }
32364      if (element.hasProvider()) {
32365        composeReference("provider", element.getProvider());
32366      }
32367      if (element.hasResponsibleElement()) {
32368        composeBoolean("responsible", element.getResponsibleElement());
32369      }
32370      if (element.hasRole()) {
32371        composeCodeableConcept("role", element.getRole());
32372      }
32373      if (element.hasQualification()) {
32374        composeCodeableConcept("qualification", element.getQualification());
32375      }
32376  }
32377
32378  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
32379    if (element != null) {
32380      composeElementAttributes(element);
32381      xml.enter(FHIR_NS, name);
32382      composeExplanationOfBenefitDiagnosisComponentElements(element);
32383      composeElementClose(element);
32384      xml.exit(FHIR_NS, name);
32385    }
32386  }
32387
32388  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
32389      composeBackboneElementElements(element);
32390      if (element.hasSequenceElement()) {
32391        composePositiveInt("sequence", element.getSequenceElement());
32392      }
32393      if (element.hasDiagnosis()) {
32394        composeType("diagnosis", element.getDiagnosis());
32395      }      if (element.hasType()) { 
32396        for (CodeableConcept e : element.getType()) 
32397          composeCodeableConcept("type", e);
32398      }
32399      if (element.hasPackageCode()) {
32400        composeCodeableConcept("packageCode", element.getPackageCode());
32401      }
32402  }
32403
32404  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
32405    if (element != null) {
32406      composeElementAttributes(element);
32407      xml.enter(FHIR_NS, name);
32408      composeExplanationOfBenefitProcedureComponentElements(element);
32409      composeElementClose(element);
32410      xml.exit(FHIR_NS, name);
32411    }
32412  }
32413
32414  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
32415      composeBackboneElementElements(element);
32416      if (element.hasSequenceElement()) {
32417        composePositiveInt("sequence", element.getSequenceElement());
32418      }
32419      if (element.hasDateElement()) {
32420        composeDateTime("date", element.getDateElement());
32421      }
32422      if (element.hasProcedure()) {
32423        composeType("procedure", element.getProcedure());
32424      }  }
32425
32426  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
32427    if (element != null) {
32428      composeElementAttributes(element);
32429      xml.enter(FHIR_NS, name);
32430      composeExplanationOfBenefitInsuranceComponentElements(element);
32431      composeElementClose(element);
32432      xml.exit(FHIR_NS, name);
32433    }
32434  }
32435
32436  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
32437      composeBackboneElementElements(element);
32438      if (element.hasCoverage()) {
32439        composeReference("coverage", element.getCoverage());
32440      }
32441      if (element.hasPreAuthRef()) { 
32442        for (StringType e : element.getPreAuthRef()) 
32443          composeString("preAuthRef", e);
32444      }
32445  }
32446
32447  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
32448    if (element != null) {
32449      composeElementAttributes(element);
32450      xml.enter(FHIR_NS, name);
32451      composeExplanationOfBenefitAccidentComponentElements(element);
32452      composeElementClose(element);
32453      xml.exit(FHIR_NS, name);
32454    }
32455  }
32456
32457  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
32458      composeBackboneElementElements(element);
32459      if (element.hasDateElement()) {
32460        composeDate("date", element.getDateElement());
32461      }
32462      if (element.hasType()) {
32463        composeCodeableConcept("type", element.getType());
32464      }
32465      if (element.hasLocation()) {
32466        composeType("location", element.getLocation());
32467      }  }
32468
32469  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
32470    if (element != null) {
32471      composeElementAttributes(element);
32472      xml.enter(FHIR_NS, name);
32473      composeExplanationOfBenefitItemComponentElements(element);
32474      composeElementClose(element);
32475      xml.exit(FHIR_NS, name);
32476    }
32477  }
32478
32479  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
32480      composeBackboneElementElements(element);
32481      if (element.hasSequenceElement()) {
32482        composePositiveInt("sequence", element.getSequenceElement());
32483      }
32484      if (element.hasCareTeamSequence()) { 
32485        for (PositiveIntType e : element.getCareTeamSequence()) 
32486          composePositiveInt("careTeamSequence", e);
32487      }
32488      if (element.hasDiagnosisSequence()) { 
32489        for (PositiveIntType e : element.getDiagnosisSequence()) 
32490          composePositiveInt("diagnosisSequence", e);
32491      }
32492      if (element.hasProcedureSequence()) { 
32493        for (PositiveIntType e : element.getProcedureSequence()) 
32494          composePositiveInt("procedureSequence", e);
32495      }
32496      if (element.hasInformationSequence()) { 
32497        for (PositiveIntType e : element.getInformationSequence()) 
32498          composePositiveInt("informationSequence", e);
32499      }
32500      if (element.hasRevenue()) {
32501        composeCodeableConcept("revenue", element.getRevenue());
32502      }
32503      if (element.hasCategory()) {
32504        composeCodeableConcept("category", element.getCategory());
32505      }
32506      if (element.hasService()) {
32507        composeCodeableConcept("service", element.getService());
32508      }
32509      if (element.hasModifier()) { 
32510        for (CodeableConcept e : element.getModifier()) 
32511          composeCodeableConcept("modifier", e);
32512      }
32513      if (element.hasProgramCode()) { 
32514        for (CodeableConcept e : element.getProgramCode()) 
32515          composeCodeableConcept("programCode", e);
32516      }
32517      if (element.hasServiced()) {
32518        composeType("serviced", element.getServiced());
32519      }      if (element.hasLocation()) {
32520        composeType("location", element.getLocation());
32521      }      if (element.hasQuantity()) {
32522        composeSimpleQuantity("quantity", element.getQuantity());
32523      }
32524      if (element.hasUnitPrice()) {
32525        composeMoney("unitPrice", element.getUnitPrice());
32526      }
32527      if (element.hasFactorElement()) {
32528        composeDecimal("factor", element.getFactorElement());
32529      }
32530      if (element.hasNet()) {
32531        composeMoney("net", element.getNet());
32532      }
32533      if (element.hasUdi()) { 
32534        for (Reference e : element.getUdi()) 
32535          composeReference("udi", e);
32536      }
32537      if (element.hasBodySite()) {
32538        composeCodeableConcept("bodySite", element.getBodySite());
32539      }
32540      if (element.hasSubSite()) { 
32541        for (CodeableConcept e : element.getSubSite()) 
32542          composeCodeableConcept("subSite", e);
32543      }
32544      if (element.hasEncounter()) { 
32545        for (Reference e : element.getEncounter()) 
32546          composeReference("encounter", e);
32547      }
32548      if (element.hasNoteNumber()) { 
32549        for (PositiveIntType e : element.getNoteNumber()) 
32550          composePositiveInt("noteNumber", e);
32551      }
32552      if (element.hasAdjudication()) { 
32553        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
32554          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
32555      }
32556      if (element.hasDetail()) { 
32557        for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
32558          composeExplanationOfBenefitDetailComponent("detail", e);
32559      }
32560  }
32561
32562  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
32563    if (element != null) {
32564      composeElementAttributes(element);
32565      xml.enter(FHIR_NS, name);
32566      composeExplanationOfBenefitAdjudicationComponentElements(element);
32567      composeElementClose(element);
32568      xml.exit(FHIR_NS, name);
32569    }
32570  }
32571
32572  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
32573      composeBackboneElementElements(element);
32574      if (element.hasCategory()) {
32575        composeCodeableConcept("category", element.getCategory());
32576      }
32577      if (element.hasReason()) {
32578        composeCodeableConcept("reason", element.getReason());
32579      }
32580      if (element.hasAmount()) {
32581        composeMoney("amount", element.getAmount());
32582      }
32583      if (element.hasValueElement()) {
32584        composeDecimal("value", element.getValueElement());
32585      }
32586  }
32587
32588  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
32589    if (element != null) {
32590      composeElementAttributes(element);
32591      xml.enter(FHIR_NS, name);
32592      composeExplanationOfBenefitDetailComponentElements(element);
32593      composeElementClose(element);
32594      xml.exit(FHIR_NS, name);
32595    }
32596  }
32597
32598  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
32599      composeBackboneElementElements(element);
32600      if (element.hasSequenceElement()) {
32601        composePositiveInt("sequence", element.getSequenceElement());
32602      }
32603      if (element.hasRevenue()) {
32604        composeCodeableConcept("revenue", element.getRevenue());
32605      }
32606      if (element.hasCategory()) {
32607        composeCodeableConcept("category", element.getCategory());
32608      }
32609      if (element.hasService()) {
32610        composeCodeableConcept("service", element.getService());
32611      }
32612      if (element.hasModifier()) { 
32613        for (CodeableConcept e : element.getModifier()) 
32614          composeCodeableConcept("modifier", e);
32615      }
32616      if (element.hasProgramCode()) { 
32617        for (CodeableConcept e : element.getProgramCode()) 
32618          composeCodeableConcept("programCode", e);
32619      }
32620      if (element.hasQuantity()) {
32621        composeSimpleQuantity("quantity", element.getQuantity());
32622      }
32623      if (element.hasUnitPrice()) {
32624        composeMoney("unitPrice", element.getUnitPrice());
32625      }
32626      if (element.hasFactorElement()) {
32627        composeDecimal("factor", element.getFactorElement());
32628      }
32629      if (element.hasNet()) {
32630        composeMoney("net", element.getNet());
32631      }
32632      if (element.hasUdi()) { 
32633        for (Reference e : element.getUdi()) 
32634          composeReference("udi", e);
32635      }
32636      if (element.hasNoteNumber()) { 
32637        for (PositiveIntType e : element.getNoteNumber()) 
32638          composePositiveInt("noteNumber", e);
32639      }
32640      if (element.hasAdjudication()) { 
32641        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
32642          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
32643      }
32644      if (element.hasSubDetail()) { 
32645        for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
32646          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
32647      }
32648  }
32649
32650  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
32651    if (element != null) {
32652      composeElementAttributes(element);
32653      xml.enter(FHIR_NS, name);
32654      composeExplanationOfBenefitSubDetailComponentElements(element);
32655      composeElementClose(element);
32656      xml.exit(FHIR_NS, name);
32657    }
32658  }
32659
32660  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
32661      composeBackboneElementElements(element);
32662      if (element.hasSequenceElement()) {
32663        composePositiveInt("sequence", element.getSequenceElement());
32664      }
32665      if (element.hasRevenue()) {
32666        composeCodeableConcept("revenue", element.getRevenue());
32667      }
32668      if (element.hasCategory()) {
32669        composeCodeableConcept("category", element.getCategory());
32670      }
32671      if (element.hasService()) {
32672        composeCodeableConcept("service", element.getService());
32673      }
32674      if (element.hasModifier()) { 
32675        for (CodeableConcept e : element.getModifier()) 
32676          composeCodeableConcept("modifier", e);
32677      }
32678      if (element.hasProgramCode()) { 
32679        for (CodeableConcept e : element.getProgramCode()) 
32680          composeCodeableConcept("programCode", e);
32681      }
32682      if (element.hasQuantity()) {
32683        composeSimpleQuantity("quantity", element.getQuantity());
32684      }
32685      if (element.hasUnitPrice()) {
32686        composeMoney("unitPrice", element.getUnitPrice());
32687      }
32688      if (element.hasFactorElement()) {
32689        composeDecimal("factor", element.getFactorElement());
32690      }
32691      if (element.hasNet()) {
32692        composeMoney("net", element.getNet());
32693      }
32694      if (element.hasUdi()) { 
32695        for (Reference e : element.getUdi()) 
32696          composeReference("udi", e);
32697      }
32698      if (element.hasNoteNumber()) { 
32699        for (PositiveIntType e : element.getNoteNumber()) 
32700          composePositiveInt("noteNumber", e);
32701      }
32702      if (element.hasAdjudication()) { 
32703        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
32704          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
32705      }
32706  }
32707
32708  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
32709    if (element != null) {
32710      composeElementAttributes(element);
32711      xml.enter(FHIR_NS, name);
32712      composeExplanationOfBenefitAddedItemComponentElements(element);
32713      composeElementClose(element);
32714      xml.exit(FHIR_NS, name);
32715    }
32716  }
32717
32718  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
32719      composeBackboneElementElements(element);
32720      if (element.hasItemSequence()) { 
32721        for (PositiveIntType e : element.getItemSequence()) 
32722          composePositiveInt("itemSequence", e);
32723      }
32724      if (element.hasDetailSequence()) { 
32725        for (PositiveIntType e : element.getDetailSequence()) 
32726          composePositiveInt("detailSequence", e);
32727      }
32728      if (element.hasSubDetailSequence()) { 
32729        for (PositiveIntType e : element.getSubDetailSequence()) 
32730          composePositiveInt("subDetailSequence", e);
32731      }
32732      if (element.hasService()) {
32733        composeCodeableConcept("service", element.getService());
32734      }
32735      if (element.hasModifier()) { 
32736        for (CodeableConcept e : element.getModifier()) 
32737          composeCodeableConcept("modifier", e);
32738      }
32739      if (element.hasFee()) {
32740        composeMoney("fee", element.getFee());
32741      }
32742      if (element.hasNoteNumber()) { 
32743        for (PositiveIntType e : element.getNoteNumber()) 
32744          composePositiveInt("noteNumber", e);
32745      }
32746      if (element.hasAdjudication()) { 
32747        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
32748          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
32749      }
32750  }
32751
32752  protected void composeExplanationOfBenefitTotalComponent(String name, ExplanationOfBenefit.TotalComponent element) throws IOException {
32753    if (element != null) {
32754      composeElementAttributes(element);
32755      xml.enter(FHIR_NS, name);
32756      composeExplanationOfBenefitTotalComponentElements(element);
32757      composeElementClose(element);
32758      xml.exit(FHIR_NS, name);
32759    }
32760  }
32761
32762  protected void composeExplanationOfBenefitTotalComponentElements(ExplanationOfBenefit.TotalComponent element) throws IOException {
32763      composeBackboneElementElements(element);
32764      if (element.hasCategory()) {
32765        composeCodeableConcept("category", element.getCategory());
32766      }
32767      if (element.hasAmount()) {
32768        composeMoney("amount", element.getAmount());
32769      }
32770  }
32771
32772  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
32773    if (element != null) {
32774      composeElementAttributes(element);
32775      xml.enter(FHIR_NS, name);
32776      composeExplanationOfBenefitPaymentComponentElements(element);
32777      composeElementClose(element);
32778      xml.exit(FHIR_NS, name);
32779    }
32780  }
32781
32782  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
32783      composeBackboneElementElements(element);
32784      if (element.hasType()) {
32785        composeCodeableConcept("type", element.getType());
32786      }
32787      if (element.hasAdjustment()) {
32788        composeMoney("adjustment", element.getAdjustment());
32789      }
32790      if (element.hasAdjustmentReason()) {
32791        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
32792      }
32793      if (element.hasDateElement()) {
32794        composeDate("date", element.getDateElement());
32795      }
32796      if (element.hasAmount()) {
32797        composeMoney("amount", element.getAmount());
32798      }
32799      if (element.hasIdentifier()) {
32800        composeIdentifier("identifier", element.getIdentifier());
32801      }
32802  }
32803
32804  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
32805    if (element != null) {
32806      composeElementAttributes(element);
32807      xml.enter(FHIR_NS, name);
32808      composeExplanationOfBenefitNoteComponentElements(element);
32809      composeElementClose(element);
32810      xml.exit(FHIR_NS, name);
32811    }
32812  }
32813
32814  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
32815      composeBackboneElementElements(element);
32816      if (element.hasNumberElement()) {
32817        composePositiveInt("number", element.getNumberElement());
32818      }
32819      if (element.hasTypeElement())
32820        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
32821      if (element.hasTextElement()) {
32822        composeString("text", element.getTextElement());
32823      }
32824      if (element.hasLanguage()) {
32825        composeCodeableConcept("language", element.getLanguage());
32826      }
32827  }
32828
32829  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
32830    if (element != null) {
32831      composeElementAttributes(element);
32832      xml.enter(FHIR_NS, name);
32833      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
32834      composeElementClose(element);
32835      xml.exit(FHIR_NS, name);
32836    }
32837  }
32838
32839  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
32840      composeBackboneElementElements(element);
32841      if (element.hasCategory()) {
32842        composeCodeableConcept("category", element.getCategory());
32843      }
32844      if (element.hasSubCategory()) {
32845        composeCodeableConcept("subCategory", element.getSubCategory());
32846      }
32847      if (element.hasExcludedElement()) {
32848        composeBoolean("excluded", element.getExcludedElement());
32849      }
32850      if (element.hasNameElement()) {
32851        composeString("name", element.getNameElement());
32852      }
32853      if (element.hasDescriptionElement()) {
32854        composeString("description", element.getDescriptionElement());
32855      }
32856      if (element.hasNetwork()) {
32857        composeCodeableConcept("network", element.getNetwork());
32858      }
32859      if (element.hasUnit()) {
32860        composeCodeableConcept("unit", element.getUnit());
32861      }
32862      if (element.hasTerm()) {
32863        composeCodeableConcept("term", element.getTerm());
32864      }
32865      if (element.hasFinancial()) { 
32866        for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
32867          composeExplanationOfBenefitBenefitComponent("financial", e);
32868      }
32869  }
32870
32871  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
32872    if (element != null) {
32873      composeElementAttributes(element);
32874      xml.enter(FHIR_NS, name);
32875      composeExplanationOfBenefitBenefitComponentElements(element);
32876      composeElementClose(element);
32877      xml.exit(FHIR_NS, name);
32878    }
32879  }
32880
32881  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
32882      composeBackboneElementElements(element);
32883      if (element.hasType()) {
32884        composeCodeableConcept("type", element.getType());
32885      }
32886      if (element.hasAllowed()) {
32887        composeType("allowed", element.getAllowed());
32888      }      if (element.hasUsed()) {
32889        composeType("used", element.getUsed());
32890      }  }
32891
32892  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
32893    if (element != null) {
32894      composeDomainResourceAttributes(element);
32895      xml.enter(FHIR_NS, name);
32896      composeFamilyMemberHistoryElements(element);
32897      composeElementClose(element);
32898      xml.exit(FHIR_NS, name);
32899    }
32900  }
32901
32902  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
32903      composeDomainResourceElements(element);
32904      if (element.hasIdentifier()) { 
32905        for (Identifier e : element.getIdentifier()) 
32906          composeIdentifier("identifier", e);
32907      }
32908      if (element.hasInstantiates()) { 
32909        for (UriType e : element.getInstantiates()) 
32910          composeUri("instantiates", e);
32911      }
32912      if (element.hasStatusElement())
32913        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
32914      if (element.hasDataAbsentReason()) {
32915        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
32916      }
32917      if (element.hasPatient()) {
32918        composeReference("patient", element.getPatient());
32919      }
32920      if (element.hasDateElement()) {
32921        composeDateTime("date", element.getDateElement());
32922      }
32923      if (element.hasNameElement()) {
32924        composeString("name", element.getNameElement());
32925      }
32926      if (element.hasRelationship()) {
32927        composeCodeableConcept("relationship", element.getRelationship());
32928      }
32929      if (element.hasGenderElement())
32930        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
32931      if (element.hasBorn()) {
32932        composeType("born", element.getBorn());
32933      }      if (element.hasAge()) {
32934        composeType("age", element.getAge());
32935      }      if (element.hasEstimatedAgeElement()) {
32936        composeBoolean("estimatedAge", element.getEstimatedAgeElement());
32937      }
32938      if (element.hasDeceased()) {
32939        composeType("deceased", element.getDeceased());
32940      }      if (element.hasReasonCode()) { 
32941        for (CodeableConcept e : element.getReasonCode()) 
32942          composeCodeableConcept("reasonCode", e);
32943      }
32944      if (element.hasReasonReference()) { 
32945        for (Reference e : element.getReasonReference()) 
32946          composeReference("reasonReference", e);
32947      }
32948      if (element.hasNote()) { 
32949        for (Annotation e : element.getNote()) 
32950          composeAnnotation("note", e);
32951      }
32952      if (element.hasCondition()) { 
32953        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
32954          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
32955      }
32956  }
32957
32958  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
32959    if (element != null) {
32960      composeElementAttributes(element);
32961      xml.enter(FHIR_NS, name);
32962      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(element);
32963      composeElementClose(element);
32964      xml.exit(FHIR_NS, name);
32965    }
32966  }
32967
32968  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
32969      composeBackboneElementElements(element);
32970      if (element.hasCode()) {
32971        composeCodeableConcept("code", element.getCode());
32972      }
32973      if (element.hasOutcome()) {
32974        composeCodeableConcept("outcome", element.getOutcome());
32975      }
32976      if (element.hasOnset()) {
32977        composeType("onset", element.getOnset());
32978      }      if (element.hasNote()) { 
32979        for (Annotation e : element.getNote()) 
32980          composeAnnotation("note", e);
32981      }
32982  }
32983
32984  protected void composeFlag(String name, Flag element) throws IOException {
32985    if (element != null) {
32986      composeDomainResourceAttributes(element);
32987      xml.enter(FHIR_NS, name);
32988      composeFlagElements(element);
32989      composeElementClose(element);
32990      xml.exit(FHIR_NS, name);
32991    }
32992  }
32993
32994  protected void composeFlagElements(Flag element) throws IOException {
32995      composeDomainResourceElements(element);
32996      if (element.hasIdentifier()) { 
32997        for (Identifier e : element.getIdentifier()) 
32998          composeIdentifier("identifier", e);
32999      }
33000      if (element.hasStatusElement())
33001        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
33002      if (element.hasCategory()) { 
33003        for (CodeableConcept e : element.getCategory()) 
33004          composeCodeableConcept("category", e);
33005      }
33006      if (element.hasCode()) {
33007        composeCodeableConcept("code", element.getCode());
33008      }
33009      if (element.hasSubject()) {
33010        composeReference("subject", element.getSubject());
33011      }
33012      if (element.hasPeriod()) {
33013        composePeriod("period", element.getPeriod());
33014      }
33015      if (element.hasEncounter()) {
33016        composeReference("encounter", element.getEncounter());
33017      }
33018      if (element.hasAuthor()) {
33019        composeReference("author", element.getAuthor());
33020      }
33021  }
33022
33023  protected void composeGoal(String name, Goal element) throws IOException {
33024    if (element != null) {
33025      composeDomainResourceAttributes(element);
33026      xml.enter(FHIR_NS, name);
33027      composeGoalElements(element);
33028      composeElementClose(element);
33029      xml.exit(FHIR_NS, name);
33030    }
33031  }
33032
33033  protected void composeGoalElements(Goal element) throws IOException {
33034      composeDomainResourceElements(element);
33035      if (element.hasIdentifier()) { 
33036        for (Identifier e : element.getIdentifier()) 
33037          composeIdentifier("identifier", e);
33038      }
33039      if (element.hasStatusElement())
33040        composeEnumeration("status", element.getStatusElement(), new Goal.GoalStatusEnumFactory());
33041      if (element.hasCategory()) { 
33042        for (CodeableConcept e : element.getCategory()) 
33043          composeCodeableConcept("category", e);
33044      }
33045      if (element.hasPriority()) {
33046        composeCodeableConcept("priority", element.getPriority());
33047      }
33048      if (element.hasDescription()) {
33049        composeCodeableConcept("description", element.getDescription());
33050      }
33051      if (element.hasSubject()) {
33052        composeReference("subject", element.getSubject());
33053      }
33054      if (element.hasStart()) {
33055        composeType("start", element.getStart());
33056      }      if (element.hasTarget()) {
33057        composeGoalGoalTargetComponent("target", element.getTarget());
33058      }
33059      if (element.hasStatusDateElement()) {
33060        composeDate("statusDate", element.getStatusDateElement());
33061      }
33062      if (element.hasStatusReasonElement()) {
33063        composeString("statusReason", element.getStatusReasonElement());
33064      }
33065      if (element.hasExpressedBy()) {
33066        composeReference("expressedBy", element.getExpressedBy());
33067      }
33068      if (element.hasAddresses()) { 
33069        for (Reference e : element.getAddresses()) 
33070          composeReference("addresses", e);
33071      }
33072      if (element.hasNote()) { 
33073        for (Annotation e : element.getNote()) 
33074          composeAnnotation("note", e);
33075      }
33076      if (element.hasOutcomeCode()) { 
33077        for (CodeableConcept e : element.getOutcomeCode()) 
33078          composeCodeableConcept("outcomeCode", e);
33079      }
33080      if (element.hasOutcomeReference()) { 
33081        for (Reference e : element.getOutcomeReference()) 
33082          composeReference("outcomeReference", e);
33083      }
33084  }
33085
33086  protected void composeGoalGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
33087    if (element != null) {
33088      composeElementAttributes(element);
33089      xml.enter(FHIR_NS, name);
33090      composeGoalGoalTargetComponentElements(element);
33091      composeElementClose(element);
33092      xml.exit(FHIR_NS, name);
33093    }
33094  }
33095
33096  protected void composeGoalGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
33097      composeBackboneElementElements(element);
33098      if (element.hasMeasure()) {
33099        composeCodeableConcept("measure", element.getMeasure());
33100      }
33101      if (element.hasDetail()) {
33102        composeType("detail", element.getDetail());
33103      }      if (element.hasDue()) {
33104        composeType("due", element.getDue());
33105      }  }
33106
33107  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
33108    if (element != null) {
33109      composeDomainResourceAttributes(element);
33110      xml.enter(FHIR_NS, name);
33111      composeGraphDefinitionElements(element);
33112      composeElementClose(element);
33113      xml.exit(FHIR_NS, name);
33114    }
33115  }
33116
33117  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
33118      composeDomainResourceElements(element);
33119      if (element.hasUrlElement()) {
33120        composeUri("url", element.getUrlElement());
33121      }
33122      if (element.hasVersionElement()) {
33123        composeString("version", element.getVersionElement());
33124      }
33125      if (element.hasNameElement()) {
33126        composeString("name", element.getNameElement());
33127      }
33128      if (element.hasStatusElement())
33129        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33130      if (element.hasExperimentalElement()) {
33131        composeBoolean("experimental", element.getExperimentalElement());
33132      }
33133      if (element.hasDateElement()) {
33134        composeDateTime("date", element.getDateElement());
33135      }
33136      if (element.hasPublisherElement()) {
33137        composeString("publisher", element.getPublisherElement());
33138      }
33139      if (element.hasContact()) { 
33140        for (ContactDetail e : element.getContact()) 
33141          composeContactDetail("contact", e);
33142      }
33143      if (element.hasDescriptionElement()) {
33144        composeMarkdown("description", element.getDescriptionElement());
33145      }
33146      if (element.hasUseContext()) { 
33147        for (UsageContext e : element.getUseContext()) 
33148          composeUsageContext("useContext", e);
33149      }
33150      if (element.hasJurisdiction()) { 
33151        for (CodeableConcept e : element.getJurisdiction()) 
33152          composeCodeableConcept("jurisdiction", e);
33153      }
33154      if (element.hasPurposeElement()) {
33155        composeMarkdown("purpose", element.getPurposeElement());
33156      }
33157      if (element.hasStartElement()) {
33158        composeCode("start", element.getStartElement());
33159      }
33160      if (element.hasProfileElement()) {
33161        composeCanonical("profile", element.getProfileElement());
33162      }
33163      if (element.hasLink()) { 
33164        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
33165          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
33166      }
33167  }
33168
33169  protected void composeGraphDefinitionGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
33170    if (element != null) {
33171      composeElementAttributes(element);
33172      xml.enter(FHIR_NS, name);
33173      composeGraphDefinitionGraphDefinitionLinkComponentElements(element);
33174      composeElementClose(element);
33175      xml.exit(FHIR_NS, name);
33176    }
33177  }
33178
33179  protected void composeGraphDefinitionGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
33180      composeBackboneElementElements(element);
33181      if (element.hasPathElement()) {
33182        composeString("path", element.getPathElement());
33183      }
33184      if (element.hasSliceNameElement()) {
33185        composeString("sliceName", element.getSliceNameElement());
33186      }
33187      if (element.hasMinElement()) {
33188        composeInteger("min", element.getMinElement());
33189      }
33190      if (element.hasMaxElement()) {
33191        composeString("max", element.getMaxElement());
33192      }
33193      if (element.hasDescriptionElement()) {
33194        composeString("description", element.getDescriptionElement());
33195      }
33196      if (element.hasTarget()) { 
33197        for (GraphDefinition.GraphDefinitionLinkTargetComponent e : element.getTarget()) 
33198          composeGraphDefinitionGraphDefinitionLinkTargetComponent("target", e);
33199      }
33200  }
33201
33202  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(String name, GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
33203    if (element != null) {
33204      composeElementAttributes(element);
33205      xml.enter(FHIR_NS, name);
33206      composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(element);
33207      composeElementClose(element);
33208      xml.exit(FHIR_NS, name);
33209    }
33210  }
33211
33212  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
33213      composeBackboneElementElements(element);
33214      if (element.hasTypeElement()) {
33215        composeCode("type", element.getTypeElement());
33216      }
33217      if (element.hasParamsElement()) {
33218        composeString("params", element.getParamsElement());
33219      }
33220      if (element.hasProfileElement()) {
33221        composeCanonical("profile", element.getProfileElement());
33222      }
33223      if (element.hasCompartment()) { 
33224        for (GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent e : element.getCompartment()) 
33225          composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent("compartment", e);
33226      }
33227      if (element.hasLink()) { 
33228        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
33229          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
33230      }
33231  }
33232
33233  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
33234    if (element != null) {
33235      composeElementAttributes(element);
33236      xml.enter(FHIR_NS, name);
33237      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(element);
33238      composeElementClose(element);
33239      xml.exit(FHIR_NS, name);
33240    }
33241  }
33242
33243  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
33244      composeBackboneElementElements(element);
33245      if (element.hasUseElement())
33246        composeEnumeration("use", element.getUseElement(), new GraphDefinition.GraphCompartmentUseEnumFactory());
33247      if (element.hasCodeElement())
33248        composeEnumeration("code", element.getCodeElement(), new GraphDefinition.CompartmentCodeEnumFactory());
33249      if (element.hasRuleElement())
33250        composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
33251      if (element.hasExpressionElement()) {
33252        composeString("expression", element.getExpressionElement());
33253      }
33254      if (element.hasDescriptionElement()) {
33255        composeString("description", element.getDescriptionElement());
33256      }
33257  }
33258
33259  protected void composeGroup(String name, Group element) throws IOException {
33260    if (element != null) {
33261      composeDomainResourceAttributes(element);
33262      xml.enter(FHIR_NS, name);
33263      composeGroupElements(element);
33264      composeElementClose(element);
33265      xml.exit(FHIR_NS, name);
33266    }
33267  }
33268
33269  protected void composeGroupElements(Group element) throws IOException {
33270      composeDomainResourceElements(element);
33271      if (element.hasIdentifier()) { 
33272        for (Identifier e : element.getIdentifier()) 
33273          composeIdentifier("identifier", e);
33274      }
33275      if (element.hasActiveElement()) {
33276        composeBoolean("active", element.getActiveElement());
33277      }
33278      if (element.hasTypeElement())
33279        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
33280      if (element.hasActualElement()) {
33281        composeBoolean("actual", element.getActualElement());
33282      }
33283      if (element.hasCode()) {
33284        composeCodeableConcept("code", element.getCode());
33285      }
33286      if (element.hasNameElement()) {
33287        composeString("name", element.getNameElement());
33288      }
33289      if (element.hasQuantityElement()) {
33290        composeUnsignedInt("quantity", element.getQuantityElement());
33291      }
33292      if (element.hasCharacteristic()) { 
33293        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
33294          composeGroupGroupCharacteristicComponent("characteristic", e);
33295      }
33296      if (element.hasMember()) { 
33297        for (Group.GroupMemberComponent e : element.getMember()) 
33298          composeGroupGroupMemberComponent("member", e);
33299      }
33300  }
33301
33302  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
33303    if (element != null) {
33304      composeElementAttributes(element);
33305      xml.enter(FHIR_NS, name);
33306      composeGroupGroupCharacteristicComponentElements(element);
33307      composeElementClose(element);
33308      xml.exit(FHIR_NS, name);
33309    }
33310  }
33311
33312  protected void composeGroupGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
33313      composeBackboneElementElements(element);
33314      if (element.hasCode()) {
33315        composeCodeableConcept("code", element.getCode());
33316      }
33317      if (element.hasValue()) {
33318        composeType("value", element.getValue());
33319      }      if (element.hasExcludeElement()) {
33320        composeBoolean("exclude", element.getExcludeElement());
33321      }
33322      if (element.hasPeriod()) {
33323        composePeriod("period", element.getPeriod());
33324      }
33325  }
33326
33327  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
33328    if (element != null) {
33329      composeElementAttributes(element);
33330      xml.enter(FHIR_NS, name);
33331      composeGroupGroupMemberComponentElements(element);
33332      composeElementClose(element);
33333      xml.exit(FHIR_NS, name);
33334    }
33335  }
33336
33337  protected void composeGroupGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
33338      composeBackboneElementElements(element);
33339      if (element.hasEntity()) {
33340        composeReference("entity", element.getEntity());
33341      }
33342      if (element.hasPeriod()) {
33343        composePeriod("period", element.getPeriod());
33344      }
33345      if (element.hasInactiveElement()) {
33346        composeBoolean("inactive", element.getInactiveElement());
33347      }
33348  }
33349
33350  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
33351    if (element != null) {
33352      composeDomainResourceAttributes(element);
33353      xml.enter(FHIR_NS, name);
33354      composeGuidanceResponseElements(element);
33355      composeElementClose(element);
33356      xml.exit(FHIR_NS, name);
33357    }
33358  }
33359
33360  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
33361      composeDomainResourceElements(element);
33362      if (element.hasRequestIdElement()) {
33363        composeId("requestId", element.getRequestIdElement());
33364      }
33365      if (element.hasIdentifier()) { 
33366        for (Identifier e : element.getIdentifier()) 
33367          composeIdentifier("identifier", e);
33368      }
33369      if (element.hasModule()) {
33370        composeType("module", element.getModule());
33371      }      if (element.hasStatusElement())
33372        composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
33373      if (element.hasSubject()) {
33374        composeReference("subject", element.getSubject());
33375      }
33376      if (element.hasContext()) {
33377        composeReference("context", element.getContext());
33378      }
33379      if (element.hasOccurrenceDateTimeElement()) {
33380        composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
33381      }
33382      if (element.hasPerformer()) {
33383        composeReference("performer", element.getPerformer());
33384      }
33385      if (element.hasReasonCode()) { 
33386        for (CodeableConcept e : element.getReasonCode()) 
33387          composeCodeableConcept("reasonCode", e);
33388      }
33389      if (element.hasReasonReference()) { 
33390        for (Reference e : element.getReasonReference()) 
33391          composeReference("reasonReference", e);
33392      }
33393      if (element.hasNote()) { 
33394        for (Annotation e : element.getNote()) 
33395          composeAnnotation("note", e);
33396      }
33397      if (element.hasEvaluationMessage()) { 
33398        for (Reference e : element.getEvaluationMessage()) 
33399          composeReference("evaluationMessage", e);
33400      }
33401      if (element.hasOutputParameters()) {
33402        composeReference("outputParameters", element.getOutputParameters());
33403      }
33404      if (element.hasResult()) {
33405        composeReference("result", element.getResult());
33406      }
33407      if (element.hasDataRequirement()) { 
33408        for (DataRequirement e : element.getDataRequirement()) 
33409          composeDataRequirement("dataRequirement", e);
33410      }
33411  }
33412
33413  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
33414    if (element != null) {
33415      composeDomainResourceAttributes(element);
33416      xml.enter(FHIR_NS, name);
33417      composeHealthcareServiceElements(element);
33418      composeElementClose(element);
33419      xml.exit(FHIR_NS, name);
33420    }
33421  }
33422
33423  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
33424      composeDomainResourceElements(element);
33425      if (element.hasIdentifier()) { 
33426        for (Identifier e : element.getIdentifier()) 
33427          composeIdentifier("identifier", e);
33428      }
33429      if (element.hasActiveElement()) {
33430        composeBoolean("active", element.getActiveElement());
33431      }
33432      if (element.hasProvidedBy()) {
33433        composeReference("providedBy", element.getProvidedBy());
33434      }
33435      if (element.hasCategory()) { 
33436        for (CodeableConcept e : element.getCategory()) 
33437          composeCodeableConcept("category", e);
33438      }
33439      if (element.hasType()) { 
33440        for (CodeableConcept e : element.getType()) 
33441          composeCodeableConcept("type", e);
33442      }
33443      if (element.hasSpecialty()) { 
33444        for (CodeableConcept e : element.getSpecialty()) 
33445          composeCodeableConcept("specialty", e);
33446      }
33447      if (element.hasLocation()) { 
33448        for (Reference e : element.getLocation()) 
33449          composeReference("location", e);
33450      }
33451      if (element.hasNameElement()) {
33452        composeString("name", element.getNameElement());
33453      }
33454      if (element.hasCommentElement()) {
33455        composeString("comment", element.getCommentElement());
33456      }
33457      if (element.hasExtraDetailsElement()) {
33458        composeString("extraDetails", element.getExtraDetailsElement());
33459      }
33460      if (element.hasPhoto()) {
33461        composeAttachment("photo", element.getPhoto());
33462      }
33463      if (element.hasTelecom()) { 
33464        for (ContactPoint e : element.getTelecom()) 
33465          composeContactPoint("telecom", e);
33466      }
33467      if (element.hasCoverageArea()) { 
33468        for (Reference e : element.getCoverageArea()) 
33469          composeReference("coverageArea", e);
33470      }
33471      if (element.hasServiceProvisionCode()) { 
33472        for (CodeableConcept e : element.getServiceProvisionCode()) 
33473          composeCodeableConcept("serviceProvisionCode", e);
33474      }
33475      if (element.hasEligibility()) {
33476        composeCodeableConcept("eligibility", element.getEligibility());
33477      }
33478      if (element.hasEligibilityNoteElement()) {
33479        composeString("eligibilityNote", element.getEligibilityNoteElement());
33480      }
33481      if (element.hasProgramName()) { 
33482        for (StringType e : element.getProgramName()) 
33483          composeString("programName", e);
33484      }
33485      if (element.hasCharacteristic()) { 
33486        for (CodeableConcept e : element.getCharacteristic()) 
33487          composeCodeableConcept("characteristic", e);
33488      }
33489      if (element.hasReferralMethod()) { 
33490        for (CodeableConcept e : element.getReferralMethod()) 
33491          composeCodeableConcept("referralMethod", e);
33492      }
33493      if (element.hasAppointmentRequiredElement()) {
33494        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
33495      }
33496      if (element.hasAvailableTime()) { 
33497        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
33498          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
33499      }
33500      if (element.hasNotAvailable()) { 
33501        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
33502          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
33503      }
33504      if (element.hasAvailabilityExceptionsElement()) {
33505        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
33506      }
33507      if (element.hasEndpoint()) { 
33508        for (Reference e : element.getEndpoint()) 
33509          composeReference("endpoint", e);
33510      }
33511  }
33512
33513  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
33514    if (element != null) {
33515      composeElementAttributes(element);
33516      xml.enter(FHIR_NS, name);
33517      composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(element);
33518      composeElementClose(element);
33519      xml.exit(FHIR_NS, name);
33520    }
33521  }
33522
33523  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
33524      composeBackboneElementElements(element);
33525        if (element.hasDaysOfWeek()) 
33526          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
33527            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
33528      if (element.hasAllDayElement()) {
33529        composeBoolean("allDay", element.getAllDayElement());
33530      }
33531      if (element.hasAvailableStartTimeElement()) {
33532        composeTime("availableStartTime", element.getAvailableStartTimeElement());
33533      }
33534      if (element.hasAvailableEndTimeElement()) {
33535        composeTime("availableEndTime", element.getAvailableEndTimeElement());
33536      }
33537  }
33538
33539  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
33540    if (element != null) {
33541      composeElementAttributes(element);
33542      xml.enter(FHIR_NS, name);
33543      composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(element);
33544      composeElementClose(element);
33545      xml.exit(FHIR_NS, name);
33546    }
33547  }
33548
33549  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
33550      composeBackboneElementElements(element);
33551      if (element.hasDescriptionElement()) {
33552        composeString("description", element.getDescriptionElement());
33553      }
33554      if (element.hasDuring()) {
33555        composePeriod("during", element.getDuring());
33556      }
33557  }
33558
33559  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
33560    if (element != null) {
33561      composeDomainResourceAttributes(element);
33562      xml.enter(FHIR_NS, name);
33563      composeImagingStudyElements(element);
33564      composeElementClose(element);
33565      xml.exit(FHIR_NS, name);
33566    }
33567  }
33568
33569  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
33570      composeDomainResourceElements(element);
33571      if (element.hasIdentifier()) { 
33572        for (Identifier e : element.getIdentifier()) 
33573          composeIdentifier("identifier", e);
33574      }
33575      if (element.hasStatusElement())
33576        composeEnumeration("status", element.getStatusElement(), new ImagingStudy.ImagingStudyStatusEnumFactory());
33577      if (element.hasModality()) { 
33578        for (Coding e : element.getModality()) 
33579          composeCoding("modality", e);
33580      }
33581      if (element.hasSubject()) {
33582        composeReference("subject", element.getSubject());
33583      }
33584      if (element.hasContext()) {
33585        composeReference("context", element.getContext());
33586      }
33587      if (element.hasStartedElement()) {
33588        composeDateTime("started", element.getStartedElement());
33589      }
33590      if (element.hasBasedOn()) { 
33591        for (Reference e : element.getBasedOn()) 
33592          composeReference("basedOn", e);
33593      }
33594      if (element.hasReferrer()) {
33595        composeReference("referrer", element.getReferrer());
33596      }
33597      if (element.hasInterpreter()) { 
33598        for (Reference e : element.getInterpreter()) 
33599          composeReference("interpreter", e);
33600      }
33601      if (element.hasEndpoint()) { 
33602        for (Reference e : element.getEndpoint()) 
33603          composeReference("endpoint", e);
33604      }
33605      if (element.hasNumberOfSeriesElement()) {
33606        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
33607      }
33608      if (element.hasNumberOfInstancesElement()) {
33609        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
33610      }
33611      if (element.hasProcedureReference()) {
33612        composeReference("procedureReference", element.getProcedureReference());
33613      }
33614      if (element.hasProcedureCode()) { 
33615        for (CodeableConcept e : element.getProcedureCode()) 
33616          composeCodeableConcept("procedureCode", e);
33617      }
33618      if (element.hasLocation()) {
33619        composeReference("location", element.getLocation());
33620      }
33621      if (element.hasReasonCode()) { 
33622        for (CodeableConcept e : element.getReasonCode()) 
33623          composeCodeableConcept("reasonCode", e);
33624      }
33625      if (element.hasReasonReference()) { 
33626        for (Reference e : element.getReasonReference()) 
33627          composeReference("reasonReference", e);
33628      }
33629      if (element.hasNote()) { 
33630        for (Annotation e : element.getNote()) 
33631          composeAnnotation("note", e);
33632      }
33633      if (element.hasSeries()) { 
33634        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
33635          composeImagingStudyImagingStudySeriesComponent("series", e);
33636      }
33637  }
33638
33639  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
33640    if (element != null) {
33641      composeElementAttributes(element);
33642      xml.enter(FHIR_NS, name);
33643      composeImagingStudyImagingStudySeriesComponentElements(element);
33644      composeElementClose(element);
33645      xml.exit(FHIR_NS, name);
33646    }
33647  }
33648
33649  protected void composeImagingStudyImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
33650      composeBackboneElementElements(element);
33651      if (element.hasIdentifier()) {
33652        composeIdentifier("identifier", element.getIdentifier());
33653      }
33654      if (element.hasNumberElement()) {
33655        composeUnsignedInt("number", element.getNumberElement());
33656      }
33657      if (element.hasModality()) {
33658        composeCoding("modality", element.getModality());
33659      }
33660      if (element.hasDescriptionElement()) {
33661        composeString("description", element.getDescriptionElement());
33662      }
33663      if (element.hasNumberOfInstancesElement()) {
33664        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
33665      }
33666      if (element.hasEndpoint()) { 
33667        for (Reference e : element.getEndpoint()) 
33668          composeReference("endpoint", e);
33669      }
33670      if (element.hasBodySite()) {
33671        composeCoding("bodySite", element.getBodySite());
33672      }
33673      if (element.hasLaterality()) {
33674        composeCoding("laterality", element.getLaterality());
33675      }
33676      if (element.hasSpecimen()) { 
33677        for (Reference e : element.getSpecimen()) 
33678          composeReference("specimen", e);
33679      }
33680      if (element.hasStartedElement()) {
33681        composeDateTime("started", element.getStartedElement());
33682      }
33683      if (element.hasPerformer()) { 
33684        for (ImagingStudy.ImagingStudySeriesPerformerComponent e : element.getPerformer()) 
33685          composeImagingStudyImagingStudySeriesPerformerComponent("performer", e);
33686      }
33687      if (element.hasInstance()) { 
33688        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
33689          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
33690      }
33691  }
33692
33693  protected void composeImagingStudyImagingStudySeriesPerformerComponent(String name, ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
33694    if (element != null) {
33695      composeElementAttributes(element);
33696      xml.enter(FHIR_NS, name);
33697      composeImagingStudyImagingStudySeriesPerformerComponentElements(element);
33698      composeElementClose(element);
33699      xml.exit(FHIR_NS, name);
33700    }
33701  }
33702
33703  protected void composeImagingStudyImagingStudySeriesPerformerComponentElements(ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
33704      composeBackboneElementElements(element);
33705      if (element.hasFunction()) {
33706        composeCodeableConcept("function", element.getFunction());
33707      }
33708      if (element.hasActor()) {
33709        composeReference("actor", element.getActor());
33710      }
33711  }
33712
33713  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
33714    if (element != null) {
33715      composeElementAttributes(element);
33716      xml.enter(FHIR_NS, name);
33717      composeImagingStudyImagingStudySeriesInstanceComponentElements(element);
33718      composeElementClose(element);
33719      xml.exit(FHIR_NS, name);
33720    }
33721  }
33722
33723  protected void composeImagingStudyImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
33724      composeBackboneElementElements(element);
33725      if (element.hasIdentifier()) {
33726        composeIdentifier("identifier", element.getIdentifier());
33727      }
33728      if (element.hasNumberElement()) {
33729        composeUnsignedInt("number", element.getNumberElement());
33730      }
33731      if (element.hasSopClass()) {
33732        composeCoding("sopClass", element.getSopClass());
33733      }
33734      if (element.hasTitleElement()) {
33735        composeString("title", element.getTitleElement());
33736      }
33737  }
33738
33739  protected void composeImmunization(String name, Immunization element) throws IOException {
33740    if (element != null) {
33741      composeDomainResourceAttributes(element);
33742      xml.enter(FHIR_NS, name);
33743      composeImmunizationElements(element);
33744      composeElementClose(element);
33745      xml.exit(FHIR_NS, name);
33746    }
33747  }
33748
33749  protected void composeImmunizationElements(Immunization element) throws IOException {
33750      composeDomainResourceElements(element);
33751      if (element.hasIdentifier()) { 
33752        for (Identifier e : element.getIdentifier()) 
33753          composeIdentifier("identifier", e);
33754      }
33755      if (element.hasStatusElement())
33756        composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusEnumFactory());
33757      if (element.hasStatusReason()) {
33758        composeCodeableConcept("statusReason", element.getStatusReason());
33759      }
33760      if (element.hasVaccineCode()) {
33761        composeCodeableConcept("vaccineCode", element.getVaccineCode());
33762      }
33763      if (element.hasPatient()) {
33764        composeReference("patient", element.getPatient());
33765      }
33766      if (element.hasEncounter()) {
33767        composeReference("encounter", element.getEncounter());
33768      }
33769      if (element.hasDateElement()) {
33770        composeDateTime("date", element.getDateElement());
33771      }
33772      if (element.hasPrimarySourceElement()) {
33773        composeBoolean("primarySource", element.getPrimarySourceElement());
33774      }
33775      if (element.hasReportOrigin()) {
33776        composeCodeableConcept("reportOrigin", element.getReportOrigin());
33777      }
33778      if (element.hasLocation()) {
33779        composeReference("location", element.getLocation());
33780      }
33781      if (element.hasManufacturer()) {
33782        composeReference("manufacturer", element.getManufacturer());
33783      }
33784      if (element.hasLotNumberElement()) {
33785        composeString("lotNumber", element.getLotNumberElement());
33786      }
33787      if (element.hasExpirationDateElement()) {
33788        composeDate("expirationDate", element.getExpirationDateElement());
33789      }
33790      if (element.hasSite()) {
33791        composeCodeableConcept("site", element.getSite());
33792      }
33793      if (element.hasRoute()) {
33794        composeCodeableConcept("route", element.getRoute());
33795      }
33796      if (element.hasDoseQuantity()) {
33797        composeSimpleQuantity("doseQuantity", element.getDoseQuantity());
33798      }
33799      if (element.hasPerformer()) { 
33800        for (Immunization.ImmunizationPerformerComponent e : element.getPerformer()) 
33801          composeImmunizationImmunizationPerformerComponent("performer", e);
33802      }
33803      if (element.hasNote()) { 
33804        for (Annotation e : element.getNote()) 
33805          composeAnnotation("note", e);
33806      }
33807      if (element.hasReasonCode()) { 
33808        for (CodeableConcept e : element.getReasonCode()) 
33809          composeCodeableConcept("reasonCode", e);
33810      }
33811      if (element.hasReasonReference()) { 
33812        for (Reference e : element.getReasonReference()) 
33813          composeReference("reasonReference", e);
33814      }
33815      if (element.hasIsPotentElement()) {
33816        composeBoolean("isPotent", element.getIsPotentElement());
33817      }
33818      if (element.hasSubpotentReason()) { 
33819        for (CodeableConcept e : element.getSubpotentReason()) 
33820          composeCodeableConcept("subpotentReason", e);
33821      }
33822      if (element.hasEducation()) { 
33823        for (Immunization.ImmunizationEducationComponent e : element.getEducation()) 
33824          composeImmunizationImmunizationEducationComponent("education", e);
33825      }
33826      if (element.hasProgramEligibility()) { 
33827        for (CodeableConcept e : element.getProgramEligibility()) 
33828          composeCodeableConcept("programEligibility", e);
33829      }
33830      if (element.hasFundingSource()) {
33831        composeCodeableConcept("fundingSource", element.getFundingSource());
33832      }
33833  }
33834
33835  protected void composeImmunizationImmunizationPerformerComponent(String name, Immunization.ImmunizationPerformerComponent element) throws IOException {
33836    if (element != null) {
33837      composeElementAttributes(element);
33838      xml.enter(FHIR_NS, name);
33839      composeImmunizationImmunizationPerformerComponentElements(element);
33840      composeElementClose(element);
33841      xml.exit(FHIR_NS, name);
33842    }
33843  }
33844
33845  protected void composeImmunizationImmunizationPerformerComponentElements(Immunization.ImmunizationPerformerComponent element) throws IOException {
33846      composeBackboneElementElements(element);
33847      if (element.hasFunction()) {
33848        composeCodeableConcept("function", element.getFunction());
33849      }
33850      if (element.hasActor()) {
33851        composeReference("actor", element.getActor());
33852      }
33853  }
33854
33855  protected void composeImmunizationImmunizationEducationComponent(String name, Immunization.ImmunizationEducationComponent element) throws IOException {
33856    if (element != null) {
33857      composeElementAttributes(element);
33858      xml.enter(FHIR_NS, name);
33859      composeImmunizationImmunizationEducationComponentElements(element);
33860      composeElementClose(element);
33861      xml.exit(FHIR_NS, name);
33862    }
33863  }
33864
33865  protected void composeImmunizationImmunizationEducationComponentElements(Immunization.ImmunizationEducationComponent element) throws IOException {
33866      composeBackboneElementElements(element);
33867      if (element.hasDocumentTypeElement()) {
33868        composeString("documentType", element.getDocumentTypeElement());
33869      }
33870      if (element.hasReferenceElement()) {
33871        composeUri("reference", element.getReferenceElement());
33872      }
33873      if (element.hasPublicationDateElement()) {
33874        composeDateTime("publicationDate", element.getPublicationDateElement());
33875      }
33876      if (element.hasPresentationDateElement()) {
33877        composeDateTime("presentationDate", element.getPresentationDateElement());
33878      }
33879  }
33880
33881  protected void composeImmunizationEvaluation(String name, ImmunizationEvaluation element) throws IOException {
33882    if (element != null) {
33883      composeDomainResourceAttributes(element);
33884      xml.enter(FHIR_NS, name);
33885      composeImmunizationEvaluationElements(element);
33886      composeElementClose(element);
33887      xml.exit(FHIR_NS, name);
33888    }
33889  }
33890
33891  protected void composeImmunizationEvaluationElements(ImmunizationEvaluation element) throws IOException {
33892      composeDomainResourceElements(element);
33893      if (element.hasIdentifier()) { 
33894        for (Identifier e : element.getIdentifier()) 
33895          composeIdentifier("identifier", e);
33896      }
33897      if (element.hasStatusElement())
33898        composeEnumeration("status", element.getStatusElement(), new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory());
33899      if (element.hasPatient()) {
33900        composeReference("patient", element.getPatient());
33901      }
33902      if (element.hasDateElement()) {
33903        composeDateTime("date", element.getDateElement());
33904      }
33905      if (element.hasAuthority()) {
33906        composeReference("authority", element.getAuthority());
33907      }
33908      if (element.hasTargetDisease()) { 
33909        for (CodeableConcept e : element.getTargetDisease()) 
33910          composeCodeableConcept("targetDisease", e);
33911      }
33912      if (element.hasImmunizationEvent()) {
33913        composeReference("immunizationEvent", element.getImmunizationEvent());
33914      }
33915      if (element.hasDoseStatus()) {
33916        composeCodeableConcept("doseStatus", element.getDoseStatus());
33917      }
33918      if (element.hasDoseStatusReason()) { 
33919        for (CodeableConcept e : element.getDoseStatusReason()) 
33920          composeCodeableConcept("doseStatusReason", e);
33921      }
33922      if (element.hasDescriptionElement()) {
33923        composeString("description", element.getDescriptionElement());
33924      }
33925      if (element.hasSeriesElement()) {
33926        composeString("series", element.getSeriesElement());
33927      }
33928      if (element.hasDoseNumber()) {
33929        composeType("doseNumber", element.getDoseNumber());
33930      }      if (element.hasSeriesDoses()) {
33931        composeType("seriesDoses", element.getSeriesDoses());
33932      }  }
33933
33934  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
33935    if (element != null) {
33936      composeDomainResourceAttributes(element);
33937      xml.enter(FHIR_NS, name);
33938      composeImmunizationRecommendationElements(element);
33939      composeElementClose(element);
33940      xml.exit(FHIR_NS, name);
33941    }
33942  }
33943
33944  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
33945      composeDomainResourceElements(element);
33946      if (element.hasIdentifier()) { 
33947        for (Identifier e : element.getIdentifier()) 
33948          composeIdentifier("identifier", e);
33949      }
33950      if (element.hasPatient()) {
33951        composeReference("patient", element.getPatient());
33952      }
33953      if (element.hasDateElement()) {
33954        composeDateTime("date", element.getDateElement());
33955      }
33956      if (element.hasAuthority()) {
33957        composeReference("authority", element.getAuthority());
33958      }
33959      if (element.hasRecommendation()) { 
33960        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
33961          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
33962      }
33963  }
33964
33965  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
33966    if (element != null) {
33967      composeElementAttributes(element);
33968      xml.enter(FHIR_NS, name);
33969      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(element);
33970      composeElementClose(element);
33971      xml.exit(FHIR_NS, name);
33972    }
33973  }
33974
33975  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
33976      composeBackboneElementElements(element);
33977      if (element.hasVaccineCode()) { 
33978        for (CodeableConcept e : element.getVaccineCode()) 
33979          composeCodeableConcept("vaccineCode", e);
33980      }
33981      if (element.hasTargetDisease()) {
33982        composeCodeableConcept("targetDisease", element.getTargetDisease());
33983      }
33984      if (element.hasContraindicatedVaccineCode()) { 
33985        for (CodeableConcept e : element.getContraindicatedVaccineCode()) 
33986          composeCodeableConcept("contraindicatedVaccineCode", e);
33987      }
33988      if (element.hasForecastStatus()) {
33989        composeCodeableConcept("forecastStatus", element.getForecastStatus());
33990      }
33991      if (element.hasForecastReason()) { 
33992        for (CodeableConcept e : element.getForecastReason()) 
33993          composeCodeableConcept("forecastReason", e);
33994      }
33995      if (element.hasDateCriterion()) { 
33996        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
33997          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
33998      }
33999      if (element.hasDescriptionElement()) {
34000        composeString("description", element.getDescriptionElement());
34001      }
34002      if (element.hasSeriesElement()) {
34003        composeString("series", element.getSeriesElement());
34004      }
34005      if (element.hasDoseNumber()) {
34006        composeType("doseNumber", element.getDoseNumber());
34007      }      if (element.hasSeriesDoses()) {
34008        composeType("seriesDoses", element.getSeriesDoses());
34009      }      if (element.hasSupportingImmunization()) { 
34010        for (Reference e : element.getSupportingImmunization()) 
34011          composeReference("supportingImmunization", e);
34012      }
34013      if (element.hasSupportingPatientInformation()) { 
34014        for (Reference e : element.getSupportingPatientInformation()) 
34015          composeReference("supportingPatientInformation", e);
34016      }
34017  }
34018
34019  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
34020    if (element != null) {
34021      composeElementAttributes(element);
34022      xml.enter(FHIR_NS, name);
34023      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
34024      composeElementClose(element);
34025      xml.exit(FHIR_NS, name);
34026    }
34027  }
34028
34029  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
34030      composeBackboneElementElements(element);
34031      if (element.hasCode()) {
34032        composeCodeableConcept("code", element.getCode());
34033      }
34034      if (element.hasValueElement()) {
34035        composeDateTime("value", element.getValueElement());
34036      }
34037  }
34038
34039  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
34040    if (element != null) {
34041      composeDomainResourceAttributes(element);
34042      xml.enter(FHIR_NS, name);
34043      composeImplementationGuideElements(element);
34044      composeElementClose(element);
34045      xml.exit(FHIR_NS, name);
34046    }
34047  }
34048
34049  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
34050      composeDomainResourceElements(element);
34051      if (element.hasUrlElement()) {
34052        composeUri("url", element.getUrlElement());
34053      }
34054      if (element.hasVersionElement()) {
34055        composeString("version", element.getVersionElement());
34056      }
34057      if (element.hasNameElement()) {
34058        composeString("name", element.getNameElement());
34059      }
34060      if (element.hasStatusElement())
34061        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34062      if (element.hasExperimentalElement()) {
34063        composeBoolean("experimental", element.getExperimentalElement());
34064      }
34065      if (element.hasDateElement()) {
34066        composeDateTime("date", element.getDateElement());
34067      }
34068      if (element.hasPublisherElement()) {
34069        composeString("publisher", element.getPublisherElement());
34070      }
34071      if (element.hasContact()) { 
34072        for (ContactDetail e : element.getContact()) 
34073          composeContactDetail("contact", e);
34074      }
34075      if (element.hasDescriptionElement()) {
34076        composeMarkdown("description", element.getDescriptionElement());
34077      }
34078      if (element.hasUseContext()) { 
34079        for (UsageContext e : element.getUseContext()) 
34080          composeUsageContext("useContext", e);
34081      }
34082      if (element.hasJurisdiction()) { 
34083        for (CodeableConcept e : element.getJurisdiction()) 
34084          composeCodeableConcept("jurisdiction", e);
34085      }
34086      if (element.hasCopyrightElement()) {
34087        composeMarkdown("copyright", element.getCopyrightElement());
34088      }
34089      if (element.hasFhirVersionElement()) {
34090        composeId("fhirVersion", element.getFhirVersionElement());
34091      }
34092      if (element.hasDependsOn()) { 
34093        for (ImplementationGuide.ImplementationGuideDependsOnComponent e : element.getDependsOn()) 
34094          composeImplementationGuideImplementationGuideDependsOnComponent("dependsOn", e);
34095      }
34096      if (element.hasGlobal()) { 
34097        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
34098          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
34099      }
34100      if (element.hasDefinition()) {
34101        composeImplementationGuideImplementationGuideDefinitionComponent("definition", element.getDefinition());
34102      }
34103      if (element.hasManifest()) {
34104        composeImplementationGuideImplementationGuideManifestComponent("manifest", element.getManifest());
34105      }
34106  }
34107
34108  protected void composeImplementationGuideImplementationGuideDependsOnComponent(String name, ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
34109    if (element != null) {
34110      composeElementAttributes(element);
34111      xml.enter(FHIR_NS, name);
34112      composeImplementationGuideImplementationGuideDependsOnComponentElements(element);
34113      composeElementClose(element);
34114      xml.exit(FHIR_NS, name);
34115    }
34116  }
34117
34118  protected void composeImplementationGuideImplementationGuideDependsOnComponentElements(ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
34119      composeBackboneElementElements(element);
34120      if (element.hasUriElement()) {
34121        composeCanonical("uri", element.getUriElement());
34122      }
34123      if (element.hasVersionElement()) {
34124        composeString("version", element.getVersionElement());
34125      }
34126  }
34127
34128  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
34129    if (element != null) {
34130      composeElementAttributes(element);
34131      xml.enter(FHIR_NS, name);
34132      composeImplementationGuideImplementationGuideGlobalComponentElements(element);
34133      composeElementClose(element);
34134      xml.exit(FHIR_NS, name);
34135    }
34136  }
34137
34138  protected void composeImplementationGuideImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
34139      composeBackboneElementElements(element);
34140      if (element.hasTypeElement()) {
34141        composeCode("type", element.getTypeElement());
34142      }
34143      if (element.hasProfileElement()) {
34144        composeCanonical("profile", element.getProfileElement());
34145      }
34146  }
34147
34148  protected void composeImplementationGuideImplementationGuideDefinitionComponent(String name, ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
34149    if (element != null) {
34150      composeElementAttributes(element);
34151      xml.enter(FHIR_NS, name);
34152      composeImplementationGuideImplementationGuideDefinitionComponentElements(element);
34153      composeElementClose(element);
34154      xml.exit(FHIR_NS, name);
34155    }
34156  }
34157
34158  protected void composeImplementationGuideImplementationGuideDefinitionComponentElements(ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
34159      composeBackboneElementElements(element);
34160      if (element.hasPackage()) { 
34161        for (ImplementationGuide.ImplementationGuideDefinitionPackageComponent e : element.getPackage()) 
34162          composeImplementationGuideImplementationGuideDefinitionPackageComponent("package", e);
34163      }
34164      if (element.hasResource()) { 
34165        for (ImplementationGuide.ImplementationGuideDefinitionResourceComponent e : element.getResource()) 
34166          composeImplementationGuideImplementationGuideDefinitionResourceComponent("resource", e);
34167      }
34168      if (element.hasPage()) {
34169        composeImplementationGuideImplementationGuideDefinitionPageComponent("page", element.getPage());
34170      }
34171      if (element.hasParameter()) { 
34172        for (ImplementationGuide.ImplementationGuideDefinitionParameterComponent e : element.getParameter()) 
34173          composeImplementationGuideImplementationGuideDefinitionParameterComponent("parameter", e);
34174      }
34175      if (element.hasTemplate()) { 
34176        for (ImplementationGuide.ImplementationGuideDefinitionTemplateComponent e : element.getTemplate()) 
34177          composeImplementationGuideImplementationGuideDefinitionTemplateComponent("template", e);
34178      }
34179  }
34180
34181  protected void composeImplementationGuideImplementationGuideDefinitionPackageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPackageComponent element) throws IOException {
34182    if (element != null) {
34183      composeElementAttributes(element);
34184      xml.enter(FHIR_NS, name);
34185      composeImplementationGuideImplementationGuideDefinitionPackageComponentElements(element);
34186      composeElementClose(element);
34187      xml.exit(FHIR_NS, name);
34188    }
34189  }
34190
34191  protected void composeImplementationGuideImplementationGuideDefinitionPackageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPackageComponent element) throws IOException {
34192      composeBackboneElementElements(element);
34193      if (element.hasNameElement()) {
34194        composeString("name", element.getNameElement());
34195      }
34196      if (element.hasDescriptionElement()) {
34197        composeString("description", element.getDescriptionElement());
34198      }
34199  }
34200
34201  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponent(String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
34202    if (element != null) {
34203      composeElementAttributes(element);
34204      xml.enter(FHIR_NS, name);
34205      composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(element);
34206      composeElementClose(element);
34207      xml.exit(FHIR_NS, name);
34208    }
34209  }
34210
34211  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
34212      composeBackboneElementElements(element);
34213      if (element.hasReference()) {
34214        composeReference("reference", element.getReference());
34215      }
34216      if (element.hasNameElement()) {
34217        composeString("name", element.getNameElement());
34218      }
34219      if (element.hasDescriptionElement()) {
34220        composeString("description", element.getDescriptionElement());
34221      }
34222      if (element.hasExample()) {
34223        composeType("example", element.getExample());
34224      }      if (element.hasPackageElement()) {
34225        composeId("package", element.getPackageElement());
34226      }
34227  }
34228
34229  protected void composeImplementationGuideImplementationGuideDefinitionPageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
34230    if (element != null) {
34231      composeElementAttributes(element);
34232      xml.enter(FHIR_NS, name);
34233      composeImplementationGuideImplementationGuideDefinitionPageComponentElements(element);
34234      composeElementClose(element);
34235      xml.exit(FHIR_NS, name);
34236    }
34237  }
34238
34239  protected void composeImplementationGuideImplementationGuideDefinitionPageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
34240      composeBackboneElementElements(element);
34241      if (element.hasName()) {
34242        composeType("name", element.getName());
34243      }      if (element.hasTitleElement()) {
34244        composeString("title", element.getTitleElement());
34245      }
34246      if (element.hasGenerationElement())
34247        composeEnumeration("generation", element.getGenerationElement(), new ImplementationGuide.GuidePageGenerationEnumFactory());
34248      if (element.hasPage()) { 
34249        for (ImplementationGuide.ImplementationGuideDefinitionPageComponent e : element.getPage()) 
34250          composeImplementationGuideImplementationGuideDefinitionPageComponent("page", e);
34251      }
34252  }
34253
34254  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponent(String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
34255    if (element != null) {
34256      composeElementAttributes(element);
34257      xml.enter(FHIR_NS, name);
34258      composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(element);
34259      composeElementClose(element);
34260      xml.exit(FHIR_NS, name);
34261    }
34262  }
34263
34264  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
34265      composeBackboneElementElements(element);
34266      if (element.hasCodeElement())
34267        composeEnumeration("code", element.getCodeElement(), new ImplementationGuide.GuideParameterCodeEnumFactory());
34268      if (element.hasValueElement()) {
34269        composeString("value", element.getValueElement());
34270      }
34271  }
34272
34273  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponent(String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
34274    if (element != null) {
34275      composeElementAttributes(element);
34276      xml.enter(FHIR_NS, name);
34277      composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(element);
34278      composeElementClose(element);
34279      xml.exit(FHIR_NS, name);
34280    }
34281  }
34282
34283  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
34284      composeBackboneElementElements(element);
34285      if (element.hasCodeElement()) {
34286        composeCode("code", element.getCodeElement());
34287      }
34288      if (element.hasSourceElement()) {
34289        composeString("source", element.getSourceElement());
34290      }
34291      if (element.hasScopeElement()) {
34292        composeString("scope", element.getScopeElement());
34293      }
34294  }
34295
34296  protected void composeImplementationGuideImplementationGuideManifestComponent(String name, ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
34297    if (element != null) {
34298      composeElementAttributes(element);
34299      xml.enter(FHIR_NS, name);
34300      composeImplementationGuideImplementationGuideManifestComponentElements(element);
34301      composeElementClose(element);
34302      xml.exit(FHIR_NS, name);
34303    }
34304  }
34305
34306  protected void composeImplementationGuideImplementationGuideManifestComponentElements(ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
34307      composeBackboneElementElements(element);
34308      if (element.hasRenderingElement()) {
34309        composeUrl("rendering", element.getRenderingElement());
34310      }
34311      if (element.hasResource()) { 
34312        for (ImplementationGuide.ImplementationGuideManifestResourceComponent e : element.getResource()) 
34313          composeImplementationGuideImplementationGuideManifestResourceComponent("resource", e);
34314      }
34315      if (element.hasPage()) { 
34316        for (ImplementationGuide.ImplementationGuideManifestPageComponent e : element.getPage()) 
34317          composeImplementationGuideImplementationGuideManifestPageComponent("page", e);
34318      }
34319      if (element.hasImage()) { 
34320        for (StringType e : element.getImage()) 
34321          composeString("image", e);
34322      }
34323      if (element.hasOther()) { 
34324        for (StringType e : element.getOther()) 
34325          composeString("other", e);
34326      }
34327  }
34328
34329  protected void composeImplementationGuideImplementationGuideManifestResourceComponent(String name, ImplementationGuide.ImplementationGuideManifestResourceComponent element) throws IOException {
34330    if (element != null) {
34331      composeElementAttributes(element);
34332      xml.enter(FHIR_NS, name);
34333      composeImplementationGuideImplementationGuideManifestResourceComponentElements(element);
34334      composeElementClose(element);
34335      xml.exit(FHIR_NS, name);
34336    }
34337  }
34338
34339  protected void composeImplementationGuideImplementationGuideManifestResourceComponentElements(ImplementationGuide.ImplementationGuideManifestResourceComponent element) throws IOException {
34340      composeBackboneElementElements(element);
34341      if (element.hasReference()) {
34342        composeReference("reference", element.getReference());
34343      }
34344      if (element.hasExample()) {
34345        composeType("example", element.getExample());
34346      }      if (element.hasRelativePathElement()) {
34347        composeUrl("relativePath", element.getRelativePathElement());
34348      }
34349  }
34350
34351  protected void composeImplementationGuideImplementationGuideManifestPageComponent(String name, ImplementationGuide.ImplementationGuideManifestPageComponent element) throws IOException {
34352    if (element != null) {
34353      composeElementAttributes(element);
34354      xml.enter(FHIR_NS, name);
34355      composeImplementationGuideImplementationGuideManifestPageComponentElements(element);
34356      composeElementClose(element);
34357      xml.exit(FHIR_NS, name);
34358    }
34359  }
34360
34361  protected void composeImplementationGuideImplementationGuideManifestPageComponentElements(ImplementationGuide.ImplementationGuideManifestPageComponent element) throws IOException {
34362      composeBackboneElementElements(element);
34363      if (element.hasNameElement()) {
34364        composeString("name", element.getNameElement());
34365      }
34366      if (element.hasTitleElement()) {
34367        composeString("title", element.getTitleElement());
34368      }
34369      if (element.hasAnchor()) { 
34370        for (StringType e : element.getAnchor()) 
34371          composeString("anchor", e);
34372      }
34373  }
34374
34375  protected void composeInvoice(String name, Invoice element) throws IOException {
34376    if (element != null) {
34377      composeDomainResourceAttributes(element);
34378      xml.enter(FHIR_NS, name);
34379      composeInvoiceElements(element);
34380      composeElementClose(element);
34381      xml.exit(FHIR_NS, name);
34382    }
34383  }
34384
34385  protected void composeInvoiceElements(Invoice element) throws IOException {
34386      composeDomainResourceElements(element);
34387      if (element.hasIdentifier()) { 
34388        for (Identifier e : element.getIdentifier()) 
34389          composeIdentifier("identifier", e);
34390      }
34391      if (element.hasStatusElement())
34392        composeEnumeration("status", element.getStatusElement(), new Invoice.InvoiceStatusEnumFactory());
34393      if (element.hasCancelledReasonElement()) {
34394        composeString("cancelledReason", element.getCancelledReasonElement());
34395      }
34396      if (element.hasType()) {
34397        composeCodeableConcept("type", element.getType());
34398      }
34399      if (element.hasSubject()) {
34400        composeReference("subject", element.getSubject());
34401      }
34402      if (element.hasRecipient()) {
34403        composeReference("recipient", element.getRecipient());
34404      }
34405      if (element.hasDateElement()) {
34406        composeDateTime("date", element.getDateElement());
34407      }
34408      if (element.hasParticipant()) { 
34409        for (Invoice.InvoiceParticipantComponent e : element.getParticipant()) 
34410          composeInvoiceInvoiceParticipantComponent("participant", e);
34411      }
34412      if (element.hasIssuer()) {
34413        composeReference("issuer", element.getIssuer());
34414      }
34415      if (element.hasAccount()) {
34416        composeReference("account", element.getAccount());
34417      }
34418      if (element.hasLineItem()) { 
34419        for (Invoice.InvoiceLineItemComponent e : element.getLineItem()) 
34420          composeInvoiceInvoiceLineItemComponent("lineItem", e);
34421      }
34422      if (element.hasTotalPriceComponent()) { 
34423        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getTotalPriceComponent()) 
34424          composeInvoiceInvoiceLineItemPriceComponentComponent("totalPriceComponent", e);
34425      }
34426      if (element.hasTotalNet()) {
34427        composeMoney("totalNet", element.getTotalNet());
34428      }
34429      if (element.hasTotalGross()) {
34430        composeMoney("totalGross", element.getTotalGross());
34431      }
34432      if (element.hasPaymentTermsElement()) {
34433        composeMarkdown("paymentTerms", element.getPaymentTermsElement());
34434      }
34435      if (element.hasNote()) { 
34436        for (Annotation e : element.getNote()) 
34437          composeAnnotation("note", e);
34438      }
34439  }
34440
34441  protected void composeInvoiceInvoiceParticipantComponent(String name, Invoice.InvoiceParticipantComponent element) throws IOException {
34442    if (element != null) {
34443      composeElementAttributes(element);
34444      xml.enter(FHIR_NS, name);
34445      composeInvoiceInvoiceParticipantComponentElements(element);
34446      composeElementClose(element);
34447      xml.exit(FHIR_NS, name);
34448    }
34449  }
34450
34451  protected void composeInvoiceInvoiceParticipantComponentElements(Invoice.InvoiceParticipantComponent element) throws IOException {
34452      composeBackboneElementElements(element);
34453      if (element.hasRole()) {
34454        composeCodeableConcept("role", element.getRole());
34455      }
34456      if (element.hasActor()) {
34457        composeReference("actor", element.getActor());
34458      }
34459  }
34460
34461  protected void composeInvoiceInvoiceLineItemComponent(String name, Invoice.InvoiceLineItemComponent element) throws IOException {
34462    if (element != null) {
34463      composeElementAttributes(element);
34464      xml.enter(FHIR_NS, name);
34465      composeInvoiceInvoiceLineItemComponentElements(element);
34466      composeElementClose(element);
34467      xml.exit(FHIR_NS, name);
34468    }
34469  }
34470
34471  protected void composeInvoiceInvoiceLineItemComponentElements(Invoice.InvoiceLineItemComponent element) throws IOException {
34472      composeBackboneElementElements(element);
34473      if (element.hasSequenceElement()) {
34474        composePositiveInt("sequence", element.getSequenceElement());
34475      }
34476      if (element.hasChargeItem()) {
34477        composeReference("chargeItem", element.getChargeItem());
34478      }
34479      if (element.hasPriceComponent()) { 
34480        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getPriceComponent()) 
34481          composeInvoiceInvoiceLineItemPriceComponentComponent("priceComponent", e);
34482      }
34483  }
34484
34485  protected void composeInvoiceInvoiceLineItemPriceComponentComponent(String name, Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
34486    if (element != null) {
34487      composeElementAttributes(element);
34488      xml.enter(FHIR_NS, name);
34489      composeInvoiceInvoiceLineItemPriceComponentComponentElements(element);
34490      composeElementClose(element);
34491      xml.exit(FHIR_NS, name);
34492    }
34493  }
34494
34495  protected void composeInvoiceInvoiceLineItemPriceComponentComponentElements(Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
34496      composeBackboneElementElements(element);
34497      if (element.hasTypeElement())
34498        composeEnumeration("type", element.getTypeElement(), new Invoice.InvoicePriceComponentTypeEnumFactory());
34499      if (element.hasCode()) {
34500        composeCodeableConcept("code", element.getCode());
34501      }
34502      if (element.hasFactor()) {
34503        composeMoney("factor", element.getFactor());
34504      }
34505      if (element.hasAmountElement()) {
34506        composeDecimal("amount", element.getAmountElement());
34507      }
34508  }
34509
34510  protected void composeItemInstance(String name, ItemInstance element) throws IOException {
34511    if (element != null) {
34512      composeDomainResourceAttributes(element);
34513      xml.enter(FHIR_NS, name);
34514      composeItemInstanceElements(element);
34515      composeElementClose(element);
34516      xml.exit(FHIR_NS, name);
34517    }
34518  }
34519
34520  protected void composeItemInstanceElements(ItemInstance element) throws IOException {
34521      composeDomainResourceElements(element);
34522      if (element.hasCountElement()) {
34523        composeInteger("count", element.getCountElement());
34524      }
34525      if (element.hasLocation()) {
34526        composeReference("location", element.getLocation());
34527      }
34528      if (element.hasSubject()) {
34529        composeReference("subject", element.getSubject());
34530      }
34531      if (element.hasManufactureDateElement()) {
34532        composeDateTime("manufactureDate", element.getManufactureDateElement());
34533      }
34534      if (element.hasExpiryDateElement()) {
34535        composeDateTime("expiryDate", element.getExpiryDateElement());
34536      }
34537      if (element.hasCurrentSWVersionElement()) {
34538        composeString("currentSWVersion", element.getCurrentSWVersionElement());
34539      }
34540      if (element.hasLotNumberElement()) {
34541        composeString("lotNumber", element.getLotNumberElement());
34542      }
34543      if (element.hasSerialNumberElement()) {
34544        composeString("serialNumber", element.getSerialNumberElement());
34545      }
34546      if (element.hasCarrierAIDCElement()) {
34547        composeString("carrierAIDC", element.getCarrierAIDCElement());
34548      }
34549      if (element.hasCarrierHRFElement()) {
34550        composeString("carrierHRF", element.getCarrierHRFElement());
34551      }
34552  }
34553
34554  protected void composeLibrary(String name, Library element) throws IOException {
34555    if (element != null) {
34556      composeDomainResourceAttributes(element);
34557      xml.enter(FHIR_NS, name);
34558      composeLibraryElements(element);
34559      composeElementClose(element);
34560      xml.exit(FHIR_NS, name);
34561    }
34562  }
34563
34564  protected void composeLibraryElements(Library element) throws IOException {
34565      composeDomainResourceElements(element);
34566      if (element.hasUrlElement()) {
34567        composeUri("url", element.getUrlElement());
34568      }
34569      if (element.hasIdentifier()) { 
34570        for (Identifier e : element.getIdentifier()) 
34571          composeIdentifier("identifier", e);
34572      }
34573      if (element.hasVersionElement()) {
34574        composeString("version", element.getVersionElement());
34575      }
34576      if (element.hasNameElement()) {
34577        composeString("name", element.getNameElement());
34578      }
34579      if (element.hasTitleElement()) {
34580        composeString("title", element.getTitleElement());
34581      }
34582      if (element.hasSubtitleElement()) {
34583        composeString("subtitle", element.getSubtitleElement());
34584      }
34585      if (element.hasStatusElement())
34586        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34587      if (element.hasExperimentalElement()) {
34588        composeBoolean("experimental", element.getExperimentalElement());
34589      }
34590      if (element.hasType()) {
34591        composeCodeableConcept("type", element.getType());
34592      }
34593      if (element.hasSubject()) {
34594        composeType("subject", element.getSubject());
34595      }      if (element.hasDateElement()) {
34596        composeDateTime("date", element.getDateElement());
34597      }
34598      if (element.hasPublisherElement()) {
34599        composeString("publisher", element.getPublisherElement());
34600      }
34601      if (element.hasContact()) { 
34602        for (ContactDetail e : element.getContact()) 
34603          composeContactDetail("contact", e);
34604      }
34605      if (element.hasDescriptionElement()) {
34606        composeMarkdown("description", element.getDescriptionElement());
34607      }
34608      if (element.hasUseContext()) { 
34609        for (UsageContext e : element.getUseContext()) 
34610          composeUsageContext("useContext", e);
34611      }
34612      if (element.hasJurisdiction()) { 
34613        for (CodeableConcept e : element.getJurisdiction()) 
34614          composeCodeableConcept("jurisdiction", e);
34615      }
34616      if (element.hasPurposeElement()) {
34617        composeMarkdown("purpose", element.getPurposeElement());
34618      }
34619      if (element.hasUsageElement()) {
34620        composeString("usage", element.getUsageElement());
34621      }
34622      if (element.hasCopyrightElement()) {
34623        composeMarkdown("copyright", element.getCopyrightElement());
34624      }
34625      if (element.hasApprovalDateElement()) {
34626        composeDate("approvalDate", element.getApprovalDateElement());
34627      }
34628      if (element.hasLastReviewDateElement()) {
34629        composeDate("lastReviewDate", element.getLastReviewDateElement());
34630      }
34631      if (element.hasEffectivePeriod()) {
34632        composePeriod("effectivePeriod", element.getEffectivePeriod());
34633      }
34634      if (element.hasTopic()) { 
34635        for (CodeableConcept e : element.getTopic()) 
34636          composeCodeableConcept("topic", e);
34637      }
34638      if (element.hasContributor()) { 
34639        for (Contributor e : element.getContributor()) 
34640          composeContributor("contributor", e);
34641      }
34642      if (element.hasRelatedArtifact()) { 
34643        for (RelatedArtifact e : element.getRelatedArtifact()) 
34644          composeRelatedArtifact("relatedArtifact", e);
34645      }
34646      if (element.hasParameter()) { 
34647        for (ParameterDefinition e : element.getParameter()) 
34648          composeParameterDefinition("parameter", e);
34649      }
34650      if (element.hasDataRequirement()) { 
34651        for (DataRequirement e : element.getDataRequirement()) 
34652          composeDataRequirement("dataRequirement", e);
34653      }
34654      if (element.hasContent()) { 
34655        for (Attachment e : element.getContent()) 
34656          composeAttachment("content", e);
34657      }
34658  }
34659
34660  protected void composeLinkage(String name, Linkage element) throws IOException {
34661    if (element != null) {
34662      composeDomainResourceAttributes(element);
34663      xml.enter(FHIR_NS, name);
34664      composeLinkageElements(element);
34665      composeElementClose(element);
34666      xml.exit(FHIR_NS, name);
34667    }
34668  }
34669
34670  protected void composeLinkageElements(Linkage element) throws IOException {
34671      composeDomainResourceElements(element);
34672      if (element.hasActiveElement()) {
34673        composeBoolean("active", element.getActiveElement());
34674      }
34675      if (element.hasAuthor()) {
34676        composeReference("author", element.getAuthor());
34677      }
34678      if (element.hasItem()) { 
34679        for (Linkage.LinkageItemComponent e : element.getItem()) 
34680          composeLinkageLinkageItemComponent("item", e);
34681      }
34682  }
34683
34684  protected void composeLinkageLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
34685    if (element != null) {
34686      composeElementAttributes(element);
34687      xml.enter(FHIR_NS, name);
34688      composeLinkageLinkageItemComponentElements(element);
34689      composeElementClose(element);
34690      xml.exit(FHIR_NS, name);
34691    }
34692  }
34693
34694  protected void composeLinkageLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
34695      composeBackboneElementElements(element);
34696      if (element.hasTypeElement())
34697        composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
34698      if (element.hasResource()) {
34699        composeReference("resource", element.getResource());
34700      }
34701  }
34702
34703  protected void composeListResource(String name, ListResource element) throws IOException {
34704    if (element != null) {
34705      composeDomainResourceAttributes(element);
34706      xml.enter(FHIR_NS, name);
34707      composeListResourceElements(element);
34708      composeElementClose(element);
34709      xml.exit(FHIR_NS, name);
34710    }
34711  }
34712
34713  protected void composeListResourceElements(ListResource element) throws IOException {
34714      composeDomainResourceElements(element);
34715      if (element.hasIdentifier()) { 
34716        for (Identifier e : element.getIdentifier()) 
34717          composeIdentifier("identifier", e);
34718      }
34719      if (element.hasStatusElement())
34720        composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
34721      if (element.hasModeElement())
34722        composeEnumeration("mode", element.getModeElement(), new ListResource.ListModeEnumFactory());
34723      if (element.hasTitleElement()) {
34724        composeString("title", element.getTitleElement());
34725      }
34726      if (element.hasCode()) {
34727        composeCodeableConcept("code", element.getCode());
34728      }
34729      if (element.hasSubject()) {
34730        composeReference("subject", element.getSubject());
34731      }
34732      if (element.hasEncounter()) {
34733        composeReference("encounter", element.getEncounter());
34734      }
34735      if (element.hasDateElement()) {
34736        composeDateTime("date", element.getDateElement());
34737      }
34738      if (element.hasSource()) {
34739        composeReference("source", element.getSource());
34740      }
34741      if (element.hasOrderedBy()) {
34742        composeCodeableConcept("orderedBy", element.getOrderedBy());
34743      }
34744      if (element.hasNote()) { 
34745        for (Annotation e : element.getNote()) 
34746          composeAnnotation("note", e);
34747      }
34748      if (element.hasEntry()) { 
34749        for (ListResource.ListEntryComponent e : element.getEntry()) 
34750          composeListResourceListEntryComponent("entry", e);
34751      }
34752      if (element.hasEmptyReason()) {
34753        composeCodeableConcept("emptyReason", element.getEmptyReason());
34754      }
34755  }
34756
34757  protected void composeListResourceListEntryComponent(String name, ListResource.ListEntryComponent element) throws IOException {
34758    if (element != null) {
34759      composeElementAttributes(element);
34760      xml.enter(FHIR_NS, name);
34761      composeListResourceListEntryComponentElements(element);
34762      composeElementClose(element);
34763      xml.exit(FHIR_NS, name);
34764    }
34765  }
34766
34767  protected void composeListResourceListEntryComponentElements(ListResource.ListEntryComponent element) throws IOException {
34768      composeBackboneElementElements(element);
34769      if (element.hasFlag()) {
34770        composeCodeableConcept("flag", element.getFlag());
34771      }
34772      if (element.hasDeletedElement()) {
34773        composeBoolean("deleted", element.getDeletedElement());
34774      }
34775      if (element.hasDateElement()) {
34776        composeDateTime("date", element.getDateElement());
34777      }
34778      if (element.hasItem()) {
34779        composeReference("item", element.getItem());
34780      }
34781  }
34782
34783  protected void composeLocation(String name, Location element) throws IOException {
34784    if (element != null) {
34785      composeDomainResourceAttributes(element);
34786      xml.enter(FHIR_NS, name);
34787      composeLocationElements(element);
34788      composeElementClose(element);
34789      xml.exit(FHIR_NS, name);
34790    }
34791  }
34792
34793  protected void composeLocationElements(Location element) throws IOException {
34794      composeDomainResourceElements(element);
34795      if (element.hasIdentifier()) { 
34796        for (Identifier e : element.getIdentifier()) 
34797          composeIdentifier("identifier", e);
34798      }
34799      if (element.hasStatusElement())
34800        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
34801      if (element.hasOperationalStatus()) {
34802        composeCoding("operationalStatus", element.getOperationalStatus());
34803      }
34804      if (element.hasNameElement()) {
34805        composeString("name", element.getNameElement());
34806      }
34807      if (element.hasAlias()) { 
34808        for (StringType e : element.getAlias()) 
34809          composeString("alias", e);
34810      }
34811      if (element.hasDescriptionElement()) {
34812        composeString("description", element.getDescriptionElement());
34813      }
34814      if (element.hasModeElement())
34815        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
34816      if (element.hasType()) { 
34817        for (CodeableConcept e : element.getType()) 
34818          composeCodeableConcept("type", e);
34819      }
34820      if (element.hasTelecom()) { 
34821        for (ContactPoint e : element.getTelecom()) 
34822          composeContactPoint("telecom", e);
34823      }
34824      if (element.hasAddress()) {
34825        composeAddress("address", element.getAddress());
34826      }
34827      if (element.hasPhysicalType()) {
34828        composeCodeableConcept("physicalType", element.getPhysicalType());
34829      }
34830      if (element.hasPosition()) {
34831        composeLocationLocationPositionComponent("position", element.getPosition());
34832      }
34833      if (element.hasManagingOrganization()) {
34834        composeReference("managingOrganization", element.getManagingOrganization());
34835      }
34836      if (element.hasPartOf()) {
34837        composeReference("partOf", element.getPartOf());
34838      }
34839      if (element.hasHoursOfOperation()) { 
34840        for (Location.LocationHoursOfOperationComponent e : element.getHoursOfOperation()) 
34841          composeLocationLocationHoursOfOperationComponent("hoursOfOperation", e);
34842      }
34843      if (element.hasAvailabilityExceptionsElement()) {
34844        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
34845      }
34846      if (element.hasEndpoint()) { 
34847        for (Reference e : element.getEndpoint()) 
34848          composeReference("endpoint", e);
34849      }
34850  }
34851
34852  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
34853    if (element != null) {
34854      composeElementAttributes(element);
34855      xml.enter(FHIR_NS, name);
34856      composeLocationLocationPositionComponentElements(element);
34857      composeElementClose(element);
34858      xml.exit(FHIR_NS, name);
34859    }
34860  }
34861
34862  protected void composeLocationLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
34863      composeBackboneElementElements(element);
34864      if (element.hasLongitudeElement()) {
34865        composeDecimal("longitude", element.getLongitudeElement());
34866      }
34867      if (element.hasLatitudeElement()) {
34868        composeDecimal("latitude", element.getLatitudeElement());
34869      }
34870      if (element.hasAltitudeElement()) {
34871        composeDecimal("altitude", element.getAltitudeElement());
34872      }
34873  }
34874
34875  protected void composeLocationLocationHoursOfOperationComponent(String name, Location.LocationHoursOfOperationComponent element) throws IOException {
34876    if (element != null) {
34877      composeElementAttributes(element);
34878      xml.enter(FHIR_NS, name);
34879      composeLocationLocationHoursOfOperationComponentElements(element);
34880      composeElementClose(element);
34881      xml.exit(FHIR_NS, name);
34882    }
34883  }
34884
34885  protected void composeLocationLocationHoursOfOperationComponentElements(Location.LocationHoursOfOperationComponent element) throws IOException {
34886      composeBackboneElementElements(element);
34887        if (element.hasDaysOfWeek()) 
34888          for (Enumeration<Location.DaysOfWeek> e : element.getDaysOfWeek()) 
34889            composeEnumeration("daysOfWeek", e, new Location.DaysOfWeekEnumFactory());
34890      if (element.hasAllDayElement()) {
34891        composeBoolean("allDay", element.getAllDayElement());
34892      }
34893      if (element.hasOpeningTimeElement()) {
34894        composeTime("openingTime", element.getOpeningTimeElement());
34895      }
34896      if (element.hasClosingTimeElement()) {
34897        composeTime("closingTime", element.getClosingTimeElement());
34898      }
34899  }
34900
34901  protected void composeMeasure(String name, Measure element) throws IOException {
34902    if (element != null) {
34903      composeDomainResourceAttributes(element);
34904      xml.enter(FHIR_NS, name);
34905      composeMeasureElements(element);
34906      composeElementClose(element);
34907      xml.exit(FHIR_NS, name);
34908    }
34909  }
34910
34911  protected void composeMeasureElements(Measure element) throws IOException {
34912      composeDomainResourceElements(element);
34913      if (element.hasUrlElement()) {
34914        composeUri("url", element.getUrlElement());
34915      }
34916      if (element.hasIdentifier()) { 
34917        for (Identifier e : element.getIdentifier()) 
34918          composeIdentifier("identifier", e);
34919      }
34920      if (element.hasVersionElement()) {
34921        composeString("version", element.getVersionElement());
34922      }
34923      if (element.hasNameElement()) {
34924        composeString("name", element.getNameElement());
34925      }
34926      if (element.hasTitleElement()) {
34927        composeString("title", element.getTitleElement());
34928      }
34929      if (element.hasSubtitleElement()) {
34930        composeString("subtitle", element.getSubtitleElement());
34931      }
34932      if (element.hasStatusElement())
34933        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34934      if (element.hasExperimentalElement()) {
34935        composeBoolean("experimental", element.getExperimentalElement());
34936      }
34937      if (element.hasSubject()) {
34938        composeType("subject", element.getSubject());
34939      }      if (element.hasDateElement()) {
34940        composeDateTime("date", element.getDateElement());
34941      }
34942      if (element.hasPublisherElement()) {
34943        composeString("publisher", element.getPublisherElement());
34944      }
34945      if (element.hasContact()) { 
34946        for (ContactDetail e : element.getContact()) 
34947          composeContactDetail("contact", e);
34948      }
34949      if (element.hasDescriptionElement()) {
34950        composeMarkdown("description", element.getDescriptionElement());
34951      }
34952      if (element.hasUseContext()) { 
34953        for (UsageContext e : element.getUseContext()) 
34954          composeUsageContext("useContext", e);
34955      }
34956      if (element.hasJurisdiction()) { 
34957        for (CodeableConcept e : element.getJurisdiction()) 
34958          composeCodeableConcept("jurisdiction", e);
34959      }
34960      if (element.hasPurposeElement()) {
34961        composeMarkdown("purpose", element.getPurposeElement());
34962      }
34963      if (element.hasUsageElement()) {
34964        composeString("usage", element.getUsageElement());
34965      }
34966      if (element.hasCopyrightElement()) {
34967        composeMarkdown("copyright", element.getCopyrightElement());
34968      }
34969      if (element.hasApprovalDateElement()) {
34970        composeDate("approvalDate", element.getApprovalDateElement());
34971      }
34972      if (element.hasLastReviewDateElement()) {
34973        composeDate("lastReviewDate", element.getLastReviewDateElement());
34974      }
34975      if (element.hasEffectivePeriod()) {
34976        composePeriod("effectivePeriod", element.getEffectivePeriod());
34977      }
34978      if (element.hasTopic()) { 
34979        for (CodeableConcept e : element.getTopic()) 
34980          composeCodeableConcept("topic", e);
34981      }
34982      if (element.hasContributor()) { 
34983        for (Contributor e : element.getContributor()) 
34984          composeContributor("contributor", e);
34985      }
34986      if (element.hasRelatedArtifact()) { 
34987        for (RelatedArtifact e : element.getRelatedArtifact()) 
34988          composeRelatedArtifact("relatedArtifact", e);
34989      }
34990      if (element.hasLibrary()) { 
34991        for (CanonicalType e : element.getLibrary()) 
34992          composeCanonical("library", e);
34993      }
34994      if (element.hasDisclaimerElement()) {
34995        composeMarkdown("disclaimer", element.getDisclaimerElement());
34996      }
34997      if (element.hasScoring()) {
34998        composeCodeableConcept("scoring", element.getScoring());
34999      }
35000      if (element.hasCompositeScoring()) {
35001        composeCodeableConcept("compositeScoring", element.getCompositeScoring());
35002      }
35003      if (element.hasType()) { 
35004        for (CodeableConcept e : element.getType()) 
35005          composeCodeableConcept("type", e);
35006      }
35007      if (element.hasRiskAdjustmentElement()) {
35008        composeString("riskAdjustment", element.getRiskAdjustmentElement());
35009      }
35010      if (element.hasRateAggregationElement()) {
35011        composeString("rateAggregation", element.getRateAggregationElement());
35012      }
35013      if (element.hasRationaleElement()) {
35014        composeMarkdown("rationale", element.getRationaleElement());
35015      }
35016      if (element.hasClinicalRecommendationStatementElement()) {
35017        composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
35018      }
35019      if (element.hasImprovementNotationElement()) {
35020        composeString("improvementNotation", element.getImprovementNotationElement());
35021      }
35022      if (element.hasDefinition()) { 
35023        for (MarkdownType e : element.getDefinition()) 
35024          composeMarkdown("definition", e);
35025      }
35026      if (element.hasGuidanceElement()) {
35027        composeMarkdown("guidance", element.getGuidanceElement());
35028      }
35029      if (element.hasSetElement()) {
35030        composeString("set", element.getSetElement());
35031      }
35032      if (element.hasGroup()) { 
35033        for (Measure.MeasureGroupComponent e : element.getGroup()) 
35034          composeMeasureMeasureGroupComponent("group", e);
35035      }
35036      if (element.hasSupplementalData()) { 
35037        for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
35038          composeMeasureMeasureSupplementalDataComponent("supplementalData", e);
35039      }
35040  }
35041
35042  protected void composeMeasureMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
35043    if (element != null) {
35044      composeElementAttributes(element);
35045      xml.enter(FHIR_NS, name);
35046      composeMeasureMeasureGroupComponentElements(element);
35047      composeElementClose(element);
35048      xml.exit(FHIR_NS, name);
35049    }
35050  }
35051
35052  protected void composeMeasureMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
35053      composeBackboneElementElements(element);
35054      if (element.hasCode()) {
35055        composeCodeableConcept("code", element.getCode());
35056      }
35057      if (element.hasDescriptionElement()) {
35058        composeString("description", element.getDescriptionElement());
35059      }
35060      if (element.hasPopulation()) { 
35061        for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
35062          composeMeasureMeasureGroupPopulationComponent("population", e);
35063      }
35064      if (element.hasStratifier()) { 
35065        for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
35066          composeMeasureMeasureGroupStratifierComponent("stratifier", e);
35067      }
35068  }
35069
35070  protected void composeMeasureMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
35071    if (element != null) {
35072      composeElementAttributes(element);
35073      xml.enter(FHIR_NS, name);
35074      composeMeasureMeasureGroupPopulationComponentElements(element);
35075      composeElementClose(element);
35076      xml.exit(FHIR_NS, name);
35077    }
35078  }
35079
35080  protected void composeMeasureMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
35081      composeBackboneElementElements(element);
35082      if (element.hasCode()) {
35083        composeCodeableConcept("code", element.getCode());
35084      }
35085      if (element.hasDescriptionElement()) {
35086        composeString("description", element.getDescriptionElement());
35087      }
35088      if (element.hasCriteriaElement()) {
35089        composeString("criteria", element.getCriteriaElement());
35090      }
35091  }
35092
35093  protected void composeMeasureMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
35094    if (element != null) {
35095      composeElementAttributes(element);
35096      xml.enter(FHIR_NS, name);
35097      composeMeasureMeasureGroupStratifierComponentElements(element);
35098      composeElementClose(element);
35099      xml.exit(FHIR_NS, name);
35100    }
35101  }
35102
35103  protected void composeMeasureMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
35104      composeBackboneElementElements(element);
35105      if (element.hasCode()) {
35106        composeCodeableConcept("code", element.getCode());
35107      }
35108      if (element.hasDescriptionElement()) {
35109        composeString("description", element.getDescriptionElement());
35110      }
35111      if (element.hasCriteriaElement()) {
35112        composeString("criteria", element.getCriteriaElement());
35113      }
35114      if (element.hasPathElement()) {
35115        composeString("path", element.getPathElement());
35116      }
35117  }
35118
35119  protected void composeMeasureMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
35120    if (element != null) {
35121      composeElementAttributes(element);
35122      xml.enter(FHIR_NS, name);
35123      composeMeasureMeasureSupplementalDataComponentElements(element);
35124      composeElementClose(element);
35125      xml.exit(FHIR_NS, name);
35126    }
35127  }
35128
35129  protected void composeMeasureMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
35130      composeBackboneElementElements(element);
35131      if (element.hasCode()) {
35132        composeCodeableConcept("code", element.getCode());
35133      }
35134      if (element.hasUsage()) { 
35135        for (CodeableConcept e : element.getUsage()) 
35136          composeCodeableConcept("usage", e);
35137      }
35138      if (element.hasDescriptionElement()) {
35139        composeString("description", element.getDescriptionElement());
35140      }
35141      if (element.hasCriteriaElement()) {
35142        composeString("criteria", element.getCriteriaElement());
35143      }
35144      if (element.hasPathElement()) {
35145        composeString("path", element.getPathElement());
35146      }
35147  }
35148
35149  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
35150    if (element != null) {
35151      composeDomainResourceAttributes(element);
35152      xml.enter(FHIR_NS, name);
35153      composeMeasureReportElements(element);
35154      composeElementClose(element);
35155      xml.exit(FHIR_NS, name);
35156    }
35157  }
35158
35159  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
35160      composeDomainResourceElements(element);
35161      if (element.hasIdentifier()) { 
35162        for (Identifier e : element.getIdentifier()) 
35163          composeIdentifier("identifier", e);
35164      }
35165      if (element.hasStatusElement())
35166        composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
35167      if (element.hasTypeElement())
35168        composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
35169      if (element.hasMeasureElement()) {
35170        composeCanonical("measure", element.getMeasureElement());
35171      }
35172      if (element.hasSubject()) {
35173        composeReference("subject", element.getSubject());
35174      }
35175      if (element.hasDateElement()) {
35176        composeDateTime("date", element.getDateElement());
35177      }
35178      if (element.hasReporter()) {
35179        composeReference("reporter", element.getReporter());
35180      }
35181      if (element.hasPeriod()) {
35182        composePeriod("period", element.getPeriod());
35183      }
35184      if (element.hasGroup()) { 
35185        for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
35186          composeMeasureReportMeasureReportGroupComponent("group", e);
35187      }
35188      if (element.hasEvaluatedResources()) {
35189        composeReference("evaluatedResources", element.getEvaluatedResources());
35190      }
35191  }
35192
35193  protected void composeMeasureReportMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
35194    if (element != null) {
35195      composeElementAttributes(element);
35196      xml.enter(FHIR_NS, name);
35197      composeMeasureReportMeasureReportGroupComponentElements(element);
35198      composeElementClose(element);
35199      xml.exit(FHIR_NS, name);
35200    }
35201  }
35202
35203  protected void composeMeasureReportMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
35204      composeBackboneElementElements(element);
35205      if (element.hasCode()) {
35206        composeCodeableConcept("code", element.getCode());
35207      }
35208      if (element.hasPopulation()) { 
35209        for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
35210          composeMeasureReportMeasureReportGroupPopulationComponent("population", e);
35211      }
35212      if (element.hasMeasureScore()) {
35213        composeQuantity("measureScore", element.getMeasureScore());
35214      }
35215      if (element.hasStratifier()) { 
35216        for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
35217          composeMeasureReportMeasureReportGroupStratifierComponent("stratifier", e);
35218      }
35219  }
35220
35221  protected void composeMeasureReportMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
35222    if (element != null) {
35223      composeElementAttributes(element);
35224      xml.enter(FHIR_NS, name);
35225      composeMeasureReportMeasureReportGroupPopulationComponentElements(element);
35226      composeElementClose(element);
35227      xml.exit(FHIR_NS, name);
35228    }
35229  }
35230
35231  protected void composeMeasureReportMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
35232      composeBackboneElementElements(element);
35233      if (element.hasCode()) {
35234        composeCodeableConcept("code", element.getCode());
35235      }
35236      if (element.hasCountElement()) {
35237        composeInteger("count", element.getCountElement());
35238      }
35239      if (element.hasSubjects()) {
35240        composeReference("subjects", element.getSubjects());
35241      }
35242  }
35243
35244  protected void composeMeasureReportMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
35245    if (element != null) {
35246      composeElementAttributes(element);
35247      xml.enter(FHIR_NS, name);
35248      composeMeasureReportMeasureReportGroupStratifierComponentElements(element);
35249      composeElementClose(element);
35250      xml.exit(FHIR_NS, name);
35251    }
35252  }
35253
35254  protected void composeMeasureReportMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
35255      composeBackboneElementElements(element);
35256      if (element.hasCode()) {
35257        composeCodeableConcept("code", element.getCode());
35258      }
35259      if (element.hasStratum()) { 
35260        for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
35261          composeMeasureReportStratifierGroupComponent("stratum", e);
35262      }
35263  }
35264
35265  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
35266    if (element != null) {
35267      composeElementAttributes(element);
35268      xml.enter(FHIR_NS, name);
35269      composeMeasureReportStratifierGroupComponentElements(element);
35270      composeElementClose(element);
35271      xml.exit(FHIR_NS, name);
35272    }
35273  }
35274
35275  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
35276      composeBackboneElementElements(element);
35277      if (element.hasValue()) {
35278        composeCodeableConcept("value", element.getValue());
35279      }
35280      if (element.hasPopulation()) { 
35281        for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
35282          composeMeasureReportStratifierGroupPopulationComponent("population", e);
35283      }
35284      if (element.hasMeasureScore()) {
35285        composeQuantity("measureScore", element.getMeasureScore());
35286      }
35287  }
35288
35289  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
35290    if (element != null) {
35291      composeElementAttributes(element);
35292      xml.enter(FHIR_NS, name);
35293      composeMeasureReportStratifierGroupPopulationComponentElements(element);
35294      composeElementClose(element);
35295      xml.exit(FHIR_NS, name);
35296    }
35297  }
35298
35299  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
35300      composeBackboneElementElements(element);
35301      if (element.hasCode()) {
35302        composeCodeableConcept("code", element.getCode());
35303      }
35304      if (element.hasCountElement()) {
35305        composeInteger("count", element.getCountElement());
35306      }
35307      if (element.hasSubjects()) {
35308        composeReference("subjects", element.getSubjects());
35309      }
35310  }
35311
35312  protected void composeMedia(String name, Media element) throws IOException {
35313    if (element != null) {
35314      composeDomainResourceAttributes(element);
35315      xml.enter(FHIR_NS, name);
35316      composeMediaElements(element);
35317      composeElementClose(element);
35318      xml.exit(FHIR_NS, name);
35319    }
35320  }
35321
35322  protected void composeMediaElements(Media element) throws IOException {
35323      composeDomainResourceElements(element);
35324      if (element.hasIdentifier()) { 
35325        for (Identifier e : element.getIdentifier()) 
35326          composeIdentifier("identifier", e);
35327      }
35328      if (element.hasBasedOn()) { 
35329        for (Reference e : element.getBasedOn()) 
35330          composeReference("basedOn", e);
35331      }
35332      if (element.hasPartOf()) { 
35333        for (Reference e : element.getPartOf()) 
35334          composeReference("partOf", e);
35335      }
35336      if (element.hasStatusElement())
35337        composeEnumeration("status", element.getStatusElement(), new Media.MediaStatusEnumFactory());
35338      if (element.hasType()) {
35339        composeCodeableConcept("type", element.getType());
35340      }
35341      if (element.hasModality()) {
35342        composeCodeableConcept("modality", element.getModality());
35343      }
35344      if (element.hasView()) {
35345        composeCodeableConcept("view", element.getView());
35346      }
35347      if (element.hasSubject()) {
35348        composeReference("subject", element.getSubject());
35349      }
35350      if (element.hasContext()) {
35351        composeReference("context", element.getContext());
35352      }
35353      if (element.hasCreated()) {
35354        composeType("created", element.getCreated());
35355      }      if (element.hasIssuedElement()) {
35356        composeInstant("issued", element.getIssuedElement());
35357      }
35358      if (element.hasOperator()) {
35359        composeReference("operator", element.getOperator());
35360      }
35361      if (element.hasReasonCode()) { 
35362        for (CodeableConcept e : element.getReasonCode()) 
35363          composeCodeableConcept("reasonCode", e);
35364      }
35365      if (element.hasBodySite()) {
35366        composeCodeableConcept("bodySite", element.getBodySite());
35367      }
35368      if (element.hasDeviceNameElement()) {
35369        composeString("deviceName", element.getDeviceNameElement());
35370      }
35371      if (element.hasDevice()) {
35372        composeReference("device", element.getDevice());
35373      }
35374      if (element.hasHeightElement()) {
35375        composePositiveInt("height", element.getHeightElement());
35376      }
35377      if (element.hasWidthElement()) {
35378        composePositiveInt("width", element.getWidthElement());
35379      }
35380      if (element.hasFramesElement()) {
35381        composePositiveInt("frames", element.getFramesElement());
35382      }
35383      if (element.hasDurationElement()) {
35384        composeDecimal("duration", element.getDurationElement());
35385      }
35386      if (element.hasContent()) {
35387        composeAttachment("content", element.getContent());
35388      }
35389      if (element.hasNote()) { 
35390        for (Annotation e : element.getNote()) 
35391          composeAnnotation("note", e);
35392      }
35393  }
35394
35395  protected void composeMedication(String name, Medication element) throws IOException {
35396    if (element != null) {
35397      composeDomainResourceAttributes(element);
35398      xml.enter(FHIR_NS, name);
35399      composeMedicationElements(element);
35400      composeElementClose(element);
35401      xml.exit(FHIR_NS, name);
35402    }
35403  }
35404
35405  protected void composeMedicationElements(Medication element) throws IOException {
35406      composeDomainResourceElements(element);
35407      if (element.hasCode()) {
35408        composeCodeableConcept("code", element.getCode());
35409      }
35410      if (element.hasStatusElement())
35411        composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusEnumFactory());
35412      if (element.hasManufacturer()) {
35413        composeReference("manufacturer", element.getManufacturer());
35414      }
35415      if (element.hasForm()) {
35416        composeCodeableConcept("form", element.getForm());
35417      }
35418      if (element.hasAmount()) {
35419        composeSimpleQuantity("amount", element.getAmount());
35420      }
35421      if (element.hasIngredient()) { 
35422        for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
35423          composeMedicationMedicationIngredientComponent("ingredient", e);
35424      }
35425      if (element.hasBatch()) {
35426        composeMedicationMedicationBatchComponent("batch", element.getBatch());
35427      }
35428  }
35429
35430  protected void composeMedicationMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
35431    if (element != null) {
35432      composeElementAttributes(element);
35433      xml.enter(FHIR_NS, name);
35434      composeMedicationMedicationIngredientComponentElements(element);
35435      composeElementClose(element);
35436      xml.exit(FHIR_NS, name);
35437    }
35438  }
35439
35440  protected void composeMedicationMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
35441      composeBackboneElementElements(element);
35442      if (element.hasItem()) {
35443        composeType("item", element.getItem());
35444      }      if (element.hasIsActiveElement()) {
35445        composeBoolean("isActive", element.getIsActiveElement());
35446      }
35447      if (element.hasAmount()) {
35448        composeRatio("amount", element.getAmount());
35449      }
35450  }
35451
35452  protected void composeMedicationMedicationBatchComponent(String name, Medication.MedicationBatchComponent element) throws IOException {
35453    if (element != null) {
35454      composeElementAttributes(element);
35455      xml.enter(FHIR_NS, name);
35456      composeMedicationMedicationBatchComponentElements(element);
35457      composeElementClose(element);
35458      xml.exit(FHIR_NS, name);
35459    }
35460  }
35461
35462  protected void composeMedicationMedicationBatchComponentElements(Medication.MedicationBatchComponent element) throws IOException {
35463      composeBackboneElementElements(element);
35464      if (element.hasLotNumberElement()) {
35465        composeString("lotNumber", element.getLotNumberElement());
35466      }
35467      if (element.hasExpirationDateElement()) {
35468        composeDateTime("expirationDate", element.getExpirationDateElement());
35469      }
35470      if (element.hasSerialNumberElement()) {
35471        composeString("serialNumber", element.getSerialNumberElement());
35472      }
35473  }
35474
35475  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
35476    if (element != null) {
35477      composeDomainResourceAttributes(element);
35478      xml.enter(FHIR_NS, name);
35479      composeMedicationAdministrationElements(element);
35480      composeElementClose(element);
35481      xml.exit(FHIR_NS, name);
35482    }
35483  }
35484
35485  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
35486      composeDomainResourceElements(element);
35487      if (element.hasIdentifier()) { 
35488        for (Identifier e : element.getIdentifier()) 
35489          composeIdentifier("identifier", e);
35490      }
35491      if (element.hasInstantiates()) { 
35492        for (UriType e : element.getInstantiates()) 
35493          composeUri("instantiates", e);
35494      }
35495      if (element.hasPartOf()) { 
35496        for (Reference e : element.getPartOf()) 
35497          composeReference("partOf", e);
35498      }
35499      if (element.hasStatusElement())
35500        composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusEnumFactory());
35501      if (element.hasCategory()) {
35502        composeCodeableConcept("category", element.getCategory());
35503      }
35504      if (element.hasMedication()) {
35505        composeType("medication", element.getMedication());
35506      }      if (element.hasSubject()) {
35507        composeReference("subject", element.getSubject());
35508      }
35509      if (element.hasContext()) {
35510        composeReference("context", element.getContext());
35511      }
35512      if (element.hasSupportingInformation()) { 
35513        for (Reference e : element.getSupportingInformation()) 
35514          composeReference("supportingInformation", e);
35515      }
35516      if (element.hasEffective()) {
35517        composeType("effective", element.getEffective());
35518      }      if (element.hasPerformer()) { 
35519        for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
35520          composeMedicationAdministrationMedicationAdministrationPerformerComponent("performer", e);
35521      }
35522      if (element.hasStatusReason()) { 
35523        for (CodeableConcept e : element.getStatusReason()) 
35524          composeCodeableConcept("statusReason", e);
35525      }
35526      if (element.hasReasonCode()) { 
35527        for (CodeableConcept e : element.getReasonCode()) 
35528          composeCodeableConcept("reasonCode", e);
35529      }
35530      if (element.hasReasonReference()) { 
35531        for (Reference e : element.getReasonReference()) 
35532          composeReference("reasonReference", e);
35533      }
35534      if (element.hasRequest()) {
35535        composeReference("request", element.getRequest());
35536      }
35537      if (element.hasDevice()) { 
35538        for (Reference e : element.getDevice()) 
35539          composeReference("device", e);
35540      }
35541      if (element.hasNote()) { 
35542        for (Annotation e : element.getNote()) 
35543          composeAnnotation("note", e);
35544      }
35545      if (element.hasDosage()) {
35546        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
35547      }
35548      if (element.hasEventHistory()) { 
35549        for (Reference e : element.getEventHistory()) 
35550          composeReference("eventHistory", e);
35551      }
35552  }
35553
35554  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
35555    if (element != null) {
35556      composeElementAttributes(element);
35557      xml.enter(FHIR_NS, name);
35558      composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(element);
35559      composeElementClose(element);
35560      xml.exit(FHIR_NS, name);
35561    }
35562  }
35563
35564  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
35565      composeBackboneElementElements(element);
35566      if (element.hasFunction()) {
35567        composeCodeableConcept("function", element.getFunction());
35568      }
35569      if (element.hasActor()) {
35570        composeReference("actor", element.getActor());
35571      }
35572  }
35573
35574  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
35575    if (element != null) {
35576      composeElementAttributes(element);
35577      xml.enter(FHIR_NS, name);
35578      composeMedicationAdministrationMedicationAdministrationDosageComponentElements(element);
35579      composeElementClose(element);
35580      xml.exit(FHIR_NS, name);
35581    }
35582  }
35583
35584  protected void composeMedicationAdministrationMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
35585      composeBackboneElementElements(element);
35586      if (element.hasTextElement()) {
35587        composeString("text", element.getTextElement());
35588      }
35589      if (element.hasSite()) {
35590        composeCodeableConcept("site", element.getSite());
35591      }
35592      if (element.hasRoute()) {
35593        composeCodeableConcept("route", element.getRoute());
35594      }
35595      if (element.hasMethod()) {
35596        composeCodeableConcept("method", element.getMethod());
35597      }
35598      if (element.hasDose()) {
35599        composeSimpleQuantity("dose", element.getDose());
35600      }
35601      if (element.hasRate()) {
35602        composeType("rate", element.getRate());
35603      }  }
35604
35605  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
35606    if (element != null) {
35607      composeDomainResourceAttributes(element);
35608      xml.enter(FHIR_NS, name);
35609      composeMedicationDispenseElements(element);
35610      composeElementClose(element);
35611      xml.exit(FHIR_NS, name);
35612    }
35613  }
35614
35615  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
35616      composeDomainResourceElements(element);
35617      if (element.hasIdentifier()) { 
35618        for (Identifier e : element.getIdentifier()) 
35619          composeIdentifier("identifier", e);
35620      }
35621      if (element.hasPartOf()) { 
35622        for (Reference e : element.getPartOf()) 
35623          composeReference("partOf", e);
35624      }
35625      if (element.hasStatusElement())
35626        composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusEnumFactory());
35627      if (element.hasCategory()) {
35628        composeCodeableConcept("category", element.getCategory());
35629      }
35630      if (element.hasMedication()) {
35631        composeType("medication", element.getMedication());
35632      }      if (element.hasSubject()) {
35633        composeReference("subject", element.getSubject());
35634      }
35635      if (element.hasContext()) {
35636        composeReference("context", element.getContext());
35637      }
35638      if (element.hasSupportingInformation()) { 
35639        for (Reference e : element.getSupportingInformation()) 
35640          composeReference("supportingInformation", e);
35641      }
35642      if (element.hasPerformer()) { 
35643        for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
35644          composeMedicationDispenseMedicationDispensePerformerComponent("performer", e);
35645      }
35646      if (element.hasLocation()) {
35647        composeReference("location", element.getLocation());
35648      }
35649      if (element.hasAuthorizingPrescription()) { 
35650        for (Reference e : element.getAuthorizingPrescription()) 
35651          composeReference("authorizingPrescription", e);
35652      }
35653      if (element.hasType()) {
35654        composeCodeableConcept("type", element.getType());
35655      }
35656      if (element.hasQuantity()) {
35657        composeSimpleQuantity("quantity", element.getQuantity());
35658      }
35659      if (element.hasDaysSupply()) {
35660        composeSimpleQuantity("daysSupply", element.getDaysSupply());
35661      }
35662      if (element.hasWhenPreparedElement()) {
35663        composeDateTime("whenPrepared", element.getWhenPreparedElement());
35664      }
35665      if (element.hasWhenHandedOverElement()) {
35666        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
35667      }
35668      if (element.hasDestination()) {
35669        composeReference("destination", element.getDestination());
35670      }
35671      if (element.hasReceiver()) { 
35672        for (Reference e : element.getReceiver()) 
35673          composeReference("receiver", e);
35674      }
35675      if (element.hasNote()) { 
35676        for (Annotation e : element.getNote()) 
35677          composeAnnotation("note", e);
35678      }
35679      if (element.hasDosageInstruction()) { 
35680        for (Dosage e : element.getDosageInstruction()) 
35681          composeDosage("dosageInstruction", e);
35682      }
35683      if (element.hasSubstitution()) {
35684        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
35685      }
35686      if (element.hasDetectedIssue()) { 
35687        for (Reference e : element.getDetectedIssue()) 
35688          composeReference("detectedIssue", e);
35689      }
35690      if (element.hasStatusReason()) {
35691        composeType("statusReason", element.getStatusReason());
35692      }      if (element.hasEventHistory()) { 
35693        for (Reference e : element.getEventHistory()) 
35694          composeReference("eventHistory", e);
35695      }
35696  }
35697
35698  protected void composeMedicationDispenseMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
35699    if (element != null) {
35700      composeElementAttributes(element);
35701      xml.enter(FHIR_NS, name);
35702      composeMedicationDispenseMedicationDispensePerformerComponentElements(element);
35703      composeElementClose(element);
35704      xml.exit(FHIR_NS, name);
35705    }
35706  }
35707
35708  protected void composeMedicationDispenseMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
35709      composeBackboneElementElements(element);
35710      if (element.hasFunction()) {
35711        composeCodeableConcept("function", element.getFunction());
35712      }
35713      if (element.hasActor()) {
35714        composeReference("actor", element.getActor());
35715      }
35716  }
35717
35718  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
35719    if (element != null) {
35720      composeElementAttributes(element);
35721      xml.enter(FHIR_NS, name);
35722      composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(element);
35723      composeElementClose(element);
35724      xml.exit(FHIR_NS, name);
35725    }
35726  }
35727
35728  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
35729      composeBackboneElementElements(element);
35730      if (element.hasWasSubstitutedElement()) {
35731        composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
35732      }
35733      if (element.hasType()) {
35734        composeCodeableConcept("type", element.getType());
35735      }
35736      if (element.hasReason()) { 
35737        for (CodeableConcept e : element.getReason()) 
35738          composeCodeableConcept("reason", e);
35739      }
35740      if (element.hasResponsibleParty()) { 
35741        for (Reference e : element.getResponsibleParty()) 
35742          composeReference("responsibleParty", e);
35743      }
35744  }
35745
35746  protected void composeMedicationKnowledge(String name, MedicationKnowledge element) throws IOException {
35747    if (element != null) {
35748      composeDomainResourceAttributes(element);
35749      xml.enter(FHIR_NS, name);
35750      composeMedicationKnowledgeElements(element);
35751      composeElementClose(element);
35752      xml.exit(FHIR_NS, name);
35753    }
35754  }
35755
35756  protected void composeMedicationKnowledgeElements(MedicationKnowledge element) throws IOException {
35757      composeDomainResourceElements(element);
35758      if (element.hasCode()) {
35759        composeCodeableConcept("code", element.getCode());
35760      }
35761      if (element.hasStatusElement())
35762        composeEnumeration("status", element.getStatusElement(), new MedicationKnowledge.MedicationKnowledgeStatusEnumFactory());
35763      if (element.hasManufacturer()) {
35764        composeReference("manufacturer", element.getManufacturer());
35765      }
35766      if (element.hasForm()) {
35767        composeCodeableConcept("form", element.getForm());
35768      }
35769      if (element.hasAmount()) {
35770        composeSimpleQuantity("amount", element.getAmount());
35771      }
35772      if (element.hasSynonym()) { 
35773        for (StringType e : element.getSynonym()) 
35774          composeString("synonym", e);
35775      }
35776      if (element.hasRelatedMedicationKnowledge()) { 
35777        for (Reference e : element.getRelatedMedicationKnowledge()) 
35778          composeReference("relatedMedicationKnowledge", e);
35779      }
35780      if (element.hasAssociatedMedication()) {
35781        composeReference("associatedMedication", element.getAssociatedMedication());
35782      }
35783      if (element.hasProductType()) { 
35784        for (CodeableConcept e : element.getProductType()) 
35785          composeCodeableConcept("productType", e);
35786      }
35787      if (element.hasMonograph()) { 
35788        for (MedicationKnowledge.MedicationKnowledgeMonographComponent e : element.getMonograph()) 
35789          composeMedicationKnowledgeMedicationKnowledgeMonographComponent("monograph", e);
35790      }
35791      if (element.hasHalfLifePeriod()) {
35792        composeDuration("halfLifePeriod", element.getHalfLifePeriod());
35793      }
35794      if (element.hasIngredient()) { 
35795        for (MedicationKnowledge.MedicationKnowledgeIngredientComponent e : element.getIngredient()) 
35796          composeMedicationKnowledgeMedicationKnowledgeIngredientComponent("ingredient", e);
35797      }
35798      if (element.hasPreparationInstructionElement()) {
35799        composeMarkdown("preparationInstruction", element.getPreparationInstructionElement());
35800      }
35801      if (element.hasIntendedRoute()) { 
35802        for (CodeableConcept e : element.getIntendedRoute()) 
35803          composeCodeableConcept("intendedRoute", e);
35804      }
35805      if (element.hasCost()) { 
35806        for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
35807          composeMedicationKnowledgeMedicationKnowledgeCostComponent("cost", e);
35808      }
35809      if (element.hasMonitoringProgram()) { 
35810        for (MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent e : element.getMonitoringProgram()) 
35811          composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent("monitoringProgram", e);
35812      }
35813      if (element.hasAdministrationGuidelines()) { 
35814        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent e : element.getAdministrationGuidelines()) 
35815          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent("administrationGuidelines", e);
35816      }
35817      if (element.hasMedicineClassification()) { 
35818        for (MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent e : element.getMedicineClassification()) 
35819          composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent("medicineClassification", e);
35820      }
35821      if (element.hasPackaging()) {
35822        composeMedicationKnowledgeMedicationKnowledgePackagingComponent("packaging", element.getPackaging());
35823      }
35824      if (element.hasDrugCharacteristic()) { 
35825        for (MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent e : element.getDrugCharacteristic()) 
35826          composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent("drugCharacteristic", e);
35827      }
35828      if (element.hasContraindication()) { 
35829        for (Reference e : element.getContraindication()) 
35830          composeReference("contraindication", e);
35831      }
35832  }
35833
35834  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponent(String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
35835    if (element != null) {
35836      composeElementAttributes(element);
35837      xml.enter(FHIR_NS, name);
35838      composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(element);
35839      composeElementClose(element);
35840      xml.exit(FHIR_NS, name);
35841    }
35842  }
35843
35844  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
35845      composeBackboneElementElements(element);
35846      if (element.hasType()) {
35847        composeCodeableConcept("type", element.getType());
35848      }
35849      if (element.hasDocument()) {
35850        composeReference("document", element.getDocument());
35851      }
35852  }
35853
35854  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponent(String name, MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
35855    if (element != null) {
35856      composeElementAttributes(element);
35857      xml.enter(FHIR_NS, name);
35858      composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(element);
35859      composeElementClose(element);
35860      xml.exit(FHIR_NS, name);
35861    }
35862  }
35863
35864  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
35865      composeBackboneElementElements(element);
35866      if (element.hasItem()) {
35867        composeType("item", element.getItem());
35868      }      if (element.hasIsActiveElement()) {
35869        composeBoolean("isActive", element.getIsActiveElement());
35870      }
35871      if (element.hasStrength()) {
35872        composeRatio("strength", element.getStrength());
35873      }
35874  }
35875
35876  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponent(String name, MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
35877    if (element != null) {
35878      composeElementAttributes(element);
35879      xml.enter(FHIR_NS, name);
35880      composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(element);
35881      composeElementClose(element);
35882      xml.exit(FHIR_NS, name);
35883    }
35884  }
35885
35886  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
35887      composeBackboneElementElements(element);
35888      if (element.hasTypeElement()) {
35889        composeString("type", element.getTypeElement());
35890      }
35891      if (element.hasSourceElement()) {
35892        composeString("source", element.getSourceElement());
35893      }
35894      if (element.hasCost()) {
35895        composeMoney("cost", element.getCost());
35896      }
35897  }
35898
35899  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
35900    if (element != null) {
35901      composeElementAttributes(element);
35902      xml.enter(FHIR_NS, name);
35903      composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(element);
35904      composeElementClose(element);
35905      xml.exit(FHIR_NS, name);
35906    }
35907  }
35908
35909  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
35910      composeBackboneElementElements(element);
35911      if (element.hasType()) {
35912        composeCodeableConcept("type", element.getType());
35913      }
35914      if (element.hasNameElement()) {
35915        composeString("name", element.getNameElement());
35916      }
35917  }
35918
35919  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
35920    if (element != null) {
35921      composeElementAttributes(element);
35922      xml.enter(FHIR_NS, name);
35923      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(element);
35924      composeElementClose(element);
35925      xml.exit(FHIR_NS, name);
35926    }
35927  }
35928
35929  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
35930      composeBackboneElementElements(element);
35931      if (element.hasDosage()) { 
35932        for (Dosage e : element.getDosage()) 
35933          composeDosage("dosage", e);
35934      }
35935      if (element.hasIndication()) {
35936        composeType("indication", element.getIndication());
35937      }      if (element.hasPatientCharacteristics()) { 
35938        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent e : element.getPatientCharacteristics()) 
35939          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent("patientCharacteristics", e);
35940      }
35941  }
35942
35943  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
35944    if (element != null) {
35945      composeElementAttributes(element);
35946      xml.enter(FHIR_NS, name);
35947      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(element);
35948      composeElementClose(element);
35949      xml.exit(FHIR_NS, name);
35950    }
35951  }
35952
35953  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
35954      composeBackboneElementElements(element);
35955      if (element.hasCharacteristic()) {
35956        composeType("characteristic", element.getCharacteristic());
35957      }      if (element.hasValue()) { 
35958        for (StringType e : element.getValue()) 
35959          composeString("value", e);
35960      }
35961  }
35962
35963  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
35964    if (element != null) {
35965      composeElementAttributes(element);
35966      xml.enter(FHIR_NS, name);
35967      composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(element);
35968      composeElementClose(element);
35969      xml.exit(FHIR_NS, name);
35970    }
35971  }
35972
35973  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
35974      composeBackboneElementElements(element);
35975      if (element.hasType()) {
35976        composeCodeableConcept("type", element.getType());
35977      }
35978      if (element.hasClassification()) { 
35979        for (CodeableConcept e : element.getClassification()) 
35980          composeCodeableConcept("classification", e);
35981      }
35982  }
35983
35984  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponent(String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
35985    if (element != null) {
35986      composeElementAttributes(element);
35987      xml.enter(FHIR_NS, name);
35988      composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(element);
35989      composeElementClose(element);
35990      xml.exit(FHIR_NS, name);
35991    }
35992  }
35993
35994  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
35995      composeBackboneElementElements(element);
35996      if (element.hasType()) {
35997        composeCodeableConcept("type", element.getType());
35998      }
35999      if (element.hasQuantity()) {
36000        composeSimpleQuantity("quantity", element.getQuantity());
36001      }
36002  }
36003
36004  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
36005    if (element != null) {
36006      composeElementAttributes(element);
36007      xml.enter(FHIR_NS, name);
36008      composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(element);
36009      composeElementClose(element);
36010      xml.exit(FHIR_NS, name);
36011    }
36012  }
36013
36014  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
36015      composeBackboneElementElements(element);
36016      if (element.hasType()) {
36017        composeCodeableConcept("type", element.getType());
36018      }
36019      if (element.hasValue()) {
36020        composeType("value", element.getValue());
36021      }  }
36022
36023  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
36024    if (element != null) {
36025      composeDomainResourceAttributes(element);
36026      xml.enter(FHIR_NS, name);
36027      composeMedicationRequestElements(element);
36028      composeElementClose(element);
36029      xml.exit(FHIR_NS, name);
36030    }
36031  }
36032
36033  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
36034      composeDomainResourceElements(element);
36035      if (element.hasIdentifier()) { 
36036        for (Identifier e : element.getIdentifier()) 
36037          composeIdentifier("identifier", e);
36038      }
36039      if (element.hasStatusElement())
36040        composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationRequestStatusEnumFactory());
36041      if (element.hasIntentElement())
36042        composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
36043      if (element.hasCategory()) { 
36044        for (CodeableConcept e : element.getCategory()) 
36045          composeCodeableConcept("category", e);
36046      }
36047      if (element.hasPriorityElement())
36048        composeEnumeration("priority", element.getPriorityElement(), new MedicationRequest.MedicationRequestPriorityEnumFactory());
36049      if (element.hasMedication()) {
36050        composeType("medication", element.getMedication());
36051      }      if (element.hasSubject()) {
36052        composeReference("subject", element.getSubject());
36053      }
36054      if (element.hasContext()) {
36055        composeReference("context", element.getContext());
36056      }
36057      if (element.hasSupportingInformation()) { 
36058        for (Reference e : element.getSupportingInformation()) 
36059          composeReference("supportingInformation", e);
36060      }
36061      if (element.hasAuthoredOnElement()) {
36062        composeDateTime("authoredOn", element.getAuthoredOnElement());
36063      }
36064      if (element.hasRequester()) {
36065        composeReference("requester", element.getRequester());
36066      }
36067      if (element.hasPerformer()) {
36068        composeReference("performer", element.getPerformer());
36069      }
36070      if (element.hasPerformerType()) {
36071        composeCodeableConcept("performerType", element.getPerformerType());
36072      }
36073      if (element.hasRecorder()) {
36074        composeReference("recorder", element.getRecorder());
36075      }
36076      if (element.hasReasonCode()) { 
36077        for (CodeableConcept e : element.getReasonCode()) 
36078          composeCodeableConcept("reasonCode", e);
36079      }
36080      if (element.hasReasonReference()) { 
36081        for (Reference e : element.getReasonReference()) 
36082          composeReference("reasonReference", e);
36083      }
36084      if (element.hasInstantiates()) { 
36085        for (UriType e : element.getInstantiates()) 
36086          composeUri("instantiates", e);
36087      }
36088      if (element.hasBasedOn()) { 
36089        for (Reference e : element.getBasedOn()) 
36090          composeReference("basedOn", e);
36091      }
36092      if (element.hasGroupIdentifier()) {
36093        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
36094      }
36095      if (element.hasStatusReason()) {
36096        composeCodeableConcept("statusReason", element.getStatusReason());
36097      }
36098      if (element.hasInsurance()) { 
36099        for (Reference e : element.getInsurance()) 
36100          composeReference("insurance", e);
36101      }
36102      if (element.hasNote()) { 
36103        for (Annotation e : element.getNote()) 
36104          composeAnnotation("note", e);
36105      }
36106      if (element.hasDosageInstruction()) { 
36107        for (Dosage e : element.getDosageInstruction()) 
36108          composeDosage("dosageInstruction", e);
36109      }
36110      if (element.hasDispenseRequest()) {
36111        composeMedicationRequestMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
36112      }
36113      if (element.hasSubstitution()) {
36114        composeMedicationRequestMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
36115      }
36116      if (element.hasPriorPrescription()) {
36117        composeReference("priorPrescription", element.getPriorPrescription());
36118      }
36119      if (element.hasDetectedIssue()) { 
36120        for (Reference e : element.getDetectedIssue()) 
36121          composeReference("detectedIssue", e);
36122      }
36123      if (element.hasEventHistory()) { 
36124        for (Reference e : element.getEventHistory()) 
36125          composeReference("eventHistory", e);
36126      }
36127  }
36128
36129  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
36130    if (element != null) {
36131      composeElementAttributes(element);
36132      xml.enter(FHIR_NS, name);
36133      composeMedicationRequestMedicationRequestDispenseRequestComponentElements(element);
36134      composeElementClose(element);
36135      xml.exit(FHIR_NS, name);
36136    }
36137  }
36138
36139  protected void composeMedicationRequestMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
36140      composeBackboneElementElements(element);
36141      if (element.hasValidityPeriod()) {
36142        composePeriod("validityPeriod", element.getValidityPeriod());
36143      }
36144      if (element.hasNumberOfRepeatsAllowedElement()) {
36145        composeUnsignedInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
36146      }
36147      if (element.hasQuantity()) {
36148        composeSimpleQuantity("quantity", element.getQuantity());
36149      }
36150      if (element.hasExpectedSupplyDuration()) {
36151        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
36152      }
36153      if (element.hasPerformer()) {
36154        composeReference("performer", element.getPerformer());
36155      }
36156  }
36157
36158  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
36159    if (element != null) {
36160      composeElementAttributes(element);
36161      xml.enter(FHIR_NS, name);
36162      composeMedicationRequestMedicationRequestSubstitutionComponentElements(element);
36163      composeElementClose(element);
36164      xml.exit(FHIR_NS, name);
36165    }
36166  }
36167
36168  protected void composeMedicationRequestMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
36169      composeBackboneElementElements(element);
36170      if (element.hasAllowedElement()) {
36171        composeBoolean("allowed", element.getAllowedElement());
36172      }
36173      if (element.hasReason()) {
36174        composeCodeableConcept("reason", element.getReason());
36175      }
36176  }
36177
36178  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
36179    if (element != null) {
36180      composeDomainResourceAttributes(element);
36181      xml.enter(FHIR_NS, name);
36182      composeMedicationStatementElements(element);
36183      composeElementClose(element);
36184      xml.exit(FHIR_NS, name);
36185    }
36186  }
36187
36188  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
36189      composeDomainResourceElements(element);
36190      if (element.hasIdentifier()) { 
36191        for (Identifier e : element.getIdentifier()) 
36192          composeIdentifier("identifier", e);
36193      }
36194      if (element.hasBasedOn()) { 
36195        for (Reference e : element.getBasedOn()) 
36196          composeReference("basedOn", e);
36197      }
36198      if (element.hasPartOf()) { 
36199        for (Reference e : element.getPartOf()) 
36200          composeReference("partOf", e);
36201      }
36202      if (element.hasStatusElement())
36203        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
36204      if (element.hasStatusReason()) { 
36205        for (CodeableConcept e : element.getStatusReason()) 
36206          composeCodeableConcept("statusReason", e);
36207      }
36208      if (element.hasCategory()) {
36209        composeCodeableConcept("category", element.getCategory());
36210      }
36211      if (element.hasMedication()) {
36212        composeType("medication", element.getMedication());
36213      }      if (element.hasSubject()) {
36214        composeReference("subject", element.getSubject());
36215      }
36216      if (element.hasContext()) {
36217        composeReference("context", element.getContext());
36218      }
36219      if (element.hasEffective()) {
36220        composeType("effective", element.getEffective());
36221      }      if (element.hasDateAssertedElement()) {
36222        composeDateTime("dateAsserted", element.getDateAssertedElement());
36223      }
36224      if (element.hasInformationSource()) {
36225        composeReference("informationSource", element.getInformationSource());
36226      }
36227      if (element.hasDerivedFrom()) { 
36228        for (Reference e : element.getDerivedFrom()) 
36229          composeReference("derivedFrom", e);
36230      }
36231      if (element.hasReasonCode()) { 
36232        for (CodeableConcept e : element.getReasonCode()) 
36233          composeCodeableConcept("reasonCode", e);
36234      }
36235      if (element.hasReasonReference()) { 
36236        for (Reference e : element.getReasonReference()) 
36237          composeReference("reasonReference", e);
36238      }
36239      if (element.hasNote()) { 
36240        for (Annotation e : element.getNote()) 
36241          composeAnnotation("note", e);
36242      }
36243      if (element.hasDosage()) { 
36244        for (Dosage e : element.getDosage()) 
36245          composeDosage("dosage", e);
36246      }
36247  }
36248
36249  protected void composeMedicinalProduct(String name, MedicinalProduct element) throws IOException {
36250    if (element != null) {
36251      composeDomainResourceAttributes(element);
36252      xml.enter(FHIR_NS, name);
36253      composeMedicinalProductElements(element);
36254      composeElementClose(element);
36255      xml.exit(FHIR_NS, name);
36256    }
36257  }
36258
36259  protected void composeMedicinalProductElements(MedicinalProduct element) throws IOException {
36260      composeDomainResourceElements(element);
36261      if (element.hasIdentifier()) {
36262        composeIdentifier("identifier", element.getIdentifier());
36263      }
36264      if (element.hasType()) {
36265        composeCodeableConcept("type", element.getType());
36266      }
36267      if (element.hasCombinedPharmaceuticalDoseForm()) {
36268        composeCodeableConcept("combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm());
36269      }
36270      if (element.hasAdditionalMonitoringIndicator()) {
36271        composeCodeableConcept("additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator());
36272      }
36273      if (element.hasSpecialMeasures()) { 
36274        for (StringType e : element.getSpecialMeasures()) 
36275          composeString("specialMeasures", e);
36276      }
36277      if (element.hasPaediatricUseIndicator()) {
36278        composeCodeableConcept("paediatricUseIndicator", element.getPaediatricUseIndicator());
36279      }
36280      if (element.hasOrphanDesignationStatus()) {
36281        composeCodeableConcept("orphanDesignationStatus", element.getOrphanDesignationStatus());
36282      }
36283      if (element.hasProductClassification()) { 
36284        for (CodeableConcept e : element.getProductClassification()) 
36285          composeCodeableConcept("productClassification", e);
36286      }
36287      if (element.hasMarketingAuthorization()) {
36288        composeReference("marketingAuthorization", element.getMarketingAuthorization());
36289      }
36290      if (element.hasPackagedMedicinalProduct()) { 
36291        for (Reference e : element.getPackagedMedicinalProduct()) 
36292          composeReference("packagedMedicinalProduct", e);
36293      }
36294      if (element.hasPharmaceuticalProduct()) { 
36295        for (Reference e : element.getPharmaceuticalProduct()) 
36296          composeReference("pharmaceuticalProduct", e);
36297      }
36298      if (element.hasClinicalParticulars()) { 
36299        for (Reference e : element.getClinicalParticulars()) 
36300          composeReference("clinicalParticulars", e);
36301      }
36302      if (element.hasAttachedDocument()) { 
36303        for (Reference e : element.getAttachedDocument()) 
36304          composeReference("attachedDocument", e);
36305      }
36306      if (element.hasMasterFile()) { 
36307        for (Reference e : element.getMasterFile()) 
36308          composeReference("masterFile", e);
36309      }
36310      if (element.hasName()) { 
36311        for (MedicinalProduct.MedicinalProductNameComponent e : element.getName()) 
36312          composeMedicinalProductMedicinalProductNameComponent("name", e);
36313      }
36314      if (element.hasCrossReference()) { 
36315        for (Identifier e : element.getCrossReference()) 
36316          composeIdentifier("crossReference", e);
36317      }
36318      if (element.hasManufacturingBusinessOperation()) { 
36319        for (MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent e : element.getManufacturingBusinessOperation()) 
36320          composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent("manufacturingBusinessOperation", e);
36321      }
36322  }
36323
36324  protected void composeMedicinalProductMedicinalProductNameComponent(String name, MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
36325    if (element != null) {
36326      composeElementAttributes(element);
36327      xml.enter(FHIR_NS, name);
36328      composeMedicinalProductMedicinalProductNameComponentElements(element);
36329      composeElementClose(element);
36330      xml.exit(FHIR_NS, name);
36331    }
36332  }
36333
36334  protected void composeMedicinalProductMedicinalProductNameComponentElements(MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
36335      composeBackboneElementElements(element);
36336      if (element.hasFullNameElement()) {
36337        composeString("fullName", element.getFullNameElement());
36338      }
36339      if (element.hasNamePart()) { 
36340        for (MedicinalProduct.MedicinalProductNameNamePartComponent e : element.getNamePart()) 
36341          composeMedicinalProductMedicinalProductNameNamePartComponent("namePart", e);
36342      }
36343      if (element.hasCountryLanguage()) { 
36344        for (MedicinalProduct.MedicinalProductNameCountryLanguageComponent e : element.getCountryLanguage()) 
36345          composeMedicinalProductMedicinalProductNameCountryLanguageComponent("countryLanguage", e);
36346      }
36347  }
36348
36349  protected void composeMedicinalProductMedicinalProductNameNamePartComponent(String name, MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
36350    if (element != null) {
36351      composeElementAttributes(element);
36352      xml.enter(FHIR_NS, name);
36353      composeMedicinalProductMedicinalProductNameNamePartComponentElements(element);
36354      composeElementClose(element);
36355      xml.exit(FHIR_NS, name);
36356    }
36357  }
36358
36359  protected void composeMedicinalProductMedicinalProductNameNamePartComponentElements(MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
36360      composeBackboneElementElements(element);
36361      if (element.hasPartElement()) {
36362        composeString("part", element.getPartElement());
36363      }
36364      if (element.hasType()) {
36365        composeCoding("type", element.getType());
36366      }
36367  }
36368
36369  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponent(String name, MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
36370    if (element != null) {
36371      composeElementAttributes(element);
36372      xml.enter(FHIR_NS, name);
36373      composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(element);
36374      composeElementClose(element);
36375      xml.exit(FHIR_NS, name);
36376    }
36377  }
36378
36379  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
36380      composeBackboneElementElements(element);
36381      if (element.hasCountry()) {
36382        composeCodeableConcept("country", element.getCountry());
36383      }
36384      if (element.hasJurisdiction()) {
36385        composeCodeableConcept("jurisdiction", element.getJurisdiction());
36386      }
36387      if (element.hasLanguage()) {
36388        composeCodeableConcept("language", element.getLanguage());
36389      }
36390  }
36391
36392  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(String name, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
36393    if (element != null) {
36394      composeElementAttributes(element);
36395      xml.enter(FHIR_NS, name);
36396      composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(element);
36397      composeElementClose(element);
36398      xml.exit(FHIR_NS, name);
36399    }
36400  }
36401
36402  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
36403      composeBackboneElementElements(element);
36404      if (element.hasOperationType()) {
36405        composeCodeableConcept("operationType", element.getOperationType());
36406      }
36407      if (element.hasAuthorisationReferenceNumber()) {
36408        composeIdentifier("authorisationReferenceNumber", element.getAuthorisationReferenceNumber());
36409      }
36410      if (element.hasEffectiveDateElement()) {
36411        composeDateTime("effectiveDate", element.getEffectiveDateElement());
36412      }
36413      if (element.hasConfidentialityIndicator()) {
36414        composeCodeableConcept("confidentialityIndicator", element.getConfidentialityIndicator());
36415      }
36416      if (element.hasManufacturer()) { 
36417        for (Reference e : element.getManufacturer()) 
36418          composeReference("manufacturer", e);
36419      }
36420      if (element.hasRegulator()) {
36421        composeReference("regulator", element.getRegulator());
36422      }
36423  }
36424
36425  protected void composeMedicinalProductAuthorization(String name, MedicinalProductAuthorization element) throws IOException {
36426    if (element != null) {
36427      composeDomainResourceAttributes(element);
36428      xml.enter(FHIR_NS, name);
36429      composeMedicinalProductAuthorizationElements(element);
36430      composeElementClose(element);
36431      xml.exit(FHIR_NS, name);
36432    }
36433  }
36434
36435  protected void composeMedicinalProductAuthorizationElements(MedicinalProductAuthorization element) throws IOException {
36436      composeDomainResourceElements(element);
36437      if (element.hasIdentifier()) {
36438        composeIdentifier("identifier", element.getIdentifier());
36439      }
36440      if (element.hasCountry()) { 
36441        for (CodeableConcept e : element.getCountry()) 
36442          composeCodeableConcept("country", e);
36443      }
36444      if (element.hasLegalStatusOfSupply()) {
36445        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
36446      }
36447      if (element.hasStatus()) {
36448        composeCodeableConcept("status", element.getStatus());
36449      }
36450      if (element.hasStatusDateElement()) {
36451        composeDateTime("statusDate", element.getStatusDateElement());
36452      }
36453      if (element.hasRestoreDateElement()) {
36454        composeDateTime("restoreDate", element.getRestoreDateElement());
36455      }
36456      if (element.hasValidityPeriod()) {
36457        composePeriod("validityPeriod", element.getValidityPeriod());
36458      }
36459      if (element.hasDataExclusivityPeriod()) {
36460        composePeriod("dataExclusivityPeriod", element.getDataExclusivityPeriod());
36461      }
36462      if (element.hasDateOfFirstAuthorizationElement()) {
36463        composeDateTime("dateOfFirstAuthorization", element.getDateOfFirstAuthorizationElement());
36464      }
36465      if (element.hasInternationalBirthDateElement()) {
36466        composeDateTime("internationalBirthDate", element.getInternationalBirthDateElement());
36467      }
36468      if (element.hasJurisdictionalAuthorization()) { 
36469        for (MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent e : element.getJurisdictionalAuthorization()) 
36470          composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent("jurisdictionalAuthorization", e);
36471      }
36472      if (element.hasHolder()) {
36473        composeReference("holder", element.getHolder());
36474      }
36475      if (element.hasRegulator()) {
36476        composeReference("regulator", element.getRegulator());
36477      }
36478      if (element.hasProcedure()) {
36479        composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent("procedure", element.getProcedure());
36480      }
36481      if (element.hasMarketingStatus()) { 
36482        for (MarketingStatus e : element.getMarketingStatus()) 
36483          composeMarketingStatus("marketingStatus", e);
36484      }
36485  }
36486
36487  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
36488    if (element != null) {
36489      composeElementAttributes(element);
36490      xml.enter(FHIR_NS, name);
36491      composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(element);
36492      composeElementClose(element);
36493      xml.exit(FHIR_NS, name);
36494    }
36495  }
36496
36497  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
36498      composeBackboneElementElements(element);
36499      if (element.hasCountry()) {
36500        composeCodeableConcept("country", element.getCountry());
36501      }
36502      if (element.hasJurisdiction()) {
36503        composeCodeableConcept("jurisdiction", element.getJurisdiction());
36504      }
36505      if (element.hasNumber()) {
36506        composeIdentifier("number", element.getNumber());
36507      }
36508      if (element.hasLegalStatusOfSupply()) {
36509        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
36510      }
36511  }
36512
36513  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
36514    if (element != null) {
36515      composeElementAttributes(element);
36516      xml.enter(FHIR_NS, name);
36517      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(element);
36518      composeElementClose(element);
36519      xml.exit(FHIR_NS, name);
36520    }
36521  }
36522
36523  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
36524      composeBackboneElementElements(element);
36525      if (element.hasNumber()) {
36526        composeIdentifier("number", element.getNumber());
36527      }
36528      if (element.hasType()) {
36529        composeCodeableConcept("type", element.getType());
36530      }
36531      if (element.hasDate()) {
36532        composePeriod("date", element.getDate());
36533      }
36534      if (element.hasApplication()) { 
36535        for (MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureApplicationComponent e : element.getApplication()) 
36536          composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponent("application", e);
36537      }
36538  }
36539
36540  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureApplicationComponent element) throws IOException {
36541    if (element != null) {
36542      composeElementAttributes(element);
36543      xml.enter(FHIR_NS, name);
36544      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponentElements(element);
36545      composeElementClose(element);
36546      xml.exit(FHIR_NS, name);
36547    }
36548  }
36549
36550  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureApplicationComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureApplicationComponent element) throws IOException {
36551      composeBackboneElementElements(element);
36552      if (element.hasNumber()) {
36553        composeIdentifier("number", element.getNumber());
36554      }
36555      if (element.hasType()) {
36556        composeCodeableConcept("type", element.getType());
36557      }
36558      if (element.hasDateElement()) {
36559        composeDateTime("date", element.getDateElement());
36560      }
36561  }
36562
36563  protected void composeMedicinalProductClinicals(String name, MedicinalProductClinicals element) throws IOException {
36564    if (element != null) {
36565      composeDomainResourceAttributes(element);
36566      xml.enter(FHIR_NS, name);
36567      composeMedicinalProductClinicalsElements(element);
36568      composeElementClose(element);
36569      xml.exit(FHIR_NS, name);
36570    }
36571  }
36572
36573  protected void composeMedicinalProductClinicalsElements(MedicinalProductClinicals element) throws IOException {
36574      composeDomainResourceElements(element);
36575      if (element.hasUndesirableEffects()) { 
36576        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent e : element.getUndesirableEffects()) 
36577          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent("undesirableEffects", e);
36578      }
36579      if (element.hasTherapeuticIndication()) { 
36580        for (MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent e : element.getTherapeuticIndication()) 
36581          composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent("therapeuticIndication", e);
36582      }
36583      if (element.hasContraindication()) { 
36584        for (MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent e : element.getContraindication()) 
36585          composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent("contraindication", e);
36586      }
36587      if (element.hasInteractions()) { 
36588        for (MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent e : element.getInteractions()) 
36589          composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent("interactions", e);
36590      }
36591  }
36592
36593  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent element) throws IOException {
36594    if (element != null) {
36595      composeElementAttributes(element);
36596      xml.enter(FHIR_NS, name);
36597      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponentElements(element);
36598      composeElementClose(element);
36599      xml.exit(FHIR_NS, name);
36600    }
36601  }
36602
36603  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent element) throws IOException {
36604      composeBackboneElementElements(element);
36605      if (element.hasSymptomConditionEffect()) {
36606        composeCodeableConcept("symptomConditionEffect", element.getSymptomConditionEffect());
36607      }
36608      if (element.hasClassification()) {
36609        composeCodeableConcept("classification", element.getClassification());
36610      }
36611      if (element.hasFrequencyOfOccurrence()) {
36612        composeCodeableConcept("frequencyOfOccurrence", element.getFrequencyOfOccurrence());
36613      }
36614      if (element.hasPopulation()) { 
36615        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent e : element.getPopulation()) 
36616          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent("population", e);
36617      }
36618  }
36619
36620  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent element) throws IOException {
36621    if (element != null) {
36622      composeElementAttributes(element);
36623      xml.enter(FHIR_NS, name);
36624      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponentElements(element);
36625      composeElementClose(element);
36626      xml.exit(FHIR_NS, name);
36627    }
36628  }
36629
36630  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent element) throws IOException {
36631      composeBackboneElementElements(element);
36632      if (element.hasAge()) {
36633        composeType("age", element.getAge());
36634      }      if (element.hasGender()) {
36635        composeCodeableConcept("gender", element.getGender());
36636      }
36637      if (element.hasRace()) {
36638        composeCodeableConcept("race", element.getRace());
36639      }
36640      if (element.hasPhysiologicalCondition()) {
36641        composeCodeableConcept("physiologicalCondition", element.getPhysiologicalCondition());
36642      }
36643  }
36644
36645  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent element) throws IOException {
36646    if (element != null) {
36647      composeElementAttributes(element);
36648      xml.enter(FHIR_NS, name);
36649      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponentElements(element);
36650      composeElementClose(element);
36651      xml.exit(FHIR_NS, name);
36652    }
36653  }
36654
36655  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent element) throws IOException {
36656      composeBackboneElementElements(element);
36657      if (element.hasDiseaseSymptomProcedure()) {
36658        composeCodeableConcept("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
36659      }
36660      if (element.hasDiseaseStatus()) {
36661        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
36662      }
36663      if (element.hasComorbidity()) { 
36664        for (CodeableConcept e : element.getComorbidity()) 
36665          composeCodeableConcept("comorbidity", e);
36666      }
36667      if (element.hasIntendedEffect()) {
36668        composeCodeableConcept("intendedEffect", element.getIntendedEffect());
36669      }
36670      if (element.hasDuration()) {
36671        composeQuantity("duration", element.getDuration());
36672      }
36673      if (element.hasUndesirableEffects()) { 
36674        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent e : element.getUndesirableEffects()) 
36675          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent("undesirableEffects", e);
36676      }
36677      if (element.hasOtherTherapy()) { 
36678        for (MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent e : element.getOtherTherapy()) 
36679          composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent("otherTherapy", e);
36680      }
36681      if (element.hasPopulation()) { 
36682        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent e : element.getPopulation()) 
36683          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent("population", e);
36684      }
36685  }
36686
36687  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent element) throws IOException {
36688    if (element != null) {
36689      composeElementAttributes(element);
36690      xml.enter(FHIR_NS, name);
36691      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponentElements(element);
36692      composeElementClose(element);
36693      xml.exit(FHIR_NS, name);
36694    }
36695  }
36696
36697  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent element) throws IOException {
36698      composeBackboneElementElements(element);
36699      if (element.hasTherapyRelationshipType()) {
36700        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
36701      }
36702      if (element.hasMedication()) {
36703        composeType("medication", element.getMedication());
36704      }  }
36705
36706  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent element) throws IOException {
36707    if (element != null) {
36708      composeElementAttributes(element);
36709      xml.enter(FHIR_NS, name);
36710      composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponentElements(element);
36711      composeElementClose(element);
36712      xml.exit(FHIR_NS, name);
36713    }
36714  }
36715
36716  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent element) throws IOException {
36717      composeBackboneElementElements(element);
36718      if (element.hasDisease()) {
36719        composeCodeableConcept("disease", element.getDisease());
36720      }
36721      if (element.hasDiseaseStatus()) {
36722        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
36723      }
36724      if (element.hasComorbidity()) { 
36725        for (CodeableConcept e : element.getComorbidity()) 
36726          composeCodeableConcept("comorbidity", e);
36727      }
36728      if (element.hasTherapeuticIndication()) { 
36729        for (MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent e : element.getTherapeuticIndication()) 
36730          composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent("therapeuticIndication", e);
36731      }
36732      if (element.hasOtherTherapy()) { 
36733        for (MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent e : element.getOtherTherapy()) 
36734          composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent("otherTherapy", e);
36735      }
36736      if (element.hasPopulation()) { 
36737        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent e : element.getPopulation()) 
36738          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent("population", e);
36739      }
36740  }
36741
36742  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent element) throws IOException {
36743    if (element != null) {
36744      composeElementAttributes(element);
36745      xml.enter(FHIR_NS, name);
36746      composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponentElements(element);
36747      composeElementClose(element);
36748      xml.exit(FHIR_NS, name);
36749    }
36750  }
36751
36752  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent element) throws IOException {
36753      composeBackboneElementElements(element);
36754      if (element.hasInteractant()) { 
36755        for (CodeableConcept e : element.getInteractant()) 
36756          composeCodeableConcept("interactant", e);
36757      }
36758      if (element.hasType()) {
36759        composeCodeableConcept("type", element.getType());
36760      }
36761      if (element.hasEffect()) {
36762        composeCodeableConcept("effect", element.getEffect());
36763      }
36764      if (element.hasIncidence()) {
36765        composeCodeableConcept("incidence", element.getIncidence());
36766      }
36767      if (element.hasManagement()) {
36768        composeCodeableConcept("management", element.getManagement());
36769      }
36770  }
36771
36772  protected void composeMedicinalProductDeviceSpec(String name, MedicinalProductDeviceSpec element) throws IOException {
36773    if (element != null) {
36774      composeDomainResourceAttributes(element);
36775      xml.enter(FHIR_NS, name);
36776      composeMedicinalProductDeviceSpecElements(element);
36777      composeElementClose(element);
36778      xml.exit(FHIR_NS, name);
36779    }
36780  }
36781
36782  protected void composeMedicinalProductDeviceSpecElements(MedicinalProductDeviceSpec element) throws IOException {
36783      composeDomainResourceElements(element);
36784      if (element.hasIdentifier()) {
36785        composeIdentifier("identifier", element.getIdentifier());
36786      }
36787      if (element.hasType()) {
36788        composeCodeableConcept("type", element.getType());
36789      }
36790      if (element.hasTradeNameElement()) {
36791        composeString("tradeName", element.getTradeNameElement());
36792      }
36793      if (element.hasQuantity()) {
36794        composeQuantity("quantity", element.getQuantity());
36795      }
36796      if (element.hasListingNumberElement()) {
36797        composeString("listingNumber", element.getListingNumberElement());
36798      }
36799      if (element.hasModelNumberElement()) {
36800        composeString("modelNumber", element.getModelNumberElement());
36801      }
36802      if (element.hasSterilityIndicator()) {
36803        composeCodeableConcept("sterilityIndicator", element.getSterilityIndicator());
36804      }
36805      if (element.hasSterilisationRequirement()) {
36806        composeCodeableConcept("sterilisationRequirement", element.getSterilisationRequirement());
36807      }
36808      if (element.hasUsage()) {
36809        composeCodeableConcept("usage", element.getUsage());
36810      }
36811      if (element.hasNomenclature()) { 
36812        for (CodeableConcept e : element.getNomenclature()) 
36813          composeCodeableConcept("nomenclature", e);
36814      }
36815      if (element.hasShelfLife()) { 
36816        for (ProductShelfLife e : element.getShelfLife()) 
36817          composeProductShelfLife("shelfLife", e);
36818      }
36819      if (element.hasPhysicalCharacteristics()) {
36820        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
36821      }
36822      if (element.hasOtherCharacteristics()) { 
36823        for (CodeableConcept e : element.getOtherCharacteristics()) 
36824          composeCodeableConcept("otherCharacteristics", e);
36825      }
36826      if (element.hasBatchIdentifier()) { 
36827        for (Identifier e : element.getBatchIdentifier()) 
36828          composeIdentifier("batchIdentifier", e);
36829      }
36830      if (element.hasManufacturer()) { 
36831        for (Reference e : element.getManufacturer()) 
36832          composeReference("manufacturer", e);
36833      }
36834      if (element.hasMaterial()) { 
36835        for (MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent e : element.getMaterial()) 
36836          composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent("material", e);
36837      }
36838  }
36839
36840  protected void composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(String name, MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent element) throws IOException {
36841    if (element != null) {
36842      composeElementAttributes(element);
36843      xml.enter(FHIR_NS, name);
36844      composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponentElements(element);
36845      composeElementClose(element);
36846      xml.exit(FHIR_NS, name);
36847    }
36848  }
36849
36850  protected void composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponentElements(MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent element) throws IOException {
36851      composeBackboneElementElements(element);
36852      if (element.hasSubstance()) {
36853        composeCodeableConcept("substance", element.getSubstance());
36854      }
36855      if (element.hasAlternateElement()) {
36856        composeBoolean("alternate", element.getAlternateElement());
36857      }
36858      if (element.hasAllergenicIndicatorElement()) {
36859        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
36860      }
36861  }
36862
36863  protected void composeMedicinalProductIngredient(String name, MedicinalProductIngredient element) throws IOException {
36864    if (element != null) {
36865      composeDomainResourceAttributes(element);
36866      xml.enter(FHIR_NS, name);
36867      composeMedicinalProductIngredientElements(element);
36868      composeElementClose(element);
36869      xml.exit(FHIR_NS, name);
36870    }
36871  }
36872
36873  protected void composeMedicinalProductIngredientElements(MedicinalProductIngredient element) throws IOException {
36874      composeDomainResourceElements(element);
36875      if (element.hasIdentifier()) {
36876        composeIdentifier("identifier", element.getIdentifier());
36877      }
36878      if (element.hasRole()) {
36879        composeCodeableConcept("role", element.getRole());
36880      }
36881      if (element.hasAllergenicIndicatorElement()) {
36882        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
36883      }
36884      if (element.hasManufacturer()) { 
36885        for (Reference e : element.getManufacturer()) 
36886          composeReference("manufacturer", e);
36887      }
36888      if (element.hasSpecifiedSubstance()) { 
36889        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent e : element.getSpecifiedSubstance()) 
36890          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent("specifiedSubstance", e);
36891      }
36892      if (element.hasSubstance()) {
36893        composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent("substance", element.getSubstance());
36894      }
36895  }
36896
36897  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
36898    if (element != null) {
36899      composeElementAttributes(element);
36900      xml.enter(FHIR_NS, name);
36901      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(element);
36902      composeElementClose(element);
36903      xml.exit(FHIR_NS, name);
36904    }
36905  }
36906
36907  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
36908      composeBackboneElementElements(element);
36909      if (element.hasCode()) {
36910        composeCodeableConcept("code", element.getCode());
36911      }
36912      if (element.hasGroup()) {
36913        composeCodeableConcept("group", element.getGroup());
36914      }
36915      if (element.hasConfidentiality()) {
36916        composeCodeableConcept("confidentiality", element.getConfidentiality());
36917      }
36918      if (element.hasStrength()) { 
36919        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
36920          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
36921      }
36922  }
36923
36924  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
36925    if (element != null) {
36926      composeElementAttributes(element);
36927      xml.enter(FHIR_NS, name);
36928      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(element);
36929      composeElementClose(element);
36930      xml.exit(FHIR_NS, name);
36931    }
36932  }
36933
36934  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
36935      composeBackboneElementElements(element);
36936      if (element.hasPresentation()) {
36937        composeRatio("presentation", element.getPresentation());
36938      }
36939      if (element.hasConcentration()) {
36940        composeRatio("concentration", element.getConcentration());
36941      }
36942      if (element.hasMeasurementPointElement()) {
36943        composeString("measurementPoint", element.getMeasurementPointElement());
36944      }
36945      if (element.hasCountry()) { 
36946        for (CodeableConcept e : element.getCountry()) 
36947          composeCodeableConcept("country", e);
36948      }
36949      if (element.hasReferenceStrength()) { 
36950        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent e : element.getReferenceStrength()) 
36951          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent("referenceStrength", e);
36952      }
36953  }
36954
36955  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
36956    if (element != null) {
36957      composeElementAttributes(element);
36958      xml.enter(FHIR_NS, name);
36959      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(element);
36960      composeElementClose(element);
36961      xml.exit(FHIR_NS, name);
36962    }
36963  }
36964
36965  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
36966      composeBackboneElementElements(element);
36967      if (element.hasSubstance()) {
36968        composeCodeableConcept("substance", element.getSubstance());
36969      }
36970  }
36971
36972  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
36973    if (element != null) {
36974      composeElementAttributes(element);
36975      xml.enter(FHIR_NS, name);
36976      composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(element);
36977      composeElementClose(element);
36978      xml.exit(FHIR_NS, name);
36979    }
36980  }
36981
36982  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
36983      composeBackboneElementElements(element);
36984      if (element.hasCode()) {
36985        composeCodeableConcept("code", element.getCode());
36986      }
36987      if (element.hasStrength()) { 
36988        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
36989          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
36990      }
36991  }
36992
36993  protected void composeMedicinalProductPackaged(String name, MedicinalProductPackaged element) throws IOException {
36994    if (element != null) {
36995      composeDomainResourceAttributes(element);
36996      xml.enter(FHIR_NS, name);
36997      composeMedicinalProductPackagedElements(element);
36998      composeElementClose(element);
36999      xml.exit(FHIR_NS, name);
37000    }
37001  }
37002
37003  protected void composeMedicinalProductPackagedElements(MedicinalProductPackaged element) throws IOException {
37004      composeDomainResourceElements(element);
37005      if (element.hasIdentifier()) {
37006        composeIdentifier("identifier", element.getIdentifier());
37007      }
37008      if (element.hasDescriptionElement()) {
37009        composeString("description", element.getDescriptionElement());
37010      }
37011      if (element.hasMarketingStatus()) { 
37012        for (MarketingStatus e : element.getMarketingStatus()) 
37013          composeMarketingStatus("marketingStatus", e);
37014      }
37015      if (element.hasBatchIdentifier()) { 
37016        for (MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent e : element.getBatchIdentifier()) 
37017          composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent("batchIdentifier", e);
37018      }
37019      if (element.hasPackageItem()) { 
37020        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
37021          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
37022      }
37023  }
37024
37025  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
37026    if (element != null) {
37027      composeElementAttributes(element);
37028      xml.enter(FHIR_NS, name);
37029      composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(element);
37030      composeElementClose(element);
37031      xml.exit(FHIR_NS, name);
37032    }
37033  }
37034
37035  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
37036      composeBackboneElementElements(element);
37037      if (element.hasOuterPackaging()) {
37038        composeIdentifier("outerPackaging", element.getOuterPackaging());
37039      }
37040      if (element.hasImmediatePackaging()) {
37041        composeIdentifier("immediatePackaging", element.getImmediatePackaging());
37042      }
37043  }
37044
37045  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
37046    if (element != null) {
37047      composeElementAttributes(element);
37048      xml.enter(FHIR_NS, name);
37049      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(element);
37050      composeElementClose(element);
37051      xml.exit(FHIR_NS, name);
37052    }
37053  }
37054
37055  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
37056      composeBackboneElementElements(element);
37057      if (element.hasIdentifier()) { 
37058        for (Identifier e : element.getIdentifier()) 
37059          composeIdentifier("identifier", e);
37060      }
37061      if (element.hasType()) {
37062        composeCodeableConcept("type", element.getType());
37063      }
37064      if (element.hasQuantity()) {
37065        composeQuantity("quantity", element.getQuantity());
37066      }
37067      if (element.hasMaterial()) { 
37068        for (CodeableConcept e : element.getMaterial()) 
37069          composeCodeableConcept("material", e);
37070      }
37071      if (element.hasAlternateMaterial()) { 
37072        for (CodeableConcept e : element.getAlternateMaterial()) 
37073          composeCodeableConcept("alternateMaterial", e);
37074      }
37075      if (element.hasManufacturer()) { 
37076        for (Reference e : element.getManufacturer()) 
37077          composeReference("manufacturer", e);
37078      }
37079      if (element.hasDevice()) { 
37080        for (Reference e : element.getDevice()) 
37081          composeReference("device", e);
37082      }
37083      if (element.hasManufacturedItem()) { 
37084        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemManufacturedItemComponent e : element.getManufacturedItem()) 
37085          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponent("manufacturedItem", e);
37086      }
37087      if (element.hasOtherCharacteristics()) { 
37088        for (CodeableConcept e : element.getOtherCharacteristics()) 
37089          composeCodeableConcept("otherCharacteristics", e);
37090      }
37091      if (element.hasPackageItem()) { 
37092        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
37093          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
37094      }
37095      if (element.hasPhysicalCharacteristics()) {
37096        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
37097      }
37098      if (element.hasShelfLifeStorage()) { 
37099        for (ProductShelfLife e : element.getShelfLifeStorage()) 
37100          composeProductShelfLife("shelfLifeStorage", e);
37101      }
37102  }
37103
37104  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemManufacturedItemComponent element) throws IOException {
37105    if (element != null) {
37106      composeElementAttributes(element);
37107      xml.enter(FHIR_NS, name);
37108      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponentElements(element);
37109      composeElementClose(element);
37110      xml.exit(FHIR_NS, name);
37111    }
37112  }
37113
37114  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemManufacturedItemComponentElements(MedicinalProductPackaged.MedicinalProductPackagedPackageItemManufacturedItemComponent element) throws IOException {
37115      composeBackboneElementElements(element);
37116      if (element.hasManufacturedDoseForm()) {
37117        composeCodeableConcept("manufacturedDoseForm", element.getManufacturedDoseForm());
37118      }
37119      if (element.hasUnitOfPresentation()) {
37120        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
37121      }
37122      if (element.hasQuantity()) {
37123        composeQuantity("quantity", element.getQuantity());
37124      }
37125      if (element.hasXManufacturer()) { 
37126        for (Reference e : element.getXManufacturer()) 
37127          composeReference("xManufacturer", e);
37128      }
37129      if (element.hasIngredient()) { 
37130        for (Reference e : element.getIngredient()) 
37131          composeReference("ingredient", e);
37132      }
37133      if (element.hasPhysicalCharacteristics()) {
37134        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
37135      }
37136  }
37137
37138  protected void composeMedicinalProductPharmaceutical(String name, MedicinalProductPharmaceutical element) throws IOException {
37139    if (element != null) {
37140      composeDomainResourceAttributes(element);
37141      xml.enter(FHIR_NS, name);
37142      composeMedicinalProductPharmaceuticalElements(element);
37143      composeElementClose(element);
37144      xml.exit(FHIR_NS, name);
37145    }
37146  }
37147
37148  protected void composeMedicinalProductPharmaceuticalElements(MedicinalProductPharmaceutical element) throws IOException {
37149      composeDomainResourceElements(element);
37150      if (element.hasIdentifier()) { 
37151        for (Identifier e : element.getIdentifier()) 
37152          composeIdentifier("identifier", e);
37153      }
37154      if (element.hasAdministrableDoseForm()) {
37155        composeCodeableConcept("administrableDoseForm", element.getAdministrableDoseForm());
37156      }
37157      if (element.hasUnitOfPresentation()) {
37158        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
37159      }
37160      if (element.hasRouteOfAdministration()) { 
37161        for (CodeableConcept e : element.getRouteOfAdministration()) 
37162          composeCodeableConcept("routeOfAdministration", e);
37163      }
37164      if (element.hasIngredient()) { 
37165        for (Reference e : element.getIngredient()) 
37166          composeReference("ingredient", e);
37167      }
37168      if (element.hasDevice()) { 
37169        for (StringType e : element.getDevice()) 
37170          composeString("device", e);
37171      }
37172      if (element.hasCharacteristics()) { 
37173        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent e : element.getCharacteristics()) 
37174          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent("characteristics", e);
37175      }
37176  }
37177
37178  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
37179    if (element != null) {
37180      composeElementAttributes(element);
37181      xml.enter(FHIR_NS, name);
37182      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(element);
37183      composeElementClose(element);
37184      xml.exit(FHIR_NS, name);
37185    }
37186  }
37187
37188  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
37189      composeBackboneElementElements(element);
37190      if (element.hasCode()) {
37191        composeCodeableConcept("code", element.getCode());
37192      }
37193      if (element.hasStatus()) {
37194        composeCodeableConcept("status", element.getStatus());
37195      }
37196  }
37197
37198  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
37199    if (element != null) {
37200      composeDomainResourceAttributes(element);
37201      xml.enter(FHIR_NS, name);
37202      composeMessageDefinitionElements(element);
37203      composeElementClose(element);
37204      xml.exit(FHIR_NS, name);
37205    }
37206  }
37207
37208  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
37209      composeDomainResourceElements(element);
37210      if (element.hasUrlElement()) {
37211        composeUri("url", element.getUrlElement());
37212      }
37213      if (element.hasIdentifier()) {
37214        composeIdentifier("identifier", element.getIdentifier());
37215      }
37216      if (element.hasVersionElement()) {
37217        composeString("version", element.getVersionElement());
37218      }
37219      if (element.hasNameElement()) {
37220        composeString("name", element.getNameElement());
37221      }
37222      if (element.hasTitleElement()) {
37223        composeString("title", element.getTitleElement());
37224      }
37225      if (element.hasReplaces()) { 
37226        for (CanonicalType e : element.getReplaces()) 
37227          composeCanonical("replaces", e);
37228      }
37229      if (element.hasStatusElement())
37230        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37231      if (element.hasExperimentalElement()) {
37232        composeBoolean("experimental", element.getExperimentalElement());
37233      }
37234      if (element.hasDateElement()) {
37235        composeDateTime("date", element.getDateElement());
37236      }
37237      if (element.hasPublisherElement()) {
37238        composeString("publisher", element.getPublisherElement());
37239      }
37240      if (element.hasContact()) { 
37241        for (ContactDetail e : element.getContact()) 
37242          composeContactDetail("contact", e);
37243      }
37244      if (element.hasDescriptionElement()) {
37245        composeMarkdown("description", element.getDescriptionElement());
37246      }
37247      if (element.hasUseContext()) { 
37248        for (UsageContext e : element.getUseContext()) 
37249          composeUsageContext("useContext", e);
37250      }
37251      if (element.hasJurisdiction()) { 
37252        for (CodeableConcept e : element.getJurisdiction()) 
37253          composeCodeableConcept("jurisdiction", e);
37254      }
37255      if (element.hasPurposeElement()) {
37256        composeMarkdown("purpose", element.getPurposeElement());
37257      }
37258      if (element.hasCopyrightElement()) {
37259        composeMarkdown("copyright", element.getCopyrightElement());
37260      }
37261      if (element.hasBaseElement()) {
37262        composeCanonical("base", element.getBaseElement());
37263      }
37264      if (element.hasParent()) { 
37265        for (CanonicalType e : element.getParent()) 
37266          composeCanonical("parent", e);
37267      }
37268      if (element.hasEvent()) {
37269        composeType("event", element.getEvent());
37270      }      if (element.hasCategoryElement())
37271        composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
37272      if (element.hasFocus()) { 
37273        for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
37274          composeMessageDefinitionMessageDefinitionFocusComponent("focus", e);
37275      }
37276      if (element.hasResponseRequiredElement())
37277        composeEnumeration("responseRequired", element.getResponseRequiredElement(), new MessageDefinition.MessageheaderResponseRequestEnumFactory());
37278      if (element.hasAllowedResponse()) { 
37279        for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
37280          composeMessageDefinitionMessageDefinitionAllowedResponseComponent("allowedResponse", e);
37281      }
37282  }
37283
37284  protected void composeMessageDefinitionMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
37285    if (element != null) {
37286      composeElementAttributes(element);
37287      xml.enter(FHIR_NS, name);
37288      composeMessageDefinitionMessageDefinitionFocusComponentElements(element);
37289      composeElementClose(element);
37290      xml.exit(FHIR_NS, name);
37291    }
37292  }
37293
37294  protected void composeMessageDefinitionMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
37295      composeBackboneElementElements(element);
37296      if (element.hasCodeElement()) {
37297        composeCode("code", element.getCodeElement());
37298      }
37299      if (element.hasProfileElement()) {
37300        composeCanonical("profile", element.getProfileElement());
37301      }
37302      if (element.hasMinElement()) {
37303        composeUnsignedInt("min", element.getMinElement());
37304      }
37305      if (element.hasMaxElement()) {
37306        composeString("max", element.getMaxElement());
37307      }
37308  }
37309
37310  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
37311    if (element != null) {
37312      composeElementAttributes(element);
37313      xml.enter(FHIR_NS, name);
37314      composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(element);
37315      composeElementClose(element);
37316      xml.exit(FHIR_NS, name);
37317    }
37318  }
37319
37320  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
37321      composeBackboneElementElements(element);
37322      if (element.hasMessageElement()) {
37323        composeCanonical("message", element.getMessageElement());
37324      }
37325      if (element.hasSituationElement()) {
37326        composeMarkdown("situation", element.getSituationElement());
37327      }
37328  }
37329
37330  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
37331    if (element != null) {
37332      composeDomainResourceAttributes(element);
37333      xml.enter(FHIR_NS, name);
37334      composeMessageHeaderElements(element);
37335      composeElementClose(element);
37336      xml.exit(FHIR_NS, name);
37337    }
37338  }
37339
37340  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
37341      composeDomainResourceElements(element);
37342      if (element.hasEvent()) {
37343        composeType("event", element.getEvent());
37344      }      if (element.hasDestination()) { 
37345        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
37346          composeMessageHeaderMessageDestinationComponent("destination", e);
37347      }
37348      if (element.hasSender()) {
37349        composeReference("sender", element.getSender());
37350      }
37351      if (element.hasEnterer()) {
37352        composeReference("enterer", element.getEnterer());
37353      }
37354      if (element.hasAuthor()) {
37355        composeReference("author", element.getAuthor());
37356      }
37357      if (element.hasSource()) {
37358        composeMessageHeaderMessageSourceComponent("source", element.getSource());
37359      }
37360      if (element.hasResponsible()) {
37361        composeReference("responsible", element.getResponsible());
37362      }
37363      if (element.hasReason()) {
37364        composeCodeableConcept("reason", element.getReason());
37365      }
37366      if (element.hasResponse()) {
37367        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
37368      }
37369      if (element.hasFocus()) { 
37370        for (Reference e : element.getFocus()) 
37371          composeReference("focus", e);
37372      }
37373      if (element.hasDefinitionElement()) {
37374        composeCanonical("definition", element.getDefinitionElement());
37375      }
37376  }
37377
37378  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
37379    if (element != null) {
37380      composeElementAttributes(element);
37381      xml.enter(FHIR_NS, name);
37382      composeMessageHeaderMessageDestinationComponentElements(element);
37383      composeElementClose(element);
37384      xml.exit(FHIR_NS, name);
37385    }
37386  }
37387
37388  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
37389      composeBackboneElementElements(element);
37390      if (element.hasNameElement()) {
37391        composeString("name", element.getNameElement());
37392      }
37393      if (element.hasTarget()) {
37394        composeReference("target", element.getTarget());
37395      }
37396      if (element.hasEndpointElement()) {
37397        composeUrl("endpoint", element.getEndpointElement());
37398      }
37399      if (element.hasReceiver()) {
37400        composeReference("receiver", element.getReceiver());
37401      }
37402  }
37403
37404  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
37405    if (element != null) {
37406      composeElementAttributes(element);
37407      xml.enter(FHIR_NS, name);
37408      composeMessageHeaderMessageSourceComponentElements(element);
37409      composeElementClose(element);
37410      xml.exit(FHIR_NS, name);
37411    }
37412  }
37413
37414  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
37415      composeBackboneElementElements(element);
37416      if (element.hasNameElement()) {
37417        composeString("name", element.getNameElement());
37418      }
37419      if (element.hasSoftwareElement()) {
37420        composeString("software", element.getSoftwareElement());
37421      }
37422      if (element.hasVersionElement()) {
37423        composeString("version", element.getVersionElement());
37424      }
37425      if (element.hasContact()) {
37426        composeContactPoint("contact", element.getContact());
37427      }
37428      if (element.hasEndpointElement()) {
37429        composeUrl("endpoint", element.getEndpointElement());
37430      }
37431  }
37432
37433  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
37434    if (element != null) {
37435      composeElementAttributes(element);
37436      xml.enter(FHIR_NS, name);
37437      composeMessageHeaderMessageHeaderResponseComponentElements(element);
37438      composeElementClose(element);
37439      xml.exit(FHIR_NS, name);
37440    }
37441  }
37442
37443  protected void composeMessageHeaderMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
37444      composeBackboneElementElements(element);
37445      if (element.hasIdentifierElement()) {
37446        composeId("identifier", element.getIdentifierElement());
37447      }
37448      if (element.hasCodeElement())
37449        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
37450      if (element.hasDetails()) {
37451        composeReference("details", element.getDetails());
37452      }
37453  }
37454
37455  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
37456    if (element != null) {
37457      composeDomainResourceAttributes(element);
37458      xml.enter(FHIR_NS, name);
37459      composeNamingSystemElements(element);
37460      composeElementClose(element);
37461      xml.exit(FHIR_NS, name);
37462    }
37463  }
37464
37465  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
37466      composeDomainResourceElements(element);
37467      if (element.hasNameElement()) {
37468        composeString("name", element.getNameElement());
37469      }
37470      if (element.hasStatusElement())
37471        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37472      if (element.hasKindElement())
37473        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
37474      if (element.hasDateElement()) {
37475        composeDateTime("date", element.getDateElement());
37476      }
37477      if (element.hasPublisherElement()) {
37478        composeString("publisher", element.getPublisherElement());
37479      }
37480      if (element.hasContact()) { 
37481        for (ContactDetail e : element.getContact()) 
37482          composeContactDetail("contact", e);
37483      }
37484      if (element.hasResponsibleElement()) {
37485        composeString("responsible", element.getResponsibleElement());
37486      }
37487      if (element.hasType()) {
37488        composeCodeableConcept("type", element.getType());
37489      }
37490      if (element.hasDescriptionElement()) {
37491        composeMarkdown("description", element.getDescriptionElement());
37492      }
37493      if (element.hasUseContext()) { 
37494        for (UsageContext e : element.getUseContext()) 
37495          composeUsageContext("useContext", e);
37496      }
37497      if (element.hasJurisdiction()) { 
37498        for (CodeableConcept e : element.getJurisdiction()) 
37499          composeCodeableConcept("jurisdiction", e);
37500      }
37501      if (element.hasUsageElement()) {
37502        composeString("usage", element.getUsageElement());
37503      }
37504      if (element.hasUniqueId()) { 
37505        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
37506          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
37507      }
37508  }
37509
37510  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
37511    if (element != null) {
37512      composeElementAttributes(element);
37513      xml.enter(FHIR_NS, name);
37514      composeNamingSystemNamingSystemUniqueIdComponentElements(element);
37515      composeElementClose(element);
37516      xml.exit(FHIR_NS, name);
37517    }
37518  }
37519
37520  protected void composeNamingSystemNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
37521      composeBackboneElementElements(element);
37522      if (element.hasTypeElement())
37523        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
37524      if (element.hasValueElement()) {
37525        composeString("value", element.getValueElement());
37526      }
37527      if (element.hasPreferredElement()) {
37528        composeBoolean("preferred", element.getPreferredElement());
37529      }
37530      if (element.hasCommentElement()) {
37531        composeString("comment", element.getCommentElement());
37532      }
37533      if (element.hasPeriod()) {
37534        composePeriod("period", element.getPeriod());
37535      }
37536  }
37537
37538  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
37539    if (element != null) {
37540      composeDomainResourceAttributes(element);
37541      xml.enter(FHIR_NS, name);
37542      composeNutritionOrderElements(element);
37543      composeElementClose(element);
37544      xml.exit(FHIR_NS, name);
37545    }
37546  }
37547
37548  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
37549      composeDomainResourceElements(element);
37550      if (element.hasIdentifier()) { 
37551        for (Identifier e : element.getIdentifier()) 
37552          composeIdentifier("identifier", e);
37553      }
37554      if (element.hasInstantiates()) { 
37555        for (UriType e : element.getInstantiates()) 
37556          composeUri("instantiates", e);
37557      }
37558      if (element.hasStatusElement())
37559        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
37560      if (element.hasIntentElement())
37561        composeEnumeration("intent", element.getIntentElement(), new NutritionOrder.NutritiionOrderIntentEnumFactory());
37562      if (element.hasPatient()) {
37563        composeReference("patient", element.getPatient());
37564      }
37565      if (element.hasContext()) {
37566        composeReference("context", element.getContext());
37567      }
37568      if (element.hasDateTimeElement()) {
37569        composeDateTime("dateTime", element.getDateTimeElement());
37570      }
37571      if (element.hasOrderer()) {
37572        composeReference("orderer", element.getOrderer());
37573      }
37574      if (element.hasAllergyIntolerance()) { 
37575        for (Reference e : element.getAllergyIntolerance()) 
37576          composeReference("allergyIntolerance", e);
37577      }
37578      if (element.hasFoodPreferenceModifier()) { 
37579        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
37580          composeCodeableConcept("foodPreferenceModifier", e);
37581      }
37582      if (element.hasExcludeFoodModifier()) { 
37583        for (CodeableConcept e : element.getExcludeFoodModifier()) 
37584          composeCodeableConcept("excludeFoodModifier", e);
37585      }
37586      if (element.hasOralDiet()) {
37587        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
37588      }
37589      if (element.hasSupplement()) { 
37590        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
37591          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
37592      }
37593      if (element.hasEnteralFormula()) {
37594        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
37595      }
37596      if (element.hasNote()) { 
37597        for (Annotation e : element.getNote()) 
37598          composeAnnotation("note", e);
37599      }
37600  }
37601
37602  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
37603    if (element != null) {
37604      composeElementAttributes(element);
37605      xml.enter(FHIR_NS, name);
37606      composeNutritionOrderNutritionOrderOralDietComponentElements(element);
37607      composeElementClose(element);
37608      xml.exit(FHIR_NS, name);
37609    }
37610  }
37611
37612  protected void composeNutritionOrderNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
37613      composeBackboneElementElements(element);
37614      if (element.hasType()) { 
37615        for (CodeableConcept e : element.getType()) 
37616          composeCodeableConcept("type", e);
37617      }
37618      if (element.hasSchedule()) { 
37619        for (Timing e : element.getSchedule()) 
37620          composeTiming("schedule", e);
37621      }
37622      if (element.hasNutrient()) { 
37623        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
37624          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
37625      }
37626      if (element.hasTexture()) { 
37627        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
37628          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
37629      }
37630      if (element.hasFluidConsistencyType()) { 
37631        for (CodeableConcept e : element.getFluidConsistencyType()) 
37632          composeCodeableConcept("fluidConsistencyType", e);
37633      }
37634      if (element.hasInstructionElement()) {
37635        composeString("instruction", element.getInstructionElement());
37636      }
37637  }
37638
37639  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
37640    if (element != null) {
37641      composeElementAttributes(element);
37642      xml.enter(FHIR_NS, name);
37643      composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(element);
37644      composeElementClose(element);
37645      xml.exit(FHIR_NS, name);
37646    }
37647  }
37648
37649  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
37650      composeBackboneElementElements(element);
37651      if (element.hasModifier()) {
37652        composeCodeableConcept("modifier", element.getModifier());
37653      }
37654      if (element.hasAmount()) {
37655        composeSimpleQuantity("amount", element.getAmount());
37656      }
37657  }
37658
37659  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
37660    if (element != null) {
37661      composeElementAttributes(element);
37662      xml.enter(FHIR_NS, name);
37663      composeNutritionOrderNutritionOrderOralDietTextureComponentElements(element);
37664      composeElementClose(element);
37665      xml.exit(FHIR_NS, name);
37666    }
37667  }
37668
37669  protected void composeNutritionOrderNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
37670      composeBackboneElementElements(element);
37671      if (element.hasModifier()) {
37672        composeCodeableConcept("modifier", element.getModifier());
37673      }
37674      if (element.hasFoodType()) {
37675        composeCodeableConcept("foodType", element.getFoodType());
37676      }
37677  }
37678
37679  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
37680    if (element != null) {
37681      composeElementAttributes(element);
37682      xml.enter(FHIR_NS, name);
37683      composeNutritionOrderNutritionOrderSupplementComponentElements(element);
37684      composeElementClose(element);
37685      xml.exit(FHIR_NS, name);
37686    }
37687  }
37688
37689  protected void composeNutritionOrderNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
37690      composeBackboneElementElements(element);
37691      if (element.hasType()) {
37692        composeCodeableConcept("type", element.getType());
37693      }
37694      if (element.hasProductNameElement()) {
37695        composeString("productName", element.getProductNameElement());
37696      }
37697      if (element.hasSchedule()) { 
37698        for (Timing e : element.getSchedule()) 
37699          composeTiming("schedule", e);
37700      }
37701      if (element.hasQuantity()) {
37702        composeSimpleQuantity("quantity", element.getQuantity());
37703      }
37704      if (element.hasInstructionElement()) {
37705        composeString("instruction", element.getInstructionElement());
37706      }
37707  }
37708
37709  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
37710    if (element != null) {
37711      composeElementAttributes(element);
37712      xml.enter(FHIR_NS, name);
37713      composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(element);
37714      composeElementClose(element);
37715      xml.exit(FHIR_NS, name);
37716    }
37717  }
37718
37719  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
37720      composeBackboneElementElements(element);
37721      if (element.hasBaseFormulaType()) {
37722        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
37723      }
37724      if (element.hasBaseFormulaProductNameElement()) {
37725        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
37726      }
37727      if (element.hasAdditiveType()) {
37728        composeCodeableConcept("additiveType", element.getAdditiveType());
37729      }
37730      if (element.hasAdditiveProductNameElement()) {
37731        composeString("additiveProductName", element.getAdditiveProductNameElement());
37732      }
37733      if (element.hasCaloricDensity()) {
37734        composeSimpleQuantity("caloricDensity", element.getCaloricDensity());
37735      }
37736      if (element.hasRouteofAdministration()) {
37737        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
37738      }
37739      if (element.hasAdministration()) { 
37740        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
37741          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
37742      }
37743      if (element.hasMaxVolumeToDeliver()) {
37744        composeSimpleQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
37745      }
37746      if (element.hasAdministrationInstructionElement()) {
37747        composeString("administrationInstruction", element.getAdministrationInstructionElement());
37748      }
37749  }
37750
37751  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
37752    if (element != null) {
37753      composeElementAttributes(element);
37754      xml.enter(FHIR_NS, name);
37755      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(element);
37756      composeElementClose(element);
37757      xml.exit(FHIR_NS, name);
37758    }
37759  }
37760
37761  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
37762      composeBackboneElementElements(element);
37763      if (element.hasSchedule()) {
37764        composeTiming("schedule", element.getSchedule());
37765      }
37766      if (element.hasQuantity()) {
37767        composeSimpleQuantity("quantity", element.getQuantity());
37768      }
37769      if (element.hasRate()) {
37770        composeType("rate", element.getRate());
37771      }  }
37772
37773  protected void composeObservation(String name, Observation element) throws IOException {
37774    if (element != null) {
37775      composeDomainResourceAttributes(element);
37776      xml.enter(FHIR_NS, name);
37777      composeObservationElements(element);
37778      composeElementClose(element);
37779      xml.exit(FHIR_NS, name);
37780    }
37781  }
37782
37783  protected void composeObservationElements(Observation element) throws IOException {
37784      composeDomainResourceElements(element);
37785      if (element.hasIdentifier()) { 
37786        for (Identifier e : element.getIdentifier()) 
37787          composeIdentifier("identifier", e);
37788      }
37789      if (element.hasBasedOn()) { 
37790        for (Reference e : element.getBasedOn()) 
37791          composeReference("basedOn", e);
37792      }
37793      if (element.hasPartOf()) { 
37794        for (Reference e : element.getPartOf()) 
37795          composeReference("partOf", e);
37796      }
37797      if (element.hasStatusElement())
37798        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
37799      if (element.hasCategory()) { 
37800        for (CodeableConcept e : element.getCategory()) 
37801          composeCodeableConcept("category", e);
37802      }
37803      if (element.hasCode()) {
37804        composeCodeableConcept("code", element.getCode());
37805      }
37806      if (element.hasSubject()) {
37807        composeReference("subject", element.getSubject());
37808      }
37809      if (element.hasFocus()) {
37810        composeReference("focus", element.getFocus());
37811      }
37812      if (element.hasContext()) {
37813        composeReference("context", element.getContext());
37814      }
37815      if (element.hasEffective()) {
37816        composeType("effective", element.getEffective());
37817      }      if (element.hasIssuedElement()) {
37818        composeInstant("issued", element.getIssuedElement());
37819      }
37820      if (element.hasPerformer()) { 
37821        for (Reference e : element.getPerformer()) 
37822          composeReference("performer", e);
37823      }
37824      if (element.hasValue()) {
37825        composeType("value", element.getValue());
37826      }      if (element.hasDataAbsentReason()) {
37827        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
37828      }
37829      if (element.hasInterpretation()) {
37830        composeCodeableConcept("interpretation", element.getInterpretation());
37831      }
37832      if (element.hasCommentElement()) {
37833        composeString("comment", element.getCommentElement());
37834      }
37835      if (element.hasBodySite()) {
37836        composeCodeableConcept("bodySite", element.getBodySite());
37837      }
37838      if (element.hasMethod()) {
37839        composeCodeableConcept("method", element.getMethod());
37840      }
37841      if (element.hasSpecimen()) {
37842        composeReference("specimen", element.getSpecimen());
37843      }
37844      if (element.hasDevice()) {
37845        composeReference("device", element.getDevice());
37846      }
37847      if (element.hasReferenceRange()) { 
37848        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
37849          composeObservationObservationReferenceRangeComponent("referenceRange", e);
37850      }
37851      if (element.hasHasMember()) { 
37852        for (Reference e : element.getHasMember()) 
37853          composeReference("hasMember", e);
37854      }
37855      if (element.hasDerivedFrom()) { 
37856        for (Reference e : element.getDerivedFrom()) 
37857          composeReference("derivedFrom", e);
37858      }
37859      if (element.hasComponent()) { 
37860        for (Observation.ObservationComponentComponent e : element.getComponent()) 
37861          composeObservationObservationComponentComponent("component", e);
37862      }
37863  }
37864
37865  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
37866    if (element != null) {
37867      composeElementAttributes(element);
37868      xml.enter(FHIR_NS, name);
37869      composeObservationObservationReferenceRangeComponentElements(element);
37870      composeElementClose(element);
37871      xml.exit(FHIR_NS, name);
37872    }
37873  }
37874
37875  protected void composeObservationObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
37876      composeBackboneElementElements(element);
37877      if (element.hasLow()) {
37878        composeSimpleQuantity("low", element.getLow());
37879      }
37880      if (element.hasHigh()) {
37881        composeSimpleQuantity("high", element.getHigh());
37882      }
37883      if (element.hasType()) {
37884        composeCodeableConcept("type", element.getType());
37885      }
37886      if (element.hasAppliesTo()) { 
37887        for (CodeableConcept e : element.getAppliesTo()) 
37888          composeCodeableConcept("appliesTo", e);
37889      }
37890      if (element.hasAge()) {
37891        composeRange("age", element.getAge());
37892      }
37893      if (element.hasTextElement()) {
37894        composeString("text", element.getTextElement());
37895      }
37896  }
37897
37898  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
37899    if (element != null) {
37900      composeElementAttributes(element);
37901      xml.enter(FHIR_NS, name);
37902      composeObservationObservationComponentComponentElements(element);
37903      composeElementClose(element);
37904      xml.exit(FHIR_NS, name);
37905    }
37906  }
37907
37908  protected void composeObservationObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
37909      composeBackboneElementElements(element);
37910      if (element.hasCode()) {
37911        composeCodeableConcept("code", element.getCode());
37912      }
37913      if (element.hasValue()) {
37914        composeType("value", element.getValue());
37915      }      if (element.hasDataAbsentReason()) {
37916        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
37917      }
37918      if (element.hasInterpretation()) {
37919        composeCodeableConcept("interpretation", element.getInterpretation());
37920      }
37921      if (element.hasReferenceRange()) { 
37922        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
37923          composeObservationObservationReferenceRangeComponent("referenceRange", e);
37924      }
37925  }
37926
37927  protected void composeObservationDefinition(String name, ObservationDefinition element) throws IOException {
37928    if (element != null) {
37929      composeDomainResourceAttributes(element);
37930      xml.enter(FHIR_NS, name);
37931      composeObservationDefinitionElements(element);
37932      composeElementClose(element);
37933      xml.exit(FHIR_NS, name);
37934    }
37935  }
37936
37937  protected void composeObservationDefinitionElements(ObservationDefinition element) throws IOException {
37938      composeDomainResourceElements(element);
37939      if (element.hasCategory()) {
37940        composeCoding("category", element.getCategory());
37941      }
37942      if (element.hasCode()) {
37943        composeCoding("code", element.getCode());
37944      }
37945      if (element.hasPermittedDataType()) { 
37946        for (Coding e : element.getPermittedDataType()) 
37947          composeCoding("permittedDataType", e);
37948      }
37949      if (element.hasMultipleResultsAllowedElement()) {
37950        composeBoolean("multipleResultsAllowed", element.getMultipleResultsAllowedElement());
37951      }
37952      if (element.hasMethod()) {
37953        composeCodeableConcept("method", element.getMethod());
37954      }
37955      if (element.hasPreferredReportNameElement()) {
37956        composeString("preferredReportName", element.getPreferredReportNameElement());
37957      }
37958      if (element.hasQuantitativeDetails()) {
37959        composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent("quantitativeDetails", element.getQuantitativeDetails());
37960      }
37961      if (element.hasQualifiedInterval()) { 
37962        for (ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent e : element.getQualifiedInterval()) 
37963          composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent("qualifiedInterval", e);
37964      }
37965      if (element.hasValidCodedValueSetElement()) {
37966        composeUri("validCodedValueSet", element.getValidCodedValueSetElement());
37967      }
37968      if (element.hasNormalCodedValueSetElement()) {
37969        composeUri("normalCodedValueSet", element.getNormalCodedValueSetElement());
37970      }
37971      if (element.hasAbnormalCodedValueSetElement()) {
37972        composeUri("abnormalCodedValueSet", element.getAbnormalCodedValueSetElement());
37973      }
37974      if (element.hasCriticalCodedValueSetElement()) {
37975        composeUri("criticalCodedValueSet", element.getCriticalCodedValueSetElement());
37976      }
37977  }
37978
37979  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(String name, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
37980    if (element != null) {
37981      composeElementAttributes(element);
37982      xml.enter(FHIR_NS, name);
37983      composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(element);
37984      composeElementClose(element);
37985      xml.exit(FHIR_NS, name);
37986    }
37987  }
37988
37989  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
37990      composeBackboneElementElements(element);
37991      if (element.hasCustomaryUnit()) {
37992        composeCoding("customaryUnit", element.getCustomaryUnit());
37993      }
37994      if (element.hasUnit()) {
37995        composeCoding("unit", element.getUnit());
37996      }
37997      if (element.hasConversionFactorElement()) {
37998        composeDecimal("conversionFactor", element.getConversionFactorElement());
37999      }
38000      if (element.hasDecimalPrecisionElement()) {
38001        composeInteger("decimalPrecision", element.getDecimalPrecisionElement());
38002      }
38003  }
38004
38005  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(String name, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
38006    if (element != null) {
38007      composeElementAttributes(element);
38008      xml.enter(FHIR_NS, name);
38009      composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(element);
38010      composeElementClose(element);
38011      xml.exit(FHIR_NS, name);
38012    }
38013  }
38014
38015  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
38016      composeBackboneElementElements(element);
38017      if (element.hasCategory()) {
38018        composeCodeableConcept("category", element.getCategory());
38019      }
38020      if (element.hasRange()) {
38021        composeRange("range", element.getRange());
38022      }
38023      if (element.hasType()) {
38024        composeCodeableConcept("type", element.getType());
38025      }
38026      if (element.hasAppliesTo()) { 
38027        for (CodeableConcept e : element.getAppliesTo()) 
38028          composeCodeableConcept("appliesTo", e);
38029      }
38030      if (element.hasAge()) {
38031        composeRange("age", element.getAge());
38032      }
38033      if (element.hasGestationalAge()) {
38034        composeRange("gestationalAge", element.getGestationalAge());
38035      }
38036      if (element.hasConditionElement()) {
38037        composeString("condition", element.getConditionElement());
38038      }
38039  }
38040
38041  protected void composeOccupationalData(String name, OccupationalData element) throws IOException {
38042    if (element != null) {
38043      composeDomainResourceAttributes(element);
38044      xml.enter(FHIR_NS, name);
38045      composeOccupationalDataElements(element);
38046      composeElementClose(element);
38047      xml.exit(FHIR_NS, name);
38048    }
38049  }
38050
38051  protected void composeOccupationalDataElements(OccupationalData element) throws IOException {
38052      composeDomainResourceElements(element);
38053      if (element.hasIdentifier()) {
38054        composeIdentifier("identifier", element.getIdentifier());
38055      }
38056      if (element.hasStatusElement())
38057        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
38058      if (element.hasSubject()) {
38059        composeReference("subject", element.getSubject());
38060      }
38061      if (element.hasDateElement()) {
38062        composeDateTime("date", element.getDateElement());
38063      }
38064      if (element.hasRecorder()) { 
38065        for (Reference e : element.getRecorder()) 
38066          composeReference("recorder", e);
38067      }
38068      if (element.hasInformant()) { 
38069        for (Reference e : element.getInformant()) 
38070          composeReference("informant", e);
38071      }
38072      if (element.hasEmploymentStatus()) { 
38073        for (OccupationalData.OccupationalDataEmploymentStatusComponent e : element.getEmploymentStatus()) 
38074          composeOccupationalDataOccupationalDataEmploymentStatusComponent("employmentStatus", e);
38075      }
38076      if (element.hasRetirementDate()) { 
38077        for (DateTimeType e : element.getRetirementDate()) 
38078          composeDateTime("retirementDate", e);
38079      }
38080      if (element.hasCombatZonePeriod()) { 
38081        for (Period e : element.getCombatZonePeriod()) 
38082          composePeriod("combatZonePeriod", e);
38083      }
38084      if (element.hasUsualWork()) {
38085        composeOccupationalDataOccupationalDataUsualWorkComponent("usualWork", element.getUsualWork());
38086      }
38087      if (element.hasPastOrPresentJob()) { 
38088        for (OccupationalData.OccupationalDataPastOrPresentJobComponent e : element.getPastOrPresentJob()) 
38089          composeOccupationalDataOccupationalDataPastOrPresentJobComponent("pastOrPresentJob", e);
38090      }
38091  }
38092
38093  protected void composeOccupationalDataOccupationalDataEmploymentStatusComponent(String name, OccupationalData.OccupationalDataEmploymentStatusComponent element) throws IOException {
38094    if (element != null) {
38095      composeElementAttributes(element);
38096      xml.enter(FHIR_NS, name);
38097      composeOccupationalDataOccupationalDataEmploymentStatusComponentElements(element);
38098      composeElementClose(element);
38099      xml.exit(FHIR_NS, name);
38100    }
38101  }
38102
38103  protected void composeOccupationalDataOccupationalDataEmploymentStatusComponentElements(OccupationalData.OccupationalDataEmploymentStatusComponent element) throws IOException {
38104      composeBackboneElementElements(element);
38105      if (element.hasCode()) {
38106        composeCodeableConcept("code", element.getCode());
38107      }
38108      if (element.hasEffective()) {
38109        composePeriod("effective", element.getEffective());
38110      }
38111  }
38112
38113  protected void composeOccupationalDataOccupationalDataUsualWorkComponent(String name, OccupationalData.OccupationalDataUsualWorkComponent element) throws IOException {
38114    if (element != null) {
38115      composeElementAttributes(element);
38116      xml.enter(FHIR_NS, name);
38117      composeOccupationalDataOccupationalDataUsualWorkComponentElements(element);
38118      composeElementClose(element);
38119      xml.exit(FHIR_NS, name);
38120    }
38121  }
38122
38123  protected void composeOccupationalDataOccupationalDataUsualWorkComponentElements(OccupationalData.OccupationalDataUsualWorkComponent element) throws IOException {
38124      composeBackboneElementElements(element);
38125      if (element.hasOccupation()) {
38126        composeCodeableConcept("occupation", element.getOccupation());
38127      }
38128      if (element.hasIndustry()) {
38129        composeCodeableConcept("industry", element.getIndustry());
38130      }
38131      if (element.hasStartElement()) {
38132        composeDateTime("start", element.getStartElement());
38133      }
38134      if (element.hasDuration()) {
38135        composeDuration("duration", element.getDuration());
38136      }
38137  }
38138
38139  protected void composeOccupationalDataOccupationalDataPastOrPresentJobComponent(String name, OccupationalData.OccupationalDataPastOrPresentJobComponent element) throws IOException {
38140    if (element != null) {
38141      composeElementAttributes(element);
38142      xml.enter(FHIR_NS, name);
38143      composeOccupationalDataOccupationalDataPastOrPresentJobComponentElements(element);
38144      composeElementClose(element);
38145      xml.exit(FHIR_NS, name);
38146    }
38147  }
38148
38149  protected void composeOccupationalDataOccupationalDataPastOrPresentJobComponentElements(OccupationalData.OccupationalDataPastOrPresentJobComponent element) throws IOException {
38150      composeBackboneElementElements(element);
38151      if (element.hasOccupation()) {
38152        composeCodeableConcept("occupation", element.getOccupation());
38153      }
38154      if (element.hasIndustry()) {
38155        composeCodeableConcept("industry", element.getIndustry());
38156      }
38157      if (element.hasEffective()) {
38158        composePeriod("effective", element.getEffective());
38159      }
38160      if (element.hasEmployer()) {
38161        composeReference("employer", element.getEmployer());
38162      }
38163      if (element.hasWorkClassification()) {
38164        composeCodeableConcept("workClassification", element.getWorkClassification());
38165      }
38166      if (element.hasSupervisoryLevel()) {
38167        composeCodeableConcept("supervisoryLevel", element.getSupervisoryLevel());
38168      }
38169      if (element.hasJobDuty()) { 
38170        for (StringType e : element.getJobDuty()) 
38171          composeString("jobDuty", e);
38172      }
38173      if (element.hasOccupationalHazard()) { 
38174        for (StringType e : element.getOccupationalHazard()) 
38175          composeString("occupationalHazard", e);
38176      }
38177      if (element.hasWorkSchedule()) {
38178        composeOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponent("workSchedule", element.getWorkSchedule());
38179      }
38180  }
38181
38182  protected void composeOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponent(String name, OccupationalData.OccupationalDataPastOrPresentJobWorkScheduleComponent element) throws IOException {
38183    if (element != null) {
38184      composeElementAttributes(element);
38185      xml.enter(FHIR_NS, name);
38186      composeOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponentElements(element);
38187      composeElementClose(element);
38188      xml.exit(FHIR_NS, name);
38189    }
38190  }
38191
38192  protected void composeOccupationalDataOccupationalDataPastOrPresentJobWorkScheduleComponentElements(OccupationalData.OccupationalDataPastOrPresentJobWorkScheduleComponent element) throws IOException {
38193      composeBackboneElementElements(element);
38194      if (element.hasCode()) {
38195        composeCodeableConcept("code", element.getCode());
38196      }
38197      if (element.hasWeeklyWorkDaysElement()) {
38198        composeDecimal("weeklyWorkDays", element.getWeeklyWorkDaysElement());
38199      }
38200      if (element.hasDailyWorkHoursElement()) {
38201        composeDecimal("dailyWorkHours", element.getDailyWorkHoursElement());
38202      }
38203  }
38204
38205  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
38206    if (element != null) {
38207      composeDomainResourceAttributes(element);
38208      xml.enter(FHIR_NS, name);
38209      composeOperationDefinitionElements(element);
38210      composeElementClose(element);
38211      xml.exit(FHIR_NS, name);
38212    }
38213  }
38214
38215  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
38216      composeDomainResourceElements(element);
38217      if (element.hasUrlElement()) {
38218        composeUri("url", element.getUrlElement());
38219      }
38220      if (element.hasVersionElement()) {
38221        composeString("version", element.getVersionElement());
38222      }
38223      if (element.hasNameElement()) {
38224        composeString("name", element.getNameElement());
38225      }
38226      if (element.hasStatusElement())
38227        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
38228      if (element.hasKindElement())
38229        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
38230      if (element.hasExperimentalElement()) {
38231        composeBoolean("experimental", element.getExperimentalElement());
38232      }
38233      if (element.hasDateElement()) {
38234        composeDateTime("date", element.getDateElement());
38235      }
38236      if (element.hasPublisherElement()) {
38237        composeString("publisher", element.getPublisherElement());
38238      }
38239      if (element.hasContact()) { 
38240        for (ContactDetail e : element.getContact()) 
38241          composeContactDetail("contact", e);
38242      }
38243      if (element.hasDescriptionElement()) {
38244        composeMarkdown("description", element.getDescriptionElement());
38245      }
38246      if (element.hasUseContext()) { 
38247        for (UsageContext e : element.getUseContext()) 
38248          composeUsageContext("useContext", e);
38249      }
38250      if (element.hasJurisdiction()) { 
38251        for (CodeableConcept e : element.getJurisdiction()) 
38252          composeCodeableConcept("jurisdiction", e);
38253      }
38254      if (element.hasPurposeElement()) {
38255        composeMarkdown("purpose", element.getPurposeElement());
38256      }
38257      if (element.hasAffectsStateElement()) {
38258        composeBoolean("affectsState", element.getAffectsStateElement());
38259      }
38260      if (element.hasCodeElement()) {
38261        composeCode("code", element.getCodeElement());
38262      }
38263      if (element.hasCommentElement()) {
38264        composeMarkdown("comment", element.getCommentElement());
38265      }
38266      if (element.hasBaseElement()) {
38267        composeCanonical("base", element.getBaseElement());
38268      }
38269      if (element.hasResource()) { 
38270        for (CodeType e : element.getResource()) 
38271          composeCode("resource", e);
38272      }
38273      if (element.hasSystemElement()) {
38274        composeBoolean("system", element.getSystemElement());
38275      }
38276      if (element.hasTypeElement()) {
38277        composeBoolean("type", element.getTypeElement());
38278      }
38279      if (element.hasInstanceElement()) {
38280        composeBoolean("instance", element.getInstanceElement());
38281      }
38282      if (element.hasInputProfileElement()) {
38283        composeCanonical("inputProfile", element.getInputProfileElement());
38284      }
38285      if (element.hasOutputProfileElement()) {
38286        composeCanonical("outputProfile", element.getOutputProfileElement());
38287      }
38288      if (element.hasParameter()) { 
38289        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
38290          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
38291      }
38292      if (element.hasOverload()) { 
38293        for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
38294          composeOperationDefinitionOperationDefinitionOverloadComponent("overload", e);
38295      }
38296  }
38297
38298  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
38299    if (element != null) {
38300      composeElementAttributes(element);
38301      xml.enter(FHIR_NS, name);
38302      composeOperationDefinitionOperationDefinitionParameterComponentElements(element);
38303      composeElementClose(element);
38304      xml.exit(FHIR_NS, name);
38305    }
38306  }
38307
38308  protected void composeOperationDefinitionOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
38309      composeBackboneElementElements(element);
38310      if (element.hasNameElement()) {
38311        composeCode("name", element.getNameElement());
38312      }
38313      if (element.hasUseElement())
38314        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
38315      if (element.hasMinElement()) {
38316        composeInteger("min", element.getMinElement());
38317      }
38318      if (element.hasMaxElement()) {
38319        composeString("max", element.getMaxElement());
38320      }
38321      if (element.hasDocumentationElement()) {
38322        composeString("documentation", element.getDocumentationElement());
38323      }
38324      if (element.hasTypeElement()) {
38325        composeCode("type", element.getTypeElement());
38326      }
38327      if (element.hasTargetProfile()) { 
38328        for (CanonicalType e : element.getTargetProfile()) 
38329          composeCanonical("targetProfile", e);
38330      }
38331      if (element.hasSearchTypeElement())
38332        composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
38333      if (element.hasBinding()) {
38334        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
38335      }
38336      if (element.hasPart()) { 
38337        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
38338          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
38339      }
38340  }
38341
38342  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
38343    if (element != null) {
38344      composeElementAttributes(element);
38345      xml.enter(FHIR_NS, name);
38346      composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(element);
38347      composeElementClose(element);
38348      xml.exit(FHIR_NS, name);
38349    }
38350  }
38351
38352  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
38353      composeBackboneElementElements(element);
38354      if (element.hasStrengthElement())
38355        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
38356      if (element.hasValueSet()) {
38357        composeType("valueSet", element.getValueSet());
38358      }  }
38359
38360  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
38361    if (element != null) {
38362      composeElementAttributes(element);
38363      xml.enter(FHIR_NS, name);
38364      composeOperationDefinitionOperationDefinitionOverloadComponentElements(element);
38365      composeElementClose(element);
38366      xml.exit(FHIR_NS, name);
38367    }
38368  }
38369
38370  protected void composeOperationDefinitionOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
38371      composeBackboneElementElements(element);
38372      if (element.hasParameterName()) { 
38373        for (StringType e : element.getParameterName()) 
38374          composeString("parameterName", e);
38375      }
38376      if (element.hasCommentElement()) {
38377        composeString("comment", element.getCommentElement());
38378      }
38379  }
38380
38381  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
38382    if (element != null) {
38383      composeDomainResourceAttributes(element);
38384      xml.enter(FHIR_NS, name);
38385      composeOperationOutcomeElements(element);
38386      composeElementClose(element);
38387      xml.exit(FHIR_NS, name);
38388    }
38389  }
38390
38391  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
38392      composeDomainResourceElements(element);
38393      if (element.hasIssue()) { 
38394        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
38395          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
38396      }
38397  }
38398
38399  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
38400    if (element != null) {
38401      composeElementAttributes(element);
38402      xml.enter(FHIR_NS, name);
38403      composeOperationOutcomeOperationOutcomeIssueComponentElements(element);
38404      composeElementClose(element);
38405      xml.exit(FHIR_NS, name);
38406    }
38407  }
38408
38409  protected void composeOperationOutcomeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
38410      composeBackboneElementElements(element);
38411      if (element.hasSeverityElement())
38412        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
38413      if (element.hasCodeElement())
38414        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
38415      if (element.hasDetails()) {
38416        composeCodeableConcept("details", element.getDetails());
38417      }
38418      if (element.hasDiagnosticsElement()) {
38419        composeString("diagnostics", element.getDiagnosticsElement());
38420      }
38421      if (element.hasLocation()) { 
38422        for (StringType e : element.getLocation()) 
38423          composeString("location", e);
38424      }
38425      if (element.hasExpression()) { 
38426        for (StringType e : element.getExpression()) 
38427          composeString("expression", e);
38428      }
38429  }
38430
38431  protected void composeOrganization(String name, Organization element) throws IOException {
38432    if (element != null) {
38433      composeDomainResourceAttributes(element);
38434      xml.enter(FHIR_NS, name);
38435      composeOrganizationElements(element);
38436      composeElementClose(element);
38437      xml.exit(FHIR_NS, name);
38438    }
38439  }
38440
38441  protected void composeOrganizationElements(Organization element) throws IOException {
38442      composeDomainResourceElements(element);
38443      if (element.hasIdentifier()) { 
38444        for (Identifier e : element.getIdentifier()) 
38445          composeIdentifier("identifier", e);
38446      }
38447      if (element.hasActiveElement()) {
38448        composeBoolean("active", element.getActiveElement());
38449      }
38450      if (element.hasType()) { 
38451        for (CodeableConcept e : element.getType()) 
38452          composeCodeableConcept("type", e);
38453      }
38454      if (element.hasNameElement()) {
38455        composeString("name", element.getNameElement());
38456      }
38457      if (element.hasAlias()) { 
38458        for (StringType e : element.getAlias()) 
38459          composeString("alias", e);
38460      }
38461      if (element.hasTelecom()) { 
38462        for (ContactPoint e : element.getTelecom()) 
38463          composeContactPoint("telecom", e);
38464      }
38465      if (element.hasAddress()) { 
38466        for (Address e : element.getAddress()) 
38467          composeAddress("address", e);
38468      }
38469      if (element.hasPartOf()) {
38470        composeReference("partOf", element.getPartOf());
38471      }
38472      if (element.hasContact()) { 
38473        for (Organization.OrganizationContactComponent e : element.getContact()) 
38474          composeOrganizationOrganizationContactComponent("contact", e);
38475      }
38476      if (element.hasEndpoint()) { 
38477        for (Reference e : element.getEndpoint()) 
38478          composeReference("endpoint", e);
38479      }
38480  }
38481
38482  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
38483    if (element != null) {
38484      composeElementAttributes(element);
38485      xml.enter(FHIR_NS, name);
38486      composeOrganizationOrganizationContactComponentElements(element);
38487      composeElementClose(element);
38488      xml.exit(FHIR_NS, name);
38489    }
38490  }
38491
38492  protected void composeOrganizationOrganizationContactComponentElements(Organization.OrganizationContactComponent element) throws IOException {
38493      composeBackboneElementElements(element);
38494      if (element.hasPurpose()) {
38495        composeCodeableConcept("purpose", element.getPurpose());
38496      }
38497      if (element.hasName()) {
38498        composeHumanName("name", element.getName());
38499      }
38500      if (element.hasTelecom()) { 
38501        for (ContactPoint e : element.getTelecom()) 
38502          composeContactPoint("telecom", e);
38503      }
38504      if (element.hasAddress()) {
38505        composeAddress("address", element.getAddress());
38506      }
38507  }
38508
38509  protected void composeOrganizationRole(String name, OrganizationRole element) throws IOException {
38510    if (element != null) {
38511      composeDomainResourceAttributes(element);
38512      xml.enter(FHIR_NS, name);
38513      composeOrganizationRoleElements(element);
38514      composeElementClose(element);
38515      xml.exit(FHIR_NS, name);
38516    }
38517  }
38518
38519  protected void composeOrganizationRoleElements(OrganizationRole element) throws IOException {
38520      composeDomainResourceElements(element);
38521      if (element.hasIdentifier()) { 
38522        for (Identifier e : element.getIdentifier()) 
38523          composeIdentifier("identifier", e);
38524      }
38525      if (element.hasActiveElement()) {
38526        composeBoolean("active", element.getActiveElement());
38527      }
38528      if (element.hasPeriod()) {
38529        composePeriod("period", element.getPeriod());
38530      }
38531      if (element.hasOrganization()) {
38532        composeReference("organization", element.getOrganization());
38533      }
38534      if (element.hasParticipatingOrganization()) {
38535        composeReference("participatingOrganization", element.getParticipatingOrganization());
38536      }
38537      if (element.hasNetwork()) { 
38538        for (Reference e : element.getNetwork()) 
38539          composeReference("network", e);
38540      }
38541      if (element.hasCode()) { 
38542        for (CodeableConcept e : element.getCode()) 
38543          composeCodeableConcept("code", e);
38544      }
38545      if (element.hasSpecialty()) { 
38546        for (CodeableConcept e : element.getSpecialty()) 
38547          composeCodeableConcept("specialty", e);
38548      }
38549      if (element.hasLocation()) { 
38550        for (Reference e : element.getLocation()) 
38551          composeReference("location", e);
38552      }
38553      if (element.hasHealthcareService()) { 
38554        for (Reference e : element.getHealthcareService()) 
38555          composeReference("healthcareService", e);
38556      }
38557      if (element.hasTelecom()) { 
38558        for (ContactPoint e : element.getTelecom()) 
38559          composeContactPoint("telecom", e);
38560      }
38561      if (element.hasAvailableTime()) { 
38562        for (OrganizationRole.OrganizationRoleAvailableTimeComponent e : element.getAvailableTime()) 
38563          composeOrganizationRoleOrganizationRoleAvailableTimeComponent("availableTime", e);
38564      }
38565      if (element.hasNotAvailable()) { 
38566        for (OrganizationRole.OrganizationRoleNotAvailableComponent e : element.getNotAvailable()) 
38567          composeOrganizationRoleOrganizationRoleNotAvailableComponent("notAvailable", e);
38568      }
38569      if (element.hasAvailabilityExceptionsElement()) {
38570        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
38571      }
38572      if (element.hasEndpoint()) { 
38573        for (Reference e : element.getEndpoint()) 
38574          composeReference("endpoint", e);
38575      }
38576  }
38577
38578  protected void composeOrganizationRoleOrganizationRoleAvailableTimeComponent(String name, OrganizationRole.OrganizationRoleAvailableTimeComponent element) throws IOException {
38579    if (element != null) {
38580      composeElementAttributes(element);
38581      xml.enter(FHIR_NS, name);
38582      composeOrganizationRoleOrganizationRoleAvailableTimeComponentElements(element);
38583      composeElementClose(element);
38584      xml.exit(FHIR_NS, name);
38585    }
38586  }
38587
38588  protected void composeOrganizationRoleOrganizationRoleAvailableTimeComponentElements(OrganizationRole.OrganizationRoleAvailableTimeComponent element) throws IOException {
38589      composeBackboneElementElements(element);
38590        if (element.hasDaysOfWeek()) 
38591          for (Enumeration<OrganizationRole.DaysOfWeek> e : element.getDaysOfWeek()) 
38592            composeEnumeration("daysOfWeek", e, new OrganizationRole.DaysOfWeekEnumFactory());
38593      if (element.hasAllDayElement()) {
38594        composeBoolean("allDay", element.getAllDayElement());
38595      }
38596      if (element.hasAvailableStartTimeElement()) {
38597        composeTime("availableStartTime", element.getAvailableStartTimeElement());
38598      }
38599      if (element.hasAvailableEndTimeElement()) {
38600        composeTime("availableEndTime", element.getAvailableEndTimeElement());
38601      }
38602  }
38603
38604  protected void composeOrganizationRoleOrganizationRoleNotAvailableComponent(String name, OrganizationRole.OrganizationRoleNotAvailableComponent element) throws IOException {
38605    if (element != null) {
38606      composeElementAttributes(element);
38607      xml.enter(FHIR_NS, name);
38608      composeOrganizationRoleOrganizationRoleNotAvailableComponentElements(element);
38609      composeElementClose(element);
38610      xml.exit(FHIR_NS, name);
38611    }
38612  }
38613
38614  protected void composeOrganizationRoleOrganizationRoleNotAvailableComponentElements(OrganizationRole.OrganizationRoleNotAvailableComponent element) throws IOException {
38615      composeBackboneElementElements(element);
38616      if (element.hasDescriptionElement()) {
38617        composeString("description", element.getDescriptionElement());
38618      }
38619      if (element.hasDuring()) {
38620        composePeriod("during", element.getDuring());
38621      }
38622  }
38623
38624  protected void composePatient(String name, Patient element) throws IOException {
38625    if (element != null) {
38626      composeDomainResourceAttributes(element);
38627      xml.enter(FHIR_NS, name);
38628      composePatientElements(element);
38629      composeElementClose(element);
38630      xml.exit(FHIR_NS, name);
38631    }
38632  }
38633
38634  protected void composePatientElements(Patient element) throws IOException {
38635      composeDomainResourceElements(element);
38636      if (element.hasIdentifier()) { 
38637        for (Identifier e : element.getIdentifier()) 
38638          composeIdentifier("identifier", e);
38639      }
38640      if (element.hasActiveElement()) {
38641        composeBoolean("active", element.getActiveElement());
38642      }
38643      if (element.hasName()) { 
38644        for (HumanName e : element.getName()) 
38645          composeHumanName("name", e);
38646      }
38647      if (element.hasTelecom()) { 
38648        for (ContactPoint e : element.getTelecom()) 
38649          composeContactPoint("telecom", e);
38650      }
38651      if (element.hasGenderElement())
38652        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
38653      if (element.hasBirthDateElement()) {
38654        composeDate("birthDate", element.getBirthDateElement());
38655      }
38656      if (element.hasDeceased()) {
38657        composeType("deceased", element.getDeceased());
38658      }      if (element.hasAddress()) { 
38659        for (Address e : element.getAddress()) 
38660          composeAddress("address", e);
38661      }
38662      if (element.hasMaritalStatus()) {
38663        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
38664      }
38665      if (element.hasMultipleBirth()) {
38666        composeType("multipleBirth", element.getMultipleBirth());
38667      }      if (element.hasPhoto()) { 
38668        for (Attachment e : element.getPhoto()) 
38669          composeAttachment("photo", e);
38670      }
38671      if (element.hasContact()) { 
38672        for (Patient.ContactComponent e : element.getContact()) 
38673          composePatientContactComponent("contact", e);
38674      }
38675      if (element.hasCommunication()) { 
38676        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
38677          composePatientPatientCommunicationComponent("communication", e);
38678      }
38679      if (element.hasGeneralPractitioner()) { 
38680        for (Reference e : element.getGeneralPractitioner()) 
38681          composeReference("generalPractitioner", e);
38682      }
38683      if (element.hasManagingOrganization()) {
38684        composeReference("managingOrganization", element.getManagingOrganization());
38685      }
38686      if (element.hasLink()) { 
38687        for (Patient.PatientLinkComponent e : element.getLink()) 
38688          composePatientPatientLinkComponent("link", e);
38689      }
38690  }
38691
38692  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
38693    if (element != null) {
38694      composeElementAttributes(element);
38695      xml.enter(FHIR_NS, name);
38696      composePatientContactComponentElements(element);
38697      composeElementClose(element);
38698      xml.exit(FHIR_NS, name);
38699    }
38700  }
38701
38702  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
38703      composeBackboneElementElements(element);
38704      if (element.hasRelationship()) { 
38705        for (CodeableConcept e : element.getRelationship()) 
38706          composeCodeableConcept("relationship", e);
38707      }
38708      if (element.hasName()) {
38709        composeHumanName("name", element.getName());
38710      }
38711      if (element.hasTelecom()) { 
38712        for (ContactPoint e : element.getTelecom()) 
38713          composeContactPoint("telecom", e);
38714      }
38715      if (element.hasAddress()) {
38716        composeAddress("address", element.getAddress());
38717      }
38718      if (element.hasGenderElement())
38719        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
38720      if (element.hasOrganization()) {
38721        composeReference("organization", element.getOrganization());
38722      }
38723      if (element.hasPeriod()) {
38724        composePeriod("period", element.getPeriod());
38725      }
38726  }
38727
38728  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
38729    if (element != null) {
38730      composeElementAttributes(element);
38731      xml.enter(FHIR_NS, name);
38732      composePatientPatientCommunicationComponentElements(element);
38733      composeElementClose(element);
38734      xml.exit(FHIR_NS, name);
38735    }
38736  }
38737
38738  protected void composePatientPatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
38739      composeBackboneElementElements(element);
38740      if (element.hasLanguage()) {
38741        composeCodeableConcept("language", element.getLanguage());
38742      }
38743      if (element.hasPreferredElement()) {
38744        composeBoolean("preferred", element.getPreferredElement());
38745      }
38746  }
38747
38748  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
38749    if (element != null) {
38750      composeElementAttributes(element);
38751      xml.enter(FHIR_NS, name);
38752      composePatientPatientLinkComponentElements(element);
38753      composeElementClose(element);
38754      xml.exit(FHIR_NS, name);
38755    }
38756  }
38757
38758  protected void composePatientPatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
38759      composeBackboneElementElements(element);
38760      if (element.hasOther()) {
38761        composeReference("other", element.getOther());
38762      }
38763      if (element.hasTypeElement())
38764        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
38765  }
38766
38767  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
38768    if (element != null) {
38769      composeDomainResourceAttributes(element);
38770      xml.enter(FHIR_NS, name);
38771      composePaymentNoticeElements(element);
38772      composeElementClose(element);
38773      xml.exit(FHIR_NS, name);
38774    }
38775  }
38776
38777  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
38778      composeDomainResourceElements(element);
38779      if (element.hasIdentifier()) { 
38780        for (Identifier e : element.getIdentifier()) 
38781          composeIdentifier("identifier", e);
38782      }
38783      if (element.hasStatusElement())
38784        composeEnumeration("status", element.getStatusElement(), new PaymentNotice.PaymentNoticeStatusEnumFactory());
38785      if (element.hasRequest()) {
38786        composeReference("request", element.getRequest());
38787      }
38788      if (element.hasResponse()) {
38789        composeReference("response", element.getResponse());
38790      }
38791      if (element.hasStatusDateElement()) {
38792        composeDate("statusDate", element.getStatusDateElement());
38793      }
38794      if (element.hasCreatedElement()) {
38795        composeDateTime("created", element.getCreatedElement());
38796      }
38797      if (element.hasTarget()) {
38798        composeReference("target", element.getTarget());
38799      }
38800      if (element.hasProvider()) {
38801        composeReference("provider", element.getProvider());
38802      }
38803      if (element.hasPaymentStatus()) {
38804        composeCodeableConcept("paymentStatus", element.getPaymentStatus());
38805      }
38806  }
38807
38808  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
38809    if (element != null) {
38810      composeDomainResourceAttributes(element);
38811      xml.enter(FHIR_NS, name);
38812      composePaymentReconciliationElements(element);
38813      composeElementClose(element);
38814      xml.exit(FHIR_NS, name);
38815    }
38816  }
38817
38818  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
38819      composeDomainResourceElements(element);
38820      if (element.hasIdentifier()) { 
38821        for (Identifier e : element.getIdentifier()) 
38822          composeIdentifier("identifier", e);
38823      }
38824      if (element.hasStatusElement())
38825        composeEnumeration("status", element.getStatusElement(), new PaymentReconciliation.PaymentReconciliationStatusEnumFactory());
38826      if (element.hasPeriod()) {
38827        composePeriod("period", element.getPeriod());
38828      }
38829      if (element.hasCreatedElement()) {
38830        composeDateTime("created", element.getCreatedElement());
38831      }
38832      if (element.hasOrganization()) {
38833        composeReference("organization", element.getOrganization());
38834      }
38835      if (element.hasRequest()) {
38836        composeReference("request", element.getRequest());
38837      }
38838      if (element.hasOutcomeElement())
38839        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
38840      if (element.hasDispositionElement()) {
38841        composeString("disposition", element.getDispositionElement());
38842      }
38843      if (element.hasRequestProvider()) {
38844        composeReference("requestProvider", element.getRequestProvider());
38845      }
38846      if (element.hasDetail()) { 
38847        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
38848          composePaymentReconciliationDetailsComponent("detail", e);
38849      }
38850      if (element.hasForm()) {
38851        composeCodeableConcept("form", element.getForm());
38852      }
38853      if (element.hasTotal()) {
38854        composeMoney("total", element.getTotal());
38855      }
38856      if (element.hasProcessNote()) { 
38857        for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
38858          composePaymentReconciliationNotesComponent("processNote", e);
38859      }
38860  }
38861
38862  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
38863    if (element != null) {
38864      composeElementAttributes(element);
38865      xml.enter(FHIR_NS, name);
38866      composePaymentReconciliationDetailsComponentElements(element);
38867      composeElementClose(element);
38868      xml.exit(FHIR_NS, name);
38869    }
38870  }
38871
38872  protected void composePaymentReconciliationDetailsComponentElements(PaymentReconciliation.DetailsComponent element) throws IOException {
38873      composeBackboneElementElements(element);
38874      if (element.hasType()) {
38875        composeCodeableConcept("type", element.getType());
38876      }
38877      if (element.hasRequest()) {
38878        composeReference("request", element.getRequest());
38879      }
38880      if (element.hasResponse()) {
38881        composeReference("response", element.getResponse());
38882      }
38883      if (element.hasSubmitter()) {
38884        composeReference("submitter", element.getSubmitter());
38885      }
38886      if (element.hasPayee()) {
38887        composeReference("payee", element.getPayee());
38888      }
38889      if (element.hasDateElement()) {
38890        composeDate("date", element.getDateElement());
38891      }
38892      if (element.hasAmount()) {
38893        composeMoney("amount", element.getAmount());
38894      }
38895  }
38896
38897  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
38898    if (element != null) {
38899      composeElementAttributes(element);
38900      xml.enter(FHIR_NS, name);
38901      composePaymentReconciliationNotesComponentElements(element);
38902      composeElementClose(element);
38903      xml.exit(FHIR_NS, name);
38904    }
38905  }
38906
38907  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
38908      composeBackboneElementElements(element);
38909      if (element.hasTypeElement())
38910        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
38911      if (element.hasTextElement()) {
38912        composeString("text", element.getTextElement());
38913      }
38914  }
38915
38916  protected void composePerson(String name, Person element) throws IOException {
38917    if (element != null) {
38918      composeDomainResourceAttributes(element);
38919      xml.enter(FHIR_NS, name);
38920      composePersonElements(element);
38921      composeElementClose(element);
38922      xml.exit(FHIR_NS, name);
38923    }
38924  }
38925
38926  protected void composePersonElements(Person element) throws IOException {
38927      composeDomainResourceElements(element);
38928      if (element.hasIdentifier()) { 
38929        for (Identifier e : element.getIdentifier()) 
38930          composeIdentifier("identifier", e);
38931      }
38932      if (element.hasName()) { 
38933        for (HumanName e : element.getName()) 
38934          composeHumanName("name", e);
38935      }
38936      if (element.hasTelecom()) { 
38937        for (ContactPoint e : element.getTelecom()) 
38938          composeContactPoint("telecom", e);
38939      }
38940      if (element.hasGenderElement())
38941        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
38942      if (element.hasBirthDateElement()) {
38943        composeDate("birthDate", element.getBirthDateElement());
38944      }
38945      if (element.hasAddress()) { 
38946        for (Address e : element.getAddress()) 
38947          composeAddress("address", e);
38948      }
38949      if (element.hasPhoto()) {
38950        composeAttachment("photo", element.getPhoto());
38951      }
38952      if (element.hasManagingOrganization()) {
38953        composeReference("managingOrganization", element.getManagingOrganization());
38954      }
38955      if (element.hasActiveElement()) {
38956        composeBoolean("active", element.getActiveElement());
38957      }
38958      if (element.hasLink()) { 
38959        for (Person.PersonLinkComponent e : element.getLink()) 
38960          composePersonPersonLinkComponent("link", e);
38961      }
38962  }
38963
38964  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
38965    if (element != null) {
38966      composeElementAttributes(element);
38967      xml.enter(FHIR_NS, name);
38968      composePersonPersonLinkComponentElements(element);
38969      composeElementClose(element);
38970      xml.exit(FHIR_NS, name);
38971    }
38972  }
38973
38974  protected void composePersonPersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
38975      composeBackboneElementElements(element);
38976      if (element.hasTarget()) {
38977        composeReference("target", element.getTarget());
38978      }
38979      if (element.hasAssuranceElement())
38980        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
38981  }
38982
38983  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
38984    if (element != null) {
38985      composeDomainResourceAttributes(element);
38986      xml.enter(FHIR_NS, name);
38987      composePlanDefinitionElements(element);
38988      composeElementClose(element);
38989      xml.exit(FHIR_NS, name);
38990    }
38991  }
38992
38993  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
38994      composeDomainResourceElements(element);
38995      if (element.hasUrlElement()) {
38996        composeUri("url", element.getUrlElement());
38997      }
38998      if (element.hasIdentifier()) { 
38999        for (Identifier e : element.getIdentifier()) 
39000          composeIdentifier("identifier", e);
39001      }
39002      if (element.hasVersionElement()) {
39003        composeString("version", element.getVersionElement());
39004      }
39005      if (element.hasNameElement()) {
39006        composeString("name", element.getNameElement());
39007      }
39008      if (element.hasTitleElement()) {
39009        composeString("title", element.getTitleElement());
39010      }
39011      if (element.hasSubtitleElement()) {
39012        composeString("subtitle", element.getSubtitleElement());
39013      }
39014      if (element.hasType()) {
39015        composeCodeableConcept("type", element.getType());
39016      }
39017      if (element.hasStatusElement())
39018        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
39019      if (element.hasExperimentalElement()) {
39020        composeBoolean("experimental", element.getExperimentalElement());
39021      }
39022      if (element.hasSubject()) {
39023        composeType("subject", element.getSubject());
39024      }      if (element.hasDateElement()) {
39025        composeDateTime("date", element.getDateElement());
39026      }
39027      if (element.hasPublisherElement()) {
39028        composeString("publisher", element.getPublisherElement());
39029      }
39030      if (element.hasContact()) { 
39031        for (ContactDetail e : element.getContact()) 
39032          composeContactDetail("contact", e);
39033      }
39034      if (element.hasDescriptionElement()) {
39035        composeMarkdown("description", element.getDescriptionElement());
39036      }
39037      if (element.hasUseContext()) { 
39038        for (UsageContext e : element.getUseContext()) 
39039          composeUsageContext("useContext", e);
39040      }
39041      if (element.hasJurisdiction()) { 
39042        for (CodeableConcept e : element.getJurisdiction()) 
39043          composeCodeableConcept("jurisdiction", e);
39044      }
39045      if (element.hasPurposeElement()) {
39046        composeMarkdown("purpose", element.getPurposeElement());
39047      }
39048      if (element.hasUsageElement()) {
39049        composeString("usage", element.getUsageElement());
39050      }
39051      if (element.hasCopyrightElement()) {
39052        composeMarkdown("copyright", element.getCopyrightElement());
39053      }
39054      if (element.hasApprovalDateElement()) {
39055        composeDate("approvalDate", element.getApprovalDateElement());
39056      }
39057      if (element.hasLastReviewDateElement()) {
39058        composeDate("lastReviewDate", element.getLastReviewDateElement());
39059      }
39060      if (element.hasEffectivePeriod()) {
39061        composePeriod("effectivePeriod", element.getEffectivePeriod());
39062      }
39063      if (element.hasTopic()) { 
39064        for (CodeableConcept e : element.getTopic()) 
39065          composeCodeableConcept("topic", e);
39066      }
39067      if (element.hasContributor()) { 
39068        for (Contributor e : element.getContributor()) 
39069          composeContributor("contributor", e);
39070      }
39071      if (element.hasRelatedArtifact()) { 
39072        for (RelatedArtifact e : element.getRelatedArtifact()) 
39073          composeRelatedArtifact("relatedArtifact", e);
39074      }
39075      if (element.hasLibrary()) { 
39076        for (CanonicalType e : element.getLibrary()) 
39077          composeCanonical("library", e);
39078      }
39079      if (element.hasGoal()) { 
39080        for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
39081          composePlanDefinitionPlanDefinitionGoalComponent("goal", e);
39082      }
39083      if (element.hasAction()) { 
39084        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
39085          composePlanDefinitionPlanDefinitionActionComponent("action", e);
39086      }
39087  }
39088
39089  protected void composePlanDefinitionPlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
39090    if (element != null) {
39091      composeElementAttributes(element);
39092      xml.enter(FHIR_NS, name);
39093      composePlanDefinitionPlanDefinitionGoalComponentElements(element);
39094      composeElementClose(element);
39095      xml.exit(FHIR_NS, name);
39096    }
39097  }
39098
39099  protected void composePlanDefinitionPlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
39100      composeBackboneElementElements(element);
39101      if (element.hasCategory()) {
39102        composeCodeableConcept("category", element.getCategory());
39103      }
39104      if (element.hasDescription()) {
39105        composeCodeableConcept("description", element.getDescription());
39106      }
39107      if (element.hasPriority()) {
39108        composeCodeableConcept("priority", element.getPriority());
39109      }
39110      if (element.hasStart()) {
39111        composeCodeableConcept("start", element.getStart());
39112      }
39113      if (element.hasAddresses()) { 
39114        for (CodeableConcept e : element.getAddresses()) 
39115          composeCodeableConcept("addresses", e);
39116      }
39117      if (element.hasDocumentation()) { 
39118        for (RelatedArtifact e : element.getDocumentation()) 
39119          composeRelatedArtifact("documentation", e);
39120      }
39121      if (element.hasTarget()) { 
39122        for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
39123          composePlanDefinitionPlanDefinitionGoalTargetComponent("target", e);
39124      }
39125  }
39126
39127  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
39128    if (element != null) {
39129      composeElementAttributes(element);
39130      xml.enter(FHIR_NS, name);
39131      composePlanDefinitionPlanDefinitionGoalTargetComponentElements(element);
39132      composeElementClose(element);
39133      xml.exit(FHIR_NS, name);
39134    }
39135  }
39136
39137  protected void composePlanDefinitionPlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
39138      composeBackboneElementElements(element);
39139      if (element.hasMeasure()) {
39140        composeCodeableConcept("measure", element.getMeasure());
39141      }
39142      if (element.hasDetail()) {
39143        composeType("detail", element.getDetail());
39144      }      if (element.hasDue()) {
39145        composeDuration("due", element.getDue());
39146      }
39147  }
39148
39149  protected void composePlanDefinitionPlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
39150    if (element != null) {
39151      composeElementAttributes(element);
39152      xml.enter(FHIR_NS, name);
39153      composePlanDefinitionPlanDefinitionActionComponentElements(element);
39154      composeElementClose(element);
39155      xml.exit(FHIR_NS, name);
39156    }
39157  }
39158
39159  protected void composePlanDefinitionPlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
39160      composeBackboneElementElements(element);
39161      if (element.hasPrefixElement()) {
39162        composeString("prefix", element.getPrefixElement());
39163      }
39164      if (element.hasTitleElement()) {
39165        composeString("title", element.getTitleElement());
39166      }
39167      if (element.hasDescriptionElement()) {
39168        composeString("description", element.getDescriptionElement());
39169      }
39170      if (element.hasTextEquivalentElement()) {
39171        composeString("textEquivalent", element.getTextEquivalentElement());
39172      }
39173      if (element.hasCode()) { 
39174        for (CodeableConcept e : element.getCode()) 
39175          composeCodeableConcept("code", e);
39176      }
39177      if (element.hasReason()) { 
39178        for (CodeableConcept e : element.getReason()) 
39179          composeCodeableConcept("reason", e);
39180      }
39181      if (element.hasDocumentation()) { 
39182        for (RelatedArtifact e : element.getDocumentation()) 
39183          composeRelatedArtifact("documentation", e);
39184      }
39185      if (element.hasGoalId()) { 
39186        for (IdType e : element.getGoalId()) 
39187          composeId("goalId", e);
39188      }
39189      if (element.hasTrigger()) { 
39190        for (TriggerDefinition e : element.getTrigger()) 
39191          composeTriggerDefinition("trigger", e);
39192      }
39193      if (element.hasCondition()) { 
39194        for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
39195          composePlanDefinitionPlanDefinitionActionConditionComponent("condition", e);
39196      }
39197      if (element.hasInput()) { 
39198        for (DataRequirement e : element.getInput()) 
39199          composeDataRequirement("input", e);
39200      }
39201      if (element.hasOutput()) { 
39202        for (DataRequirement e : element.getOutput()) 
39203          composeDataRequirement("output", e);
39204      }
39205      if (element.hasRelatedAction()) { 
39206        for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
39207          composePlanDefinitionPlanDefinitionActionRelatedActionComponent("relatedAction", e);
39208      }
39209      if (element.hasTiming()) {
39210        composeType("timing", element.getTiming());
39211      }      if (element.hasParticipant()) { 
39212        for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
39213          composePlanDefinitionPlanDefinitionActionParticipantComponent("participant", e);
39214      }
39215      if (element.hasType()) {
39216        composeCodeableConcept("type", element.getType());
39217      }
39218      if (element.hasGroupingBehaviorElement())
39219        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new PlanDefinition.ActionGroupingBehaviorEnumFactory());
39220      if (element.hasSelectionBehaviorElement())
39221        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new PlanDefinition.ActionSelectionBehaviorEnumFactory());
39222      if (element.hasRequiredBehaviorElement())
39223        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new PlanDefinition.ActionRequiredBehaviorEnumFactory());
39224      if (element.hasPrecheckBehaviorElement())
39225        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new PlanDefinition.ActionPrecheckBehaviorEnumFactory());
39226      if (element.hasCardinalityBehaviorElement())
39227        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new PlanDefinition.ActionCardinalityBehaviorEnumFactory());
39228      if (element.hasDefinitionElement()) {
39229        composeCanonical("definition", element.getDefinitionElement());
39230      }
39231      if (element.hasTransformElement()) {
39232        composeCanonical("transform", element.getTransformElement());
39233      }
39234      if (element.hasDynamicValue()) { 
39235        for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
39236          composePlanDefinitionPlanDefinitionActionDynamicValueComponent("dynamicValue", e);
39237      }
39238      if (element.hasAction()) { 
39239        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
39240          composePlanDefinitionPlanDefinitionActionComponent("action", e);
39241      }
39242  }
39243
39244  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
39245    if (element != null) {
39246      composeElementAttributes(element);
39247      xml.enter(FHIR_NS, name);
39248      composePlanDefinitionPlanDefinitionActionConditionComponentElements(element);
39249      composeElementClose(element);
39250      xml.exit(FHIR_NS, name);
39251    }
39252  }
39253
39254  protected void composePlanDefinitionPlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
39255      composeBackboneElementElements(element);
39256      if (element.hasKindElement())
39257        composeEnumeration("kind", element.getKindElement(), new PlanDefinition.ActionConditionKindEnumFactory());
39258      if (element.hasDescriptionElement()) {
39259        composeString("description", element.getDescriptionElement());
39260      }
39261      if (element.hasLanguageElement()) {
39262        composeString("language", element.getLanguageElement());
39263      }
39264      if (element.hasExpressionElement()) {
39265        composeString("expression", element.getExpressionElement());
39266      }
39267  }
39268
39269  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
39270    if (element != null) {
39271      composeElementAttributes(element);
39272      xml.enter(FHIR_NS, name);
39273      composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(element);
39274      composeElementClose(element);
39275      xml.exit(FHIR_NS, name);
39276    }
39277  }
39278
39279  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
39280      composeBackboneElementElements(element);
39281      if (element.hasActionIdElement()) {
39282        composeId("actionId", element.getActionIdElement());
39283      }
39284      if (element.hasRelationshipElement())
39285        composeEnumeration("relationship", element.getRelationshipElement(), new PlanDefinition.ActionRelationshipTypeEnumFactory());
39286      if (element.hasOffset()) {
39287        composeType("offset", element.getOffset());
39288      }  }
39289
39290  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
39291    if (element != null) {
39292      composeElementAttributes(element);
39293      xml.enter(FHIR_NS, name);
39294      composePlanDefinitionPlanDefinitionActionParticipantComponentElements(element);
39295      composeElementClose(element);
39296      xml.exit(FHIR_NS, name);
39297    }
39298  }
39299
39300  protected void composePlanDefinitionPlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
39301      composeBackboneElementElements(element);
39302      if (element.hasTypeElement())
39303        composeEnumeration("type", element.getTypeElement(), new PlanDefinition.ActionParticipantTypeEnumFactory());
39304      if (element.hasRole()) {
39305        composeCodeableConcept("role", element.getRole());
39306      }
39307  }
39308
39309  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
39310    if (element != null) {
39311      composeElementAttributes(element);
39312      xml.enter(FHIR_NS, name);
39313      composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(element);
39314      composeElementClose(element);
39315      xml.exit(FHIR_NS, name);
39316    }
39317  }
39318
39319  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
39320      composeBackboneElementElements(element);
39321      if (element.hasDescriptionElement()) {
39322        composeString("description", element.getDescriptionElement());
39323      }
39324      if (element.hasPathElement()) {
39325        composeString("path", element.getPathElement());
39326      }
39327      if (element.hasLanguageElement()) {
39328        composeString("language", element.getLanguageElement());
39329      }
39330      if (element.hasExpressionElement()) {
39331        composeString("expression", element.getExpressionElement());
39332      }
39333  }
39334
39335  protected void composePractitioner(String name, Practitioner element) throws IOException {
39336    if (element != null) {
39337      composeDomainResourceAttributes(element);
39338      xml.enter(FHIR_NS, name);
39339      composePractitionerElements(element);
39340      composeElementClose(element);
39341      xml.exit(FHIR_NS, name);
39342    }
39343  }
39344
39345  protected void composePractitionerElements(Practitioner element) throws IOException {
39346      composeDomainResourceElements(element);
39347      if (element.hasIdentifier()) { 
39348        for (Identifier e : element.getIdentifier()) 
39349          composeIdentifier("identifier", e);
39350      }
39351      if (element.hasActiveElement()) {
39352        composeBoolean("active", element.getActiveElement());
39353      }
39354      if (element.hasName()) { 
39355        for (HumanName e : element.getName()) 
39356          composeHumanName("name", e);
39357      }
39358      if (element.hasTelecom()) { 
39359        for (ContactPoint e : element.getTelecom()) 
39360          composeContactPoint("telecom", e);
39361      }
39362      if (element.hasAddress()) { 
39363        for (Address e : element.getAddress()) 
39364          composeAddress("address", e);
39365      }
39366      if (element.hasGenderElement())
39367        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
39368      if (element.hasBirthDateElement()) {
39369        composeDate("birthDate", element.getBirthDateElement());
39370      }
39371      if (element.hasPhoto()) { 
39372        for (Attachment e : element.getPhoto()) 
39373          composeAttachment("photo", e);
39374      }
39375      if (element.hasQualification()) { 
39376        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
39377          composePractitionerPractitionerQualificationComponent("qualification", e);
39378      }
39379      if (element.hasCommunication()) { 
39380        for (CodeableConcept e : element.getCommunication()) 
39381          composeCodeableConcept("communication", e);
39382      }
39383  }
39384
39385  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
39386    if (element != null) {
39387      composeElementAttributes(element);
39388      xml.enter(FHIR_NS, name);
39389      composePractitionerPractitionerQualificationComponentElements(element);
39390      composeElementClose(element);
39391      xml.exit(FHIR_NS, name);
39392    }
39393  }
39394
39395  protected void composePractitionerPractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
39396      composeBackboneElementElements(element);
39397      if (element.hasIdentifier()) { 
39398        for (Identifier e : element.getIdentifier()) 
39399          composeIdentifier("identifier", e);
39400      }
39401      if (element.hasCode()) {
39402        composeCodeableConcept("code", element.getCode());
39403      }
39404      if (element.hasPeriod()) {
39405        composePeriod("period", element.getPeriod());
39406      }
39407      if (element.hasIssuer()) {
39408        composeReference("issuer", element.getIssuer());
39409      }
39410  }
39411
39412  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
39413    if (element != null) {
39414      composeDomainResourceAttributes(element);
39415      xml.enter(FHIR_NS, name);
39416      composePractitionerRoleElements(element);
39417      composeElementClose(element);
39418      xml.exit(FHIR_NS, name);
39419    }
39420  }
39421
39422  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
39423      composeDomainResourceElements(element);
39424      if (element.hasIdentifier()) { 
39425        for (Identifier e : element.getIdentifier()) 
39426          composeIdentifier("identifier", e);
39427      }
39428      if (element.hasActiveElement()) {
39429        composeBoolean("active", element.getActiveElement());
39430      }
39431      if (element.hasPeriod()) {
39432        composePeriod("period", element.getPeriod());
39433      }
39434      if (element.hasPractitioner()) {
39435        composeReference("practitioner", element.getPractitioner());
39436      }
39437      if (element.hasOrganization()) {
39438        composeReference("organization", element.getOrganization());
39439      }
39440      if (element.hasCode()) { 
39441        for (CodeableConcept e : element.getCode()) 
39442          composeCodeableConcept("code", e);
39443      }
39444      if (element.hasSpecialty()) { 
39445        for (CodeableConcept e : element.getSpecialty()) 
39446          composeCodeableConcept("specialty", e);
39447      }
39448      if (element.hasLocation()) { 
39449        for (Reference e : element.getLocation()) 
39450          composeReference("location", e);
39451      }
39452      if (element.hasHealthcareService()) { 
39453        for (Reference e : element.getHealthcareService()) 
39454          composeReference("healthcareService", e);
39455      }
39456      if (element.hasTelecom()) { 
39457        for (ContactPoint e : element.getTelecom()) 
39458          composeContactPoint("telecom", e);
39459      }
39460      if (element.hasAvailableTime()) { 
39461        for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
39462          composePractitionerRolePractitionerRoleAvailableTimeComponent("availableTime", e);
39463      }
39464      if (element.hasNotAvailable()) { 
39465        for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
39466          composePractitionerRolePractitionerRoleNotAvailableComponent("notAvailable", e);
39467      }
39468      if (element.hasAvailabilityExceptionsElement()) {
39469        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
39470      }
39471      if (element.hasEndpoint()) { 
39472        for (Reference e : element.getEndpoint()) 
39473          composeReference("endpoint", e);
39474      }
39475  }
39476
39477  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
39478    if (element != null) {
39479      composeElementAttributes(element);
39480      xml.enter(FHIR_NS, name);
39481      composePractitionerRolePractitionerRoleAvailableTimeComponentElements(element);
39482      composeElementClose(element);
39483      xml.exit(FHIR_NS, name);
39484    }
39485  }
39486
39487  protected void composePractitionerRolePractitionerRoleAvailableTimeComponentElements(PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
39488      composeBackboneElementElements(element);
39489        if (element.hasDaysOfWeek()) 
39490          for (Enumeration<PractitionerRole.DaysOfWeek> e : element.getDaysOfWeek()) 
39491            composeEnumeration("daysOfWeek", e, new PractitionerRole.DaysOfWeekEnumFactory());
39492      if (element.hasAllDayElement()) {
39493        composeBoolean("allDay", element.getAllDayElement());
39494      }
39495      if (element.hasAvailableStartTimeElement()) {
39496        composeTime("availableStartTime", element.getAvailableStartTimeElement());
39497      }
39498      if (element.hasAvailableEndTimeElement()) {
39499        composeTime("availableEndTime", element.getAvailableEndTimeElement());
39500      }
39501  }
39502
39503  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
39504    if (element != null) {
39505      composeElementAttributes(element);
39506      xml.enter(FHIR_NS, name);
39507      composePractitionerRolePractitionerRoleNotAvailableComponentElements(element);
39508      composeElementClose(element);
39509      xml.exit(FHIR_NS, name);
39510    }
39511  }
39512
39513  protected void composePractitionerRolePractitionerRoleNotAvailableComponentElements(PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
39514      composeBackboneElementElements(element);
39515      if (element.hasDescriptionElement()) {
39516        composeString("description", element.getDescriptionElement());
39517      }
39518      if (element.hasDuring()) {
39519        composePeriod("during", element.getDuring());
39520      }
39521  }
39522
39523  protected void composeProcedure(String name, Procedure element) throws IOException {
39524    if (element != null) {
39525      composeDomainResourceAttributes(element);
39526      xml.enter(FHIR_NS, name);
39527      composeProcedureElements(element);
39528      composeElementClose(element);
39529      xml.exit(FHIR_NS, name);
39530    }
39531  }
39532
39533  protected void composeProcedureElements(Procedure element) throws IOException {
39534      composeDomainResourceElements(element);
39535      if (element.hasIdentifier()) { 
39536        for (Identifier e : element.getIdentifier()) 
39537          composeIdentifier("identifier", e);
39538      }
39539      if (element.hasInstantiates()) { 
39540        for (UriType e : element.getInstantiates()) 
39541          composeUri("instantiates", e);
39542      }
39543      if (element.hasBasedOn()) { 
39544        for (Reference e : element.getBasedOn()) 
39545          composeReference("basedOn", e);
39546      }
39547      if (element.hasPartOf()) { 
39548        for (Reference e : element.getPartOf()) 
39549          composeReference("partOf", e);
39550      }
39551      if (element.hasStatusElement())
39552        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
39553      if (element.hasStatusReason()) {
39554        composeCodeableConcept("statusReason", element.getStatusReason());
39555      }
39556      if (element.hasCategory()) {
39557        composeCodeableConcept("category", element.getCategory());
39558      }
39559      if (element.hasCode()) {
39560        composeCodeableConcept("code", element.getCode());
39561      }
39562      if (element.hasSubject()) {
39563        composeReference("subject", element.getSubject());
39564      }
39565      if (element.hasContext()) {
39566        composeReference("context", element.getContext());
39567      }
39568      if (element.hasPerformed()) {
39569        composeType("performed", element.getPerformed());
39570      }      if (element.hasRecorder()) {
39571        composeReference("recorder", element.getRecorder());
39572      }
39573      if (element.hasAsserter()) {
39574        composeReference("asserter", element.getAsserter());
39575      }
39576      if (element.hasPerformer()) { 
39577        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
39578          composeProcedureProcedurePerformerComponent("performer", e);
39579      }
39580      if (element.hasLocation()) {
39581        composeReference("location", element.getLocation());
39582      }
39583      if (element.hasReasonCode()) { 
39584        for (CodeableConcept e : element.getReasonCode()) 
39585          composeCodeableConcept("reasonCode", e);
39586      }
39587      if (element.hasReasonReference()) { 
39588        for (Reference e : element.getReasonReference()) 
39589          composeReference("reasonReference", e);
39590      }
39591      if (element.hasBodySite()) { 
39592        for (CodeableConcept e : element.getBodySite()) 
39593          composeCodeableConcept("bodySite", e);
39594      }
39595      if (element.hasOutcome()) {
39596        composeCodeableConcept("outcome", element.getOutcome());
39597      }
39598      if (element.hasReport()) { 
39599        for (Reference e : element.getReport()) 
39600          composeReference("report", e);
39601      }
39602      if (element.hasComplication()) { 
39603        for (CodeableConcept e : element.getComplication()) 
39604          composeCodeableConcept("complication", e);
39605      }
39606      if (element.hasComplicationDetail()) { 
39607        for (Reference e : element.getComplicationDetail()) 
39608          composeReference("complicationDetail", e);
39609      }
39610      if (element.hasFollowUp()) { 
39611        for (CodeableConcept e : element.getFollowUp()) 
39612          composeCodeableConcept("followUp", e);
39613      }
39614      if (element.hasNote()) { 
39615        for (Annotation e : element.getNote()) 
39616          composeAnnotation("note", e);
39617      }
39618      if (element.hasFocalDevice()) { 
39619        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
39620          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
39621      }
39622      if (element.hasUsedReference()) { 
39623        for (Reference e : element.getUsedReference()) 
39624          composeReference("usedReference", e);
39625      }
39626      if (element.hasUsedCode()) { 
39627        for (CodeableConcept e : element.getUsedCode()) 
39628          composeCodeableConcept("usedCode", e);
39629      }
39630  }
39631
39632  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
39633    if (element != null) {
39634      composeElementAttributes(element);
39635      xml.enter(FHIR_NS, name);
39636      composeProcedureProcedurePerformerComponentElements(element);
39637      composeElementClose(element);
39638      xml.exit(FHIR_NS, name);
39639    }
39640  }
39641
39642  protected void composeProcedureProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
39643      composeBackboneElementElements(element);
39644      if (element.hasRole()) {
39645        composeCodeableConcept("role", element.getRole());
39646      }
39647      if (element.hasActor()) {
39648        composeReference("actor", element.getActor());
39649      }
39650      if (element.hasOnBehalfOf()) {
39651        composeReference("onBehalfOf", element.getOnBehalfOf());
39652      }
39653  }
39654
39655  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
39656    if (element != null) {
39657      composeElementAttributes(element);
39658      xml.enter(FHIR_NS, name);
39659      composeProcedureProcedureFocalDeviceComponentElements(element);
39660      composeElementClose(element);
39661      xml.exit(FHIR_NS, name);
39662    }
39663  }
39664
39665  protected void composeProcedureProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
39666      composeBackboneElementElements(element);
39667      if (element.hasAction()) {
39668        composeCodeableConcept("action", element.getAction());
39669      }
39670      if (element.hasManipulated()) {
39671        composeReference("manipulated", element.getManipulated());
39672      }
39673  }
39674
39675  protected void composeProcessRequest(String name, ProcessRequest element) throws IOException {
39676    if (element != null) {
39677      composeDomainResourceAttributes(element);
39678      xml.enter(FHIR_NS, name);
39679      composeProcessRequestElements(element);
39680      composeElementClose(element);
39681      xml.exit(FHIR_NS, name);
39682    }
39683  }
39684
39685  protected void composeProcessRequestElements(ProcessRequest element) throws IOException {
39686      composeDomainResourceElements(element);
39687      if (element.hasIdentifier()) { 
39688        for (Identifier e : element.getIdentifier()) 
39689          composeIdentifier("identifier", e);
39690      }
39691      if (element.hasStatusElement())
39692        composeEnumeration("status", element.getStatusElement(), new ProcessRequest.ProcessRequestStatusEnumFactory());
39693      if (element.hasActionElement())
39694        composeEnumeration("action", element.getActionElement(), new ProcessRequest.ActionListEnumFactory());
39695      if (element.hasTarget()) {
39696        composeReference("target", element.getTarget());
39697      }
39698      if (element.hasCreatedElement()) {
39699        composeDateTime("created", element.getCreatedElement());
39700      }
39701      if (element.hasProvider()) {
39702        composeReference("provider", element.getProvider());
39703      }
39704      if (element.hasRequest()) {
39705        composeReference("request", element.getRequest());
39706      }
39707      if (element.hasResponse()) {
39708        composeReference("response", element.getResponse());
39709      }
39710      if (element.hasNullifyElement()) {
39711        composeBoolean("nullify", element.getNullifyElement());
39712      }
39713      if (element.hasReferenceElement()) {
39714        composeString("reference", element.getReferenceElement());
39715      }
39716      if (element.hasItem()) { 
39717        for (ProcessRequest.ItemsComponent e : element.getItem()) 
39718          composeProcessRequestItemsComponent("item", e);
39719      }
39720      if (element.hasInclude()) { 
39721        for (StringType e : element.getInclude()) 
39722          composeString("include", e);
39723      }
39724      if (element.hasExclude()) { 
39725        for (StringType e : element.getExclude()) 
39726          composeString("exclude", e);
39727      }
39728      if (element.hasPeriod()) {
39729        composePeriod("period", element.getPeriod());
39730      }
39731  }
39732
39733  protected void composeProcessRequestItemsComponent(String name, ProcessRequest.ItemsComponent element) throws IOException {
39734    if (element != null) {
39735      composeElementAttributes(element);
39736      xml.enter(FHIR_NS, name);
39737      composeProcessRequestItemsComponentElements(element);
39738      composeElementClose(element);
39739      xml.exit(FHIR_NS, name);
39740    }
39741  }
39742
39743  protected void composeProcessRequestItemsComponentElements(ProcessRequest.ItemsComponent element) throws IOException {
39744      composeBackboneElementElements(element);
39745      if (element.hasSequenceLinkIdElement()) {
39746        composeInteger("sequenceLinkId", element.getSequenceLinkIdElement());
39747      }
39748  }
39749
39750  protected void composeProcessResponse(String name, ProcessResponse element) throws IOException {
39751    if (element != null) {
39752      composeDomainResourceAttributes(element);
39753      xml.enter(FHIR_NS, name);
39754      composeProcessResponseElements(element);
39755      composeElementClose(element);
39756      xml.exit(FHIR_NS, name);
39757    }
39758  }
39759
39760  protected void composeProcessResponseElements(ProcessResponse element) throws IOException {
39761      composeDomainResourceElements(element);
39762      if (element.hasIdentifier()) { 
39763        for (Identifier e : element.getIdentifier()) 
39764          composeIdentifier("identifier", e);
39765      }
39766      if (element.hasStatusElement())
39767        composeEnumeration("status", element.getStatusElement(), new ProcessResponse.ProcessResponseStatusEnumFactory());
39768      if (element.hasCreatedElement()) {
39769        composeDateTime("created", element.getCreatedElement());
39770      }
39771      if (element.hasOrganization()) {
39772        composeReference("organization", element.getOrganization());
39773      }
39774      if (element.hasRequest()) {
39775        composeReference("request", element.getRequest());
39776      }
39777      if (element.hasOutcomeElement())
39778        composeEnumeration("outcome", element.getOutcomeElement(), new ProcessResponse.ProcessingOutcomeEnumFactory());
39779      if (element.hasDispositionElement()) {
39780        composeString("disposition", element.getDispositionElement());
39781      }
39782      if (element.hasRequestProvider()) {
39783        composeReference("requestProvider", element.getRequestProvider());
39784      }
39785      if (element.hasForm()) {
39786        composeCodeableConcept("form", element.getForm());
39787      }
39788      if (element.hasProcessNote()) { 
39789        for (ProcessResponse.ProcessResponseProcessNoteComponent e : element.getProcessNote()) 
39790          composeProcessResponseProcessResponseProcessNoteComponent("processNote", e);
39791      }
39792      if (element.hasError()) { 
39793        for (CodeableConcept e : element.getError()) 
39794          composeCodeableConcept("error", e);
39795      }
39796      if (element.hasCommunicationRequest()) { 
39797        for (Reference e : element.getCommunicationRequest()) 
39798          composeReference("communicationRequest", e);
39799      }
39800  }
39801
39802  protected void composeProcessResponseProcessResponseProcessNoteComponent(String name, ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
39803    if (element != null) {
39804      composeElementAttributes(element);
39805      xml.enter(FHIR_NS, name);
39806      composeProcessResponseProcessResponseProcessNoteComponentElements(element);
39807      composeElementClose(element);
39808      xml.exit(FHIR_NS, name);
39809    }
39810  }
39811
39812  protected void composeProcessResponseProcessResponseProcessNoteComponentElements(ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
39813      composeBackboneElementElements(element);
39814      if (element.hasTypeElement())
39815        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
39816      if (element.hasTextElement()) {
39817        composeString("text", element.getTextElement());
39818      }
39819  }
39820
39821  protected void composeProductPlan(String name, ProductPlan element) throws IOException {
39822    if (element != null) {
39823      composeDomainResourceAttributes(element);
39824      xml.enter(FHIR_NS, name);
39825      composeProductPlanElements(element);
39826      composeElementClose(element);
39827      xml.exit(FHIR_NS, name);
39828    }
39829  }
39830
39831  protected void composeProductPlanElements(ProductPlan element) throws IOException {
39832      composeDomainResourceElements(element);
39833      if (element.hasIdentifier()) { 
39834        for (Identifier e : element.getIdentifier()) 
39835          composeIdentifier("identifier", e);
39836      }
39837      if (element.hasStatusElement())
39838        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
39839      if (element.hasType()) { 
39840        for (CodeableConcept e : element.getType()) 
39841          composeCodeableConcept("type", e);
39842      }
39843      if (element.hasNameElement()) {
39844        composeString("name", element.getNameElement());
39845      }
39846      if (element.hasAlias()) { 
39847        for (StringType e : element.getAlias()) 
39848          composeString("alias", e);
39849      }
39850      if (element.hasPeriod()) {
39851        composePeriod("period", element.getPeriod());
39852      }
39853      if (element.hasOwnedBy()) {
39854        composeReference("ownedBy", element.getOwnedBy());
39855      }
39856      if (element.hasAdministeredBy()) {
39857        composeReference("administeredBy", element.getAdministeredBy());
39858      }
39859      if (element.hasCoverageArea()) {
39860        composeReference("coverageArea", element.getCoverageArea());
39861      }
39862      if (element.hasContact()) { 
39863        for (ProductPlan.ProductPlanContactComponent e : element.getContact()) 
39864          composeProductPlanProductPlanContactComponent("contact", e);
39865      }
39866      if (element.hasEndpoint()) { 
39867        for (Reference e : element.getEndpoint()) 
39868          composeReference("endpoint", e);
39869      }
39870      if (element.hasNetwork()) { 
39871        for (Reference e : element.getNetwork()) 
39872          composeReference("network", e);
39873      }
39874      if (element.hasCoverage()) { 
39875        for (ProductPlan.ProductPlanCoverageComponent e : element.getCoverage()) 
39876          composeProductPlanProductPlanCoverageComponent("coverage", e);
39877      }
39878      if (element.hasPlan()) { 
39879        for (ProductPlan.ProductPlanPlanComponent e : element.getPlan()) 
39880          composeProductPlanProductPlanPlanComponent("plan", e);
39881      }
39882  }
39883
39884  protected void composeProductPlanProductPlanContactComponent(String name, ProductPlan.ProductPlanContactComponent element) throws IOException {
39885    if (element != null) {
39886      composeElementAttributes(element);
39887      xml.enter(FHIR_NS, name);
39888      composeProductPlanProductPlanContactComponentElements(element);
39889      composeElementClose(element);
39890      xml.exit(FHIR_NS, name);
39891    }
39892  }
39893
39894  protected void composeProductPlanProductPlanContactComponentElements(ProductPlan.ProductPlanContactComponent element) throws IOException {
39895      composeBackboneElementElements(element);
39896      if (element.hasPurpose()) {
39897        composeCodeableConcept("purpose", element.getPurpose());
39898      }
39899      if (element.hasName()) {
39900        composeHumanName("name", element.getName());
39901      }
39902      if (element.hasTelecom()) { 
39903        for (ContactPoint e : element.getTelecom()) 
39904          composeContactPoint("telecom", e);
39905      }
39906      if (element.hasAddress()) {
39907        composeAddress("address", element.getAddress());
39908      }
39909  }
39910
39911  protected void composeProductPlanProductPlanCoverageComponent(String name, ProductPlan.ProductPlanCoverageComponent element) throws IOException {
39912    if (element != null) {
39913      composeElementAttributes(element);
39914      xml.enter(FHIR_NS, name);
39915      composeProductPlanProductPlanCoverageComponentElements(element);
39916      composeElementClose(element);
39917      xml.exit(FHIR_NS, name);
39918    }
39919  }
39920
39921  protected void composeProductPlanProductPlanCoverageComponentElements(ProductPlan.ProductPlanCoverageComponent element) throws IOException {
39922      composeBackboneElementElements(element);
39923      if (element.hasType()) {
39924        composeCodeableConcept("type", element.getType());
39925      }
39926      if (element.hasNetwork()) { 
39927        for (Reference e : element.getNetwork()) 
39928          composeReference("network", e);
39929      }
39930      if (element.hasBenefit()) { 
39931        for (ProductPlan.ProductPlanCoverageBenefitComponent e : element.getBenefit()) 
39932          composeProductPlanProductPlanCoverageBenefitComponent("benefit", e);
39933      }
39934  }
39935
39936  protected void composeProductPlanProductPlanCoverageBenefitComponent(String name, ProductPlan.ProductPlanCoverageBenefitComponent element) throws IOException {
39937    if (element != null) {
39938      composeElementAttributes(element);
39939      xml.enter(FHIR_NS, name);
39940      composeProductPlanProductPlanCoverageBenefitComponentElements(element);
39941      composeElementClose(element);
39942      xml.exit(FHIR_NS, name);
39943    }
39944  }
39945
39946  protected void composeProductPlanProductPlanCoverageBenefitComponentElements(ProductPlan.ProductPlanCoverageBenefitComponent element) throws IOException {
39947      composeBackboneElementElements(element);
39948      if (element.hasType()) {
39949        composeCodeableConcept("type", element.getType());
39950      }
39951      if (element.hasRequirementElement()) {
39952        composeString("requirement", element.getRequirementElement());
39953      }
39954      if (element.hasLimit()) { 
39955        for (ProductPlan.ProductPlanCoverageBenefitLimitComponent e : element.getLimit()) 
39956          composeProductPlanProductPlanCoverageBenefitLimitComponent("limit", e);
39957      }
39958  }
39959
39960  protected void composeProductPlanProductPlanCoverageBenefitLimitComponent(String name, ProductPlan.ProductPlanCoverageBenefitLimitComponent element) throws IOException {
39961    if (element != null) {
39962      composeElementAttributes(element);
39963      xml.enter(FHIR_NS, name);
39964      composeProductPlanProductPlanCoverageBenefitLimitComponentElements(element);
39965      composeElementClose(element);
39966      xml.exit(FHIR_NS, name);
39967    }
39968  }
39969
39970  protected void composeProductPlanProductPlanCoverageBenefitLimitComponentElements(ProductPlan.ProductPlanCoverageBenefitLimitComponent element) throws IOException {
39971      composeBackboneElementElements(element);
39972      if (element.hasValue()) {
39973        composeQuantity("value", element.getValue());
39974      }
39975      if (element.hasCode()) {
39976        composeCodeableConcept("code", element.getCode());
39977      }
39978  }
39979
39980  protected void composeProductPlanProductPlanPlanComponent(String name, ProductPlan.ProductPlanPlanComponent element) throws IOException {
39981    if (element != null) {
39982      composeElementAttributes(element);
39983      xml.enter(FHIR_NS, name);
39984      composeProductPlanProductPlanPlanComponentElements(element);
39985      composeElementClose(element);
39986      xml.exit(FHIR_NS, name);
39987    }
39988  }
39989
39990  protected void composeProductPlanProductPlanPlanComponentElements(ProductPlan.ProductPlanPlanComponent element) throws IOException {
39991      composeBackboneElementElements(element);
39992      if (element.hasIdentifier()) { 
39993        for (Identifier e : element.getIdentifier()) 
39994          composeIdentifier("identifier", e);
39995      }
39996      if (element.hasType()) {
39997        composeCodeableConcept("type", element.getType());
39998      }
39999      if (element.hasCoverageArea()) {
40000        composeReference("coverageArea", element.getCoverageArea());
40001      }
40002      if (element.hasNetwork()) { 
40003        for (Reference e : element.getNetwork()) 
40004          composeReference("network", e);
40005      }
40006      if (element.hasGeneralCost()) { 
40007        for (ProductPlan.ProductPlanPlanGeneralCostComponent e : element.getGeneralCost()) 
40008          composeProductPlanProductPlanPlanGeneralCostComponent("generalCost", e);
40009      }
40010      if (element.hasSpecificCost()) { 
40011        for (ProductPlan.ProductPlanPlanSpecificCostComponent e : element.getSpecificCost()) 
40012          composeProductPlanProductPlanPlanSpecificCostComponent("specificCost", e);
40013      }
40014  }
40015
40016  protected void composeProductPlanProductPlanPlanGeneralCostComponent(String name, ProductPlan.ProductPlanPlanGeneralCostComponent element) throws IOException {
40017    if (element != null) {
40018      composeElementAttributes(element);
40019      xml.enter(FHIR_NS, name);
40020      composeProductPlanProductPlanPlanGeneralCostComponentElements(element);
40021      composeElementClose(element);
40022      xml.exit(FHIR_NS, name);
40023    }
40024  }
40025
40026  protected void composeProductPlanProductPlanPlanGeneralCostComponentElements(ProductPlan.ProductPlanPlanGeneralCostComponent element) throws IOException {
40027      composeBackboneElementElements(element);
40028      if (element.hasType()) {
40029        composeCodeableConcept("type", element.getType());
40030      }
40031      if (element.hasGroupSizeElement()) {
40032        composePositiveInt("groupSize", element.getGroupSizeElement());
40033      }
40034      if (element.hasCost()) {
40035        composeMoney("cost", element.getCost());
40036      }
40037      if (element.hasCommentElement()) {
40038        composeString("comment", element.getCommentElement());
40039      }
40040  }
40041
40042  protected void composeProductPlanProductPlanPlanSpecificCostComponent(String name, ProductPlan.ProductPlanPlanSpecificCostComponent element) throws IOException {
40043    if (element != null) {
40044      composeElementAttributes(element);
40045      xml.enter(FHIR_NS, name);
40046      composeProductPlanProductPlanPlanSpecificCostComponentElements(element);
40047      composeElementClose(element);
40048      xml.exit(FHIR_NS, name);
40049    }
40050  }
40051
40052  protected void composeProductPlanProductPlanPlanSpecificCostComponentElements(ProductPlan.ProductPlanPlanSpecificCostComponent element) throws IOException {
40053      composeBackboneElementElements(element);
40054      if (element.hasCategory()) {
40055        composeCodeableConcept("category", element.getCategory());
40056      }
40057      if (element.hasBenefit()) { 
40058        for (ProductPlan.ProductPlanPlanSpecificCostBenefitComponent e : element.getBenefit()) 
40059          composeProductPlanProductPlanPlanSpecificCostBenefitComponent("benefit", e);
40060      }
40061  }
40062
40063  protected void composeProductPlanProductPlanPlanSpecificCostBenefitComponent(String name, ProductPlan.ProductPlanPlanSpecificCostBenefitComponent element) throws IOException {
40064    if (element != null) {
40065      composeElementAttributes(element);
40066      xml.enter(FHIR_NS, name);
40067      composeProductPlanProductPlanPlanSpecificCostBenefitComponentElements(element);
40068      composeElementClose(element);
40069      xml.exit(FHIR_NS, name);
40070    }
40071  }
40072
40073  protected void composeProductPlanProductPlanPlanSpecificCostBenefitComponentElements(ProductPlan.ProductPlanPlanSpecificCostBenefitComponent element) throws IOException {
40074      composeBackboneElementElements(element);
40075      if (element.hasType()) {
40076        composeCodeableConcept("type", element.getType());
40077      }
40078      if (element.hasDescriptionElement()) {
40079        composeString("description", element.getDescriptionElement());
40080      }
40081      if (element.hasCost()) { 
40082        for (ProductPlan.ProductPlanPlanSpecificCostBenefitCostComponent e : element.getCost()) 
40083          composeProductPlanProductPlanPlanSpecificCostBenefitCostComponent("cost", e);
40084      }
40085  }
40086
40087  protected void composeProductPlanProductPlanPlanSpecificCostBenefitCostComponent(String name, ProductPlan.ProductPlanPlanSpecificCostBenefitCostComponent element) throws IOException {
40088    if (element != null) {
40089      composeElementAttributes(element);
40090      xml.enter(FHIR_NS, name);
40091      composeProductPlanProductPlanPlanSpecificCostBenefitCostComponentElements(element);
40092      composeElementClose(element);
40093      xml.exit(FHIR_NS, name);
40094    }
40095  }
40096
40097  protected void composeProductPlanProductPlanPlanSpecificCostBenefitCostComponentElements(ProductPlan.ProductPlanPlanSpecificCostBenefitCostComponent element) throws IOException {
40098      composeBackboneElementElements(element);
40099      if (element.hasType()) {
40100        composeCodeableConcept("type", element.getType());
40101      }
40102      if (element.hasApplicabilityElement())
40103        composeEnumeration("applicability", element.getApplicabilityElement(), new ProductPlan.BenefitCostApplicabilityEnumFactory());
40104      if (element.hasQualifiers()) { 
40105        for (CodeableConcept e : element.getQualifiers()) 
40106          composeCodeableConcept("qualifiers", e);
40107      }
40108      if (element.hasValue()) {
40109        composeMoney("value", element.getValue());
40110      }
40111  }
40112
40113  protected void composeProvenance(String name, Provenance element) throws IOException {
40114    if (element != null) {
40115      composeDomainResourceAttributes(element);
40116      xml.enter(FHIR_NS, name);
40117      composeProvenanceElements(element);
40118      composeElementClose(element);
40119      xml.exit(FHIR_NS, name);
40120    }
40121  }
40122
40123  protected void composeProvenanceElements(Provenance element) throws IOException {
40124      composeDomainResourceElements(element);
40125      if (element.hasTarget()) { 
40126        for (Reference e : element.getTarget()) 
40127          composeReference("target", e);
40128      }
40129      if (element.hasOccurred()) {
40130        composeType("occurred", element.getOccurred());
40131      }      if (element.hasRecordedElement()) {
40132        composeInstant("recorded", element.getRecordedElement());
40133      }
40134      if (element.hasPolicy()) { 
40135        for (UriType e : element.getPolicy()) 
40136          composeUri("policy", e);
40137      }
40138      if (element.hasLocation()) {
40139        composeReference("location", element.getLocation());
40140      }
40141      if (element.hasReason()) { 
40142        for (CodeableConcept e : element.getReason()) 
40143          composeCodeableConcept("reason", e);
40144      }
40145      if (element.hasActivity()) {
40146        composeCodeableConcept("activity", element.getActivity());
40147      }
40148      if (element.hasAgent()) { 
40149        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
40150          composeProvenanceProvenanceAgentComponent("agent", e);
40151      }
40152      if (element.hasEntity()) { 
40153        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
40154          composeProvenanceProvenanceEntityComponent("entity", e);
40155      }
40156      if (element.hasSignature()) { 
40157        for (Signature e : element.getSignature()) 
40158          composeSignature("signature", e);
40159      }
40160  }
40161
40162  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
40163    if (element != null) {
40164      composeElementAttributes(element);
40165      xml.enter(FHIR_NS, name);
40166      composeProvenanceProvenanceAgentComponentElements(element);
40167      composeElementClose(element);
40168      xml.exit(FHIR_NS, name);
40169    }
40170  }
40171
40172  protected void composeProvenanceProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
40173      composeBackboneElementElements(element);
40174      if (element.hasType()) {
40175        composeCodeableConcept("type", element.getType());
40176      }
40177      if (element.hasRole()) { 
40178        for (CodeableConcept e : element.getRole()) 
40179          composeCodeableConcept("role", e);
40180      }
40181      if (element.hasWho()) {
40182        composeType("who", element.getWho());
40183      }      if (element.hasOnBehalfOf()) {
40184        composeType("onBehalfOf", element.getOnBehalfOf());
40185      }  }
40186
40187  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
40188    if (element != null) {
40189      composeElementAttributes(element);
40190      xml.enter(FHIR_NS, name);
40191      composeProvenanceProvenanceEntityComponentElements(element);
40192      composeElementClose(element);
40193      xml.exit(FHIR_NS, name);
40194    }
40195  }
40196
40197  protected void composeProvenanceProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
40198      composeBackboneElementElements(element);
40199      if (element.hasRoleElement())
40200        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
40201      if (element.hasWhat()) {
40202        composeType("what", element.getWhat());
40203      }      if (element.hasAgent()) { 
40204        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
40205          composeProvenanceProvenanceAgentComponent("agent", e);
40206      }
40207  }
40208
40209  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
40210    if (element != null) {
40211      composeDomainResourceAttributes(element);
40212      xml.enter(FHIR_NS, name);
40213      composeQuestionnaireElements(element);
40214      composeElementClose(element);
40215      xml.exit(FHIR_NS, name);
40216    }
40217  }
40218
40219  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
40220      composeDomainResourceElements(element);
40221      if (element.hasUrlElement()) {
40222        composeUri("url", element.getUrlElement());
40223      }
40224      if (element.hasIdentifier()) { 
40225        for (Identifier e : element.getIdentifier()) 
40226          composeIdentifier("identifier", e);
40227      }
40228      if (element.hasVersionElement()) {
40229        composeString("version", element.getVersionElement());
40230      }
40231      if (element.hasNameElement()) {
40232        composeString("name", element.getNameElement());
40233      }
40234      if (element.hasTitleElement()) {
40235        composeString("title", element.getTitleElement());
40236      }
40237      if (element.hasDerivedFrom()) { 
40238        for (CanonicalType e : element.getDerivedFrom()) 
40239          composeCanonical("derivedFrom", e);
40240      }
40241      if (element.hasStatusElement())
40242        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40243      if (element.hasExperimentalElement()) {
40244        composeBoolean("experimental", element.getExperimentalElement());
40245      }
40246      if (element.hasSubjectType()) { 
40247        for (CodeType e : element.getSubjectType()) 
40248          composeCode("subjectType", e);
40249      }
40250      if (element.hasDateElement()) {
40251        composeDateTime("date", element.getDateElement());
40252      }
40253      if (element.hasPublisherElement()) {
40254        composeString("publisher", element.getPublisherElement());
40255      }
40256      if (element.hasContact()) { 
40257        for (ContactDetail e : element.getContact()) 
40258          composeContactDetail("contact", e);
40259      }
40260      if (element.hasDescriptionElement()) {
40261        composeMarkdown("description", element.getDescriptionElement());
40262      }
40263      if (element.hasUseContext()) { 
40264        for (UsageContext e : element.getUseContext()) 
40265          composeUsageContext("useContext", e);
40266      }
40267      if (element.hasJurisdiction()) { 
40268        for (CodeableConcept e : element.getJurisdiction()) 
40269          composeCodeableConcept("jurisdiction", e);
40270      }
40271      if (element.hasPurposeElement()) {
40272        composeMarkdown("purpose", element.getPurposeElement());
40273      }
40274      if (element.hasCopyrightElement()) {
40275        composeMarkdown("copyright", element.getCopyrightElement());
40276      }
40277      if (element.hasApprovalDateElement()) {
40278        composeDate("approvalDate", element.getApprovalDateElement());
40279      }
40280      if (element.hasLastReviewDateElement()) {
40281        composeDate("lastReviewDate", element.getLastReviewDateElement());
40282      }
40283      if (element.hasEffectivePeriod()) {
40284        composePeriod("effectivePeriod", element.getEffectivePeriod());
40285      }
40286      if (element.hasCode()) { 
40287        for (Coding e : element.getCode()) 
40288          composeCoding("code", e);
40289      }
40290      if (element.hasItem()) { 
40291        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
40292          composeQuestionnaireQuestionnaireItemComponent("item", e);
40293      }
40294  }
40295
40296  protected void composeQuestionnaireQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
40297    if (element != null) {
40298      composeElementAttributes(element);
40299      xml.enter(FHIR_NS, name);
40300      composeQuestionnaireQuestionnaireItemComponentElements(element);
40301      composeElementClose(element);
40302      xml.exit(FHIR_NS, name);
40303    }
40304  }
40305
40306  protected void composeQuestionnaireQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
40307      composeBackboneElementElements(element);
40308      if (element.hasLinkIdElement()) {
40309        composeString("linkId", element.getLinkIdElement());
40310      }
40311      if (element.hasDefinitionElement()) {
40312        composeUri("definition", element.getDefinitionElement());
40313      }
40314      if (element.hasCode()) { 
40315        for (Coding e : element.getCode()) 
40316          composeCoding("code", e);
40317      }
40318      if (element.hasPrefixElement()) {
40319        composeString("prefix", element.getPrefixElement());
40320      }
40321      if (element.hasTextElement()) {
40322        composeString("text", element.getTextElement());
40323      }
40324      if (element.hasTypeElement())
40325        composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
40326      if (element.hasEnableWhen()) { 
40327        for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
40328          composeQuestionnaireQuestionnaireItemEnableWhenComponent("enableWhen", e);
40329      }
40330      if (element.hasEnableBehaviorElement())
40331        composeEnumeration("enableBehavior", element.getEnableBehaviorElement(), new Questionnaire.EnableWhenBehaviorEnumFactory());
40332      if (element.hasRequiredElement()) {
40333        composeBoolean("required", element.getRequiredElement());
40334      }
40335      if (element.hasRepeatsElement()) {
40336        composeBoolean("repeats", element.getRepeatsElement());
40337      }
40338      if (element.hasReadOnlyElement()) {
40339        composeBoolean("readOnly", element.getReadOnlyElement());
40340      }
40341      if (element.hasMaxLengthElement()) {
40342        composeInteger("maxLength", element.getMaxLengthElement());
40343      }
40344      if (element.hasOptionsElement()) {
40345        composeCanonical("options", element.getOptionsElement());
40346      }
40347      if (element.hasOption()) { 
40348        for (Questionnaire.QuestionnaireItemOptionComponent e : element.getOption()) 
40349          composeQuestionnaireQuestionnaireItemOptionComponent("option", e);
40350      }
40351      if (element.hasInitial()) { 
40352        for (Questionnaire.QuestionnaireItemInitialComponent e : element.getInitial()) 
40353          composeQuestionnaireQuestionnaireItemInitialComponent("initial", e);
40354      }
40355      if (element.hasItem()) { 
40356        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
40357          composeQuestionnaireQuestionnaireItemComponent("item", e);
40358      }
40359  }
40360
40361  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
40362    if (element != null) {
40363      composeElementAttributes(element);
40364      xml.enter(FHIR_NS, name);
40365      composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(element);
40366      composeElementClose(element);
40367      xml.exit(FHIR_NS, name);
40368    }
40369  }
40370
40371  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
40372      composeBackboneElementElements(element);
40373      if (element.hasQuestionElement()) {
40374        composeString("question", element.getQuestionElement());
40375      }
40376      if (element.hasOperatorElement())
40377        composeEnumeration("operator", element.getOperatorElement(), new Questionnaire.QuestionnaireItemOperatorEnumFactory());
40378      if (element.hasAnswer()) {
40379        composeType("answer", element.getAnswer());
40380      }  }
40381
40382  protected void composeQuestionnaireQuestionnaireItemOptionComponent(String name, Questionnaire.QuestionnaireItemOptionComponent element) throws IOException {
40383    if (element != null) {
40384      composeElementAttributes(element);
40385      xml.enter(FHIR_NS, name);
40386      composeQuestionnaireQuestionnaireItemOptionComponentElements(element);
40387      composeElementClose(element);
40388      xml.exit(FHIR_NS, name);
40389    }
40390  }
40391
40392  protected void composeQuestionnaireQuestionnaireItemOptionComponentElements(Questionnaire.QuestionnaireItemOptionComponent element) throws IOException {
40393      composeBackboneElementElements(element);
40394      if (element.hasValue()) {
40395        composeType("value", element.getValue());
40396      }      if (element.hasInitialSelectedElement()) {
40397        composeBoolean("initialSelected", element.getInitialSelectedElement());
40398      }
40399  }
40400
40401  protected void composeQuestionnaireQuestionnaireItemInitialComponent(String name, Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
40402    if (element != null) {
40403      composeElementAttributes(element);
40404      xml.enter(FHIR_NS, name);
40405      composeQuestionnaireQuestionnaireItemInitialComponentElements(element);
40406      composeElementClose(element);
40407      xml.exit(FHIR_NS, name);
40408    }
40409  }
40410
40411  protected void composeQuestionnaireQuestionnaireItemInitialComponentElements(Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
40412      composeBackboneElementElements(element);
40413      if (element.hasValue()) {
40414        composeType("value", element.getValue());
40415      }  }
40416
40417  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
40418    if (element != null) {
40419      composeDomainResourceAttributes(element);
40420      xml.enter(FHIR_NS, name);
40421      composeQuestionnaireResponseElements(element);
40422      composeElementClose(element);
40423      xml.exit(FHIR_NS, name);
40424    }
40425  }
40426
40427  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
40428      composeDomainResourceElements(element);
40429      if (element.hasIdentifier()) {
40430        composeIdentifier("identifier", element.getIdentifier());
40431      }
40432      if (element.hasBasedOn()) { 
40433        for (Reference e : element.getBasedOn()) 
40434          composeReference("basedOn", e);
40435      }
40436      if (element.hasPartOf()) { 
40437        for (Reference e : element.getPartOf()) 
40438          composeReference("partOf", e);
40439      }
40440      if (element.hasQuestionnaireElement()) {
40441        composeCanonical("questionnaire", element.getQuestionnaireElement());
40442      }
40443      if (element.hasStatusElement())
40444        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
40445      if (element.hasSubject()) {
40446        composeReference("subject", element.getSubject());
40447      }
40448      if (element.hasContext()) {
40449        composeReference("context", element.getContext());
40450      }
40451      if (element.hasAuthoredElement()) {
40452        composeDateTime("authored", element.getAuthoredElement());
40453      }
40454      if (element.hasAuthor()) {
40455        composeReference("author", element.getAuthor());
40456      }
40457      if (element.hasSource()) {
40458        composeReference("source", element.getSource());
40459      }
40460      if (element.hasItem()) { 
40461        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
40462          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
40463      }
40464  }
40465
40466  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
40467    if (element != null) {
40468      composeElementAttributes(element);
40469      xml.enter(FHIR_NS, name);
40470      composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(element);
40471      composeElementClose(element);
40472      xml.exit(FHIR_NS, name);
40473    }
40474  }
40475
40476  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
40477      composeBackboneElementElements(element);
40478      if (element.hasLinkIdElement()) {
40479        composeString("linkId", element.getLinkIdElement());
40480      }
40481      if (element.hasDefinitionElement()) {
40482        composeUri("definition", element.getDefinitionElement());
40483      }
40484      if (element.hasTextElement()) {
40485        composeString("text", element.getTextElement());
40486      }
40487      if (element.hasSubject()) {
40488        composeReference("subject", element.getSubject());
40489      }
40490      if (element.hasAnswer()) { 
40491        for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
40492          composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent("answer", e);
40493      }
40494      if (element.hasItem()) { 
40495        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
40496          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
40497      }
40498  }
40499
40500  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
40501    if (element != null) {
40502      composeElementAttributes(element);
40503      xml.enter(FHIR_NS, name);
40504      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(element);
40505      composeElementClose(element);
40506      xml.exit(FHIR_NS, name);
40507    }
40508  }
40509
40510  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
40511      composeBackboneElementElements(element);
40512      if (element.hasValue()) {
40513        composeType("value", element.getValue());
40514      }      if (element.hasItem()) { 
40515        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
40516          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
40517      }
40518  }
40519
40520  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
40521    if (element != null) {
40522      composeDomainResourceAttributes(element);
40523      xml.enter(FHIR_NS, name);
40524      composeRelatedPersonElements(element);
40525      composeElementClose(element);
40526      xml.exit(FHIR_NS, name);
40527    }
40528  }
40529
40530  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
40531      composeDomainResourceElements(element);
40532      if (element.hasIdentifier()) { 
40533        for (Identifier e : element.getIdentifier()) 
40534          composeIdentifier("identifier", e);
40535      }
40536      if (element.hasActiveElement()) {
40537        composeBoolean("active", element.getActiveElement());
40538      }
40539      if (element.hasPatient()) {
40540        composeReference("patient", element.getPatient());
40541      }
40542      if (element.hasRelationship()) { 
40543        for (CodeableConcept e : element.getRelationship()) 
40544          composeCodeableConcept("relationship", e);
40545      }
40546      if (element.hasName()) { 
40547        for (HumanName e : element.getName()) 
40548          composeHumanName("name", e);
40549      }
40550      if (element.hasTelecom()) { 
40551        for (ContactPoint e : element.getTelecom()) 
40552          composeContactPoint("telecom", e);
40553      }
40554      if (element.hasGenderElement())
40555        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
40556      if (element.hasBirthDateElement()) {
40557        composeDate("birthDate", element.getBirthDateElement());
40558      }
40559      if (element.hasAddress()) { 
40560        for (Address e : element.getAddress()) 
40561          composeAddress("address", e);
40562      }
40563      if (element.hasPhoto()) { 
40564        for (Attachment e : element.getPhoto()) 
40565          composeAttachment("photo", e);
40566      }
40567      if (element.hasPeriod()) {
40568        composePeriod("period", element.getPeriod());
40569      }
40570  }
40571
40572  protected void composeRequestGroup(String name, RequestGroup element) throws IOException {
40573    if (element != null) {
40574      composeDomainResourceAttributes(element);
40575      xml.enter(FHIR_NS, name);
40576      composeRequestGroupElements(element);
40577      composeElementClose(element);
40578      xml.exit(FHIR_NS, name);
40579    }
40580  }
40581
40582  protected void composeRequestGroupElements(RequestGroup element) throws IOException {
40583      composeDomainResourceElements(element);
40584      if (element.hasIdentifier()) { 
40585        for (Identifier e : element.getIdentifier()) 
40586          composeIdentifier("identifier", e);
40587      }
40588      if (element.hasInstantiatesCanonical()) { 
40589        for (CanonicalType e : element.getInstantiatesCanonical()) 
40590          composeCanonical("instantiatesCanonical", e);
40591      }
40592      if (element.hasInstantiatesUri()) { 
40593        for (UriType e : element.getInstantiatesUri()) 
40594          composeUri("instantiatesUri", e);
40595      }
40596      if (element.hasBasedOn()) { 
40597        for (Reference e : element.getBasedOn()) 
40598          composeReference("basedOn", e);
40599      }
40600      if (element.hasReplaces()) { 
40601        for (Reference e : element.getReplaces()) 
40602          composeReference("replaces", e);
40603      }
40604      if (element.hasGroupIdentifier()) {
40605        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
40606      }
40607      if (element.hasStatusElement())
40608        composeEnumeration("status", element.getStatusElement(), new RequestGroup.RequestStatusEnumFactory());
40609      if (element.hasIntentElement())
40610        composeEnumeration("intent", element.getIntentElement(), new RequestGroup.RequestIntentEnumFactory());
40611      if (element.hasPriorityElement())
40612        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
40613      if (element.hasCode()) {
40614        composeCodeableConcept("code", element.getCode());
40615      }
40616      if (element.hasSubject()) {
40617        composeReference("subject", element.getSubject());
40618      }
40619      if (element.hasContext()) {
40620        composeReference("context", element.getContext());
40621      }
40622      if (element.hasAuthoredOnElement()) {
40623        composeDateTime("authoredOn", element.getAuthoredOnElement());
40624      }
40625      if (element.hasAuthor()) {
40626        composeReference("author", element.getAuthor());
40627      }
40628      if (element.hasReasonCode()) { 
40629        for (CodeableConcept e : element.getReasonCode()) 
40630          composeCodeableConcept("reasonCode", e);
40631      }
40632      if (element.hasReasonReference()) { 
40633        for (Reference e : element.getReasonReference()) 
40634          composeReference("reasonReference", e);
40635      }
40636      if (element.hasNote()) { 
40637        for (Annotation e : element.getNote()) 
40638          composeAnnotation("note", e);
40639      }
40640      if (element.hasAction()) { 
40641        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
40642          composeRequestGroupRequestGroupActionComponent("action", e);
40643      }
40644  }
40645
40646  protected void composeRequestGroupRequestGroupActionComponent(String name, RequestGroup.RequestGroupActionComponent element) throws IOException {
40647    if (element != null) {
40648      composeElementAttributes(element);
40649      xml.enter(FHIR_NS, name);
40650      composeRequestGroupRequestGroupActionComponentElements(element);
40651      composeElementClose(element);
40652      xml.exit(FHIR_NS, name);
40653    }
40654  }
40655
40656  protected void composeRequestGroupRequestGroupActionComponentElements(RequestGroup.RequestGroupActionComponent element) throws IOException {
40657      composeBackboneElementElements(element);
40658      if (element.hasPrefixElement()) {
40659        composeString("prefix", element.getPrefixElement());
40660      }
40661      if (element.hasTitleElement()) {
40662        composeString("title", element.getTitleElement());
40663      }
40664      if (element.hasDescriptionElement()) {
40665        composeString("description", element.getDescriptionElement());
40666      }
40667      if (element.hasTextEquivalentElement()) {
40668        composeString("textEquivalent", element.getTextEquivalentElement());
40669      }
40670      if (element.hasCode()) { 
40671        for (CodeableConcept e : element.getCode()) 
40672          composeCodeableConcept("code", e);
40673      }
40674      if (element.hasDocumentation()) { 
40675        for (RelatedArtifact e : element.getDocumentation()) 
40676          composeRelatedArtifact("documentation", e);
40677      }
40678      if (element.hasCondition()) { 
40679        for (RequestGroup.RequestGroupActionConditionComponent e : element.getCondition()) 
40680          composeRequestGroupRequestGroupActionConditionComponent("condition", e);
40681      }
40682      if (element.hasRelatedAction()) { 
40683        for (RequestGroup.RequestGroupActionRelatedActionComponent e : element.getRelatedAction()) 
40684          composeRequestGroupRequestGroupActionRelatedActionComponent("relatedAction", e);
40685      }
40686      if (element.hasTiming()) {
40687        composeType("timing", element.getTiming());
40688      }      if (element.hasParticipant()) { 
40689        for (Reference e : element.getParticipant()) 
40690          composeReference("participant", e);
40691      }
40692      if (element.hasType()) {
40693        composeCodeableConcept("type", element.getType());
40694      }
40695      if (element.hasGroupingBehaviorElement())
40696        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new RequestGroup.ActionGroupingBehaviorEnumFactory());
40697      if (element.hasSelectionBehaviorElement())
40698        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new RequestGroup.ActionSelectionBehaviorEnumFactory());
40699      if (element.hasRequiredBehaviorElement())
40700        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new RequestGroup.ActionRequiredBehaviorEnumFactory());
40701      if (element.hasPrecheckBehaviorElement())
40702        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new RequestGroup.ActionPrecheckBehaviorEnumFactory());
40703      if (element.hasCardinalityBehaviorElement())
40704        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new RequestGroup.ActionCardinalityBehaviorEnumFactory());
40705      if (element.hasResource()) {
40706        composeReference("resource", element.getResource());
40707      }
40708      if (element.hasAction()) { 
40709        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
40710          composeRequestGroupRequestGroupActionComponent("action", e);
40711      }
40712  }
40713
40714  protected void composeRequestGroupRequestGroupActionConditionComponent(String name, RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
40715    if (element != null) {
40716      composeElementAttributes(element);
40717      xml.enter(FHIR_NS, name);
40718      composeRequestGroupRequestGroupActionConditionComponentElements(element);
40719      composeElementClose(element);
40720      xml.exit(FHIR_NS, name);
40721    }
40722  }
40723
40724  protected void composeRequestGroupRequestGroupActionConditionComponentElements(RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
40725      composeBackboneElementElements(element);
40726      if (element.hasKindElement())
40727        composeEnumeration("kind", element.getKindElement(), new RequestGroup.ActionConditionKindEnumFactory());
40728      if (element.hasDescriptionElement()) {
40729        composeString("description", element.getDescriptionElement());
40730      }
40731      if (element.hasLanguageElement()) {
40732        composeString("language", element.getLanguageElement());
40733      }
40734      if (element.hasExpressionElement()) {
40735        composeString("expression", element.getExpressionElement());
40736      }
40737  }
40738
40739  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(String name, RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
40740    if (element != null) {
40741      composeElementAttributes(element);
40742      xml.enter(FHIR_NS, name);
40743      composeRequestGroupRequestGroupActionRelatedActionComponentElements(element);
40744      composeElementClose(element);
40745      xml.exit(FHIR_NS, name);
40746    }
40747  }
40748
40749  protected void composeRequestGroupRequestGroupActionRelatedActionComponentElements(RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
40750      composeBackboneElementElements(element);
40751      if (element.hasActionIdElement()) {
40752        composeId("actionId", element.getActionIdElement());
40753      }
40754      if (element.hasRelationshipElement())
40755        composeEnumeration("relationship", element.getRelationshipElement(), new RequestGroup.ActionRelationshipTypeEnumFactory());
40756      if (element.hasOffset()) {
40757        composeType("offset", element.getOffset());
40758      }  }
40759
40760  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
40761    if (element != null) {
40762      composeDomainResourceAttributes(element);
40763      xml.enter(FHIR_NS, name);
40764      composeResearchStudyElements(element);
40765      composeElementClose(element);
40766      xml.exit(FHIR_NS, name);
40767    }
40768  }
40769
40770  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
40771      composeDomainResourceElements(element);
40772      if (element.hasIdentifier()) { 
40773        for (Identifier e : element.getIdentifier()) 
40774          composeIdentifier("identifier", e);
40775      }
40776      if (element.hasTitleElement()) {
40777        composeString("title", element.getTitleElement());
40778      }
40779      if (element.hasProtocol()) { 
40780        for (Reference e : element.getProtocol()) 
40781          composeReference("protocol", e);
40782      }
40783      if (element.hasPartOf()) { 
40784        for (Reference e : element.getPartOf()) 
40785          composeReference("partOf", e);
40786      }
40787      if (element.hasStatusElement())
40788        composeEnumeration("status", element.getStatusElement(), new ResearchStudy.ResearchStudyStatusEnumFactory());
40789      if (element.hasPrimaryPurposeType()) {
40790        composeCodeableConcept("primaryPurposeType", element.getPrimaryPurposeType());
40791      }
40792      if (element.hasPhase()) {
40793        composeCodeableConcept("phase", element.getPhase());
40794      }
40795      if (element.hasCategory()) { 
40796        for (CodeableConcept e : element.getCategory()) 
40797          composeCodeableConcept("category", e);
40798      }
40799      if (element.hasFocus()) { 
40800        for (CodeableConcept e : element.getFocus()) 
40801          composeCodeableConcept("focus", e);
40802      }
40803      if (element.hasCondition()) { 
40804        for (Reference e : element.getCondition()) 
40805          composeReference("condition", e);
40806      }
40807      if (element.hasContact()) { 
40808        for (ContactDetail e : element.getContact()) 
40809          composeContactDetail("contact", e);
40810      }
40811      if (element.hasRelatedArtifact()) { 
40812        for (RelatedArtifact e : element.getRelatedArtifact()) 
40813          composeRelatedArtifact("relatedArtifact", e);
40814      }
40815      if (element.hasKeyword()) { 
40816        for (CodeableConcept e : element.getKeyword()) 
40817          composeCodeableConcept("keyword", e);
40818      }
40819      if (element.hasLocation()) { 
40820        for (CodeableConcept e : element.getLocation()) 
40821          composeCodeableConcept("location", e);
40822      }
40823      if (element.hasDescriptionElement()) {
40824        composeMarkdown("description", element.getDescriptionElement());
40825      }
40826      if (element.hasEnrollment()) { 
40827        for (Reference e : element.getEnrollment()) 
40828          composeReference("enrollment", e);
40829      }
40830      if (element.hasPeriod()) {
40831        composePeriod("period", element.getPeriod());
40832      }
40833      if (element.hasSponsor()) {
40834        composeReference("sponsor", element.getSponsor());
40835      }
40836      if (element.hasPrincipalInvestigator()) {
40837        composeReference("principalInvestigator", element.getPrincipalInvestigator());
40838      }
40839      if (element.hasSite()) { 
40840        for (Reference e : element.getSite()) 
40841          composeReference("site", e);
40842      }
40843      if (element.hasReasonStopped()) {
40844        composeCodeableConcept("reasonStopped", element.getReasonStopped());
40845      }
40846      if (element.hasNote()) { 
40847        for (Annotation e : element.getNote()) 
40848          composeAnnotation("note", e);
40849      }
40850      if (element.hasArm()) { 
40851        for (ResearchStudy.ResearchStudyArmComponent e : element.getArm()) 
40852          composeResearchStudyResearchStudyArmComponent("arm", e);
40853      }
40854      if (element.hasObjective()) { 
40855        for (ResearchStudy.ResearchStudyObjectiveComponent e : element.getObjective()) 
40856          composeResearchStudyResearchStudyObjectiveComponent("objective", e);
40857      }
40858  }
40859
40860  protected void composeResearchStudyResearchStudyArmComponent(String name, ResearchStudy.ResearchStudyArmComponent element) throws IOException {
40861    if (element != null) {
40862      composeElementAttributes(element);
40863      xml.enter(FHIR_NS, name);
40864      composeResearchStudyResearchStudyArmComponentElements(element);
40865      composeElementClose(element);
40866      xml.exit(FHIR_NS, name);
40867    }
40868  }
40869
40870  protected void composeResearchStudyResearchStudyArmComponentElements(ResearchStudy.ResearchStudyArmComponent element) throws IOException {
40871      composeBackboneElementElements(element);
40872      if (element.hasNameElement()) {
40873        composeString("name", element.getNameElement());
40874      }
40875      if (element.hasType()) {
40876        composeCodeableConcept("type", element.getType());
40877      }
40878      if (element.hasDescriptionElement()) {
40879        composeString("description", element.getDescriptionElement());
40880      }
40881  }
40882
40883  protected void composeResearchStudyResearchStudyObjectiveComponent(String name, ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
40884    if (element != null) {
40885      composeElementAttributes(element);
40886      xml.enter(FHIR_NS, name);
40887      composeResearchStudyResearchStudyObjectiveComponentElements(element);
40888      composeElementClose(element);
40889      xml.exit(FHIR_NS, name);
40890    }
40891  }
40892
40893  protected void composeResearchStudyResearchStudyObjectiveComponentElements(ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
40894      composeBackboneElementElements(element);
40895      if (element.hasNameElement()) {
40896        composeString("name", element.getNameElement());
40897      }
40898      if (element.hasType()) {
40899        composeCodeableConcept("type", element.getType());
40900      }
40901  }
40902
40903  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
40904    if (element != null) {
40905      composeDomainResourceAttributes(element);
40906      xml.enter(FHIR_NS, name);
40907      composeResearchSubjectElements(element);
40908      composeElementClose(element);
40909      xml.exit(FHIR_NS, name);
40910    }
40911  }
40912
40913  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
40914      composeDomainResourceElements(element);
40915      if (element.hasIdentifier()) { 
40916        for (Identifier e : element.getIdentifier()) 
40917          composeIdentifier("identifier", e);
40918      }
40919      if (element.hasStatusElement())
40920        composeEnumeration("status", element.getStatusElement(), new ResearchSubject.ResearchSubjectStatusEnumFactory());
40921      if (element.hasPeriod()) {
40922        composePeriod("period", element.getPeriod());
40923      }
40924      if (element.hasStudy()) {
40925        composeReference("study", element.getStudy());
40926      }
40927      if (element.hasIndividual()) {
40928        composeReference("individual", element.getIndividual());
40929      }
40930      if (element.hasAssignedArmElement()) {
40931        composeString("assignedArm", element.getAssignedArmElement());
40932      }
40933      if (element.hasActualArmElement()) {
40934        composeString("actualArm", element.getActualArmElement());
40935      }
40936      if (element.hasConsent()) {
40937        composeReference("consent", element.getConsent());
40938      }
40939  }
40940
40941  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
40942    if (element != null) {
40943      composeDomainResourceAttributes(element);
40944      xml.enter(FHIR_NS, name);
40945      composeRiskAssessmentElements(element);
40946      composeElementClose(element);
40947      xml.exit(FHIR_NS, name);
40948    }
40949  }
40950
40951  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
40952      composeDomainResourceElements(element);
40953      if (element.hasIdentifier()) { 
40954        for (Identifier e : element.getIdentifier()) 
40955          composeIdentifier("identifier", e);
40956      }
40957      if (element.hasBasedOn()) {
40958        composeReference("basedOn", element.getBasedOn());
40959      }
40960      if (element.hasParent()) {
40961        composeReference("parent", element.getParent());
40962      }
40963      if (element.hasStatusElement())
40964        composeEnumeration("status", element.getStatusElement(), new RiskAssessment.RiskAssessmentStatusEnumFactory());
40965      if (element.hasMethod()) {
40966        composeCodeableConcept("method", element.getMethod());
40967      }
40968      if (element.hasCode()) {
40969        composeCodeableConcept("code", element.getCode());
40970      }
40971      if (element.hasSubject()) {
40972        composeReference("subject", element.getSubject());
40973      }
40974      if (element.hasContext()) {
40975        composeReference("context", element.getContext());
40976      }
40977      if (element.hasOccurrence()) {
40978        composeType("occurrence", element.getOccurrence());
40979      }      if (element.hasCondition()) {
40980        composeReference("condition", element.getCondition());
40981      }
40982      if (element.hasPerformer()) {
40983        composeReference("performer", element.getPerformer());
40984      }
40985      if (element.hasReasonCode()) { 
40986        for (CodeableConcept e : element.getReasonCode()) 
40987          composeCodeableConcept("reasonCode", e);
40988      }
40989      if (element.hasReasonReference()) { 
40990        for (Reference e : element.getReasonReference()) 
40991          composeReference("reasonReference", e);
40992      }
40993      if (element.hasBasis()) { 
40994        for (Reference e : element.getBasis()) 
40995          composeReference("basis", e);
40996      }
40997      if (element.hasPrediction()) { 
40998        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
40999          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
41000      }
41001      if (element.hasMitigationElement()) {
41002        composeString("mitigation", element.getMitigationElement());
41003      }
41004      if (element.hasNote()) { 
41005        for (Annotation e : element.getNote()) 
41006          composeAnnotation("note", e);
41007      }
41008  }
41009
41010  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
41011    if (element != null) {
41012      composeElementAttributes(element);
41013      xml.enter(FHIR_NS, name);
41014      composeRiskAssessmentRiskAssessmentPredictionComponentElements(element);
41015      composeElementClose(element);
41016      xml.exit(FHIR_NS, name);
41017    }
41018  }
41019
41020  protected void composeRiskAssessmentRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
41021      composeBackboneElementElements(element);
41022      if (element.hasOutcome()) {
41023        composeCodeableConcept("outcome", element.getOutcome());
41024      }
41025      if (element.hasProbability()) {
41026        composeType("probability", element.getProbability());
41027      }      if (element.hasQualitativeRisk()) {
41028        composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
41029      }
41030      if (element.hasRelativeRiskElement()) {
41031        composeDecimal("relativeRisk", element.getRelativeRiskElement());
41032      }
41033      if (element.hasWhen()) {
41034        composeType("when", element.getWhen());
41035      }      if (element.hasRationaleElement()) {
41036        composeString("rationale", element.getRationaleElement());
41037      }
41038  }
41039
41040  protected void composeSchedule(String name, Schedule element) throws IOException {
41041    if (element != null) {
41042      composeDomainResourceAttributes(element);
41043      xml.enter(FHIR_NS, name);
41044      composeScheduleElements(element);
41045      composeElementClose(element);
41046      xml.exit(FHIR_NS, name);
41047    }
41048  }
41049
41050  protected void composeScheduleElements(Schedule element) throws IOException {
41051      composeDomainResourceElements(element);
41052      if (element.hasIdentifier()) { 
41053        for (Identifier e : element.getIdentifier()) 
41054          composeIdentifier("identifier", e);
41055      }
41056      if (element.hasActiveElement()) {
41057        composeBoolean("active", element.getActiveElement());
41058      }
41059      if (element.hasServiceCategory()) { 
41060        for (CodeableConcept e : element.getServiceCategory()) 
41061          composeCodeableConcept("serviceCategory", e);
41062      }
41063      if (element.hasServiceType()) { 
41064        for (CodeableConcept e : element.getServiceType()) 
41065          composeCodeableConcept("serviceType", e);
41066      }
41067      if (element.hasSpecialty()) { 
41068        for (CodeableConcept e : element.getSpecialty()) 
41069          composeCodeableConcept("specialty", e);
41070      }
41071      if (element.hasActor()) { 
41072        for (Reference e : element.getActor()) 
41073          composeReference("actor", e);
41074      }
41075      if (element.hasPlanningHorizon()) {
41076        composePeriod("planningHorizon", element.getPlanningHorizon());
41077      }
41078      if (element.hasCommentElement()) {
41079        composeString("comment", element.getCommentElement());
41080      }
41081  }
41082
41083  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
41084    if (element != null) {
41085      composeDomainResourceAttributes(element);
41086      xml.enter(FHIR_NS, name);
41087      composeSearchParameterElements(element);
41088      composeElementClose(element);
41089      xml.exit(FHIR_NS, name);
41090    }
41091  }
41092
41093  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
41094      composeDomainResourceElements(element);
41095      if (element.hasUrlElement()) {
41096        composeUri("url", element.getUrlElement());
41097      }
41098      if (element.hasVersionElement()) {
41099        composeString("version", element.getVersionElement());
41100      }
41101      if (element.hasNameElement()) {
41102        composeString("name", element.getNameElement());
41103      }
41104      if (element.hasDerivedFromElement()) {
41105        composeCanonical("derivedFrom", element.getDerivedFromElement());
41106      }
41107      if (element.hasStatusElement())
41108        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41109      if (element.hasExperimentalElement()) {
41110        composeBoolean("experimental", element.getExperimentalElement());
41111      }
41112      if (element.hasDateElement()) {
41113        composeDateTime("date", element.getDateElement());
41114      }
41115      if (element.hasPublisherElement()) {
41116        composeString("publisher", element.getPublisherElement());
41117      }
41118      if (element.hasContact()) { 
41119        for (ContactDetail e : element.getContact()) 
41120          composeContactDetail("contact", e);
41121      }
41122      if (element.hasDescriptionElement()) {
41123        composeMarkdown("description", element.getDescriptionElement());
41124      }
41125      if (element.hasUseContext()) { 
41126        for (UsageContext e : element.getUseContext()) 
41127          composeUsageContext("useContext", e);
41128      }
41129      if (element.hasJurisdiction()) { 
41130        for (CodeableConcept e : element.getJurisdiction()) 
41131          composeCodeableConcept("jurisdiction", e);
41132      }
41133      if (element.hasPurposeElement()) {
41134        composeMarkdown("purpose", element.getPurposeElement());
41135      }
41136      if (element.hasCodeElement()) {
41137        composeCode("code", element.getCodeElement());
41138      }
41139      if (element.hasBase()) { 
41140        for (CodeType e : element.getBase()) 
41141          composeCode("base", e);
41142      }
41143      if (element.hasTypeElement())
41144        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
41145      if (element.hasExpressionElement()) {
41146        composeString("expression", element.getExpressionElement());
41147      }
41148      if (element.hasXpathElement()) {
41149        composeString("xpath", element.getXpathElement());
41150      }
41151      if (element.hasXpathUsageElement())
41152        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
41153      if (element.hasTarget()) { 
41154        for (CodeType e : element.getTarget()) 
41155          composeCode("target", e);
41156      }
41157      if (element.hasMultipleOrElement()) {
41158        composeBoolean("multipleOr", element.getMultipleOrElement());
41159      }
41160      if (element.hasMultipleAndElement()) {
41161        composeBoolean("multipleAnd", element.getMultipleAndElement());
41162      }
41163        if (element.hasComparator()) 
41164          for (Enumeration<SearchParameter.SearchComparator> e : element.getComparator()) 
41165            composeEnumeration("comparator", e, new SearchParameter.SearchComparatorEnumFactory());
41166        if (element.hasModifier()) 
41167          for (Enumeration<SearchParameter.SearchModifierCode> e : element.getModifier()) 
41168            composeEnumeration("modifier", e, new SearchParameter.SearchModifierCodeEnumFactory());
41169      if (element.hasChain()) { 
41170        for (StringType e : element.getChain()) 
41171          composeString("chain", e);
41172      }
41173      if (element.hasComponent()) { 
41174        for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
41175          composeSearchParameterSearchParameterComponentComponent("component", e);
41176      }
41177  }
41178
41179  protected void composeSearchParameterSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
41180    if (element != null) {
41181      composeElementAttributes(element);
41182      xml.enter(FHIR_NS, name);
41183      composeSearchParameterSearchParameterComponentComponentElements(element);
41184      composeElementClose(element);
41185      xml.exit(FHIR_NS, name);
41186    }
41187  }
41188
41189  protected void composeSearchParameterSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
41190      composeBackboneElementElements(element);
41191      if (element.hasDefinitionElement()) {
41192        composeCanonical("definition", element.getDefinitionElement());
41193      }
41194      if (element.hasExpressionElement()) {
41195        composeString("expression", element.getExpressionElement());
41196      }
41197  }
41198
41199  protected void composeSequence(String name, Sequence element) throws IOException {
41200    if (element != null) {
41201      composeDomainResourceAttributes(element);
41202      xml.enter(FHIR_NS, name);
41203      composeSequenceElements(element);
41204      composeElementClose(element);
41205      xml.exit(FHIR_NS, name);
41206    }
41207  }
41208
41209  protected void composeSequenceElements(Sequence element) throws IOException {
41210      composeDomainResourceElements(element);
41211      if (element.hasIdentifier()) { 
41212        for (Identifier e : element.getIdentifier()) 
41213          composeIdentifier("identifier", e);
41214      }
41215      if (element.hasTypeElement())
41216        composeEnumeration("type", element.getTypeElement(), new Sequence.SequenceTypeEnumFactory());
41217      if (element.hasCoordinateSystemElement()) {
41218        composeInteger("coordinateSystem", element.getCoordinateSystemElement());
41219      }
41220      if (element.hasPatient()) {
41221        composeReference("patient", element.getPatient());
41222      }
41223      if (element.hasSpecimen()) {
41224        composeReference("specimen", element.getSpecimen());
41225      }
41226      if (element.hasDevice()) {
41227        composeReference("device", element.getDevice());
41228      }
41229      if (element.hasPerformer()) {
41230        composeReference("performer", element.getPerformer());
41231      }
41232      if (element.hasQuantity()) {
41233        composeQuantity("quantity", element.getQuantity());
41234      }
41235      if (element.hasReferenceSeq()) {
41236        composeSequenceSequenceReferenceSeqComponent("referenceSeq", element.getReferenceSeq());
41237      }
41238      if (element.hasVariant()) { 
41239        for (Sequence.SequenceVariantComponent e : element.getVariant()) 
41240          composeSequenceSequenceVariantComponent("variant", e);
41241      }
41242      if (element.hasObservedSeqElement()) {
41243        composeString("observedSeq", element.getObservedSeqElement());
41244      }
41245      if (element.hasQuality()) { 
41246        for (Sequence.SequenceQualityComponent e : element.getQuality()) 
41247          composeSequenceSequenceQualityComponent("quality", e);
41248      }
41249      if (element.hasReadCoverageElement()) {
41250        composeInteger("readCoverage", element.getReadCoverageElement());
41251      }
41252      if (element.hasRepository()) { 
41253        for (Sequence.SequenceRepositoryComponent e : element.getRepository()) 
41254          composeSequenceSequenceRepositoryComponent("repository", e);
41255      }
41256      if (element.hasPointer()) { 
41257        for (Reference e : element.getPointer()) 
41258          composeReference("pointer", e);
41259      }
41260      if (element.hasStructureVariant()) { 
41261        for (Sequence.SequenceStructureVariantComponent e : element.getStructureVariant()) 
41262          composeSequenceSequenceStructureVariantComponent("structureVariant", e);
41263      }
41264  }
41265
41266  protected void composeSequenceSequenceReferenceSeqComponent(String name, Sequence.SequenceReferenceSeqComponent element) throws IOException {
41267    if (element != null) {
41268      composeElementAttributes(element);
41269      xml.enter(FHIR_NS, name);
41270      composeSequenceSequenceReferenceSeqComponentElements(element);
41271      composeElementClose(element);
41272      xml.exit(FHIR_NS, name);
41273    }
41274  }
41275
41276  protected void composeSequenceSequenceReferenceSeqComponentElements(Sequence.SequenceReferenceSeqComponent element) throws IOException {
41277      composeBackboneElementElements(element);
41278      if (element.hasChromosome()) {
41279        composeCodeableConcept("chromosome", element.getChromosome());
41280      }
41281      if (element.hasGenomeBuildElement()) {
41282        composeString("genomeBuild", element.getGenomeBuildElement());
41283      }
41284      if (element.hasOrientationElement())
41285        composeEnumeration("orientation", element.getOrientationElement(), new Sequence.OrientationTypeEnumFactory());
41286      if (element.hasReferenceSeqId()) {
41287        composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
41288      }
41289      if (element.hasReferenceSeqPointer()) {
41290        composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
41291      }
41292      if (element.hasReferenceSeqStringElement()) {
41293        composeString("referenceSeqString", element.getReferenceSeqStringElement());
41294      }
41295      if (element.hasStrandElement())
41296        composeEnumeration("strand", element.getStrandElement(), new Sequence.StrandTypeEnumFactory());
41297      if (element.hasWindowStartElement()) {
41298        composeInteger("windowStart", element.getWindowStartElement());
41299      }
41300      if (element.hasWindowEndElement()) {
41301        composeInteger("windowEnd", element.getWindowEndElement());
41302      }
41303  }
41304
41305  protected void composeSequenceSequenceVariantComponent(String name, Sequence.SequenceVariantComponent element) throws IOException {
41306    if (element != null) {
41307      composeElementAttributes(element);
41308      xml.enter(FHIR_NS, name);
41309      composeSequenceSequenceVariantComponentElements(element);
41310      composeElementClose(element);
41311      xml.exit(FHIR_NS, name);
41312    }
41313  }
41314
41315  protected void composeSequenceSequenceVariantComponentElements(Sequence.SequenceVariantComponent element) throws IOException {
41316      composeBackboneElementElements(element);
41317      if (element.hasStartElement()) {
41318        composeInteger("start", element.getStartElement());
41319      }
41320      if (element.hasEndElement()) {
41321        composeInteger("end", element.getEndElement());
41322      }
41323      if (element.hasObservedAlleleElement()) {
41324        composeString("observedAllele", element.getObservedAlleleElement());
41325      }
41326      if (element.hasReferenceAlleleElement()) {
41327        composeString("referenceAllele", element.getReferenceAlleleElement());
41328      }
41329      if (element.hasCigarElement()) {
41330        composeString("cigar", element.getCigarElement());
41331      }
41332      if (element.hasVariantPointer()) {
41333        composeReference("variantPointer", element.getVariantPointer());
41334      }
41335  }
41336
41337  protected void composeSequenceSequenceQualityComponent(String name, Sequence.SequenceQualityComponent element) throws IOException {
41338    if (element != null) {
41339      composeElementAttributes(element);
41340      xml.enter(FHIR_NS, name);
41341      composeSequenceSequenceQualityComponentElements(element);
41342      composeElementClose(element);
41343      xml.exit(FHIR_NS, name);
41344    }
41345  }
41346
41347  protected void composeSequenceSequenceQualityComponentElements(Sequence.SequenceQualityComponent element) throws IOException {
41348      composeBackboneElementElements(element);
41349      if (element.hasTypeElement())
41350        composeEnumeration("type", element.getTypeElement(), new Sequence.QualityTypeEnumFactory());
41351      if (element.hasStandardSequence()) {
41352        composeCodeableConcept("standardSequence", element.getStandardSequence());
41353      }
41354      if (element.hasStartElement()) {
41355        composeInteger("start", element.getStartElement());
41356      }
41357      if (element.hasEndElement()) {
41358        composeInteger("end", element.getEndElement());
41359      }
41360      if (element.hasScore()) {
41361        composeQuantity("score", element.getScore());
41362      }
41363      if (element.hasMethod()) {
41364        composeCodeableConcept("method", element.getMethod());
41365      }
41366      if (element.hasTruthTPElement()) {
41367        composeDecimal("truthTP", element.getTruthTPElement());
41368      }
41369      if (element.hasQueryTPElement()) {
41370        composeDecimal("queryTP", element.getQueryTPElement());
41371      }
41372      if (element.hasTruthFNElement()) {
41373        composeDecimal("truthFN", element.getTruthFNElement());
41374      }
41375      if (element.hasQueryFPElement()) {
41376        composeDecimal("queryFP", element.getQueryFPElement());
41377      }
41378      if (element.hasGtFPElement()) {
41379        composeDecimal("gtFP", element.getGtFPElement());
41380      }
41381      if (element.hasPrecisionElement()) {
41382        composeDecimal("precision", element.getPrecisionElement());
41383      }
41384      if (element.hasRecallElement()) {
41385        composeDecimal("recall", element.getRecallElement());
41386      }
41387      if (element.hasFScoreElement()) {
41388        composeDecimal("fScore", element.getFScoreElement());
41389      }
41390      if (element.hasRoc()) {
41391        composeSequenceSequenceQualityRocComponent("roc", element.getRoc());
41392      }
41393  }
41394
41395  protected void composeSequenceSequenceQualityRocComponent(String name, Sequence.SequenceQualityRocComponent element) throws IOException {
41396    if (element != null) {
41397      composeElementAttributes(element);
41398      xml.enter(FHIR_NS, name);
41399      composeSequenceSequenceQualityRocComponentElements(element);
41400      composeElementClose(element);
41401      xml.exit(FHIR_NS, name);
41402    }
41403  }
41404
41405  protected void composeSequenceSequenceQualityRocComponentElements(Sequence.SequenceQualityRocComponent element) throws IOException {
41406      composeBackboneElementElements(element);
41407      if (element.hasScore()) { 
41408        for (IntegerType e : element.getScore()) 
41409          composeInteger("score", e);
41410      }
41411      if (element.hasNumTP()) { 
41412        for (IntegerType e : element.getNumTP()) 
41413          composeInteger("numTP", e);
41414      }
41415      if (element.hasNumFP()) { 
41416        for (IntegerType e : element.getNumFP()) 
41417          composeInteger("numFP", e);
41418      }
41419      if (element.hasNumFN()) { 
41420        for (IntegerType e : element.getNumFN()) 
41421          composeInteger("numFN", e);
41422      }
41423      if (element.hasPrecision()) { 
41424        for (DecimalType e : element.getPrecision()) 
41425          composeDecimal("precision", e);
41426      }
41427      if (element.hasSensitivity()) { 
41428        for (DecimalType e : element.getSensitivity()) 
41429          composeDecimal("sensitivity", e);
41430      }
41431      if (element.hasFMeasure()) { 
41432        for (DecimalType e : element.getFMeasure()) 
41433          composeDecimal("fMeasure", e);
41434      }
41435  }
41436
41437  protected void composeSequenceSequenceRepositoryComponent(String name, Sequence.SequenceRepositoryComponent element) throws IOException {
41438    if (element != null) {
41439      composeElementAttributes(element);
41440      xml.enter(FHIR_NS, name);
41441      composeSequenceSequenceRepositoryComponentElements(element);
41442      composeElementClose(element);
41443      xml.exit(FHIR_NS, name);
41444    }
41445  }
41446
41447  protected void composeSequenceSequenceRepositoryComponentElements(Sequence.SequenceRepositoryComponent element) throws IOException {
41448      composeBackboneElementElements(element);
41449      if (element.hasTypeElement())
41450        composeEnumeration("type", element.getTypeElement(), new Sequence.RepositoryTypeEnumFactory());
41451      if (element.hasUrlElement()) {
41452        composeUri("url", element.getUrlElement());
41453      }
41454      if (element.hasNameElement()) {
41455        composeString("name", element.getNameElement());
41456      }
41457      if (element.hasDatasetIdElement()) {
41458        composeString("datasetId", element.getDatasetIdElement());
41459      }
41460      if (element.hasVariantsetIdElement()) {
41461        composeString("variantsetId", element.getVariantsetIdElement());
41462      }
41463      if (element.hasReadsetIdElement()) {
41464        composeString("readsetId", element.getReadsetIdElement());
41465      }
41466  }
41467
41468  protected void composeSequenceSequenceStructureVariantComponent(String name, Sequence.SequenceStructureVariantComponent element) throws IOException {
41469    if (element != null) {
41470      composeElementAttributes(element);
41471      xml.enter(FHIR_NS, name);
41472      composeSequenceSequenceStructureVariantComponentElements(element);
41473      composeElementClose(element);
41474      xml.exit(FHIR_NS, name);
41475    }
41476  }
41477
41478  protected void composeSequenceSequenceStructureVariantComponentElements(Sequence.SequenceStructureVariantComponent element) throws IOException {
41479      composeBackboneElementElements(element);
41480      if (element.hasPrecisionElement()) {
41481        composeString("precision", element.getPrecisionElement());
41482      }
41483      if (element.hasReportedaCGHRatioElement()) {
41484        composeDecimal("reportedaCGHRatio", element.getReportedaCGHRatioElement());
41485      }
41486      if (element.hasLengthElement()) {
41487        composeInteger("length", element.getLengthElement());
41488      }
41489      if (element.hasOuter()) {
41490        composeSequenceSequenceStructureVariantOuterComponent("outer", element.getOuter());
41491      }
41492      if (element.hasInner()) {
41493        composeSequenceSequenceStructureVariantInnerComponent("inner", element.getInner());
41494      }
41495  }
41496
41497  protected void composeSequenceSequenceStructureVariantOuterComponent(String name, Sequence.SequenceStructureVariantOuterComponent element) throws IOException {
41498    if (element != null) {
41499      composeElementAttributes(element);
41500      xml.enter(FHIR_NS, name);
41501      composeSequenceSequenceStructureVariantOuterComponentElements(element);
41502      composeElementClose(element);
41503      xml.exit(FHIR_NS, name);
41504    }
41505  }
41506
41507  protected void composeSequenceSequenceStructureVariantOuterComponentElements(Sequence.SequenceStructureVariantOuterComponent element) throws IOException {
41508      composeBackboneElementElements(element);
41509      if (element.hasStartElement()) {
41510        composeInteger("start", element.getStartElement());
41511      }
41512      if (element.hasEndElement()) {
41513        composeInteger("end", element.getEndElement());
41514      }
41515  }
41516
41517  protected void composeSequenceSequenceStructureVariantInnerComponent(String name, Sequence.SequenceStructureVariantInnerComponent element) throws IOException {
41518    if (element != null) {
41519      composeElementAttributes(element);
41520      xml.enter(FHIR_NS, name);
41521      composeSequenceSequenceStructureVariantInnerComponentElements(element);
41522      composeElementClose(element);
41523      xml.exit(FHIR_NS, name);
41524    }
41525  }
41526
41527  protected void composeSequenceSequenceStructureVariantInnerComponentElements(Sequence.SequenceStructureVariantInnerComponent element) throws IOException {
41528      composeBackboneElementElements(element);
41529      if (element.hasStartElement()) {
41530        composeInteger("start", element.getStartElement());
41531      }
41532      if (element.hasEndElement()) {
41533        composeInteger("end", element.getEndElement());
41534      }
41535  }
41536
41537  protected void composeServiceRequest(String name, ServiceRequest element) throws IOException {
41538    if (element != null) {
41539      composeDomainResourceAttributes(element);
41540      xml.enter(FHIR_NS, name);
41541      composeServiceRequestElements(element);
41542      composeElementClose(element);
41543      xml.exit(FHIR_NS, name);
41544    }
41545  }
41546
41547  protected void composeServiceRequestElements(ServiceRequest element) throws IOException {
41548      composeDomainResourceElements(element);
41549      if (element.hasIdentifier()) { 
41550        for (Identifier e : element.getIdentifier()) 
41551          composeIdentifier("identifier", e);
41552      }
41553      if (element.hasInstantiates()) { 
41554        for (UriType e : element.getInstantiates()) 
41555          composeUri("instantiates", e);
41556      }
41557      if (element.hasBasedOn()) { 
41558        for (Reference e : element.getBasedOn()) 
41559          composeReference("basedOn", e);
41560      }
41561      if (element.hasReplaces()) { 
41562        for (Reference e : element.getReplaces()) 
41563          composeReference("replaces", e);
41564      }
41565      if (element.hasRequisition()) {
41566        composeIdentifier("requisition", element.getRequisition());
41567      }
41568      if (element.hasStatusElement())
41569        composeEnumeration("status", element.getStatusElement(), new ServiceRequest.ServiceRequestStatusEnumFactory());
41570      if (element.hasIntentElement())
41571        composeEnumeration("intent", element.getIntentElement(), new ServiceRequest.ServiceRequestIntentEnumFactory());
41572      if (element.hasCategory()) { 
41573        for (CodeableConcept e : element.getCategory()) 
41574          composeCodeableConcept("category", e);
41575      }
41576      if (element.hasPriorityElement())
41577        composeEnumeration("priority", element.getPriorityElement(), new ServiceRequest.ServiceRequestPriorityEnumFactory());
41578      if (element.hasDoNotPerformElement()) {
41579        composeBoolean("doNotPerform", element.getDoNotPerformElement());
41580      }
41581      if (element.hasCode()) {
41582        composeCodeableConcept("code", element.getCode());
41583      }
41584      if (element.hasOrderDetail()) { 
41585        for (CodeableConcept e : element.getOrderDetail()) 
41586          composeCodeableConcept("orderDetail", e);
41587      }
41588      if (element.hasSubject()) {
41589        composeReference("subject", element.getSubject());
41590      }
41591      if (element.hasContext()) {
41592        composeReference("context", element.getContext());
41593      }
41594      if (element.hasOccurrence()) {
41595        composeType("occurrence", element.getOccurrence());
41596      }      if (element.hasAsNeeded()) {
41597        composeType("asNeeded", element.getAsNeeded());
41598      }      if (element.hasAuthoredOnElement()) {
41599        composeDateTime("authoredOn", element.getAuthoredOnElement());
41600      }
41601      if (element.hasRequester()) {
41602        composeReference("requester", element.getRequester());
41603      }
41604      if (element.hasPerformerType()) {
41605        composeCodeableConcept("performerType", element.getPerformerType());
41606      }
41607      if (element.hasPerformer()) { 
41608        for (Reference e : element.getPerformer()) 
41609          composeReference("performer", e);
41610      }
41611      if (element.hasReasonCode()) { 
41612        for (CodeableConcept e : element.getReasonCode()) 
41613          composeCodeableConcept("reasonCode", e);
41614      }
41615      if (element.hasReasonReference()) { 
41616        for (Reference e : element.getReasonReference()) 
41617          composeReference("reasonReference", e);
41618      }
41619      if (element.hasInsurance()) { 
41620        for (Reference e : element.getInsurance()) 
41621          composeReference("insurance", e);
41622      }
41623      if (element.hasSupportingInfo()) { 
41624        for (Reference e : element.getSupportingInfo()) 
41625          composeReference("supportingInfo", e);
41626      }
41627      if (element.hasSpecimen()) { 
41628        for (Reference e : element.getSpecimen()) 
41629          composeReference("specimen", e);
41630      }
41631      if (element.hasBodySite()) { 
41632        for (CodeableConcept e : element.getBodySite()) 
41633          composeCodeableConcept("bodySite", e);
41634      }
41635      if (element.hasNote()) { 
41636        for (Annotation e : element.getNote()) 
41637          composeAnnotation("note", e);
41638      }
41639      if (element.hasPatientInstructionElement()) {
41640        composeString("patientInstruction", element.getPatientInstructionElement());
41641      }
41642      if (element.hasRelevantHistory()) { 
41643        for (Reference e : element.getRelevantHistory()) 
41644          composeReference("relevantHistory", e);
41645      }
41646  }
41647
41648  protected void composeSlot(String name, Slot element) throws IOException {
41649    if (element != null) {
41650      composeDomainResourceAttributes(element);
41651      xml.enter(FHIR_NS, name);
41652      composeSlotElements(element);
41653      composeElementClose(element);
41654      xml.exit(FHIR_NS, name);
41655    }
41656  }
41657
41658  protected void composeSlotElements(Slot element) throws IOException {
41659      composeDomainResourceElements(element);
41660      if (element.hasIdentifier()) { 
41661        for (Identifier e : element.getIdentifier()) 
41662          composeIdentifier("identifier", e);
41663      }
41664      if (element.hasServiceCategory()) { 
41665        for (CodeableConcept e : element.getServiceCategory()) 
41666          composeCodeableConcept("serviceCategory", e);
41667      }
41668      if (element.hasServiceType()) { 
41669        for (CodeableConcept e : element.getServiceType()) 
41670          composeCodeableConcept("serviceType", e);
41671      }
41672      if (element.hasSpecialty()) { 
41673        for (CodeableConcept e : element.getSpecialty()) 
41674          composeCodeableConcept("specialty", e);
41675      }
41676      if (element.hasAppointmentType()) {
41677        composeCodeableConcept("appointmentType", element.getAppointmentType());
41678      }
41679      if (element.hasSchedule()) {
41680        composeReference("schedule", element.getSchedule());
41681      }
41682      if (element.hasStatusElement())
41683        composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
41684      if (element.hasStartElement()) {
41685        composeInstant("start", element.getStartElement());
41686      }
41687      if (element.hasEndElement()) {
41688        composeInstant("end", element.getEndElement());
41689      }
41690      if (element.hasOverbookedElement()) {
41691        composeBoolean("overbooked", element.getOverbookedElement());
41692      }
41693      if (element.hasCommentElement()) {
41694        composeString("comment", element.getCommentElement());
41695      }
41696  }
41697
41698  protected void composeSpecimen(String name, Specimen element) throws IOException {
41699    if (element != null) {
41700      composeDomainResourceAttributes(element);
41701      xml.enter(FHIR_NS, name);
41702      composeSpecimenElements(element);
41703      composeElementClose(element);
41704      xml.exit(FHIR_NS, name);
41705    }
41706  }
41707
41708  protected void composeSpecimenElements(Specimen element) throws IOException {
41709      composeDomainResourceElements(element);
41710      if (element.hasIdentifier()) { 
41711        for (Identifier e : element.getIdentifier()) 
41712          composeIdentifier("identifier", e);
41713      }
41714      if (element.hasAccessionIdentifier()) {
41715        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
41716      }
41717      if (element.hasStatusElement())
41718        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
41719      if (element.hasType()) {
41720        composeCodeableConcept("type", element.getType());
41721      }
41722      if (element.hasSubject()) {
41723        composeReference("subject", element.getSubject());
41724      }
41725      if (element.hasReceivedTimeElement()) {
41726        composeDateTime("receivedTime", element.getReceivedTimeElement());
41727      }
41728      if (element.hasParent()) { 
41729        for (Reference e : element.getParent()) 
41730          composeReference("parent", e);
41731      }
41732      if (element.hasRequest()) { 
41733        for (Reference e : element.getRequest()) 
41734          composeReference("request", e);
41735      }
41736      if (element.hasCollection()) {
41737        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
41738      }
41739      if (element.hasProcessing()) { 
41740        for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
41741          composeSpecimenSpecimenProcessingComponent("processing", e);
41742      }
41743      if (element.hasContainer()) { 
41744        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
41745          composeSpecimenSpecimenContainerComponent("container", e);
41746      }
41747      if (element.hasNote()) { 
41748        for (Annotation e : element.getNote()) 
41749          composeAnnotation("note", e);
41750      }
41751  }
41752
41753  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
41754    if (element != null) {
41755      composeElementAttributes(element);
41756      xml.enter(FHIR_NS, name);
41757      composeSpecimenSpecimenCollectionComponentElements(element);
41758      composeElementClose(element);
41759      xml.exit(FHIR_NS, name);
41760    }
41761  }
41762
41763  protected void composeSpecimenSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
41764      composeBackboneElementElements(element);
41765      if (element.hasCollector()) {
41766        composeReference("collector", element.getCollector());
41767      }
41768      if (element.hasCollected()) {
41769        composeType("collected", element.getCollected());
41770      }      if (element.hasQuantity()) {
41771        composeSimpleQuantity("quantity", element.getQuantity());
41772      }
41773      if (element.hasMethod()) {
41774        composeCodeableConcept("method", element.getMethod());
41775      }
41776      if (element.hasBodySite()) {
41777        composeCodeableConcept("bodySite", element.getBodySite());
41778      }
41779  }
41780
41781  protected void composeSpecimenSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
41782    if (element != null) {
41783      composeElementAttributes(element);
41784      xml.enter(FHIR_NS, name);
41785      composeSpecimenSpecimenProcessingComponentElements(element);
41786      composeElementClose(element);
41787      xml.exit(FHIR_NS, name);
41788    }
41789  }
41790
41791  protected void composeSpecimenSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
41792      composeBackboneElementElements(element);
41793      if (element.hasDescriptionElement()) {
41794        composeString("description", element.getDescriptionElement());
41795      }
41796      if (element.hasProcedure()) {
41797        composeCodeableConcept("procedure", element.getProcedure());
41798      }
41799      if (element.hasAdditive()) { 
41800        for (Reference e : element.getAdditive()) 
41801          composeReference("additive", e);
41802      }
41803      if (element.hasTime()) {
41804        composeType("time", element.getTime());
41805      }  }
41806
41807  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
41808    if (element != null) {
41809      composeElementAttributes(element);
41810      xml.enter(FHIR_NS, name);
41811      composeSpecimenSpecimenContainerComponentElements(element);
41812      composeElementClose(element);
41813      xml.exit(FHIR_NS, name);
41814    }
41815  }
41816
41817  protected void composeSpecimenSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
41818      composeBackboneElementElements(element);
41819      if (element.hasIdentifier()) { 
41820        for (Identifier e : element.getIdentifier()) 
41821          composeIdentifier("identifier", e);
41822      }
41823      if (element.hasDescriptionElement()) {
41824        composeString("description", element.getDescriptionElement());
41825      }
41826      if (element.hasType()) {
41827        composeCodeableConcept("type", element.getType());
41828      }
41829      if (element.hasCapacity()) {
41830        composeSimpleQuantity("capacity", element.getCapacity());
41831      }
41832      if (element.hasSpecimenQuantity()) {
41833        composeSimpleQuantity("specimenQuantity", element.getSpecimenQuantity());
41834      }
41835      if (element.hasAdditive()) {
41836        composeType("additive", element.getAdditive());
41837      }  }
41838
41839  protected void composeSpecimenDefinition(String name, SpecimenDefinition element) throws IOException {
41840    if (element != null) {
41841      composeDomainResourceAttributes(element);
41842      xml.enter(FHIR_NS, name);
41843      composeSpecimenDefinitionElements(element);
41844      composeElementClose(element);
41845      xml.exit(FHIR_NS, name);
41846    }
41847  }
41848
41849  protected void composeSpecimenDefinitionElements(SpecimenDefinition element) throws IOException {
41850      composeDomainResourceElements(element);
41851      if (element.hasIdentifier()) {
41852        composeIdentifier("identifier", element.getIdentifier());
41853      }
41854      if (element.hasTypeCollected()) {
41855        composeCodeableConcept("typeCollected", element.getTypeCollected());
41856      }
41857      if (element.hasPatientPreparationElement()) {
41858        composeString("patientPreparation", element.getPatientPreparationElement());
41859      }
41860      if (element.hasTimeAspectElement()) {
41861        composeString("timeAspect", element.getTimeAspectElement());
41862      }
41863      if (element.hasCollection()) { 
41864        for (CodeableConcept e : element.getCollection()) 
41865          composeCodeableConcept("collection", e);
41866      }
41867      if (element.hasSpecimenToLab()) { 
41868        for (SpecimenDefinition.SpecimenDefinitionSpecimenToLabComponent e : element.getSpecimenToLab()) 
41869          composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponent("specimenToLab", e);
41870      }
41871  }
41872
41873  protected void composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponent(String name, SpecimenDefinition.SpecimenDefinitionSpecimenToLabComponent element) throws IOException {
41874    if (element != null) {
41875      composeElementAttributes(element);
41876      xml.enter(FHIR_NS, name);
41877      composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponentElements(element);
41878      composeElementClose(element);
41879      xml.exit(FHIR_NS, name);
41880    }
41881  }
41882
41883  protected void composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabComponentElements(SpecimenDefinition.SpecimenDefinitionSpecimenToLabComponent element) throws IOException {
41884      composeBackboneElementElements(element);
41885      if (element.hasIsDerivedElement()) {
41886        composeBoolean("isDerived", element.getIsDerivedElement());
41887      }
41888      if (element.hasType()) {
41889        composeCodeableConcept("type", element.getType());
41890      }
41891      if (element.hasPreferenceElement())
41892        composeEnumeration("preference", element.getPreferenceElement(), new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
41893      if (element.hasContainerMaterial()) {
41894        composeCodeableConcept("containerMaterial", element.getContainerMaterial());
41895      }
41896      if (element.hasContainerType()) {
41897        composeCodeableConcept("containerType", element.getContainerType());
41898      }
41899      if (element.hasContainerCap()) {
41900        composeCodeableConcept("containerCap", element.getContainerCap());
41901      }
41902      if (element.hasContainerDescriptionElement()) {
41903        composeString("containerDescription", element.getContainerDescriptionElement());
41904      }
41905      if (element.hasContainerCapacity()) {
41906        composeSimpleQuantity("containerCapacity", element.getContainerCapacity());
41907      }
41908      if (element.hasContainerMinimumVolume()) {
41909        composeSimpleQuantity("containerMinimumVolume", element.getContainerMinimumVolume());
41910      }
41911      if (element.hasContainerAdditive()) { 
41912        for (SpecimenDefinition.SpecimenDefinitionSpecimenToLabContainerAdditiveComponent e : element.getContainerAdditive()) 
41913          composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponent("containerAdditive", e);
41914      }
41915      if (element.hasContainerPreparationElement()) {
41916        composeString("containerPreparation", element.getContainerPreparationElement());
41917      }
41918      if (element.hasRequirementElement()) {
41919        composeString("requirement", element.getRequirementElement());
41920      }
41921      if (element.hasRetentionTime()) {
41922        composeDuration("retentionTime", element.getRetentionTime());
41923      }
41924      if (element.hasRejectionCriterion()) { 
41925        for (CodeableConcept e : element.getRejectionCriterion()) 
41926          composeCodeableConcept("rejectionCriterion", e);
41927      }
41928      if (element.hasHandling()) { 
41929        for (SpecimenDefinition.SpecimenDefinitionSpecimenToLabHandlingComponent e : element.getHandling()) 
41930          composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponent("handling", e);
41931      }
41932  }
41933
41934  protected void composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponent(String name, SpecimenDefinition.SpecimenDefinitionSpecimenToLabContainerAdditiveComponent element) throws IOException {
41935    if (element != null) {
41936      composeElementAttributes(element);
41937      xml.enter(FHIR_NS, name);
41938      composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponentElements(element);
41939      composeElementClose(element);
41940      xml.exit(FHIR_NS, name);
41941    }
41942  }
41943
41944  protected void composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabContainerAdditiveComponentElements(SpecimenDefinition.SpecimenDefinitionSpecimenToLabContainerAdditiveComponent element) throws IOException {
41945      composeBackboneElementElements(element);
41946      if (element.hasAdditive()) {
41947        composeType("additive", element.getAdditive());
41948      }  }
41949
41950  protected void composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponent(String name, SpecimenDefinition.SpecimenDefinitionSpecimenToLabHandlingComponent element) throws IOException {
41951    if (element != null) {
41952      composeElementAttributes(element);
41953      xml.enter(FHIR_NS, name);
41954      composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponentElements(element);
41955      composeElementClose(element);
41956      xml.exit(FHIR_NS, name);
41957    }
41958  }
41959
41960  protected void composeSpecimenDefinitionSpecimenDefinitionSpecimenToLabHandlingComponentElements(SpecimenDefinition.SpecimenDefinitionSpecimenToLabHandlingComponent element) throws IOException {
41961      composeBackboneElementElements(element);
41962      if (element.hasConditionSet()) {
41963        composeCodeableConcept("conditionSet", element.getConditionSet());
41964      }
41965      if (element.hasTempRange()) {
41966        composeRange("tempRange", element.getTempRange());
41967      }
41968      if (element.hasMaxDuration()) {
41969        composeDuration("maxDuration", element.getMaxDuration());
41970      }
41971      if (element.hasLightExposureElement()) {
41972        composeString("lightExposure", element.getLightExposureElement());
41973      }
41974      if (element.hasInstructionElement()) {
41975        composeString("instruction", element.getInstructionElement());
41976      }
41977  }
41978
41979  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
41980    if (element != null) {
41981      composeDomainResourceAttributes(element);
41982      xml.enter(FHIR_NS, name);
41983      composeStructureDefinitionElements(element);
41984      composeElementClose(element);
41985      xml.exit(FHIR_NS, name);
41986    }
41987  }
41988
41989  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
41990      composeDomainResourceElements(element);
41991      if (element.hasUrlElement()) {
41992        composeUri("url", element.getUrlElement());
41993      }
41994      if (element.hasIdentifier()) { 
41995        for (Identifier e : element.getIdentifier()) 
41996          composeIdentifier("identifier", e);
41997      }
41998      if (element.hasVersionElement()) {
41999        composeString("version", element.getVersionElement());
42000      }
42001      if (element.hasNameElement()) {
42002        composeString("name", element.getNameElement());
42003      }
42004      if (element.hasTitleElement()) {
42005        composeString("title", element.getTitleElement());
42006      }
42007      if (element.hasStatusElement())
42008        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
42009      if (element.hasExperimentalElement()) {
42010        composeBoolean("experimental", element.getExperimentalElement());
42011      }
42012      if (element.hasDateElement()) {
42013        composeDateTime("date", element.getDateElement());
42014      }
42015      if (element.hasPublisherElement()) {
42016        composeString("publisher", element.getPublisherElement());
42017      }
42018      if (element.hasContact()) { 
42019        for (ContactDetail e : element.getContact()) 
42020          composeContactDetail("contact", e);
42021      }
42022      if (element.hasDescriptionElement()) {
42023        composeMarkdown("description", element.getDescriptionElement());
42024      }
42025      if (element.hasUseContext()) { 
42026        for (UsageContext e : element.getUseContext()) 
42027          composeUsageContext("useContext", e);
42028      }
42029      if (element.hasJurisdiction()) { 
42030        for (CodeableConcept e : element.getJurisdiction()) 
42031          composeCodeableConcept("jurisdiction", e);
42032      }
42033      if (element.hasPurposeElement()) {
42034        composeMarkdown("purpose", element.getPurposeElement());
42035      }
42036      if (element.hasCopyrightElement()) {
42037        composeMarkdown("copyright", element.getCopyrightElement());
42038      }
42039      if (element.hasKeyword()) { 
42040        for (Coding e : element.getKeyword()) 
42041          composeCoding("keyword", e);
42042      }
42043      if (element.hasFhirVersionElement()) {
42044        composeId("fhirVersion", element.getFhirVersionElement());
42045      }
42046      if (element.hasMapping()) { 
42047        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
42048          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
42049      }
42050      if (element.hasKindElement())
42051        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
42052      if (element.hasAbstractElement()) {
42053        composeBoolean("abstract", element.getAbstractElement());
42054      }
42055      if (element.hasContext()) { 
42056        for (StructureDefinition.StructureDefinitionContextComponent e : element.getContext()) 
42057          composeStructureDefinitionStructureDefinitionContextComponent("context", e);
42058      }
42059      if (element.hasContextInvariant()) { 
42060        for (StringType e : element.getContextInvariant()) 
42061          composeString("contextInvariant", e);
42062      }
42063      if (element.hasTypeElement()) {
42064        composeUri("type", element.getTypeElement());
42065      }
42066      if (element.hasBaseDefinitionElement()) {
42067        composeCanonical("baseDefinition", element.getBaseDefinitionElement());
42068      }
42069      if (element.hasDerivationElement())
42070        composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
42071      if (element.hasSnapshot()) {
42072        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
42073      }
42074      if (element.hasDifferential()) {
42075        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
42076      }
42077  }
42078
42079  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
42080    if (element != null) {
42081      composeElementAttributes(element);
42082      xml.enter(FHIR_NS, name);
42083      composeStructureDefinitionStructureDefinitionMappingComponentElements(element);
42084      composeElementClose(element);
42085      xml.exit(FHIR_NS, name);
42086    }
42087  }
42088
42089  protected void composeStructureDefinitionStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
42090      composeBackboneElementElements(element);
42091      if (element.hasIdentityElement()) {
42092        composeId("identity", element.getIdentityElement());
42093      }
42094      if (element.hasUriElement()) {
42095        composeUri("uri", element.getUriElement());
42096      }
42097      if (element.hasNameElement()) {
42098        composeString("name", element.getNameElement());
42099      }
42100      if (element.hasCommentElement()) {
42101        composeString("comment", element.getCommentElement());
42102      }
42103  }
42104
42105  protected void composeStructureDefinitionStructureDefinitionContextComponent(String name, StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
42106    if (element != null) {
42107      composeElementAttributes(element);
42108      xml.enter(FHIR_NS, name);
42109      composeStructureDefinitionStructureDefinitionContextComponentElements(element);
42110      composeElementClose(element);
42111      xml.exit(FHIR_NS, name);
42112    }
42113  }
42114
42115  protected void composeStructureDefinitionStructureDefinitionContextComponentElements(StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
42116      composeBackboneElementElements(element);
42117      if (element.hasTypeElement())
42118        composeEnumeration("type", element.getTypeElement(), new StructureDefinition.ExtensionContextTypeEnumFactory());
42119      if (element.hasExpressionElement()) {
42120        composeString("expression", element.getExpressionElement());
42121      }
42122  }
42123
42124  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
42125    if (element != null) {
42126      composeElementAttributes(element);
42127      xml.enter(FHIR_NS, name);
42128      composeStructureDefinitionStructureDefinitionSnapshotComponentElements(element);
42129      composeElementClose(element);
42130      xml.exit(FHIR_NS, name);
42131    }
42132  }
42133
42134  protected void composeStructureDefinitionStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
42135      composeBackboneElementElements(element);
42136      if (element.hasElement()) { 
42137        for (ElementDefinition e : element.getElement()) 
42138          composeElementDefinition("element", e);
42139      }
42140  }
42141
42142  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
42143    if (element != null) {
42144      composeElementAttributes(element);
42145      xml.enter(FHIR_NS, name);
42146      composeStructureDefinitionStructureDefinitionDifferentialComponentElements(element);
42147      composeElementClose(element);
42148      xml.exit(FHIR_NS, name);
42149    }
42150  }
42151
42152  protected void composeStructureDefinitionStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
42153      composeBackboneElementElements(element);
42154      if (element.hasElement()) { 
42155        for (ElementDefinition e : element.getElement()) 
42156          composeElementDefinition("element", e);
42157      }
42158  }
42159
42160  protected void composeStructureMap(String name, StructureMap element) throws IOException {
42161    if (element != null) {
42162      composeDomainResourceAttributes(element);
42163      xml.enter(FHIR_NS, name);
42164      composeStructureMapElements(element);
42165      composeElementClose(element);
42166      xml.exit(FHIR_NS, name);
42167    }
42168  }
42169
42170  protected void composeStructureMapElements(StructureMap element) throws IOException {
42171      composeDomainResourceElements(element);
42172      if (element.hasUrlElement()) {
42173        composeUri("url", element.getUrlElement());
42174      }
42175      if (element.hasIdentifier()) { 
42176        for (Identifier e : element.getIdentifier()) 
42177          composeIdentifier("identifier", e);
42178      }
42179      if (element.hasVersionElement()) {
42180        composeString("version", element.getVersionElement());
42181      }
42182      if (element.hasNameElement()) {
42183        composeString("name", element.getNameElement());
42184      }
42185      if (element.hasTitleElement()) {
42186        composeString("title", element.getTitleElement());
42187      }
42188      if (element.hasStatusElement())
42189        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
42190      if (element.hasExperimentalElement()) {
42191        composeBoolean("experimental", element.getExperimentalElement());
42192      }
42193      if (element.hasDateElement()) {
42194        composeDateTime("date", element.getDateElement());
42195      }
42196      if (element.hasPublisherElement()) {
42197        composeString("publisher", element.getPublisherElement());
42198      }
42199      if (element.hasContact()) { 
42200        for (ContactDetail e : element.getContact()) 
42201          composeContactDetail("contact", e);
42202      }
42203      if (element.hasDescriptionElement()) {
42204        composeMarkdown("description", element.getDescriptionElement());
42205      }
42206      if (element.hasUseContext()) { 
42207        for (UsageContext e : element.getUseContext()) 
42208          composeUsageContext("useContext", e);
42209      }
42210      if (element.hasJurisdiction()) { 
42211        for (CodeableConcept e : element.getJurisdiction()) 
42212          composeCodeableConcept("jurisdiction", e);
42213      }
42214      if (element.hasPurposeElement()) {
42215        composeMarkdown("purpose", element.getPurposeElement());
42216      }
42217      if (element.hasCopyrightElement()) {
42218        composeMarkdown("copyright", element.getCopyrightElement());
42219      }
42220      if (element.hasStructure()) { 
42221        for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
42222          composeStructureMapStructureMapStructureComponent("structure", e);
42223      }
42224      if (element.hasImport()) { 
42225        for (CanonicalType e : element.getImport()) 
42226          composeCanonical("import", e);
42227      }
42228      if (element.hasGroup()) { 
42229        for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
42230          composeStructureMapStructureMapGroupComponent("group", e);
42231      }
42232  }
42233
42234  protected void composeStructureMapStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
42235    if (element != null) {
42236      composeElementAttributes(element);
42237      xml.enter(FHIR_NS, name);
42238      composeStructureMapStructureMapStructureComponentElements(element);
42239      composeElementClose(element);
42240      xml.exit(FHIR_NS, name);
42241    }
42242  }
42243
42244  protected void composeStructureMapStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
42245      composeBackboneElementElements(element);
42246      if (element.hasUrlElement()) {
42247        composeCanonical("url", element.getUrlElement());
42248      }
42249      if (element.hasModeElement())
42250        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
42251      if (element.hasAliasElement()) {
42252        composeString("alias", element.getAliasElement());
42253      }
42254      if (element.hasDocumentationElement()) {
42255        composeString("documentation", element.getDocumentationElement());
42256      }
42257  }
42258
42259  protected void composeStructureMapStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
42260    if (element != null) {
42261      composeElementAttributes(element);
42262      xml.enter(FHIR_NS, name);
42263      composeStructureMapStructureMapGroupComponentElements(element);
42264      composeElementClose(element);
42265      xml.exit(FHIR_NS, name);
42266    }
42267  }
42268
42269  protected void composeStructureMapStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
42270      composeBackboneElementElements(element);
42271      if (element.hasNameElement()) {
42272        composeId("name", element.getNameElement());
42273      }
42274      if (element.hasExtendsElement()) {
42275        composeId("extends", element.getExtendsElement());
42276      }
42277      if (element.hasTypeModeElement())
42278        composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
42279      if (element.hasDocumentationElement()) {
42280        composeString("documentation", element.getDocumentationElement());
42281      }
42282      if (element.hasInput()) { 
42283        for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
42284          composeStructureMapStructureMapGroupInputComponent("input", e);
42285      }
42286      if (element.hasRule()) { 
42287        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
42288          composeStructureMapStructureMapGroupRuleComponent("rule", e);
42289      }
42290  }
42291
42292  protected void composeStructureMapStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
42293    if (element != null) {
42294      composeElementAttributes(element);
42295      xml.enter(FHIR_NS, name);
42296      composeStructureMapStructureMapGroupInputComponentElements(element);
42297      composeElementClose(element);
42298      xml.exit(FHIR_NS, name);
42299    }
42300  }
42301
42302  protected void composeStructureMapStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
42303      composeBackboneElementElements(element);
42304      if (element.hasNameElement()) {
42305        composeId("name", element.getNameElement());
42306      }
42307      if (element.hasTypeElement()) {
42308        composeString("type", element.getTypeElement());
42309      }
42310      if (element.hasModeElement())
42311        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
42312      if (element.hasDocumentationElement()) {
42313        composeString("documentation", element.getDocumentationElement());
42314      }
42315  }
42316
42317  protected void composeStructureMapStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
42318    if (element != null) {
42319      composeElementAttributes(element);
42320      xml.enter(FHIR_NS, name);
42321      composeStructureMapStructureMapGroupRuleComponentElements(element);
42322      composeElementClose(element);
42323      xml.exit(FHIR_NS, name);
42324    }
42325  }
42326
42327  protected void composeStructureMapStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
42328      composeBackboneElementElements(element);
42329      if (element.hasNameElement()) {
42330        composeId("name", element.getNameElement());
42331      }
42332      if (element.hasSource()) { 
42333        for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
42334          composeStructureMapStructureMapGroupRuleSourceComponent("source", e);
42335      }
42336      if (element.hasTarget()) { 
42337        for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
42338          composeStructureMapStructureMapGroupRuleTargetComponent("target", e);
42339      }
42340      if (element.hasRule()) { 
42341        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
42342          composeStructureMapStructureMapGroupRuleComponent("rule", e);
42343      }
42344      if (element.hasDependent()) { 
42345        for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
42346          composeStructureMapStructureMapGroupRuleDependentComponent("dependent", e);
42347      }
42348      if (element.hasDocumentationElement()) {
42349        composeString("documentation", element.getDocumentationElement());
42350      }
42351  }
42352
42353  protected void composeStructureMapStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
42354    if (element != null) {
42355      composeElementAttributes(element);
42356      xml.enter(FHIR_NS, name);
42357      composeStructureMapStructureMapGroupRuleSourceComponentElements(element);
42358      composeElementClose(element);
42359      xml.exit(FHIR_NS, name);
42360    }
42361  }
42362
42363  protected void composeStructureMapStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
42364      composeBackboneElementElements(element);
42365      if (element.hasContextElement()) {
42366        composeId("context", element.getContextElement());
42367      }
42368      if (element.hasMinElement()) {
42369        composeInteger("min", element.getMinElement());
42370      }
42371      if (element.hasMaxElement()) {
42372        composeString("max", element.getMaxElement());
42373      }
42374      if (element.hasTypeElement()) {
42375        composeString("type", element.getTypeElement());
42376      }
42377      if (element.hasDefaultValue()) {
42378        composeType("defaultValue", element.getDefaultValue());
42379      }      if (element.hasElementElement()) {
42380        composeString("element", element.getElementElement());
42381      }
42382      if (element.hasListModeElement())
42383        composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
42384      if (element.hasVariableElement()) {
42385        composeId("variable", element.getVariableElement());
42386      }
42387      if (element.hasConditionElement()) {
42388        composeString("condition", element.getConditionElement());
42389      }
42390      if (element.hasCheckElement()) {
42391        composeString("check", element.getCheckElement());
42392      }
42393  }
42394
42395  protected void composeStructureMapStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
42396    if (element != null) {
42397      composeElementAttributes(element);
42398      xml.enter(FHIR_NS, name);
42399      composeStructureMapStructureMapGroupRuleTargetComponentElements(element);
42400      composeElementClose(element);
42401      xml.exit(FHIR_NS, name);
42402    }
42403  }
42404
42405  protected void composeStructureMapStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
42406      composeBackboneElementElements(element);
42407      if (element.hasContextElement()) {
42408        composeId("context", element.getContextElement());
42409      }
42410      if (element.hasContextTypeElement())
42411        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
42412      if (element.hasElementElement()) {
42413        composeString("element", element.getElementElement());
42414      }
42415      if (element.hasVariableElement()) {
42416        composeId("variable", element.getVariableElement());
42417      }
42418        if (element.hasListMode()) 
42419          for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
42420            composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
42421      if (element.hasListRuleIdElement()) {
42422        composeId("listRuleId", element.getListRuleIdElement());
42423      }
42424      if (element.hasTransformElement())
42425        composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
42426      if (element.hasParameter()) { 
42427        for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
42428          composeStructureMapStructureMapGroupRuleTargetParameterComponent("parameter", e);
42429      }
42430  }
42431
42432  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
42433    if (element != null) {
42434      composeElementAttributes(element);
42435      xml.enter(FHIR_NS, name);
42436      composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(element);
42437      composeElementClose(element);
42438      xml.exit(FHIR_NS, name);
42439    }
42440  }
42441
42442  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
42443      composeBackboneElementElements(element);
42444      if (element.hasValue()) {
42445        composeType("value", element.getValue());
42446      }  }
42447
42448  protected void composeStructureMapStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
42449    if (element != null) {
42450      composeElementAttributes(element);
42451      xml.enter(FHIR_NS, name);
42452      composeStructureMapStructureMapGroupRuleDependentComponentElements(element);
42453      composeElementClose(element);
42454      xml.exit(FHIR_NS, name);
42455    }
42456  }
42457
42458  protected void composeStructureMapStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
42459      composeBackboneElementElements(element);
42460      if (element.hasNameElement()) {
42461        composeId("name", element.getNameElement());
42462      }
42463      if (element.hasVariable()) { 
42464        for (StringType e : element.getVariable()) 
42465          composeString("variable", e);
42466      }
42467  }
42468
42469  protected void composeSubscription(String name, Subscription element) throws IOException {
42470    if (element != null) {
42471      composeDomainResourceAttributes(element);
42472      xml.enter(FHIR_NS, name);
42473      composeSubscriptionElements(element);
42474      composeElementClose(element);
42475      xml.exit(FHIR_NS, name);
42476    }
42477  }
42478
42479  protected void composeSubscriptionElements(Subscription element) throws IOException {
42480      composeDomainResourceElements(element);
42481      if (element.hasStatusElement())
42482        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
42483      if (element.hasContact()) { 
42484        for (ContactPoint e : element.getContact()) 
42485          composeContactPoint("contact", e);
42486      }
42487      if (element.hasEndElement()) {
42488        composeInstant("end", element.getEndElement());
42489      }
42490      if (element.hasReasonElement()) {
42491        composeString("reason", element.getReasonElement());
42492      }
42493      if (element.hasCriteriaElement()) {
42494        composeString("criteria", element.getCriteriaElement());
42495      }
42496      if (element.hasErrorElement()) {
42497        composeString("error", element.getErrorElement());
42498      }
42499      if (element.hasChannel()) {
42500        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
42501      }
42502      if (element.hasTag()) { 
42503        for (Coding e : element.getTag()) 
42504          composeCoding("tag", e);
42505      }
42506  }
42507
42508  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
42509    if (element != null) {
42510      composeElementAttributes(element);
42511      xml.enter(FHIR_NS, name);
42512      composeSubscriptionSubscriptionChannelComponentElements(element);
42513      composeElementClose(element);
42514      xml.exit(FHIR_NS, name);
42515    }
42516  }
42517
42518  protected void composeSubscriptionSubscriptionChannelComponentElements(Subscription.SubscriptionChannelComponent element) throws IOException {
42519      composeBackboneElementElements(element);
42520      if (element.hasTypeElement())
42521        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
42522      if (element.hasEndpointElement()) {
42523        composeUrl("endpoint", element.getEndpointElement());
42524      }
42525      if (element.hasPayloadElement()) {
42526        composeString("payload", element.getPayloadElement());
42527      }
42528      if (element.hasHeader()) { 
42529        for (StringType e : element.getHeader()) 
42530          composeString("header", e);
42531      }
42532  }
42533
42534  protected void composeSubstance(String name, Substance element) throws IOException {
42535    if (element != null) {
42536      composeDomainResourceAttributes(element);
42537      xml.enter(FHIR_NS, name);
42538      composeSubstanceElements(element);
42539      composeElementClose(element);
42540      xml.exit(FHIR_NS, name);
42541    }
42542  }
42543
42544  protected void composeSubstanceElements(Substance element) throws IOException {
42545      composeDomainResourceElements(element);
42546      if (element.hasIdentifier()) { 
42547        for (Identifier e : element.getIdentifier()) 
42548          composeIdentifier("identifier", e);
42549      }
42550      if (element.hasStatusElement())
42551        composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
42552      if (element.hasCategory()) { 
42553        for (CodeableConcept e : element.getCategory()) 
42554          composeCodeableConcept("category", e);
42555      }
42556      if (element.hasCode()) {
42557        composeCodeableConcept("code", element.getCode());
42558      }
42559      if (element.hasDescriptionElement()) {
42560        composeString("description", element.getDescriptionElement());
42561      }
42562      if (element.hasInstance()) { 
42563        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
42564          composeSubstanceSubstanceInstanceComponent("instance", e);
42565      }
42566      if (element.hasIngredient()) { 
42567        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
42568          composeSubstanceSubstanceIngredientComponent("ingredient", e);
42569      }
42570  }
42571
42572  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
42573    if (element != null) {
42574      composeElementAttributes(element);
42575      xml.enter(FHIR_NS, name);
42576      composeSubstanceSubstanceInstanceComponentElements(element);
42577      composeElementClose(element);
42578      xml.exit(FHIR_NS, name);
42579    }
42580  }
42581
42582  protected void composeSubstanceSubstanceInstanceComponentElements(Substance.SubstanceInstanceComponent element) throws IOException {
42583      composeBackboneElementElements(element);
42584      if (element.hasIdentifier()) {
42585        composeIdentifier("identifier", element.getIdentifier());
42586      }
42587      if (element.hasExpiryElement()) {
42588        composeDateTime("expiry", element.getExpiryElement());
42589      }
42590      if (element.hasQuantity()) {
42591        composeSimpleQuantity("quantity", element.getQuantity());
42592      }
42593  }
42594
42595  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
42596    if (element != null) {
42597      composeElementAttributes(element);
42598      xml.enter(FHIR_NS, name);
42599      composeSubstanceSubstanceIngredientComponentElements(element);
42600      composeElementClose(element);
42601      xml.exit(FHIR_NS, name);
42602    }
42603  }
42604
42605  protected void composeSubstanceSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
42606      composeBackboneElementElements(element);
42607      if (element.hasQuantity()) {
42608        composeRatio("quantity", element.getQuantity());
42609      }
42610      if (element.hasSubstance()) {
42611        composeType("substance", element.getSubstance());
42612      }  }
42613
42614  protected void composeSubstancePolymer(String name, SubstancePolymer element) throws IOException {
42615    if (element != null) {
42616      composeDomainResourceAttributes(element);
42617      xml.enter(FHIR_NS, name);
42618      composeSubstancePolymerElements(element);
42619      composeElementClose(element);
42620      xml.exit(FHIR_NS, name);
42621    }
42622  }
42623
42624  protected void composeSubstancePolymerElements(SubstancePolymer element) throws IOException {
42625      composeDomainResourceElements(element);
42626      if (element.hasClass_()) {
42627        composeCodeableConcept("class", element.getClass_());
42628      }
42629      if (element.hasGeometry()) {
42630        composeCodeableConcept("geometry", element.getGeometry());
42631      }
42632      if (element.hasCopolymerConnectivity()) { 
42633        for (CodeableConcept e : element.getCopolymerConnectivity()) 
42634          composeCodeableConcept("copolymerConnectivity", e);
42635      }
42636      if (element.hasModification()) { 
42637        for (StringType e : element.getModification()) 
42638          composeString("modification", e);
42639      }
42640      if (element.hasMonomerSet()) { 
42641        for (SubstancePolymer.SubstancePolymerMonomerSetComponent e : element.getMonomerSet()) 
42642          composeSubstancePolymerSubstancePolymerMonomerSetComponent("monomerSet", e);
42643      }
42644      if (element.hasRepeat()) { 
42645        for (SubstancePolymer.SubstancePolymerRepeatComponent e : element.getRepeat()) 
42646          composeSubstancePolymerSubstancePolymerRepeatComponent("repeat", e);
42647      }
42648  }
42649
42650  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
42651    if (element != null) {
42652      composeElementAttributes(element);
42653      xml.enter(FHIR_NS, name);
42654      composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(element);
42655      composeElementClose(element);
42656      xml.exit(FHIR_NS, name);
42657    }
42658  }
42659
42660  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
42661      composeBackboneElementElements(element);
42662      if (element.hasRatioType()) {
42663        composeCodeableConcept("ratioType", element.getRatioType());
42664      }
42665      if (element.hasStartingMaterial()) { 
42666        for (SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent e : element.getStartingMaterial()) 
42667          composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent("startingMaterial", e);
42668      }
42669  }
42670
42671  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
42672    if (element != null) {
42673      composeElementAttributes(element);
42674      xml.enter(FHIR_NS, name);
42675      composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(element);
42676      composeElementClose(element);
42677      xml.exit(FHIR_NS, name);
42678    }
42679  }
42680
42681  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
42682      composeBackboneElementElements(element);
42683      if (element.hasMaterial()) {
42684        composeCodeableConcept("material", element.getMaterial());
42685      }
42686      if (element.hasType()) {
42687        composeCodeableConcept("type", element.getType());
42688      }
42689      if (element.hasIsDefiningElement()) {
42690        composeBoolean("isDefining", element.getIsDefiningElement());
42691      }
42692      if (element.hasAmount()) {
42693        composeSubstanceAmount("amount", element.getAmount());
42694      }
42695  }
42696
42697  protected void composeSubstancePolymerSubstancePolymerRepeatComponent(String name, SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
42698    if (element != null) {
42699      composeElementAttributes(element);
42700      xml.enter(FHIR_NS, name);
42701      composeSubstancePolymerSubstancePolymerRepeatComponentElements(element);
42702      composeElementClose(element);
42703      xml.exit(FHIR_NS, name);
42704    }
42705  }
42706
42707  protected void composeSubstancePolymerSubstancePolymerRepeatComponentElements(SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
42708      composeBackboneElementElements(element);
42709      if (element.hasNumberOfUnitsElement()) {
42710        composeInteger("numberOfUnits", element.getNumberOfUnitsElement());
42711      }
42712      if (element.hasAverageMolecularFormulaElement()) {
42713        composeString("averageMolecularFormula", element.getAverageMolecularFormulaElement());
42714      }
42715      if (element.hasRepeatUnitAmountType()) {
42716        composeCodeableConcept("repeatUnitAmountType", element.getRepeatUnitAmountType());
42717      }
42718      if (element.hasRepeatUnit()) { 
42719        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent e : element.getRepeatUnit()) 
42720          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent("repeatUnit", e);
42721      }
42722  }
42723
42724  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
42725    if (element != null) {
42726      composeElementAttributes(element);
42727      xml.enter(FHIR_NS, name);
42728      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(element);
42729      composeElementClose(element);
42730      xml.exit(FHIR_NS, name);
42731    }
42732  }
42733
42734  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
42735      composeBackboneElementElements(element);
42736      if (element.hasOrientationOfPolymerisation()) {
42737        composeCodeableConcept("orientationOfPolymerisation", element.getOrientationOfPolymerisation());
42738      }
42739      if (element.hasRepeatUnitElement()) {
42740        composeString("repeatUnit", element.getRepeatUnitElement());
42741      }
42742      if (element.hasAmount()) {
42743        composeSubstanceAmount("amount", element.getAmount());
42744      }
42745      if (element.hasDegreeOfPolymerisation()) { 
42746        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent e : element.getDegreeOfPolymerisation()) 
42747          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent("degreeOfPolymerisation", e);
42748      }
42749      if (element.hasStructuralRepresentation()) { 
42750        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent e : element.getStructuralRepresentation()) 
42751          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent("structuralRepresentation", e);
42752      }
42753  }
42754
42755  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
42756    if (element != null) {
42757      composeElementAttributes(element);
42758      xml.enter(FHIR_NS, name);
42759      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(element);
42760      composeElementClose(element);
42761      xml.exit(FHIR_NS, name);
42762    }
42763  }
42764
42765  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
42766      composeBackboneElementElements(element);
42767      if (element.hasDegree()) {
42768        composeCodeableConcept("degree", element.getDegree());
42769      }
42770      if (element.hasAmount()) {
42771        composeSubstanceAmount("amount", element.getAmount());
42772      }
42773  }
42774
42775  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
42776    if (element != null) {
42777      composeElementAttributes(element);
42778      xml.enter(FHIR_NS, name);
42779      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(element);
42780      composeElementClose(element);
42781      xml.exit(FHIR_NS, name);
42782    }
42783  }
42784
42785  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
42786      composeBackboneElementElements(element);
42787      if (element.hasType()) {
42788        composeCodeableConcept("type", element.getType());
42789      }
42790      if (element.hasRepresentationElement()) {
42791        composeString("representation", element.getRepresentationElement());
42792      }
42793      if (element.hasAttachment()) {
42794        composeAttachment("attachment", element.getAttachment());
42795      }
42796  }
42797
42798  protected void composeSubstanceReferenceInformation(String name, SubstanceReferenceInformation element) throws IOException {
42799    if (element != null) {
42800      composeDomainResourceAttributes(element);
42801      xml.enter(FHIR_NS, name);
42802      composeSubstanceReferenceInformationElements(element);
42803      composeElementClose(element);
42804      xml.exit(FHIR_NS, name);
42805    }
42806  }
42807
42808  protected void composeSubstanceReferenceInformationElements(SubstanceReferenceInformation element) throws IOException {
42809      composeDomainResourceElements(element);
42810      if (element.hasCommentElement()) {
42811        composeString("comment", element.getCommentElement());
42812      }
42813      if (element.hasGene()) { 
42814        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent e : element.getGene()) 
42815          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent("gene", e);
42816      }
42817      if (element.hasGeneElement()) { 
42818        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent e : element.getGeneElement()) 
42819          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent("geneElement", e);
42820      }
42821      if (element.hasClassification()) { 
42822        for (SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent e : element.getClassification()) 
42823          composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent("classification", e);
42824      }
42825      if (element.hasRelationship()) { 
42826        for (SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent e : element.getRelationship()) 
42827          composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent("relationship", e);
42828      }
42829      if (element.hasTarget()) { 
42830        for (SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent e : element.getTarget()) 
42831          composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent("target", e);
42832      }
42833  }
42834
42835  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
42836    if (element != null) {
42837      composeElementAttributes(element);
42838      xml.enter(FHIR_NS, name);
42839      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(element);
42840      composeElementClose(element);
42841      xml.exit(FHIR_NS, name);
42842    }
42843  }
42844
42845  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
42846      composeBackboneElementElements(element);
42847      if (element.hasGeneSequenceOrigin()) {
42848        composeCodeableConcept("geneSequenceOrigin", element.getGeneSequenceOrigin());
42849      }
42850      if (element.hasGene()) {
42851        composeCodeableConcept("gene", element.getGene());
42852      }
42853      if (element.hasSource()) { 
42854        for (Reference e : element.getSource()) 
42855          composeReference("source", e);
42856      }
42857  }
42858
42859  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
42860    if (element != null) {
42861      composeElementAttributes(element);
42862      xml.enter(FHIR_NS, name);
42863      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(element);
42864      composeElementClose(element);
42865      xml.exit(FHIR_NS, name);
42866    }
42867  }
42868
42869  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
42870      composeBackboneElementElements(element);
42871      if (element.hasType()) {
42872        composeCodeableConcept("type", element.getType());
42873      }
42874      if (element.hasElement()) {
42875        composeIdentifier("element", element.getElement());
42876      }
42877      if (element.hasSource()) { 
42878        for (Reference e : element.getSource()) 
42879          composeReference("source", e);
42880      }
42881  }
42882
42883  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
42884    if (element != null) {
42885      composeElementAttributes(element);
42886      xml.enter(FHIR_NS, name);
42887      composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(element);
42888      composeElementClose(element);
42889      xml.exit(FHIR_NS, name);
42890    }
42891  }
42892
42893  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
42894      composeBackboneElementElements(element);
42895      if (element.hasDomain()) {
42896        composeCodeableConcept("domain", element.getDomain());
42897      }
42898      if (element.hasClassification()) {
42899        composeCodeableConcept("classification", element.getClassification());
42900      }
42901      if (element.hasSubtype()) { 
42902        for (CodeableConcept e : element.getSubtype()) 
42903          composeCodeableConcept("subtype", e);
42904      }
42905      if (element.hasSource()) { 
42906        for (Reference e : element.getSource()) 
42907          composeReference("source", e);
42908      }
42909  }
42910
42911  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent element) throws IOException {
42912    if (element != null) {
42913      composeElementAttributes(element);
42914      xml.enter(FHIR_NS, name);
42915      composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponentElements(element);
42916      composeElementClose(element);
42917      xml.exit(FHIR_NS, name);
42918    }
42919  }
42920
42921  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent element) throws IOException {
42922      composeBackboneElementElements(element);
42923      if (element.hasSubstance()) {
42924        composeType("substance", element.getSubstance());
42925      }      if (element.hasRelationship()) {
42926        composeCodeableConcept("relationship", element.getRelationship());
42927      }
42928      if (element.hasInteraction()) {
42929        composeCodeableConcept("interaction", element.getInteraction());
42930      }
42931      if (element.hasIsDefiningElement()) {
42932        composeBoolean("isDefining", element.getIsDefiningElement());
42933      }
42934      if (element.hasAmount()) {
42935        composeType("amount", element.getAmount());
42936      }      if (element.hasAmountType()) {
42937        composeCodeableConcept("amountType", element.getAmountType());
42938      }
42939      if (element.hasAmountTextElement()) {
42940        composeString("amountText", element.getAmountTextElement());
42941      }
42942      if (element.hasSource()) { 
42943        for (Reference e : element.getSource()) 
42944          composeReference("source", e);
42945      }
42946  }
42947
42948  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
42949    if (element != null) {
42950      composeElementAttributes(element);
42951      xml.enter(FHIR_NS, name);
42952      composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(element);
42953      composeElementClose(element);
42954      xml.exit(FHIR_NS, name);
42955    }
42956  }
42957
42958  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
42959      composeBackboneElementElements(element);
42960      if (element.hasTarget()) {
42961        composeIdentifier("target", element.getTarget());
42962      }
42963      if (element.hasType()) {
42964        composeCodeableConcept("type", element.getType());
42965      }
42966      if (element.hasInteraction()) {
42967        composeCodeableConcept("interaction", element.getInteraction());
42968      }
42969      if (element.hasOrganism()) {
42970        composeCodeableConcept("organism", element.getOrganism());
42971      }
42972      if (element.hasOrganismType()) {
42973        composeCodeableConcept("organismType", element.getOrganismType());
42974      }
42975      if (element.hasSource()) { 
42976        for (Reference e : element.getSource()) 
42977          composeReference("source", e);
42978      }
42979      if (element.hasAmount()) {
42980        composeType("amount", element.getAmount());
42981      }      if (element.hasAmountType()) {
42982        composeCodeableConcept("amountType", element.getAmountType());
42983      }
42984  }
42985
42986  protected void composeSubstanceSpecification(String name, SubstanceSpecification element) throws IOException {
42987    if (element != null) {
42988      composeDomainResourceAttributes(element);
42989      xml.enter(FHIR_NS, name);
42990      composeSubstanceSpecificationElements(element);
42991      composeElementClose(element);
42992      xml.exit(FHIR_NS, name);
42993    }
42994  }
42995
42996  protected void composeSubstanceSpecificationElements(SubstanceSpecification element) throws IOException {
42997      composeDomainResourceElements(element);
42998      if (element.hasCommentElement()) {
42999        composeString("comment", element.getCommentElement());
43000      }
43001      if (element.hasStoichiometricElement()) {
43002        composeBoolean("stoichiometric", element.getStoichiometricElement());
43003      }
43004      if (element.hasIdentifier()) {
43005        composeIdentifier("identifier", element.getIdentifier());
43006      }
43007      if (element.hasType()) {
43008        composeCodeableConcept("type", element.getType());
43009      }
43010      if (element.hasReferenceSource()) { 
43011        for (StringType e : element.getReferenceSource()) 
43012          composeString("referenceSource", e);
43013      }
43014      if (element.hasMoiety()) { 
43015        for (SubstanceSpecification.SubstanceSpecificationMoietyComponent e : element.getMoiety()) 
43016          composeSubstanceSpecificationSubstanceSpecificationMoietyComponent("moiety", e);
43017      }
43018      if (element.hasProperty()) { 
43019        for (SubstanceSpecification.SubstanceSpecificationPropertyComponent e : element.getProperty()) 
43020          composeSubstanceSpecificationSubstanceSpecificationPropertyComponent("property", e);
43021      }
43022      if (element.hasReferenceInformation()) {
43023        composeReference("referenceInformation", element.getReferenceInformation());
43024      }
43025      if (element.hasStructure()) {
43026        composeSubstanceSpecificationSubstanceSpecificationStructureComponent("structure", element.getStructure());
43027      }
43028      if (element.hasSubstanceCode()) { 
43029        for (SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent e : element.getSubstanceCode()) 
43030          composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent("substanceCode", e);
43031      }
43032      if (element.hasSubstanceName()) { 
43033        for (SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent e : element.getSubstanceName()) 
43034          composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent("substanceName", e);
43035      }
43036      if (element.hasMolecularWeight()) { 
43037        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent e : element.getMolecularWeight()) 
43038          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", e);
43039      }
43040      if (element.hasPolymer()) {
43041        composeReference("polymer", element.getPolymer());
43042      }
43043  }
43044
43045  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(String name, SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
43046    if (element != null) {
43047      composeElementAttributes(element);
43048      xml.enter(FHIR_NS, name);
43049      composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(element);
43050      composeElementClose(element);
43051      xml.exit(FHIR_NS, name);
43052    }
43053  }
43054
43055  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
43056      composeBackboneElementElements(element);
43057      if (element.hasRole()) {
43058        composeCodeableConcept("role", element.getRole());
43059      }
43060      if (element.hasIdentifier()) {
43061        composeIdentifier("identifier", element.getIdentifier());
43062      }
43063      if (element.hasNameElement()) {
43064        composeString("name", element.getNameElement());
43065      }
43066      if (element.hasStereochemistry()) {
43067        composeCodeableConcept("stereochemistry", element.getStereochemistry());
43068      }
43069      if (element.hasOpticalActivity()) {
43070        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
43071      }
43072      if (element.hasMolecularFormulaElement()) {
43073        composeString("molecularFormula", element.getMolecularFormulaElement());
43074      }
43075      if (element.hasAmountElement()) {
43076        composeString("amount", element.getAmountElement());
43077      }
43078  }
43079
43080  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(String name, SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
43081    if (element != null) {
43082      composeElementAttributes(element);
43083      xml.enter(FHIR_NS, name);
43084      composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(element);
43085      composeElementClose(element);
43086      xml.exit(FHIR_NS, name);
43087    }
43088  }
43089
43090  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
43091      composeBackboneElementElements(element);
43092      if (element.hasType()) {
43093        composeCodeableConcept("type", element.getType());
43094      }
43095      if (element.hasName()) {
43096        composeCodeableConcept("name", element.getName());
43097      }
43098      if (element.hasParametersElement()) {
43099        composeString("parameters", element.getParametersElement());
43100      }
43101      if (element.hasSubstanceId()) {
43102        composeIdentifier("substanceId", element.getSubstanceId());
43103      }
43104      if (element.hasSubstanceNameElement()) {
43105        composeString("substanceName", element.getSubstanceNameElement());
43106      }
43107      if (element.hasAmountElement()) {
43108        composeString("amount", element.getAmountElement());
43109      }
43110  }
43111
43112  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
43113    if (element != null) {
43114      composeElementAttributes(element);
43115      xml.enter(FHIR_NS, name);
43116      composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(element);
43117      composeElementClose(element);
43118      xml.exit(FHIR_NS, name);
43119    }
43120  }
43121
43122  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
43123      composeBackboneElementElements(element);
43124      if (element.hasStereochemistry()) {
43125        composeCodeableConcept("stereochemistry", element.getStereochemistry());
43126      }
43127      if (element.hasOpticalActivity()) {
43128        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
43129      }
43130      if (element.hasMolecularFormulaElement()) {
43131        composeString("molecularFormula", element.getMolecularFormulaElement());
43132      }
43133      if (element.hasMolecularFormulaByMoietyElement()) {
43134        composeString("molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement());
43135      }
43136      if (element.hasIsotope()) { 
43137        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent e : element.getIsotope()) 
43138          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent("isotope", e);
43139      }
43140      if (element.hasMolecularWeight()) {
43141        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
43142      }
43143      if (element.hasReferenceSource()) { 
43144        for (Reference e : element.getReferenceSource()) 
43145          composeReference("referenceSource", e);
43146      }
43147      if (element.hasStructuralRepresentation()) { 
43148        for (SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent e : element.getStructuralRepresentation()) 
43149          composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent("structuralRepresentation", e);
43150      }
43151  }
43152
43153  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
43154    if (element != null) {
43155      composeElementAttributes(element);
43156      xml.enter(FHIR_NS, name);
43157      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(element);
43158      composeElementClose(element);
43159      xml.exit(FHIR_NS, name);
43160    }
43161  }
43162
43163  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
43164      composeBackboneElementElements(element);
43165      if (element.hasNuclideId()) {
43166        composeIdentifier("nuclideId", element.getNuclideId());
43167      }
43168      if (element.hasNuclideName()) {
43169        composeCodeableConcept("nuclideName", element.getNuclideName());
43170      }
43171      if (element.hasSubstitutionType()) {
43172        composeCodeableConcept("substitutionType", element.getSubstitutionType());
43173      }
43174      if (element.hasNuclideHalfLife()) {
43175        composeQuantity("nuclideHalfLife", element.getNuclideHalfLife());
43176      }
43177      if (element.hasAmountElement()) {
43178        composeString("amount", element.getAmountElement());
43179      }
43180      if (element.hasMolecularWeight()) {
43181        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
43182      }
43183  }
43184
43185  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
43186    if (element != null) {
43187      composeElementAttributes(element);
43188      xml.enter(FHIR_NS, name);
43189      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(element);
43190      composeElementClose(element);
43191      xml.exit(FHIR_NS, name);
43192    }
43193  }
43194
43195  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
43196      composeBackboneElementElements(element);
43197      if (element.hasMethod()) {
43198        composeCodeableConcept("method", element.getMethod());
43199      }
43200      if (element.hasType()) {
43201        composeCodeableConcept("type", element.getType());
43202      }
43203      if (element.hasAmountElement()) {
43204        composeString("amount", element.getAmountElement());
43205      }
43206  }
43207
43208  protected void composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent element) throws IOException {
43209    if (element != null) {
43210      composeElementAttributes(element);
43211      xml.enter(FHIR_NS, name);
43212      composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponentElements(element);
43213      composeElementClose(element);
43214      xml.exit(FHIR_NS, name);
43215    }
43216  }
43217
43218  protected void composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponentElements(SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent element) throws IOException {
43219      composeBackboneElementElements(element);
43220      if (element.hasType()) {
43221        composeCodeableConcept("type", element.getType());
43222      }
43223      if (element.hasRepresentationElement()) {
43224        composeString("representation", element.getRepresentationElement());
43225      }
43226      if (element.hasAttachment()) {
43227        composeAttachment("attachment", element.getAttachment());
43228      }
43229  }
43230
43231  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(String name, SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent element) throws IOException {
43232    if (element != null) {
43233      composeElementAttributes(element);
43234      xml.enter(FHIR_NS, name);
43235      composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponentElements(element);
43236      composeElementClose(element);
43237      xml.exit(FHIR_NS, name);
43238    }
43239  }
43240
43241  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponentElements(SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent element) throws IOException {
43242      composeBackboneElementElements(element);
43243      if (element.hasCode()) {
43244        composeCodeableConcept("code", element.getCode());
43245      }
43246      if (element.hasStatus()) {
43247        composeCodeableConcept("status", element.getStatus());
43248      }
43249      if (element.hasStatusDateElement()) {
43250        composeDateTime("statusDate", element.getStatusDateElement());
43251      }
43252      if (element.hasCommentElement()) {
43253        composeString("comment", element.getCommentElement());
43254      }
43255      if (element.hasReferenceSource()) { 
43256        for (StringType e : element.getReferenceSource()) 
43257          composeString("referenceSource", e);
43258      }
43259  }
43260
43261  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(String name, SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent element) throws IOException {
43262    if (element != null) {
43263      composeElementAttributes(element);
43264      xml.enter(FHIR_NS, name);
43265      composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponentElements(element);
43266      composeElementClose(element);
43267      xml.exit(FHIR_NS, name);
43268    }
43269  }
43270
43271  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponentElements(SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent element) throws IOException {
43272      composeBackboneElementElements(element);
43273      if (element.hasNameElement()) {
43274        composeString("name", element.getNameElement());
43275      }
43276      if (element.hasType()) {
43277        composeCodeableConcept("type", element.getType());
43278      }
43279      if (element.hasLanguage()) { 
43280        for (CodeableConcept e : element.getLanguage()) 
43281          composeCodeableConcept("language", e);
43282      }
43283      if (element.hasDomain()) { 
43284        for (CodeableConcept e : element.getDomain()) 
43285          composeCodeableConcept("domain", e);
43286      }
43287      if (element.hasJurisdiction()) { 
43288        for (CodeableConcept e : element.getJurisdiction()) 
43289          composeCodeableConcept("jurisdiction", e);
43290      }
43291      if (element.hasOfficialName()) { 
43292        for (SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent e : element.getOfficialName()) 
43293          composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent("officialName", e);
43294      }
43295      if (element.hasReferenceSource()) { 
43296        for (StringType e : element.getReferenceSource()) 
43297          composeString("referenceSource", e);
43298      }
43299  }
43300
43301  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(String name, SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent element) throws IOException {
43302    if (element != null) {
43303      composeElementAttributes(element);
43304      xml.enter(FHIR_NS, name);
43305      composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponentElements(element);
43306      composeElementClose(element);
43307      xml.exit(FHIR_NS, name);
43308    }
43309  }
43310
43311  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponentElements(SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent element) throws IOException {
43312      composeBackboneElementElements(element);
43313      if (element.hasAuthority()) {
43314        composeCodeableConcept("authority", element.getAuthority());
43315      }
43316      if (element.hasStatus()) {
43317        composeCodeableConcept("status", element.getStatus());
43318      }
43319      if (element.hasDateElement()) {
43320        composeDateTime("date", element.getDateElement());
43321      }
43322  }
43323
43324  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
43325    if (element != null) {
43326      composeDomainResourceAttributes(element);
43327      xml.enter(FHIR_NS, name);
43328      composeSupplyDeliveryElements(element);
43329      composeElementClose(element);
43330      xml.exit(FHIR_NS, name);
43331    }
43332  }
43333
43334  protected void composeSupplyDeliveryElements(SupplyDelivery 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 SupplyDelivery.SupplyDeliveryStatusEnumFactory());
43350      if (element.hasPatient()) {
43351        composeReference("patient", element.getPatient());
43352      }
43353      if (element.hasType()) {
43354        composeCodeableConcept("type", element.getType());
43355      }
43356      if (element.hasSuppliedItem()) {
43357        composeSupplyDeliverySupplyDeliverySuppliedItemComponent("suppliedItem", element.getSuppliedItem());
43358      }
43359      if (element.hasOccurrence()) {
43360        composeType("occurrence", element.getOccurrence());
43361      }      if (element.hasSupplier()) {
43362        composeReference("supplier", element.getSupplier());
43363      }
43364      if (element.hasDestination()) {
43365        composeReference("destination", element.getDestination());
43366      }
43367      if (element.hasReceiver()) { 
43368        for (Reference e : element.getReceiver()) 
43369          composeReference("receiver", e);
43370      }
43371  }
43372
43373  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
43374    if (element != null) {
43375      composeElementAttributes(element);
43376      xml.enter(FHIR_NS, name);
43377      composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(element);
43378      composeElementClose(element);
43379      xml.exit(FHIR_NS, name);
43380    }
43381  }
43382
43383  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
43384      composeBackboneElementElements(element);
43385      if (element.hasQuantity()) {
43386        composeSimpleQuantity("quantity", element.getQuantity());
43387      }
43388      if (element.hasItem()) {
43389        composeType("item", element.getItem());
43390      }  }
43391
43392  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
43393    if (element != null) {
43394      composeDomainResourceAttributes(element);
43395      xml.enter(FHIR_NS, name);
43396      composeSupplyRequestElements(element);
43397      composeElementClose(element);
43398      xml.exit(FHIR_NS, name);
43399    }
43400  }
43401
43402  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
43403      composeDomainResourceElements(element);
43404      if (element.hasIdentifier()) {
43405        composeIdentifier("identifier", element.getIdentifier());
43406      }
43407      if (element.hasStatusElement())
43408        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
43409      if (element.hasCategory()) {
43410        composeCodeableConcept("category", element.getCategory());
43411      }
43412      if (element.hasPriorityElement())
43413        composeEnumeration("priority", element.getPriorityElement(), new SupplyRequest.RequestPriorityEnumFactory());
43414      if (element.hasItem()) {
43415        composeType("item", element.getItem());
43416      }      if (element.hasQuantity()) {
43417        composeQuantity("quantity", element.getQuantity());
43418      }
43419      if (element.hasParameter()) { 
43420        for (SupplyRequest.SupplyRequestParameterComponent e : element.getParameter()) 
43421          composeSupplyRequestSupplyRequestParameterComponent("parameter", e);
43422      }
43423      if (element.hasOccurrence()) {
43424        composeType("occurrence", element.getOccurrence());
43425      }      if (element.hasAuthoredOnElement()) {
43426        composeDateTime("authoredOn", element.getAuthoredOnElement());
43427      }
43428      if (element.hasRequester()) {
43429        composeReference("requester", element.getRequester());
43430      }
43431      if (element.hasSupplier()) { 
43432        for (Reference e : element.getSupplier()) 
43433          composeReference("supplier", e);
43434      }
43435      if (element.hasReasonCode()) { 
43436        for (CodeableConcept e : element.getReasonCode()) 
43437          composeCodeableConcept("reasonCode", e);
43438      }
43439      if (element.hasReasonReference()) { 
43440        for (Reference e : element.getReasonReference()) 
43441          composeReference("reasonReference", e);
43442      }
43443      if (element.hasDeliverFrom()) {
43444        composeReference("deliverFrom", element.getDeliverFrom());
43445      }
43446      if (element.hasDeliverTo()) {
43447        composeReference("deliverTo", element.getDeliverTo());
43448      }
43449  }
43450
43451  protected void composeSupplyRequestSupplyRequestParameterComponent(String name, SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
43452    if (element != null) {
43453      composeElementAttributes(element);
43454      xml.enter(FHIR_NS, name);
43455      composeSupplyRequestSupplyRequestParameterComponentElements(element);
43456      composeElementClose(element);
43457      xml.exit(FHIR_NS, name);
43458    }
43459  }
43460
43461  protected void composeSupplyRequestSupplyRequestParameterComponentElements(SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
43462      composeBackboneElementElements(element);
43463      if (element.hasCode()) {
43464        composeCodeableConcept("code", element.getCode());
43465      }
43466      if (element.hasValue()) {
43467        composeType("value", element.getValue());
43468      }  }
43469
43470  protected void composeTask(String name, Task element) throws IOException {
43471    if (element != null) {
43472      composeDomainResourceAttributes(element);
43473      xml.enter(FHIR_NS, name);
43474      composeTaskElements(element);
43475      composeElementClose(element);
43476      xml.exit(FHIR_NS, name);
43477    }
43478  }
43479
43480  protected void composeTaskElements(Task element) throws IOException {
43481      composeDomainResourceElements(element);
43482      if (element.hasIdentifier()) { 
43483        for (Identifier e : element.getIdentifier()) 
43484          composeIdentifier("identifier", e);
43485      }
43486      if (element.hasInstantiates()) {
43487        composeType("instantiates", element.getInstantiates());
43488      }      if (element.hasBasedOn()) { 
43489        for (Reference e : element.getBasedOn()) 
43490          composeReference("basedOn", e);
43491      }
43492      if (element.hasGroupIdentifier()) {
43493        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
43494      }
43495      if (element.hasPartOf()) { 
43496        for (Reference e : element.getPartOf()) 
43497          composeReference("partOf", e);
43498      }
43499      if (element.hasStatusElement())
43500        composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
43501      if (element.hasStatusReason()) {
43502        composeCodeableConcept("statusReason", element.getStatusReason());
43503      }
43504      if (element.hasBusinessStatus()) {
43505        composeCodeableConcept("businessStatus", element.getBusinessStatus());
43506      }
43507      if (element.hasIntentElement())
43508        composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
43509      if (element.hasPriorityElement())
43510        composeEnumeration("priority", element.getPriorityElement(), new Task.TaskPriorityEnumFactory());
43511      if (element.hasCode()) {
43512        composeCodeableConcept("code", element.getCode());
43513      }
43514      if (element.hasDescriptionElement()) {
43515        composeString("description", element.getDescriptionElement());
43516      }
43517      if (element.hasFocus()) {
43518        composeReference("focus", element.getFocus());
43519      }
43520      if (element.hasFor()) {
43521        composeReference("for", element.getFor());
43522      }
43523      if (element.hasContext()) {
43524        composeReference("context", element.getContext());
43525      }
43526      if (element.hasExecutionPeriod()) {
43527        composePeriod("executionPeriod", element.getExecutionPeriod());
43528      }
43529      if (element.hasAuthoredOnElement()) {
43530        composeDateTime("authoredOn", element.getAuthoredOnElement());
43531      }
43532      if (element.hasLastModifiedElement()) {
43533        composeDateTime("lastModified", element.getLastModifiedElement());
43534      }
43535      if (element.hasRequester()) {
43536        composeReference("requester", element.getRequester());
43537      }
43538      if (element.hasPerformerType()) { 
43539        for (CodeableConcept e : element.getPerformerType()) 
43540          composeCodeableConcept("performerType", e);
43541      }
43542      if (element.hasOwner()) {
43543        composeReference("owner", element.getOwner());
43544      }
43545      if (element.hasReasonCode()) {
43546        composeCodeableConcept("reasonCode", element.getReasonCode());
43547      }
43548      if (element.hasReasonReference()) {
43549        composeReference("reasonReference", element.getReasonReference());
43550      }
43551      if (element.hasNote()) { 
43552        for (Annotation e : element.getNote()) 
43553          composeAnnotation("note", e);
43554      }
43555      if (element.hasRelevantHistory()) { 
43556        for (Reference e : element.getRelevantHistory()) 
43557          composeReference("relevantHistory", e);
43558      }
43559      if (element.hasRestriction()) {
43560        composeTaskTaskRestrictionComponent("restriction", element.getRestriction());
43561      }
43562      if (element.hasInput()) { 
43563        for (Task.ParameterComponent e : element.getInput()) 
43564          composeTaskParameterComponent("input", e);
43565      }
43566      if (element.hasOutput()) { 
43567        for (Task.TaskOutputComponent e : element.getOutput()) 
43568          composeTaskTaskOutputComponent("output", e);
43569      }
43570  }
43571
43572  protected void composeTaskTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
43573    if (element != null) {
43574      composeElementAttributes(element);
43575      xml.enter(FHIR_NS, name);
43576      composeTaskTaskRestrictionComponentElements(element);
43577      composeElementClose(element);
43578      xml.exit(FHIR_NS, name);
43579    }
43580  }
43581
43582  protected void composeTaskTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
43583      composeBackboneElementElements(element);
43584      if (element.hasRepetitionsElement()) {
43585        composePositiveInt("repetitions", element.getRepetitionsElement());
43586      }
43587      if (element.hasPeriod()) {
43588        composePeriod("period", element.getPeriod());
43589      }
43590      if (element.hasRecipient()) { 
43591        for (Reference e : element.getRecipient()) 
43592          composeReference("recipient", e);
43593      }
43594  }
43595
43596  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
43597    if (element != null) {
43598      composeElementAttributes(element);
43599      xml.enter(FHIR_NS, name);
43600      composeTaskParameterComponentElements(element);
43601      composeElementClose(element);
43602      xml.exit(FHIR_NS, name);
43603    }
43604  }
43605
43606  protected void composeTaskParameterComponentElements(Task.ParameterComponent element) throws IOException {
43607      composeBackboneElementElements(element);
43608      if (element.hasType()) {
43609        composeCodeableConcept("type", element.getType());
43610      }
43611      if (element.hasValue()) {
43612        composeType("value", element.getValue());
43613      }  }
43614
43615  protected void composeTaskTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
43616    if (element != null) {
43617      composeElementAttributes(element);
43618      xml.enter(FHIR_NS, name);
43619      composeTaskTaskOutputComponentElements(element);
43620      composeElementClose(element);
43621      xml.exit(FHIR_NS, name);
43622    }
43623  }
43624
43625  protected void composeTaskTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
43626      composeBackboneElementElements(element);
43627      if (element.hasType()) {
43628        composeCodeableConcept("type", element.getType());
43629      }
43630      if (element.hasValue()) {
43631        composeType("value", element.getValue());
43632      }  }
43633
43634  protected void composeTerminologyCapabilities(String name, TerminologyCapabilities element) throws IOException {
43635    if (element != null) {
43636      composeDomainResourceAttributes(element);
43637      xml.enter(FHIR_NS, name);
43638      composeTerminologyCapabilitiesElements(element);
43639      composeElementClose(element);
43640      xml.exit(FHIR_NS, name);
43641    }
43642  }
43643
43644  protected void composeTerminologyCapabilitiesElements(TerminologyCapabilities element) throws IOException {
43645      composeDomainResourceElements(element);
43646      if (element.hasUrlElement()) {
43647        composeUri("url", element.getUrlElement());
43648      }
43649      if (element.hasVersionElement()) {
43650        composeString("version", element.getVersionElement());
43651      }
43652      if (element.hasNameElement()) {
43653        composeString("name", element.getNameElement());
43654      }
43655      if (element.hasTitleElement()) {
43656        composeString("title", element.getTitleElement());
43657      }
43658      if (element.hasStatusElement())
43659        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
43660      if (element.hasExperimentalElement()) {
43661        composeBoolean("experimental", element.getExperimentalElement());
43662      }
43663      if (element.hasDateElement()) {
43664        composeDateTime("date", element.getDateElement());
43665      }
43666      if (element.hasPublisherElement()) {
43667        composeString("publisher", element.getPublisherElement());
43668      }
43669      if (element.hasContact()) { 
43670        for (ContactDetail e : element.getContact()) 
43671          composeContactDetail("contact", e);
43672      }
43673      if (element.hasDescriptionElement()) {
43674        composeMarkdown("description", element.getDescriptionElement());
43675      }
43676      if (element.hasUseContext()) { 
43677        for (UsageContext e : element.getUseContext()) 
43678          composeUsageContext("useContext", e);
43679      }
43680      if (element.hasJurisdiction()) { 
43681        for (CodeableConcept e : element.getJurisdiction()) 
43682          composeCodeableConcept("jurisdiction", e);
43683      }
43684      if (element.hasPurposeElement()) {
43685        composeMarkdown("purpose", element.getPurposeElement());
43686      }
43687      if (element.hasCopyrightElement()) {
43688        composeMarkdown("copyright", element.getCopyrightElement());
43689      }
43690      if (element.hasLockedDateElement()) {
43691        composeBoolean("lockedDate", element.getLockedDateElement());
43692      }
43693      if (element.hasCodeSystem()) { 
43694        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent e : element.getCodeSystem()) 
43695          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent("codeSystem", e);
43696      }
43697      if (element.hasExpansion()) {
43698        composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent("expansion", element.getExpansion());
43699      }
43700      if (element.hasCodeSearchElement())
43701        composeEnumeration("codeSearch", element.getCodeSearchElement(), new TerminologyCapabilities.CodeSearchSupportEnumFactory());
43702      if (element.hasValidateCode()) {
43703        composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent("validateCode", element.getValidateCode());
43704      }
43705      if (element.hasTranslation()) {
43706        composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent("translation", element.getTranslation());
43707      }
43708      if (element.hasClosure()) {
43709        composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent("closure", element.getClosure());
43710      }
43711  }
43712
43713  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
43714    if (element != null) {
43715      composeElementAttributes(element);
43716      xml.enter(FHIR_NS, name);
43717      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(element);
43718      composeElementClose(element);
43719      xml.exit(FHIR_NS, name);
43720    }
43721  }
43722
43723  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
43724      composeBackboneElementElements(element);
43725      if (element.hasUriElement()) {
43726        composeCanonical("uri", element.getUriElement());
43727      }
43728      if (element.hasVersion()) { 
43729        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent e : element.getVersion()) 
43730          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent("version", e);
43731      }
43732  }
43733
43734  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
43735    if (element != null) {
43736      composeElementAttributes(element);
43737      xml.enter(FHIR_NS, name);
43738      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(element);
43739      composeElementClose(element);
43740      xml.exit(FHIR_NS, name);
43741    }
43742  }
43743
43744  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
43745      composeBackboneElementElements(element);
43746      if (element.hasCodeElement()) {
43747        composeString("code", element.getCodeElement());
43748      }
43749      if (element.hasIsDefaultElement()) {
43750        composeBoolean("isDefault", element.getIsDefaultElement());
43751      }
43752      if (element.hasCompositionalElement()) {
43753        composeBoolean("compositional", element.getCompositionalElement());
43754      }
43755      if (element.hasLanguage()) { 
43756        for (CodeType e : element.getLanguage()) 
43757          composeCode("language", e);
43758      }
43759      if (element.hasFilter()) { 
43760        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent e : element.getFilter()) 
43761          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent("filter", e);
43762      }
43763      if (element.hasProperty()) { 
43764        for (CodeType e : element.getProperty()) 
43765          composeCode("property", e);
43766      }
43767  }
43768
43769  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
43770    if (element != null) {
43771      composeElementAttributes(element);
43772      xml.enter(FHIR_NS, name);
43773      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(element);
43774      composeElementClose(element);
43775      xml.exit(FHIR_NS, name);
43776    }
43777  }
43778
43779  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
43780      composeBackboneElementElements(element);
43781      if (element.hasCodeElement()) {
43782        composeCode("code", element.getCodeElement());
43783      }
43784      if (element.hasOp()) { 
43785        for (CodeType e : element.getOp()) 
43786          composeCode("op", e);
43787      }
43788  }
43789
43790  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
43791    if (element != null) {
43792      composeElementAttributes(element);
43793      xml.enter(FHIR_NS, name);
43794      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(element);
43795      composeElementClose(element);
43796      xml.exit(FHIR_NS, name);
43797    }
43798  }
43799
43800  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
43801      composeBackboneElementElements(element);
43802      if (element.hasHierarchicalElement()) {
43803        composeBoolean("hierarchical", element.getHierarchicalElement());
43804      }
43805      if (element.hasPagingElement()) {
43806        composeBoolean("paging", element.getPagingElement());
43807      }
43808      if (element.hasIncompleteElement()) {
43809        composeBoolean("incomplete", element.getIncompleteElement());
43810      }
43811      if (element.hasDefinitionElement()) {
43812        composeCanonical("definition", element.getDefinitionElement());
43813      }
43814      if (element.hasProfile()) { 
43815        for (CanonicalType e : element.getProfile()) 
43816          composeCanonical("profile", e);
43817      }
43818      if (element.hasTextFilterElement()) {
43819        composeMarkdown("textFilter", element.getTextFilterElement());
43820      }
43821  }
43822
43823  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
43824    if (element != null) {
43825      composeElementAttributes(element);
43826      xml.enter(FHIR_NS, name);
43827      composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(element);
43828      composeElementClose(element);
43829      xml.exit(FHIR_NS, name);
43830    }
43831  }
43832
43833  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
43834      composeBackboneElementElements(element);
43835      if (element.hasTranslationsElement()) {
43836        composeBoolean("translations", element.getTranslationsElement());
43837      }
43838  }
43839
43840  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
43841    if (element != null) {
43842      composeElementAttributes(element);
43843      xml.enter(FHIR_NS, name);
43844      composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(element);
43845      composeElementClose(element);
43846      xml.exit(FHIR_NS, name);
43847    }
43848  }
43849
43850  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
43851      composeBackboneElementElements(element);
43852      if (element.hasNeedsMapElement()) {
43853        composeBoolean("needsMap", element.getNeedsMapElement());
43854      }
43855  }
43856
43857  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
43858    if (element != null) {
43859      composeElementAttributes(element);
43860      xml.enter(FHIR_NS, name);
43861      composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(element);
43862      composeElementClose(element);
43863      xml.exit(FHIR_NS, name);
43864    }
43865  }
43866
43867  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
43868      composeBackboneElementElements(element);
43869      if (element.hasTranslationElement()) {
43870        composeBoolean("translation", element.getTranslationElement());
43871      }
43872  }
43873
43874  protected void composeTestReport(String name, TestReport element) throws IOException {
43875    if (element != null) {
43876      composeDomainResourceAttributes(element);
43877      xml.enter(FHIR_NS, name);
43878      composeTestReportElements(element);
43879      composeElementClose(element);
43880      xml.exit(FHIR_NS, name);
43881    }
43882  }
43883
43884  protected void composeTestReportElements(TestReport element) throws IOException {
43885      composeDomainResourceElements(element);
43886      if (element.hasIdentifier()) {
43887        composeIdentifier("identifier", element.getIdentifier());
43888      }
43889      if (element.hasNameElement()) {
43890        composeString("name", element.getNameElement());
43891      }
43892      if (element.hasStatusElement())
43893        composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
43894      if (element.hasTestScript()) {
43895        composeReference("testScript", element.getTestScript());
43896      }
43897      if (element.hasResultElement())
43898        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
43899      if (element.hasScoreElement()) {
43900        composeDecimal("score", element.getScoreElement());
43901      }
43902      if (element.hasTesterElement()) {
43903        composeString("tester", element.getTesterElement());
43904      }
43905      if (element.hasIssuedElement()) {
43906        composeDateTime("issued", element.getIssuedElement());
43907      }
43908      if (element.hasParticipant()) { 
43909        for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
43910          composeTestReportTestReportParticipantComponent("participant", e);
43911      }
43912      if (element.hasSetup()) {
43913        composeTestReportTestReportSetupComponent("setup", element.getSetup());
43914      }
43915      if (element.hasTest()) { 
43916        for (TestReport.TestReportTestComponent e : element.getTest()) 
43917          composeTestReportTestReportTestComponent("test", e);
43918      }
43919      if (element.hasTeardown()) {
43920        composeTestReportTestReportTeardownComponent("teardown", element.getTeardown());
43921      }
43922  }
43923
43924  protected void composeTestReportTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
43925    if (element != null) {
43926      composeElementAttributes(element);
43927      xml.enter(FHIR_NS, name);
43928      composeTestReportTestReportParticipantComponentElements(element);
43929      composeElementClose(element);
43930      xml.exit(FHIR_NS, name);
43931    }
43932  }
43933
43934  protected void composeTestReportTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
43935      composeBackboneElementElements(element);
43936      if (element.hasTypeElement())
43937        composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
43938      if (element.hasUriElement()) {
43939        composeUri("uri", element.getUriElement());
43940      }
43941      if (element.hasDisplayElement()) {
43942        composeString("display", element.getDisplayElement());
43943      }
43944  }
43945
43946  protected void composeTestReportTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
43947    if (element != null) {
43948      composeElementAttributes(element);
43949      xml.enter(FHIR_NS, name);
43950      composeTestReportTestReportSetupComponentElements(element);
43951      composeElementClose(element);
43952      xml.exit(FHIR_NS, name);
43953    }
43954  }
43955
43956  protected void composeTestReportTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
43957      composeBackboneElementElements(element);
43958      if (element.hasAction()) { 
43959        for (TestReport.SetupActionComponent e : element.getAction()) 
43960          composeTestReportSetupActionComponent("action", e);
43961      }
43962  }
43963
43964  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
43965    if (element != null) {
43966      composeElementAttributes(element);
43967      xml.enter(FHIR_NS, name);
43968      composeTestReportSetupActionComponentElements(element);
43969      composeElementClose(element);
43970      xml.exit(FHIR_NS, name);
43971    }
43972  }
43973
43974  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
43975      composeBackboneElementElements(element);
43976      if (element.hasOperation()) {
43977        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
43978      }
43979      if (element.hasAssert()) {
43980        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
43981      }
43982  }
43983
43984  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
43985    if (element != null) {
43986      composeElementAttributes(element);
43987      xml.enter(FHIR_NS, name);
43988      composeTestReportSetupActionOperationComponentElements(element);
43989      composeElementClose(element);
43990      xml.exit(FHIR_NS, name);
43991    }
43992  }
43993
43994  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
43995      composeBackboneElementElements(element);
43996      if (element.hasResultElement())
43997        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
43998      if (element.hasMessageElement()) {
43999        composeMarkdown("message", element.getMessageElement());
44000      }
44001      if (element.hasDetailElement()) {
44002        composeUri("detail", element.getDetailElement());
44003      }
44004  }
44005
44006  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
44007    if (element != null) {
44008      composeElementAttributes(element);
44009      xml.enter(FHIR_NS, name);
44010      composeTestReportSetupActionAssertComponentElements(element);
44011      composeElementClose(element);
44012      xml.exit(FHIR_NS, name);
44013    }
44014  }
44015
44016  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
44017      composeBackboneElementElements(element);
44018      if (element.hasResultElement())
44019        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
44020      if (element.hasMessageElement()) {
44021        composeMarkdown("message", element.getMessageElement());
44022      }
44023      if (element.hasDetailElement()) {
44024        composeString("detail", element.getDetailElement());
44025      }
44026  }
44027
44028  protected void composeTestReportTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
44029    if (element != null) {
44030      composeElementAttributes(element);
44031      xml.enter(FHIR_NS, name);
44032      composeTestReportTestReportTestComponentElements(element);
44033      composeElementClose(element);
44034      xml.exit(FHIR_NS, name);
44035    }
44036  }
44037
44038  protected void composeTestReportTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
44039      composeBackboneElementElements(element);
44040      if (element.hasNameElement()) {
44041        composeString("name", element.getNameElement());
44042      }
44043      if (element.hasDescriptionElement()) {
44044        composeString("description", element.getDescriptionElement());
44045      }
44046      if (element.hasAction()) { 
44047        for (TestReport.TestActionComponent e : element.getAction()) 
44048          composeTestReportTestActionComponent("action", e);
44049      }
44050  }
44051
44052  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
44053    if (element != null) {
44054      composeElementAttributes(element);
44055      xml.enter(FHIR_NS, name);
44056      composeTestReportTestActionComponentElements(element);
44057      composeElementClose(element);
44058      xml.exit(FHIR_NS, name);
44059    }
44060  }
44061
44062  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
44063      composeBackboneElementElements(element);
44064      if (element.hasOperation()) {
44065        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
44066      }
44067      if (element.hasAssert()) {
44068        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
44069      }
44070  }
44071
44072  protected void composeTestReportTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
44073    if (element != null) {
44074      composeElementAttributes(element);
44075      xml.enter(FHIR_NS, name);
44076      composeTestReportTestReportTeardownComponentElements(element);
44077      composeElementClose(element);
44078      xml.exit(FHIR_NS, name);
44079    }
44080  }
44081
44082  protected void composeTestReportTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
44083      composeBackboneElementElements(element);
44084      if (element.hasAction()) { 
44085        for (TestReport.TeardownActionComponent e : element.getAction()) 
44086          composeTestReportTeardownActionComponent("action", e);
44087      }
44088  }
44089
44090  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
44091    if (element != null) {
44092      composeElementAttributes(element);
44093      xml.enter(FHIR_NS, name);
44094      composeTestReportTeardownActionComponentElements(element);
44095      composeElementClose(element);
44096      xml.exit(FHIR_NS, name);
44097    }
44098  }
44099
44100  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
44101      composeBackboneElementElements(element);
44102      if (element.hasOperation()) {
44103        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
44104      }
44105  }
44106
44107  protected void composeTestScript(String name, TestScript element) throws IOException {
44108    if (element != null) {
44109      composeDomainResourceAttributes(element);
44110      xml.enter(FHIR_NS, name);
44111      composeTestScriptElements(element);
44112      composeElementClose(element);
44113      xml.exit(FHIR_NS, name);
44114    }
44115  }
44116
44117  protected void composeTestScriptElements(TestScript element) throws IOException {
44118      composeDomainResourceElements(element);
44119      if (element.hasUrlElement()) {
44120        composeUri("url", element.getUrlElement());
44121      }
44122      if (element.hasIdentifier()) {
44123        composeIdentifier("identifier", element.getIdentifier());
44124      }
44125      if (element.hasVersionElement()) {
44126        composeString("version", element.getVersionElement());
44127      }
44128      if (element.hasNameElement()) {
44129        composeString("name", element.getNameElement());
44130      }
44131      if (element.hasTitleElement()) {
44132        composeString("title", element.getTitleElement());
44133      }
44134      if (element.hasStatusElement())
44135        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44136      if (element.hasExperimentalElement()) {
44137        composeBoolean("experimental", element.getExperimentalElement());
44138      }
44139      if (element.hasDateElement()) {
44140        composeDateTime("date", element.getDateElement());
44141      }
44142      if (element.hasPublisherElement()) {
44143        composeString("publisher", element.getPublisherElement());
44144      }
44145      if (element.hasContact()) { 
44146        for (ContactDetail e : element.getContact()) 
44147          composeContactDetail("contact", e);
44148      }
44149      if (element.hasDescriptionElement()) {
44150        composeMarkdown("description", element.getDescriptionElement());
44151      }
44152      if (element.hasUseContext()) { 
44153        for (UsageContext e : element.getUseContext()) 
44154          composeUsageContext("useContext", e);
44155      }
44156      if (element.hasJurisdiction()) { 
44157        for (CodeableConcept e : element.getJurisdiction()) 
44158          composeCodeableConcept("jurisdiction", e);
44159      }
44160      if (element.hasPurposeElement()) {
44161        composeMarkdown("purpose", element.getPurposeElement());
44162      }
44163      if (element.hasCopyrightElement()) {
44164        composeMarkdown("copyright", element.getCopyrightElement());
44165      }
44166      if (element.hasOrigin()) { 
44167        for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
44168          composeTestScriptTestScriptOriginComponent("origin", e);
44169      }
44170      if (element.hasDestination()) { 
44171        for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
44172          composeTestScriptTestScriptDestinationComponent("destination", e);
44173      }
44174      if (element.hasMetadata()) {
44175        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
44176      }
44177      if (element.hasFixture()) { 
44178        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
44179          composeTestScriptTestScriptFixtureComponent("fixture", e);
44180      }
44181      if (element.hasProfile()) { 
44182        for (Reference e : element.getProfile()) 
44183          composeReference("profile", e);
44184      }
44185      if (element.hasVariable()) { 
44186        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
44187          composeTestScriptTestScriptVariableComponent("variable", e);
44188      }
44189      if (element.hasRule()) { 
44190        for (TestScript.TestScriptRuleComponent e : element.getRule()) 
44191          composeTestScriptTestScriptRuleComponent("rule", e);
44192      }
44193      if (element.hasRuleset()) { 
44194        for (TestScript.TestScriptRulesetComponent e : element.getRuleset()) 
44195          composeTestScriptTestScriptRulesetComponent("ruleset", e);
44196      }
44197      if (element.hasSetup()) {
44198        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
44199      }
44200      if (element.hasTest()) { 
44201        for (TestScript.TestScriptTestComponent e : element.getTest()) 
44202          composeTestScriptTestScriptTestComponent("test", e);
44203      }
44204      if (element.hasTeardown()) {
44205        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
44206      }
44207  }
44208
44209  protected void composeTestScriptTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
44210    if (element != null) {
44211      composeElementAttributes(element);
44212      xml.enter(FHIR_NS, name);
44213      composeTestScriptTestScriptOriginComponentElements(element);
44214      composeElementClose(element);
44215      xml.exit(FHIR_NS, name);
44216    }
44217  }
44218
44219  protected void composeTestScriptTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
44220      composeBackboneElementElements(element);
44221      if (element.hasIndexElement()) {
44222        composeInteger("index", element.getIndexElement());
44223      }
44224      if (element.hasProfile()) {
44225        composeCoding("profile", element.getProfile());
44226      }
44227  }
44228
44229  protected void composeTestScriptTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
44230    if (element != null) {
44231      composeElementAttributes(element);
44232      xml.enter(FHIR_NS, name);
44233      composeTestScriptTestScriptDestinationComponentElements(element);
44234      composeElementClose(element);
44235      xml.exit(FHIR_NS, name);
44236    }
44237  }
44238
44239  protected void composeTestScriptTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
44240      composeBackboneElementElements(element);
44241      if (element.hasIndexElement()) {
44242        composeInteger("index", element.getIndexElement());
44243      }
44244      if (element.hasProfile()) {
44245        composeCoding("profile", element.getProfile());
44246      }
44247  }
44248
44249  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
44250    if (element != null) {
44251      composeElementAttributes(element);
44252      xml.enter(FHIR_NS, name);
44253      composeTestScriptTestScriptMetadataComponentElements(element);
44254      composeElementClose(element);
44255      xml.exit(FHIR_NS, name);
44256    }
44257  }
44258
44259  protected void composeTestScriptTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
44260      composeBackboneElementElements(element);
44261      if (element.hasLink()) { 
44262        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
44263          composeTestScriptTestScriptMetadataLinkComponent("link", e);
44264      }
44265      if (element.hasCapability()) { 
44266        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
44267          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
44268      }
44269  }
44270
44271  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
44272    if (element != null) {
44273      composeElementAttributes(element);
44274      xml.enter(FHIR_NS, name);
44275      composeTestScriptTestScriptMetadataLinkComponentElements(element);
44276      composeElementClose(element);
44277      xml.exit(FHIR_NS, name);
44278    }
44279  }
44280
44281  protected void composeTestScriptTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
44282      composeBackboneElementElements(element);
44283      if (element.hasUrlElement()) {
44284        composeUri("url", element.getUrlElement());
44285      }
44286      if (element.hasDescriptionElement()) {
44287        composeString("description", element.getDescriptionElement());
44288      }
44289  }
44290
44291  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
44292    if (element != null) {
44293      composeElementAttributes(element);
44294      xml.enter(FHIR_NS, name);
44295      composeTestScriptTestScriptMetadataCapabilityComponentElements(element);
44296      composeElementClose(element);
44297      xml.exit(FHIR_NS, name);
44298    }
44299  }
44300
44301  protected void composeTestScriptTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
44302      composeBackboneElementElements(element);
44303      if (element.hasRequiredElement()) {
44304        composeBoolean("required", element.getRequiredElement());
44305      }
44306      if (element.hasValidatedElement()) {
44307        composeBoolean("validated", element.getValidatedElement());
44308      }
44309      if (element.hasDescriptionElement()) {
44310        composeString("description", element.getDescriptionElement());
44311      }
44312      if (element.hasOrigin()) { 
44313        for (IntegerType e : element.getOrigin()) 
44314          composeInteger("origin", e);
44315      }
44316      if (element.hasDestinationElement()) {
44317        composeInteger("destination", element.getDestinationElement());
44318      }
44319      if (element.hasLink()) { 
44320        for (UriType e : element.getLink()) 
44321          composeUri("link", e);
44322      }
44323      if (element.hasCapabilitiesElement()) {
44324        composeCanonical("capabilities", element.getCapabilitiesElement());
44325      }
44326  }
44327
44328  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
44329    if (element != null) {
44330      composeElementAttributes(element);
44331      xml.enter(FHIR_NS, name);
44332      composeTestScriptTestScriptFixtureComponentElements(element);
44333      composeElementClose(element);
44334      xml.exit(FHIR_NS, name);
44335    }
44336  }
44337
44338  protected void composeTestScriptTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
44339      composeBackboneElementElements(element);
44340      if (element.hasAutocreateElement()) {
44341        composeBoolean("autocreate", element.getAutocreateElement());
44342      }
44343      if (element.hasAutodeleteElement()) {
44344        composeBoolean("autodelete", element.getAutodeleteElement());
44345      }
44346      if (element.hasResource()) {
44347        composeReference("resource", element.getResource());
44348      }
44349  }
44350
44351  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
44352    if (element != null) {
44353      composeElementAttributes(element);
44354      xml.enter(FHIR_NS, name);
44355      composeTestScriptTestScriptVariableComponentElements(element);
44356      composeElementClose(element);
44357      xml.exit(FHIR_NS, name);
44358    }
44359  }
44360
44361  protected void composeTestScriptTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
44362      composeBackboneElementElements(element);
44363      if (element.hasNameElement()) {
44364        composeString("name", element.getNameElement());
44365      }
44366      if (element.hasDefaultValueElement()) {
44367        composeString("defaultValue", element.getDefaultValueElement());
44368      }
44369      if (element.hasDescriptionElement()) {
44370        composeString("description", element.getDescriptionElement());
44371      }
44372      if (element.hasExpressionElement()) {
44373        composeString("expression", element.getExpressionElement());
44374      }
44375      if (element.hasHeaderFieldElement()) {
44376        composeString("headerField", element.getHeaderFieldElement());
44377      }
44378      if (element.hasHintElement()) {
44379        composeString("hint", element.getHintElement());
44380      }
44381      if (element.hasPathElement()) {
44382        composeString("path", element.getPathElement());
44383      }
44384      if (element.hasSourceIdElement()) {
44385        composeId("sourceId", element.getSourceIdElement());
44386      }
44387  }
44388
44389  protected void composeTestScriptTestScriptRuleComponent(String name, TestScript.TestScriptRuleComponent element) throws IOException {
44390    if (element != null) {
44391      composeElementAttributes(element);
44392      xml.enter(FHIR_NS, name);
44393      composeTestScriptTestScriptRuleComponentElements(element);
44394      composeElementClose(element);
44395      xml.exit(FHIR_NS, name);
44396    }
44397  }
44398
44399  protected void composeTestScriptTestScriptRuleComponentElements(TestScript.TestScriptRuleComponent element) throws IOException {
44400      composeBackboneElementElements(element);
44401      if (element.hasResource()) {
44402        composeReference("resource", element.getResource());
44403      }
44404      if (element.hasParam()) { 
44405        for (TestScript.RuleParamComponent e : element.getParam()) 
44406          composeTestScriptRuleParamComponent("param", e);
44407      }
44408  }
44409
44410  protected void composeTestScriptRuleParamComponent(String name, TestScript.RuleParamComponent element) throws IOException {
44411    if (element != null) {
44412      composeElementAttributes(element);
44413      xml.enter(FHIR_NS, name);
44414      composeTestScriptRuleParamComponentElements(element);
44415      composeElementClose(element);
44416      xml.exit(FHIR_NS, name);
44417    }
44418  }
44419
44420  protected void composeTestScriptRuleParamComponentElements(TestScript.RuleParamComponent element) throws IOException {
44421      composeBackboneElementElements(element);
44422      if (element.hasNameElement()) {
44423        composeString("name", element.getNameElement());
44424      }
44425      if (element.hasValueElement()) {
44426        composeString("value", element.getValueElement());
44427      }
44428  }
44429
44430  protected void composeTestScriptTestScriptRulesetComponent(String name, TestScript.TestScriptRulesetComponent element) throws IOException {
44431    if (element != null) {
44432      composeElementAttributes(element);
44433      xml.enter(FHIR_NS, name);
44434      composeTestScriptTestScriptRulesetComponentElements(element);
44435      composeElementClose(element);
44436      xml.exit(FHIR_NS, name);
44437    }
44438  }
44439
44440  protected void composeTestScriptTestScriptRulesetComponentElements(TestScript.TestScriptRulesetComponent element) throws IOException {
44441      composeBackboneElementElements(element);
44442      if (element.hasResource()) {
44443        composeReference("resource", element.getResource());
44444      }
44445      if (element.hasRule()) { 
44446        for (TestScript.RulesetRuleComponent e : element.getRule()) 
44447          composeTestScriptRulesetRuleComponent("rule", e);
44448      }
44449  }
44450
44451  protected void composeTestScriptRulesetRuleComponent(String name, TestScript.RulesetRuleComponent element) throws IOException {
44452    if (element != null) {
44453      composeElementAttributes(element);
44454      xml.enter(FHIR_NS, name);
44455      composeTestScriptRulesetRuleComponentElements(element);
44456      composeElementClose(element);
44457      xml.exit(FHIR_NS, name);
44458    }
44459  }
44460
44461  protected void composeTestScriptRulesetRuleComponentElements(TestScript.RulesetRuleComponent element) throws IOException {
44462      composeBackboneElementElements(element);
44463      if (element.hasRuleIdElement()) {
44464        composeId("ruleId", element.getRuleIdElement());
44465      }
44466      if (element.hasParam()) { 
44467        for (TestScript.RulesetRuleParamComponent e : element.getParam()) 
44468          composeTestScriptRulesetRuleParamComponent("param", e);
44469      }
44470  }
44471
44472  protected void composeTestScriptRulesetRuleParamComponent(String name, TestScript.RulesetRuleParamComponent element) throws IOException {
44473    if (element != null) {
44474      composeElementAttributes(element);
44475      xml.enter(FHIR_NS, name);
44476      composeTestScriptRulesetRuleParamComponentElements(element);
44477      composeElementClose(element);
44478      xml.exit(FHIR_NS, name);
44479    }
44480  }
44481
44482  protected void composeTestScriptRulesetRuleParamComponentElements(TestScript.RulesetRuleParamComponent element) throws IOException {
44483      composeBackboneElementElements(element);
44484      if (element.hasNameElement()) {
44485        composeString("name", element.getNameElement());
44486      }
44487      if (element.hasValueElement()) {
44488        composeString("value", element.getValueElement());
44489      }
44490  }
44491
44492  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
44493    if (element != null) {
44494      composeElementAttributes(element);
44495      xml.enter(FHIR_NS, name);
44496      composeTestScriptTestScriptSetupComponentElements(element);
44497      composeElementClose(element);
44498      xml.exit(FHIR_NS, name);
44499    }
44500  }
44501
44502  protected void composeTestScriptTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
44503      composeBackboneElementElements(element);
44504      if (element.hasAction()) { 
44505        for (TestScript.SetupActionComponent e : element.getAction()) 
44506          composeTestScriptSetupActionComponent("action", e);
44507      }
44508  }
44509
44510  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
44511    if (element != null) {
44512      composeElementAttributes(element);
44513      xml.enter(FHIR_NS, name);
44514      composeTestScriptSetupActionComponentElements(element);
44515      composeElementClose(element);
44516      xml.exit(FHIR_NS, name);
44517    }
44518  }
44519
44520  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
44521      composeBackboneElementElements(element);
44522      if (element.hasOperation()) {
44523        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
44524      }
44525      if (element.hasAssert()) {
44526        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
44527      }
44528  }
44529
44530  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
44531    if (element != null) {
44532      composeElementAttributes(element);
44533      xml.enter(FHIR_NS, name);
44534      composeTestScriptSetupActionOperationComponentElements(element);
44535      composeElementClose(element);
44536      xml.exit(FHIR_NS, name);
44537    }
44538  }
44539
44540  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
44541      composeBackboneElementElements(element);
44542      if (element.hasType()) {
44543        composeCoding("type", element.getType());
44544      }
44545      if (element.hasResourceElement()) {
44546        composeCode("resource", element.getResourceElement());
44547      }
44548      if (element.hasLabelElement()) {
44549        composeString("label", element.getLabelElement());
44550      }
44551      if (element.hasDescriptionElement()) {
44552        composeString("description", element.getDescriptionElement());
44553      }
44554      if (element.hasAcceptElement()) {
44555        composeCode("accept", element.getAcceptElement());
44556      }
44557      if (element.hasContentTypeElement()) {
44558        composeCode("contentType", element.getContentTypeElement());
44559      }
44560      if (element.hasDestinationElement()) {
44561        composeInteger("destination", element.getDestinationElement());
44562      }
44563      if (element.hasEncodeRequestUrlElement()) {
44564        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
44565      }
44566      if (element.hasOriginElement()) {
44567        composeInteger("origin", element.getOriginElement());
44568      }
44569      if (element.hasParamsElement()) {
44570        composeString("params", element.getParamsElement());
44571      }
44572      if (element.hasRequestHeader()) { 
44573        for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
44574          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
44575      }
44576      if (element.hasRequestIdElement()) {
44577        composeId("requestId", element.getRequestIdElement());
44578      }
44579      if (element.hasResponseIdElement()) {
44580        composeId("responseId", element.getResponseIdElement());
44581      }
44582      if (element.hasSourceIdElement()) {
44583        composeId("sourceId", element.getSourceIdElement());
44584      }
44585      if (element.hasTargetIdElement()) {
44586        composeId("targetId", element.getTargetIdElement());
44587      }
44588      if (element.hasUrlElement()) {
44589        composeString("url", element.getUrlElement());
44590      }
44591  }
44592
44593  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
44594    if (element != null) {
44595      composeElementAttributes(element);
44596      xml.enter(FHIR_NS, name);
44597      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
44598      composeElementClose(element);
44599      xml.exit(FHIR_NS, name);
44600    }
44601  }
44602
44603  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
44604      composeBackboneElementElements(element);
44605      if (element.hasFieldElement()) {
44606        composeString("field", element.getFieldElement());
44607      }
44608      if (element.hasValueElement()) {
44609        composeString("value", element.getValueElement());
44610      }
44611  }
44612
44613  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
44614    if (element != null) {
44615      composeElementAttributes(element);
44616      xml.enter(FHIR_NS, name);
44617      composeTestScriptSetupActionAssertComponentElements(element);
44618      composeElementClose(element);
44619      xml.exit(FHIR_NS, name);
44620    }
44621  }
44622
44623  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
44624      composeBackboneElementElements(element);
44625      if (element.hasLabelElement()) {
44626        composeString("label", element.getLabelElement());
44627      }
44628      if (element.hasDescriptionElement()) {
44629        composeString("description", element.getDescriptionElement());
44630      }
44631      if (element.hasDirectionElement())
44632        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
44633      if (element.hasCompareToSourceIdElement()) {
44634        composeString("compareToSourceId", element.getCompareToSourceIdElement());
44635      }
44636      if (element.hasCompareToSourceExpressionElement()) {
44637        composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
44638      }
44639      if (element.hasCompareToSourcePathElement()) {
44640        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
44641      }
44642      if (element.hasContentTypeElement()) {
44643        composeCode("contentType", element.getContentTypeElement());
44644      }
44645      if (element.hasExpressionElement()) {
44646        composeString("expression", element.getExpressionElement());
44647      }
44648      if (element.hasHeaderFieldElement()) {
44649        composeString("headerField", element.getHeaderFieldElement());
44650      }
44651      if (element.hasMinimumIdElement()) {
44652        composeString("minimumId", element.getMinimumIdElement());
44653      }
44654      if (element.hasNavigationLinksElement()) {
44655        composeBoolean("navigationLinks", element.getNavigationLinksElement());
44656      }
44657      if (element.hasOperatorElement())
44658        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
44659      if (element.hasPathElement()) {
44660        composeString("path", element.getPathElement());
44661      }
44662      if (element.hasRequestMethodElement())
44663        composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
44664      if (element.hasRequestURLElement()) {
44665        composeString("requestURL", element.getRequestURLElement());
44666      }
44667      if (element.hasResourceElement()) {
44668        composeCode("resource", element.getResourceElement());
44669      }
44670      if (element.hasResponseElement())
44671        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
44672      if (element.hasResponseCodeElement()) {
44673        composeString("responseCode", element.getResponseCodeElement());
44674      }
44675      if (element.hasRule()) {
44676        composeTestScriptActionAssertRuleComponent("rule", element.getRule());
44677      }
44678      if (element.hasRuleset()) {
44679        composeTestScriptActionAssertRulesetComponent("ruleset", element.getRuleset());
44680      }
44681      if (element.hasSourceIdElement()) {
44682        composeId("sourceId", element.getSourceIdElement());
44683      }
44684      if (element.hasValidateProfileIdElement()) {
44685        composeId("validateProfileId", element.getValidateProfileIdElement());
44686      }
44687      if (element.hasValueElement()) {
44688        composeString("value", element.getValueElement());
44689      }
44690      if (element.hasWarningOnlyElement()) {
44691        composeBoolean("warningOnly", element.getWarningOnlyElement());
44692      }
44693  }
44694
44695  protected void composeTestScriptActionAssertRuleComponent(String name, TestScript.ActionAssertRuleComponent element) throws IOException {
44696    if (element != null) {
44697      composeElementAttributes(element);
44698      xml.enter(FHIR_NS, name);
44699      composeTestScriptActionAssertRuleComponentElements(element);
44700      composeElementClose(element);
44701      xml.exit(FHIR_NS, name);
44702    }
44703  }
44704
44705  protected void composeTestScriptActionAssertRuleComponentElements(TestScript.ActionAssertRuleComponent element) throws IOException {
44706      composeBackboneElementElements(element);
44707      if (element.hasRuleIdElement()) {
44708        composeId("ruleId", element.getRuleIdElement());
44709      }
44710      if (element.hasParam()) { 
44711        for (TestScript.ActionAssertRuleParamComponent e : element.getParam()) 
44712          composeTestScriptActionAssertRuleParamComponent("param", e);
44713      }
44714  }
44715
44716  protected void composeTestScriptActionAssertRuleParamComponent(String name, TestScript.ActionAssertRuleParamComponent element) throws IOException {
44717    if (element != null) {
44718      composeElementAttributes(element);
44719      xml.enter(FHIR_NS, name);
44720      composeTestScriptActionAssertRuleParamComponentElements(element);
44721      composeElementClose(element);
44722      xml.exit(FHIR_NS, name);
44723    }
44724  }
44725
44726  protected void composeTestScriptActionAssertRuleParamComponentElements(TestScript.ActionAssertRuleParamComponent element) throws IOException {
44727      composeBackboneElementElements(element);
44728      if (element.hasNameElement()) {
44729        composeString("name", element.getNameElement());
44730      }
44731      if (element.hasValueElement()) {
44732        composeString("value", element.getValueElement());
44733      }
44734  }
44735
44736  protected void composeTestScriptActionAssertRulesetComponent(String name, TestScript.ActionAssertRulesetComponent element) throws IOException {
44737    if (element != null) {
44738      composeElementAttributes(element);
44739      xml.enter(FHIR_NS, name);
44740      composeTestScriptActionAssertRulesetComponentElements(element);
44741      composeElementClose(element);
44742      xml.exit(FHIR_NS, name);
44743    }
44744  }
44745
44746  protected void composeTestScriptActionAssertRulesetComponentElements(TestScript.ActionAssertRulesetComponent element) throws IOException {
44747      composeBackboneElementElements(element);
44748      if (element.hasRulesetIdElement()) {
44749        composeId("rulesetId", element.getRulesetIdElement());
44750      }
44751      if (element.hasRule()) { 
44752        for (TestScript.ActionAssertRulesetRuleComponent e : element.getRule()) 
44753          composeTestScriptActionAssertRulesetRuleComponent("rule", e);
44754      }
44755  }
44756
44757  protected void composeTestScriptActionAssertRulesetRuleComponent(String name, TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
44758    if (element != null) {
44759      composeElementAttributes(element);
44760      xml.enter(FHIR_NS, name);
44761      composeTestScriptActionAssertRulesetRuleComponentElements(element);
44762      composeElementClose(element);
44763      xml.exit(FHIR_NS, name);
44764    }
44765  }
44766
44767  protected void composeTestScriptActionAssertRulesetRuleComponentElements(TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
44768      composeBackboneElementElements(element);
44769      if (element.hasRuleIdElement()) {
44770        composeId("ruleId", element.getRuleIdElement());
44771      }
44772      if (element.hasParam()) { 
44773        for (TestScript.ActionAssertRulesetRuleParamComponent e : element.getParam()) 
44774          composeTestScriptActionAssertRulesetRuleParamComponent("param", e);
44775      }
44776  }
44777
44778  protected void composeTestScriptActionAssertRulesetRuleParamComponent(String name, TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
44779    if (element != null) {
44780      composeElementAttributes(element);
44781      xml.enter(FHIR_NS, name);
44782      composeTestScriptActionAssertRulesetRuleParamComponentElements(element);
44783      composeElementClose(element);
44784      xml.exit(FHIR_NS, name);
44785    }
44786  }
44787
44788  protected void composeTestScriptActionAssertRulesetRuleParamComponentElements(TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
44789      composeBackboneElementElements(element);
44790      if (element.hasNameElement()) {
44791        composeString("name", element.getNameElement());
44792      }
44793      if (element.hasValueElement()) {
44794        composeString("value", element.getValueElement());
44795      }
44796  }
44797
44798  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
44799    if (element != null) {
44800      composeElementAttributes(element);
44801      xml.enter(FHIR_NS, name);
44802      composeTestScriptTestScriptTestComponentElements(element);
44803      composeElementClose(element);
44804      xml.exit(FHIR_NS, name);
44805    }
44806  }
44807
44808  protected void composeTestScriptTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
44809      composeBackboneElementElements(element);
44810      if (element.hasNameElement()) {
44811        composeString("name", element.getNameElement());
44812      }
44813      if (element.hasDescriptionElement()) {
44814        composeString("description", element.getDescriptionElement());
44815      }
44816      if (element.hasAction()) { 
44817        for (TestScript.TestActionComponent e : element.getAction()) 
44818          composeTestScriptTestActionComponent("action", e);
44819      }
44820  }
44821
44822  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
44823    if (element != null) {
44824      composeElementAttributes(element);
44825      xml.enter(FHIR_NS, name);
44826      composeTestScriptTestActionComponentElements(element);
44827      composeElementClose(element);
44828      xml.exit(FHIR_NS, name);
44829    }
44830  }
44831
44832  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
44833      composeBackboneElementElements(element);
44834      if (element.hasOperation()) {
44835        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
44836      }
44837      if (element.hasAssert()) {
44838        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
44839      }
44840  }
44841
44842  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
44843    if (element != null) {
44844      composeElementAttributes(element);
44845      xml.enter(FHIR_NS, name);
44846      composeTestScriptTestScriptTeardownComponentElements(element);
44847      composeElementClose(element);
44848      xml.exit(FHIR_NS, name);
44849    }
44850  }
44851
44852  protected void composeTestScriptTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
44853      composeBackboneElementElements(element);
44854      if (element.hasAction()) { 
44855        for (TestScript.TeardownActionComponent e : element.getAction()) 
44856          composeTestScriptTeardownActionComponent("action", e);
44857      }
44858  }
44859
44860  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
44861    if (element != null) {
44862      composeElementAttributes(element);
44863      xml.enter(FHIR_NS, name);
44864      composeTestScriptTeardownActionComponentElements(element);
44865      composeElementClose(element);
44866      xml.exit(FHIR_NS, name);
44867    }
44868  }
44869
44870  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
44871      composeBackboneElementElements(element);
44872      if (element.hasOperation()) {
44873        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
44874      }
44875  }
44876
44877  protected void composeUserSession(String name, UserSession element) throws IOException {
44878    if (element != null) {
44879      composeDomainResourceAttributes(element);
44880      xml.enter(FHIR_NS, name);
44881      composeUserSessionElements(element);
44882      composeElementClose(element);
44883      xml.exit(FHIR_NS, name);
44884    }
44885  }
44886
44887  protected void composeUserSessionElements(UserSession element) throws IOException {
44888      composeDomainResourceElements(element);
44889      if (element.hasIdentifier()) {
44890        composeIdentifier("identifier", element.getIdentifier());
44891      }
44892      if (element.hasUser()) {
44893        composeReference("user", element.getUser());
44894      }
44895      if (element.hasStatus()) {
44896        composeUserSessionUserSessionStatusComponent("status", element.getStatus());
44897      }
44898      if (element.hasWorkstation()) {
44899        composeIdentifier("workstation", element.getWorkstation());
44900      }
44901      if (element.hasFocus()) { 
44902        for (Reference e : element.getFocus()) 
44903          composeReference("focus", e);
44904      }
44905      if (element.hasCreatedElement()) {
44906        composeInstant("created", element.getCreatedElement());
44907      }
44908      if (element.hasExpiresElement()) {
44909        composeInstant("expires", element.getExpiresElement());
44910      }
44911      if (element.hasContext()) { 
44912        for (UserSession.UserSessionContextComponent e : element.getContext()) 
44913          composeUserSessionUserSessionContextComponent("context", e);
44914      }
44915  }
44916
44917  protected void composeUserSessionUserSessionStatusComponent(String name, UserSession.UserSessionStatusComponent element) throws IOException {
44918    if (element != null) {
44919      composeElementAttributes(element);
44920      xml.enter(FHIR_NS, name);
44921      composeUserSessionUserSessionStatusComponentElements(element);
44922      composeElementClose(element);
44923      xml.exit(FHIR_NS, name);
44924    }
44925  }
44926
44927  protected void composeUserSessionUserSessionStatusComponentElements(UserSession.UserSessionStatusComponent element) throws IOException {
44928      composeBackboneElementElements(element);
44929      if (element.hasCodeElement())
44930        composeEnumeration("code", element.getCodeElement(), new UserSession.UserSessionStatusEnumFactory());
44931      if (element.hasSourceElement())
44932        composeEnumeration("source", element.getSourceElement(), new UserSession.UserSessionStatusSourceEnumFactory());
44933  }
44934
44935  protected void composeUserSessionUserSessionContextComponent(String name, UserSession.UserSessionContextComponent element) throws IOException {
44936    if (element != null) {
44937      composeElementAttributes(element);
44938      xml.enter(FHIR_NS, name);
44939      composeUserSessionUserSessionContextComponentElements(element);
44940      composeElementClose(element);
44941      xml.exit(FHIR_NS, name);
44942    }
44943  }
44944
44945  protected void composeUserSessionUserSessionContextComponentElements(UserSession.UserSessionContextComponent element) throws IOException {
44946      composeBackboneElementElements(element);
44947      if (element.hasTypeElement()) {
44948        composeString("type", element.getTypeElement());
44949      }
44950      if (element.hasValue()) {
44951        composeType("value", element.getValue());
44952      }  }
44953
44954  protected void composeValueSet(String name, ValueSet element) throws IOException {
44955    if (element != null) {
44956      composeDomainResourceAttributes(element);
44957      xml.enter(FHIR_NS, name);
44958      composeValueSetElements(element);
44959      composeElementClose(element);
44960      xml.exit(FHIR_NS, name);
44961    }
44962  }
44963
44964  protected void composeValueSetElements(ValueSet element) throws IOException {
44965      composeDomainResourceElements(element);
44966      if (element.hasUrlElement()) {
44967        composeUri("url", element.getUrlElement());
44968      }
44969      if (element.hasIdentifier()) { 
44970        for (Identifier e : element.getIdentifier()) 
44971          composeIdentifier("identifier", e);
44972      }
44973      if (element.hasVersionElement()) {
44974        composeString("version", element.getVersionElement());
44975      }
44976      if (element.hasNameElement()) {
44977        composeString("name", element.getNameElement());
44978      }
44979      if (element.hasTitleElement()) {
44980        composeString("title", element.getTitleElement());
44981      }
44982      if (element.hasStatusElement())
44983        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44984      if (element.hasExperimentalElement()) {
44985        composeBoolean("experimental", element.getExperimentalElement());
44986      }
44987      if (element.hasDateElement()) {
44988        composeDateTime("date", element.getDateElement());
44989      }
44990      if (element.hasPublisherElement()) {
44991        composeString("publisher", element.getPublisherElement());
44992      }
44993      if (element.hasContact()) { 
44994        for (ContactDetail e : element.getContact()) 
44995          composeContactDetail("contact", e);
44996      }
44997      if (element.hasDescriptionElement()) {
44998        composeMarkdown("description", element.getDescriptionElement());
44999      }
45000      if (element.hasUseContext()) { 
45001        for (UsageContext e : element.getUseContext()) 
45002          composeUsageContext("useContext", e);
45003      }
45004      if (element.hasJurisdiction()) { 
45005        for (CodeableConcept e : element.getJurisdiction()) 
45006          composeCodeableConcept("jurisdiction", e);
45007      }
45008      if (element.hasImmutableElement()) {
45009        composeBoolean("immutable", element.getImmutableElement());
45010      }
45011      if (element.hasPurposeElement()) {
45012        composeMarkdown("purpose", element.getPurposeElement());
45013      }
45014      if (element.hasCopyrightElement()) {
45015        composeMarkdown("copyright", element.getCopyrightElement());
45016      }
45017      if (element.hasExtensibleElement()) {
45018        composeBoolean("extensible", element.getExtensibleElement());
45019      }
45020      if (element.hasCompose()) {
45021        composeValueSetValueSetComposeComponent("compose", element.getCompose());
45022      }
45023      if (element.hasExpansion()) {
45024        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
45025      }
45026  }
45027
45028  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
45029    if (element != null) {
45030      composeElementAttributes(element);
45031      xml.enter(FHIR_NS, name);
45032      composeValueSetValueSetComposeComponentElements(element);
45033      composeElementClose(element);
45034      xml.exit(FHIR_NS, name);
45035    }
45036  }
45037
45038  protected void composeValueSetValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
45039      composeBackboneElementElements(element);
45040      if (element.hasLockedDateElement()) {
45041        composeDate("lockedDate", element.getLockedDateElement());
45042      }
45043      if (element.hasInactiveElement()) {
45044        composeBoolean("inactive", element.getInactiveElement());
45045      }
45046      if (element.hasInclude()) { 
45047        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
45048          composeValueSetConceptSetComponent("include", e);
45049      }
45050      if (element.hasExclude()) { 
45051        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
45052          composeValueSetConceptSetComponent("exclude", e);
45053      }
45054  }
45055
45056  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
45057    if (element != null) {
45058      composeElementAttributes(element);
45059      xml.enter(FHIR_NS, name);
45060      composeValueSetConceptSetComponentElements(element);
45061      composeElementClose(element);
45062      xml.exit(FHIR_NS, name);
45063    }
45064  }
45065
45066  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
45067      composeBackboneElementElements(element);
45068      if (element.hasSystemElement()) {
45069        composeUri("system", element.getSystemElement());
45070      }
45071      if (element.hasVersionElement()) {
45072        composeString("version", element.getVersionElement());
45073      }
45074      if (element.hasConcept()) { 
45075        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
45076          composeValueSetConceptReferenceComponent("concept", e);
45077      }
45078      if (element.hasFilter()) { 
45079        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
45080          composeValueSetConceptSetFilterComponent("filter", e);
45081      }
45082      if (element.hasValueSet()) { 
45083        for (CanonicalType e : element.getValueSet()) 
45084          composeCanonical("valueSet", e);
45085      }
45086  }
45087
45088  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
45089    if (element != null) {
45090      composeElementAttributes(element);
45091      xml.enter(FHIR_NS, name);
45092      composeValueSetConceptReferenceComponentElements(element);
45093      composeElementClose(element);
45094      xml.exit(FHIR_NS, name);
45095    }
45096  }
45097
45098  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
45099      composeBackboneElementElements(element);
45100      if (element.hasCodeElement()) {
45101        composeCode("code", element.getCodeElement());
45102      }
45103      if (element.hasDisplayElement()) {
45104        composeString("display", element.getDisplayElement());
45105      }
45106      if (element.hasDesignation()) { 
45107        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
45108          composeValueSetConceptReferenceDesignationComponent("designation", e);
45109      }
45110  }
45111
45112  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
45113    if (element != null) {
45114      composeElementAttributes(element);
45115      xml.enter(FHIR_NS, name);
45116      composeValueSetConceptReferenceDesignationComponentElements(element);
45117      composeElementClose(element);
45118      xml.exit(FHIR_NS, name);
45119    }
45120  }
45121
45122  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
45123      composeBackboneElementElements(element);
45124      if (element.hasLanguageElement()) {
45125        composeCode("language", element.getLanguageElement());
45126      }
45127      if (element.hasUse()) {
45128        composeCoding("use", element.getUse());
45129      }
45130      if (element.hasValueElement()) {
45131        composeString("value", element.getValueElement());
45132      }
45133  }
45134
45135  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
45136    if (element != null) {
45137      composeElementAttributes(element);
45138      xml.enter(FHIR_NS, name);
45139      composeValueSetConceptSetFilterComponentElements(element);
45140      composeElementClose(element);
45141      xml.exit(FHIR_NS, name);
45142    }
45143  }
45144
45145  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
45146      composeBackboneElementElements(element);
45147      if (element.hasPropertyElement()) {
45148        composeCode("property", element.getPropertyElement());
45149      }
45150      if (element.hasOpElement())
45151        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
45152      if (element.hasValueElement()) {
45153        composeString("value", element.getValueElement());
45154      }
45155  }
45156
45157  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
45158    if (element != null) {
45159      composeElementAttributes(element);
45160      xml.enter(FHIR_NS, name);
45161      composeValueSetValueSetExpansionComponentElements(element);
45162      composeElementClose(element);
45163      xml.exit(FHIR_NS, name);
45164    }
45165  }
45166
45167  protected void composeValueSetValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
45168      composeBackboneElementElements(element);
45169      if (element.hasIdentifierElement()) {
45170        composeUri("identifier", element.getIdentifierElement());
45171      }
45172      if (element.hasTimestampElement()) {
45173        composeDateTime("timestamp", element.getTimestampElement());
45174      }
45175      if (element.hasTotalElement()) {
45176        composeInteger("total", element.getTotalElement());
45177      }
45178      if (element.hasOffsetElement()) {
45179        composeInteger("offset", element.getOffsetElement());
45180      }
45181      if (element.hasParameter()) { 
45182        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
45183          composeValueSetValueSetExpansionParameterComponent("parameter", e);
45184      }
45185      if (element.hasContains()) { 
45186        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
45187          composeValueSetValueSetExpansionContainsComponent("contains", e);
45188      }
45189  }
45190
45191  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
45192    if (element != null) {
45193      composeElementAttributes(element);
45194      xml.enter(FHIR_NS, name);
45195      composeValueSetValueSetExpansionParameterComponentElements(element);
45196      composeElementClose(element);
45197      xml.exit(FHIR_NS, name);
45198    }
45199  }
45200
45201  protected void composeValueSetValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
45202      composeBackboneElementElements(element);
45203      if (element.hasNameElement()) {
45204        composeString("name", element.getNameElement());
45205      }
45206      if (element.hasValue()) {
45207        composeType("value", element.getValue());
45208      }  }
45209
45210  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
45211    if (element != null) {
45212      composeElementAttributes(element);
45213      xml.enter(FHIR_NS, name);
45214      composeValueSetValueSetExpansionContainsComponentElements(element);
45215      composeElementClose(element);
45216      xml.exit(FHIR_NS, name);
45217    }
45218  }
45219
45220  protected void composeValueSetValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
45221      composeBackboneElementElements(element);
45222      if (element.hasSystemElement()) {
45223        composeUri("system", element.getSystemElement());
45224      }
45225      if (element.hasAbstractElement()) {
45226        composeBoolean("abstract", element.getAbstractElement());
45227      }
45228      if (element.hasInactiveElement()) {
45229        composeBoolean("inactive", element.getInactiveElement());
45230      }
45231      if (element.hasVersionElement()) {
45232        composeString("version", element.getVersionElement());
45233      }
45234      if (element.hasCodeElement()) {
45235        composeCode("code", element.getCodeElement());
45236      }
45237      if (element.hasDisplayElement()) {
45238        composeString("display", element.getDisplayElement());
45239      }
45240      if (element.hasDesignation()) { 
45241        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
45242          composeValueSetConceptReferenceDesignationComponent("designation", e);
45243      }
45244      if (element.hasContains()) { 
45245        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
45246          composeValueSetValueSetExpansionContainsComponent("contains", e);
45247      }
45248  }
45249
45250  protected void composeVerificationResult(String name, VerificationResult element) throws IOException {
45251    if (element != null) {
45252      composeDomainResourceAttributes(element);
45253      xml.enter(FHIR_NS, name);
45254      composeVerificationResultElements(element);
45255      composeElementClose(element);
45256      xml.exit(FHIR_NS, name);
45257    }
45258  }
45259
45260  protected void composeVerificationResultElements(VerificationResult element) throws IOException {
45261      composeDomainResourceElements(element);
45262      if (element.hasTarget()) { 
45263        for (Reference e : element.getTarget()) 
45264          composeReference("target", e);
45265      }
45266      if (element.hasTargetLocation()) { 
45267        for (StringType e : element.getTargetLocation()) 
45268          composeString("targetLocation", e);
45269      }
45270      if (element.hasNeedElement())
45271        composeEnumeration("need", element.getNeedElement(), new VerificationResult.NeedEnumFactory());
45272      if (element.hasStatusElement())
45273        composeEnumeration("status", element.getStatusElement(), new VerificationResult.StatusEnumFactory());
45274      if (element.hasStatusDateElement()) {
45275        composeDateTime("statusDate", element.getStatusDateElement());
45276      }
45277      if (element.hasValidationTypeElement())
45278        composeEnumeration("validationType", element.getValidationTypeElement(), new VerificationResult.ValidationTypeEnumFactory());
45279      if (element.hasValidationProcess()) { 
45280        for (CodeableConcept e : element.getValidationProcess()) 
45281          composeCodeableConcept("validationProcess", e);
45282      }
45283      if (element.hasFrequency()) {
45284        composeTiming("frequency", element.getFrequency());
45285      }
45286      if (element.hasLastPerformedElement()) {
45287        composeDateTime("lastPerformed", element.getLastPerformedElement());
45288      }
45289      if (element.hasNextScheduledElement()) {
45290        composeDate("nextScheduled", element.getNextScheduledElement());
45291      }
45292      if (element.hasFailureActionElement())
45293        composeEnumeration("failureAction", element.getFailureActionElement(), new VerificationResult.FailureActionEnumFactory());
45294      if (element.hasPrimarySource()) { 
45295        for (VerificationResult.VerificationResultPrimarySourceComponent e : element.getPrimarySource()) 
45296          composeVerificationResultVerificationResultPrimarySourceComponent("primarySource", e);
45297      }
45298      if (element.hasAttestation()) {
45299        composeVerificationResultVerificationResultAttestationComponent("attestation", element.getAttestation());
45300      }
45301      if (element.hasValidator()) { 
45302        for (VerificationResult.VerificationResultValidatorComponent e : element.getValidator()) 
45303          composeVerificationResultVerificationResultValidatorComponent("validator", e);
45304      }
45305  }
45306
45307  protected void composeVerificationResultVerificationResultPrimarySourceComponent(String name, VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
45308    if (element != null) {
45309      composeElementAttributes(element);
45310      xml.enter(FHIR_NS, name);
45311      composeVerificationResultVerificationResultPrimarySourceComponentElements(element);
45312      composeElementClose(element);
45313      xml.exit(FHIR_NS, name);
45314    }
45315  }
45316
45317  protected void composeVerificationResultVerificationResultPrimarySourceComponentElements(VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
45318      composeBackboneElementElements(element);
45319      if (element.hasIdentifier()) {
45320        composeIdentifier("identifier", element.getIdentifier());
45321      }
45322      if (element.hasOrganization()) {
45323        composeReference("organization", element.getOrganization());
45324      }
45325      if (element.hasType()) { 
45326        for (CodeableConcept e : element.getType()) 
45327          composeCodeableConcept("type", e);
45328      }
45329      if (element.hasValidationProcess()) { 
45330        for (CodeableConcept e : element.getValidationProcess()) 
45331          composeCodeableConcept("validationProcess", e);
45332      }
45333      if (element.hasValidationStatusElement())
45334        composeEnumeration("validationStatus", element.getValidationStatusElement(), new VerificationResult.ValidationStatusEnumFactory());
45335      if (element.hasValidationDateElement()) {
45336        composeDateTime("validationDate", element.getValidationDateElement());
45337      }
45338      if (element.hasCanPushUpdatesElement())
45339        composeEnumeration("canPushUpdates", element.getCanPushUpdatesElement(), new VerificationResult.CanPushUpdatesEnumFactory());
45340        if (element.hasPushTypeAvailable()) 
45341          for (Enumeration<VerificationResult.PushTypeAvailable> e : element.getPushTypeAvailable()) 
45342            composeEnumeration("pushTypeAvailable", e, new VerificationResult.PushTypeAvailableEnumFactory());
45343  }
45344
45345  protected void composeVerificationResultVerificationResultAttestationComponent(String name, VerificationResult.VerificationResultAttestationComponent element) throws IOException {
45346    if (element != null) {
45347      composeElementAttributes(element);
45348      xml.enter(FHIR_NS, name);
45349      composeVerificationResultVerificationResultAttestationComponentElements(element);
45350      composeElementClose(element);
45351      xml.exit(FHIR_NS, name);
45352    }
45353  }
45354
45355  protected void composeVerificationResultVerificationResultAttestationComponentElements(VerificationResult.VerificationResultAttestationComponent element) throws IOException {
45356      composeBackboneElementElements(element);
45357      if (element.hasSource()) {
45358        composeReference("source", element.getSource());
45359      }
45360      if (element.hasOrganization()) {
45361        composeReference("organization", element.getOrganization());
45362      }
45363      if (element.hasMethod()) {
45364        composeCodeableConcept("method", element.getMethod());
45365      }
45366      if (element.hasDateElement()) {
45367        composeDate("date", element.getDateElement());
45368      }
45369      if (element.hasSourceIdentityCertificateElement()) {
45370        composeString("sourceIdentityCertificate", element.getSourceIdentityCertificateElement());
45371      }
45372      if (element.hasProxyIdentityCertificateElement()) {
45373        composeString("proxyIdentityCertificate", element.getProxyIdentityCertificateElement());
45374      }
45375  }
45376
45377  protected void composeVerificationResultVerificationResultValidatorComponent(String name, VerificationResult.VerificationResultValidatorComponent element) throws IOException {
45378    if (element != null) {
45379      composeElementAttributes(element);
45380      xml.enter(FHIR_NS, name);
45381      composeVerificationResultVerificationResultValidatorComponentElements(element);
45382      composeElementClose(element);
45383      xml.exit(FHIR_NS, name);
45384    }
45385  }
45386
45387  protected void composeVerificationResultVerificationResultValidatorComponentElements(VerificationResult.VerificationResultValidatorComponent element) throws IOException {
45388      composeBackboneElementElements(element);
45389      if (element.hasIdentifier()) {
45390        composeIdentifier("identifier", element.getIdentifier());
45391      }
45392      if (element.hasOrganization()) {
45393        composeReference("organization", element.getOrganization());
45394      }
45395      if (element.hasIdentityCertificateElement()) {
45396        composeString("identityCertificate", element.getIdentityCertificateElement());
45397      }
45398      if (element.hasDateValidatedElement()) {
45399        composeDate("dateValidated", element.getDateValidatedElement());
45400      }
45401  }
45402
45403  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
45404    if (element != null) {
45405      composeDomainResourceAttributes(element);
45406      xml.enter(FHIR_NS, name);
45407      composeVisionPrescriptionElements(element);
45408      composeElementClose(element);
45409      xml.exit(FHIR_NS, name);
45410    }
45411  }
45412
45413  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
45414      composeDomainResourceElements(element);
45415      if (element.hasIdentifier()) { 
45416        for (Identifier e : element.getIdentifier()) 
45417          composeIdentifier("identifier", e);
45418      }
45419      if (element.hasStatusElement())
45420        composeEnumeration("status", element.getStatusElement(), new VisionPrescription.VisionStatusEnumFactory());
45421      if (element.hasPatient()) {
45422        composeReference("patient", element.getPatient());
45423      }
45424      if (element.hasEncounter()) {
45425        composeReference("encounter", element.getEncounter());
45426      }
45427      if (element.hasDateWrittenElement()) {
45428        composeDateTime("dateWritten", element.getDateWrittenElement());
45429      }
45430      if (element.hasPrescriber()) {
45431        composeReference("prescriber", element.getPrescriber());
45432      }
45433      if (element.hasReason()) {
45434        composeType("reason", element.getReason());
45435      }      if (element.hasDispense()) { 
45436        for (VisionPrescription.VisionPrescriptionDispenseComponent e : element.getDispense()) 
45437          composeVisionPrescriptionVisionPrescriptionDispenseComponent("dispense", e);
45438      }
45439  }
45440
45441  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(String name, VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
45442    if (element != null) {
45443      composeElementAttributes(element);
45444      xml.enter(FHIR_NS, name);
45445      composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(element);
45446      composeElementClose(element);
45447      xml.exit(FHIR_NS, name);
45448    }
45449  }
45450
45451  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
45452      composeBackboneElementElements(element);
45453      if (element.hasProduct()) {
45454        composeCodeableConcept("product", element.getProduct());
45455      }
45456      if (element.hasEyeElement())
45457        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
45458      if (element.hasSphereElement()) {
45459        composeDecimal("sphere", element.getSphereElement());
45460      }
45461      if (element.hasCylinderElement()) {
45462        composeDecimal("cylinder", element.getCylinderElement());
45463      }
45464      if (element.hasAxisElement()) {
45465        composeInteger("axis", element.getAxisElement());
45466      }
45467      if (element.hasPrism()) { 
45468        for (VisionPrescription.PrismComponent e : element.getPrism()) 
45469          composeVisionPrescriptionPrismComponent("prism", e);
45470      }
45471      if (element.hasAddElement()) {
45472        composeDecimal("add", element.getAddElement());
45473      }
45474      if (element.hasPowerElement()) {
45475        composeDecimal("power", element.getPowerElement());
45476      }
45477      if (element.hasBackCurveElement()) {
45478        composeDecimal("backCurve", element.getBackCurveElement());
45479      }
45480      if (element.hasDiameterElement()) {
45481        composeDecimal("diameter", element.getDiameterElement());
45482      }
45483      if (element.hasDuration()) {
45484        composeSimpleQuantity("duration", element.getDuration());
45485      }
45486      if (element.hasColorElement()) {
45487        composeString("color", element.getColorElement());
45488      }
45489      if (element.hasBrandElement()) {
45490        composeString("brand", element.getBrandElement());
45491      }
45492      if (element.hasNote()) { 
45493        for (Annotation e : element.getNote()) 
45494          composeAnnotation("note", e);
45495      }
45496  }
45497
45498  protected void composeVisionPrescriptionPrismComponent(String name, VisionPrescription.PrismComponent element) throws IOException {
45499    if (element != null) {
45500      composeElementAttributes(element);
45501      xml.enter(FHIR_NS, name);
45502      composeVisionPrescriptionPrismComponentElements(element);
45503      composeElementClose(element);
45504      xml.exit(FHIR_NS, name);
45505    }
45506  }
45507
45508  protected void composeVisionPrescriptionPrismComponentElements(VisionPrescription.PrismComponent element) throws IOException {
45509      composeBackboneElementElements(element);
45510      if (element.hasAmountElement()) {
45511        composeDecimal("amount", element.getAmountElement());
45512      }
45513      if (element.hasBaseElement())
45514        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
45515  }
45516
45517  @Override
45518  protected void composeResource(Resource resource) throws IOException {
45519    if (resource instanceof Parameters)
45520      composeParameters("Parameters", (Parameters)resource);
45521    else if (resource instanceof Account)
45522      composeAccount("Account", (Account)resource);
45523    else if (resource instanceof ActivityDefinition)
45524      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
45525    else if (resource instanceof AdverseEvent)
45526      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
45527    else if (resource instanceof AllergyIntolerance)
45528      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
45529    else if (resource instanceof Appointment)
45530      composeAppointment("Appointment", (Appointment)resource);
45531    else if (resource instanceof AppointmentResponse)
45532      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
45533    else if (resource instanceof AuditEvent)
45534      composeAuditEvent("AuditEvent", (AuditEvent)resource);
45535    else if (resource instanceof Basic)
45536      composeBasic("Basic", (Basic)resource);
45537    else if (resource instanceof Binary)
45538      composeBinary("Binary", (Binary)resource);
45539    else if (resource instanceof BiologicallyDerivedProduct)
45540      composeBiologicallyDerivedProduct("BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource);
45541    else if (resource instanceof BodyStructure)
45542      composeBodyStructure("BodyStructure", (BodyStructure)resource);
45543    else if (resource instanceof Bundle)
45544      composeBundle("Bundle", (Bundle)resource);
45545    else if (resource instanceof CapabilityStatement)
45546      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
45547    else if (resource instanceof CarePlan)
45548      composeCarePlan("CarePlan", (CarePlan)resource);
45549    else if (resource instanceof CareTeam)
45550      composeCareTeam("CareTeam", (CareTeam)resource);
45551    else if (resource instanceof ChargeItem)
45552      composeChargeItem("ChargeItem", (ChargeItem)resource);
45553    else if (resource instanceof Claim)
45554      composeClaim("Claim", (Claim)resource);
45555    else if (resource instanceof ClaimResponse)
45556      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
45557    else if (resource instanceof ClinicalImpression)
45558      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
45559    else if (resource instanceof CodeSystem)
45560      composeCodeSystem("CodeSystem", (CodeSystem)resource);
45561    else if (resource instanceof Communication)
45562      composeCommunication("Communication", (Communication)resource);
45563    else if (resource instanceof CommunicationRequest)
45564      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
45565    else if (resource instanceof CompartmentDefinition)
45566      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
45567    else if (resource instanceof Composition)
45568      composeComposition("Composition", (Composition)resource);
45569    else if (resource instanceof ConceptMap)
45570      composeConceptMap("ConceptMap", (ConceptMap)resource);
45571    else if (resource instanceof Condition)
45572      composeCondition("Condition", (Condition)resource);
45573    else if (resource instanceof Consent)
45574      composeConsent("Consent", (Consent)resource);
45575    else if (resource instanceof Contract)
45576      composeContract("Contract", (Contract)resource);
45577    else if (resource instanceof Coverage)
45578      composeCoverage("Coverage", (Coverage)resource);
45579    else if (resource instanceof DetectedIssue)
45580      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
45581    else if (resource instanceof Device)
45582      composeDevice("Device", (Device)resource);
45583    else if (resource instanceof DeviceComponent)
45584      composeDeviceComponent("DeviceComponent", (DeviceComponent)resource);
45585    else if (resource instanceof DeviceMetric)
45586      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
45587    else if (resource instanceof DeviceRequest)
45588      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
45589    else if (resource instanceof DeviceUseStatement)
45590      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
45591    else if (resource instanceof DiagnosticReport)
45592      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
45593    else if (resource instanceof DocumentManifest)
45594      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
45595    else if (resource instanceof DocumentReference)
45596      composeDocumentReference("DocumentReference", (DocumentReference)resource);
45597    else if (resource instanceof EligibilityRequest)
45598      composeEligibilityRequest("EligibilityRequest", (EligibilityRequest)resource);
45599    else if (resource instanceof EligibilityResponse)
45600      composeEligibilityResponse("EligibilityResponse", (EligibilityResponse)resource);
45601    else if (resource instanceof Encounter)
45602      composeEncounter("Encounter", (Encounter)resource);
45603    else if (resource instanceof Endpoint)
45604      composeEndpoint("Endpoint", (Endpoint)resource);
45605    else if (resource instanceof EnrollmentRequest)
45606      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
45607    else if (resource instanceof EnrollmentResponse)
45608      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
45609    else if (resource instanceof EntryDefinition)
45610      composeEntryDefinition("EntryDefinition", (EntryDefinition)resource);
45611    else if (resource instanceof EpisodeOfCare)
45612      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
45613    else if (resource instanceof EventDefinition)
45614      composeEventDefinition("EventDefinition", (EventDefinition)resource);
45615    else if (resource instanceof ExampleScenario)
45616      composeExampleScenario("ExampleScenario", (ExampleScenario)resource);
45617    else if (resource instanceof ExpansionProfile)
45618      composeExpansionProfile("ExpansionProfile", (ExpansionProfile)resource);
45619    else if (resource instanceof ExplanationOfBenefit)
45620      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
45621    else if (resource instanceof FamilyMemberHistory)
45622      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
45623    else if (resource instanceof Flag)
45624      composeFlag("Flag", (Flag)resource);
45625    else if (resource instanceof Goal)
45626      composeGoal("Goal", (Goal)resource);
45627    else if (resource instanceof GraphDefinition)
45628      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
45629    else if (resource instanceof Group)
45630      composeGroup("Group", (Group)resource);
45631    else if (resource instanceof GuidanceResponse)
45632      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
45633    else if (resource instanceof HealthcareService)
45634      composeHealthcareService("HealthcareService", (HealthcareService)resource);
45635    else if (resource instanceof ImagingStudy)
45636      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
45637    else if (resource instanceof Immunization)
45638      composeImmunization("Immunization", (Immunization)resource);
45639    else if (resource instanceof ImmunizationEvaluation)
45640      composeImmunizationEvaluation("ImmunizationEvaluation", (ImmunizationEvaluation)resource);
45641    else if (resource instanceof ImmunizationRecommendation)
45642      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
45643    else if (resource instanceof ImplementationGuide)
45644      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
45645    else if (resource instanceof Invoice)
45646      composeInvoice("Invoice", (Invoice)resource);
45647    else if (resource instanceof ItemInstance)
45648      composeItemInstance("ItemInstance", (ItemInstance)resource);
45649    else if (resource instanceof Library)
45650      composeLibrary("Library", (Library)resource);
45651    else if (resource instanceof Linkage)
45652      composeLinkage("Linkage", (Linkage)resource);
45653    else if (resource instanceof ListResource)
45654      composeListResource("List", (ListResource)resource);
45655    else if (resource instanceof Location)
45656      composeLocation("Location", (Location)resource);
45657    else if (resource instanceof Measure)
45658      composeMeasure("Measure", (Measure)resource);
45659    else if (resource instanceof MeasureReport)
45660      composeMeasureReport("MeasureReport", (MeasureReport)resource);
45661    else if (resource instanceof Media)
45662      composeMedia("Media", (Media)resource);
45663    else if (resource instanceof Medication)
45664      composeMedication("Medication", (Medication)resource);
45665    else if (resource instanceof MedicationAdministration)
45666      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
45667    else if (resource instanceof MedicationDispense)
45668      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
45669    else if (resource instanceof MedicationKnowledge)
45670      composeMedicationKnowledge("MedicationKnowledge", (MedicationKnowledge)resource);
45671    else if (resource instanceof MedicationRequest)
45672      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
45673    else if (resource instanceof MedicationStatement)
45674      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
45675    else if (resource instanceof MedicinalProduct)
45676      composeMedicinalProduct("MedicinalProduct", (MedicinalProduct)resource);
45677    else if (resource instanceof MedicinalProductAuthorization)
45678      composeMedicinalProductAuthorization("MedicinalProductAuthorization", (MedicinalProductAuthorization)resource);
45679    else if (resource instanceof MedicinalProductClinicals)
45680      composeMedicinalProductClinicals("MedicinalProductClinicals", (MedicinalProductClinicals)resource);
45681    else if (resource instanceof MedicinalProductDeviceSpec)
45682      composeMedicinalProductDeviceSpec("MedicinalProductDeviceSpec", (MedicinalProductDeviceSpec)resource);
45683    else if (resource instanceof MedicinalProductIngredient)
45684      composeMedicinalProductIngredient("MedicinalProductIngredient", (MedicinalProductIngredient)resource);
45685    else if (resource instanceof MedicinalProductPackaged)
45686      composeMedicinalProductPackaged("MedicinalProductPackaged", (MedicinalProductPackaged)resource);
45687    else if (resource instanceof MedicinalProductPharmaceutical)
45688      composeMedicinalProductPharmaceutical("MedicinalProductPharmaceutical", (MedicinalProductPharmaceutical)resource);
45689    else if (resource instanceof MessageDefinition)
45690      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
45691    else if (resource instanceof MessageHeader)
45692      composeMessageHeader("MessageHeader", (MessageHeader)resource);
45693    else if (resource instanceof NamingSystem)
45694      composeNamingSystem("NamingSystem", (NamingSystem)resource);
45695    else if (resource instanceof NutritionOrder)
45696      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
45697    else if (resource instanceof Observation)
45698      composeObservation("Observation", (Observation)resource);
45699    else if (resource instanceof ObservationDefinition)
45700      composeObservationDefinition("ObservationDefinition", (ObservationDefinition)resource);
45701    else if (resource instanceof OccupationalData)
45702      composeOccupationalData("OccupationalData", (OccupationalData)resource);
45703    else if (resource instanceof OperationDefinition)
45704      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
45705    else if (resource instanceof OperationOutcome)
45706      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
45707    else if (resource instanceof Organization)
45708      composeOrganization("Organization", (Organization)resource);
45709    else if (resource instanceof OrganizationRole)
45710      composeOrganizationRole("OrganizationRole", (OrganizationRole)resource);
45711    else if (resource instanceof Patient)
45712      composePatient("Patient", (Patient)resource);
45713    else if (resource instanceof PaymentNotice)
45714      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
45715    else if (resource instanceof PaymentReconciliation)
45716      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
45717    else if (resource instanceof Person)
45718      composePerson("Person", (Person)resource);
45719    else if (resource instanceof PlanDefinition)
45720      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
45721    else if (resource instanceof Practitioner)
45722      composePractitioner("Practitioner", (Practitioner)resource);
45723    else if (resource instanceof PractitionerRole)
45724      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
45725    else if (resource instanceof Procedure)
45726      composeProcedure("Procedure", (Procedure)resource);
45727    else if (resource instanceof ProcessRequest)
45728      composeProcessRequest("ProcessRequest", (ProcessRequest)resource);
45729    else if (resource instanceof ProcessResponse)
45730      composeProcessResponse("ProcessResponse", (ProcessResponse)resource);
45731    else if (resource instanceof ProductPlan)
45732      composeProductPlan("ProductPlan", (ProductPlan)resource);
45733    else if (resource instanceof Provenance)
45734      composeProvenance("Provenance", (Provenance)resource);
45735    else if (resource instanceof Questionnaire)
45736      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
45737    else if (resource instanceof QuestionnaireResponse)
45738      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
45739    else if (resource instanceof RelatedPerson)
45740      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
45741    else if (resource instanceof RequestGroup)
45742      composeRequestGroup("RequestGroup", (RequestGroup)resource);
45743    else if (resource instanceof ResearchStudy)
45744      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
45745    else if (resource instanceof ResearchSubject)
45746      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
45747    else if (resource instanceof RiskAssessment)
45748      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
45749    else if (resource instanceof Schedule)
45750      composeSchedule("Schedule", (Schedule)resource);
45751    else if (resource instanceof SearchParameter)
45752      composeSearchParameter("SearchParameter", (SearchParameter)resource);
45753    else if (resource instanceof Sequence)
45754      composeSequence("Sequence", (Sequence)resource);
45755    else if (resource instanceof ServiceRequest)
45756      composeServiceRequest("ServiceRequest", (ServiceRequest)resource);
45757    else if (resource instanceof Slot)
45758      composeSlot("Slot", (Slot)resource);
45759    else if (resource instanceof Specimen)
45760      composeSpecimen("Specimen", (Specimen)resource);
45761    else if (resource instanceof SpecimenDefinition)
45762      composeSpecimenDefinition("SpecimenDefinition", (SpecimenDefinition)resource);
45763    else if (resource instanceof StructureDefinition)
45764      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
45765    else if (resource instanceof StructureMap)
45766      composeStructureMap("StructureMap", (StructureMap)resource);
45767    else if (resource instanceof Subscription)
45768      composeSubscription("Subscription", (Subscription)resource);
45769    else if (resource instanceof Substance)
45770      composeSubstance("Substance", (Substance)resource);
45771    else if (resource instanceof SubstancePolymer)
45772      composeSubstancePolymer("SubstancePolymer", (SubstancePolymer)resource);
45773    else if (resource instanceof SubstanceReferenceInformation)
45774      composeSubstanceReferenceInformation("SubstanceReferenceInformation", (SubstanceReferenceInformation)resource);
45775    else if (resource instanceof SubstanceSpecification)
45776      composeSubstanceSpecification("SubstanceSpecification", (SubstanceSpecification)resource);
45777    else if (resource instanceof SupplyDelivery)
45778      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
45779    else if (resource instanceof SupplyRequest)
45780      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
45781    else if (resource instanceof Task)
45782      composeTask("Task", (Task)resource);
45783    else if (resource instanceof TerminologyCapabilities)
45784      composeTerminologyCapabilities("TerminologyCapabilities", (TerminologyCapabilities)resource);
45785    else if (resource instanceof TestReport)
45786      composeTestReport("TestReport", (TestReport)resource);
45787    else if (resource instanceof TestScript)
45788      composeTestScript("TestScript", (TestScript)resource);
45789    else if (resource instanceof UserSession)
45790      composeUserSession("UserSession", (UserSession)resource);
45791    else if (resource instanceof ValueSet)
45792      composeValueSet("ValueSet", (ValueSet)resource);
45793    else if (resource instanceof VerificationResult)
45794      composeVerificationResult("VerificationResult", (VerificationResult)resource);
45795    else if (resource instanceof VisionPrescription)
45796      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
45797    else if (resource instanceof Binary)
45798      composeBinary("Binary", (Binary)resource);
45799    else
45800      throw new Error("Unhandled resource type "+resource.getClass().getName());
45801  }
45802
45803  protected void composeResource(String name, Resource resource) throws IOException {
45804    if (resource instanceof Parameters)
45805      composeParameters(name, (Parameters)resource);
45806    else if (resource instanceof Account)
45807      composeAccount(name, (Account)resource);
45808    else if (resource instanceof ActivityDefinition)
45809      composeActivityDefinition(name, (ActivityDefinition)resource);
45810    else if (resource instanceof AdverseEvent)
45811      composeAdverseEvent(name, (AdverseEvent)resource);
45812    else if (resource instanceof AllergyIntolerance)
45813      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
45814    else if (resource instanceof Appointment)
45815      composeAppointment(name, (Appointment)resource);
45816    else if (resource instanceof AppointmentResponse)
45817      composeAppointmentResponse(name, (AppointmentResponse)resource);
45818    else if (resource instanceof AuditEvent)
45819      composeAuditEvent(name, (AuditEvent)resource);
45820    else if (resource instanceof Basic)
45821      composeBasic(name, (Basic)resource);
45822    else if (resource instanceof Binary)
45823      composeBinary(name, (Binary)resource);
45824    else if (resource instanceof BiologicallyDerivedProduct)
45825      composeBiologicallyDerivedProduct(name, (BiologicallyDerivedProduct)resource);
45826    else if (resource instanceof BodyStructure)
45827      composeBodyStructure(name, (BodyStructure)resource);
45828    else if (resource instanceof Bundle)
45829      composeBundle(name, (Bundle)resource);
45830    else if (resource instanceof CapabilityStatement)
45831      composeCapabilityStatement(name, (CapabilityStatement)resource);
45832    else if (resource instanceof CarePlan)
45833      composeCarePlan(name, (CarePlan)resource);
45834    else if (resource instanceof CareTeam)
45835      composeCareTeam(name, (CareTeam)resource);
45836    else if (resource instanceof ChargeItem)
45837      composeChargeItem(name, (ChargeItem)resource);
45838    else if (resource instanceof Claim)
45839      composeClaim(name, (Claim)resource);
45840    else if (resource instanceof ClaimResponse)
45841      composeClaimResponse(name, (ClaimResponse)resource);
45842    else if (resource instanceof ClinicalImpression)
45843      composeClinicalImpression(name, (ClinicalImpression)resource);
45844    else if (resource instanceof CodeSystem)
45845      composeCodeSystem(name, (CodeSystem)resource);
45846    else if (resource instanceof Communication)
45847      composeCommunication(name, (Communication)resource);
45848    else if (resource instanceof CommunicationRequest)
45849      composeCommunicationRequest(name, (CommunicationRequest)resource);
45850    else if (resource instanceof CompartmentDefinition)
45851      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
45852    else if (resource instanceof Composition)
45853      composeComposition(name, (Composition)resource);
45854    else if (resource instanceof ConceptMap)
45855      composeConceptMap(name, (ConceptMap)resource);
45856    else if (resource instanceof Condition)
45857      composeCondition(name, (Condition)resource);
45858    else if (resource instanceof Consent)
45859      composeConsent(name, (Consent)resource);
45860    else if (resource instanceof Contract)
45861      composeContract(name, (Contract)resource);
45862    else if (resource instanceof Coverage)
45863      composeCoverage(name, (Coverage)resource);
45864    else if (resource instanceof DetectedIssue)
45865      composeDetectedIssue(name, (DetectedIssue)resource);
45866    else if (resource instanceof Device)
45867      composeDevice(name, (Device)resource);
45868    else if (resource instanceof DeviceComponent)
45869      composeDeviceComponent(name, (DeviceComponent)resource);
45870    else if (resource instanceof DeviceMetric)
45871      composeDeviceMetric(name, (DeviceMetric)resource);
45872    else if (resource instanceof DeviceRequest)
45873      composeDeviceRequest(name, (DeviceRequest)resource);
45874    else if (resource instanceof DeviceUseStatement)
45875      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
45876    else if (resource instanceof DiagnosticReport)
45877      composeDiagnosticReport(name, (DiagnosticReport)resource);
45878    else if (resource instanceof DocumentManifest)
45879      composeDocumentManifest(name, (DocumentManifest)resource);
45880    else if (resource instanceof DocumentReference)
45881      composeDocumentReference(name, (DocumentReference)resource);
45882    else if (resource instanceof EligibilityRequest)
45883      composeEligibilityRequest(name, (EligibilityRequest)resource);
45884    else if (resource instanceof EligibilityResponse)
45885      composeEligibilityResponse(name, (EligibilityResponse)resource);
45886    else if (resource instanceof Encounter)
45887      composeEncounter(name, (Encounter)resource);
45888    else if (resource instanceof Endpoint)
45889      composeEndpoint(name, (Endpoint)resource);
45890    else if (resource instanceof EnrollmentRequest)
45891      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
45892    else if (resource instanceof EnrollmentResponse)
45893      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
45894    else if (resource instanceof EntryDefinition)
45895      composeEntryDefinition(name, (EntryDefinition)resource);
45896    else if (resource instanceof EpisodeOfCare)
45897      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
45898    else if (resource instanceof EventDefinition)
45899      composeEventDefinition(name, (EventDefinition)resource);
45900    else if (resource instanceof ExampleScenario)
45901      composeExampleScenario(name, (ExampleScenario)resource);
45902    else if (resource instanceof ExpansionProfile)
45903      composeExpansionProfile(name, (ExpansionProfile)resource);
45904    else if (resource instanceof ExplanationOfBenefit)
45905      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
45906    else if (resource instanceof FamilyMemberHistory)
45907      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
45908    else if (resource instanceof Flag)
45909      composeFlag(name, (Flag)resource);
45910    else if (resource instanceof Goal)
45911      composeGoal(name, (Goal)resource);
45912    else if (resource instanceof GraphDefinition)
45913      composeGraphDefinition(name, (GraphDefinition)resource);
45914    else if (resource instanceof Group)
45915      composeGroup(name, (Group)resource);
45916    else if (resource instanceof GuidanceResponse)
45917      composeGuidanceResponse(name, (GuidanceResponse)resource);
45918    else if (resource instanceof HealthcareService)
45919      composeHealthcareService(name, (HealthcareService)resource);
45920    else if (resource instanceof ImagingStudy)
45921      composeImagingStudy(name, (ImagingStudy)resource);
45922    else if (resource instanceof Immunization)
45923      composeImmunization(name, (Immunization)resource);
45924    else if (resource instanceof ImmunizationEvaluation)
45925      composeImmunizationEvaluation(name, (ImmunizationEvaluation)resource);
45926    else if (resource instanceof ImmunizationRecommendation)
45927      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
45928    else if (resource instanceof ImplementationGuide)
45929      composeImplementationGuide(name, (ImplementationGuide)resource);
45930    else if (resource instanceof Invoice)
45931      composeInvoice(name, (Invoice)resource);
45932    else if (resource instanceof ItemInstance)
45933      composeItemInstance(name, (ItemInstance)resource);
45934    else if (resource instanceof Library)
45935      composeLibrary(name, (Library)resource);
45936    else if (resource instanceof Linkage)
45937      composeLinkage(name, (Linkage)resource);
45938    else if (resource instanceof ListResource)
45939      composeListResource(name, (ListResource)resource);
45940    else if (resource instanceof Location)
45941      composeLocation(name, (Location)resource);
45942    else if (resource instanceof Measure)
45943      composeMeasure(name, (Measure)resource);
45944    else if (resource instanceof MeasureReport)
45945      composeMeasureReport(name, (MeasureReport)resource);
45946    else if (resource instanceof Media)
45947      composeMedia(name, (Media)resource);
45948    else if (resource instanceof Medication)
45949      composeMedication(name, (Medication)resource);
45950    else if (resource instanceof MedicationAdministration)
45951      composeMedicationAdministration(name, (MedicationAdministration)resource);
45952    else if (resource instanceof MedicationDispense)
45953      composeMedicationDispense(name, (MedicationDispense)resource);
45954    else if (resource instanceof MedicationKnowledge)
45955      composeMedicationKnowledge(name, (MedicationKnowledge)resource);
45956    else if (resource instanceof MedicationRequest)
45957      composeMedicationRequest(name, (MedicationRequest)resource);
45958    else if (resource instanceof MedicationStatement)
45959      composeMedicationStatement(name, (MedicationStatement)resource);
45960    else if (resource instanceof MedicinalProduct)
45961      composeMedicinalProduct(name, (MedicinalProduct)resource);
45962    else if (resource instanceof MedicinalProductAuthorization)
45963      composeMedicinalProductAuthorization(name, (MedicinalProductAuthorization)resource);
45964    else if (resource instanceof MedicinalProductClinicals)
45965      composeMedicinalProductClinicals(name, (MedicinalProductClinicals)resource);
45966    else if (resource instanceof MedicinalProductDeviceSpec)
45967      composeMedicinalProductDeviceSpec(name, (MedicinalProductDeviceSpec)resource);
45968    else if (resource instanceof MedicinalProductIngredient)
45969      composeMedicinalProductIngredient(name, (MedicinalProductIngredient)resource);
45970    else if (resource instanceof MedicinalProductPackaged)
45971      composeMedicinalProductPackaged(name, (MedicinalProductPackaged)resource);
45972    else if (resource instanceof MedicinalProductPharmaceutical)
45973      composeMedicinalProductPharmaceutical(name, (MedicinalProductPharmaceutical)resource);
45974    else if (resource instanceof MessageDefinition)
45975      composeMessageDefinition(name, (MessageDefinition)resource);
45976    else if (resource instanceof MessageHeader)
45977      composeMessageHeader(name, (MessageHeader)resource);
45978    else if (resource instanceof NamingSystem)
45979      composeNamingSystem(name, (NamingSystem)resource);
45980    else if (resource instanceof NutritionOrder)
45981      composeNutritionOrder(name, (NutritionOrder)resource);
45982    else if (resource instanceof Observation)
45983      composeObservation(name, (Observation)resource);
45984    else if (resource instanceof ObservationDefinition)
45985      composeObservationDefinition(name, (ObservationDefinition)resource);
45986    else if (resource instanceof OccupationalData)
45987      composeOccupationalData(name, (OccupationalData)resource);
45988    else if (resource instanceof OperationDefinition)
45989      composeOperationDefinition(name, (OperationDefinition)resource);
45990    else if (resource instanceof OperationOutcome)
45991      composeOperationOutcome(name, (OperationOutcome)resource);
45992    else if (resource instanceof Organization)
45993      composeOrganization(name, (Organization)resource);
45994    else if (resource instanceof OrganizationRole)
45995      composeOrganizationRole(name, (OrganizationRole)resource);
45996    else if (resource instanceof Patient)
45997      composePatient(name, (Patient)resource);
45998    else if (resource instanceof PaymentNotice)
45999      composePaymentNotice(name, (PaymentNotice)resource);
46000    else if (resource instanceof PaymentReconciliation)
46001      composePaymentReconciliation(name, (PaymentReconciliation)resource);
46002    else if (resource instanceof Person)
46003      composePerson(name, (Person)resource);
46004    else if (resource instanceof PlanDefinition)
46005      composePlanDefinition(name, (PlanDefinition)resource);
46006    else if (resource instanceof Practitioner)
46007      composePractitioner(name, (Practitioner)resource);
46008    else if (resource instanceof PractitionerRole)
46009      composePractitionerRole(name, (PractitionerRole)resource);
46010    else if (resource instanceof Procedure)
46011      composeProcedure(name, (Procedure)resource);
46012    else if (resource instanceof ProcessRequest)
46013      composeProcessRequest(name, (ProcessRequest)resource);
46014    else if (resource instanceof ProcessResponse)
46015      composeProcessResponse(name, (ProcessResponse)resource);
46016    else if (resource instanceof ProductPlan)
46017      composeProductPlan(name, (ProductPlan)resource);
46018    else if (resource instanceof Provenance)
46019      composeProvenance(name, (Provenance)resource);
46020    else if (resource instanceof Questionnaire)
46021      composeQuestionnaire(name, (Questionnaire)resource);
46022    else if (resource instanceof QuestionnaireResponse)
46023      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
46024    else if (resource instanceof RelatedPerson)
46025      composeRelatedPerson(name, (RelatedPerson)resource);
46026    else if (resource instanceof RequestGroup)
46027      composeRequestGroup(name, (RequestGroup)resource);
46028    else if (resource instanceof ResearchStudy)
46029      composeResearchStudy(name, (ResearchStudy)resource);
46030    else if (resource instanceof ResearchSubject)
46031      composeResearchSubject(name, (ResearchSubject)resource);
46032    else if (resource instanceof RiskAssessment)
46033      composeRiskAssessment(name, (RiskAssessment)resource);
46034    else if (resource instanceof Schedule)
46035      composeSchedule(name, (Schedule)resource);
46036    else if (resource instanceof SearchParameter)
46037      composeSearchParameter(name, (SearchParameter)resource);
46038    else if (resource instanceof Sequence)
46039      composeSequence(name, (Sequence)resource);
46040    else if (resource instanceof ServiceRequest)
46041      composeServiceRequest(name, (ServiceRequest)resource);
46042    else if (resource instanceof Slot)
46043      composeSlot(name, (Slot)resource);
46044    else if (resource instanceof Specimen)
46045      composeSpecimen(name, (Specimen)resource);
46046    else if (resource instanceof SpecimenDefinition)
46047      composeSpecimenDefinition(name, (SpecimenDefinition)resource);
46048    else if (resource instanceof StructureDefinition)
46049      composeStructureDefinition(name, (StructureDefinition)resource);
46050    else if (resource instanceof StructureMap)
46051      composeStructureMap(name, (StructureMap)resource);
46052    else if (resource instanceof Subscription)
46053      composeSubscription(name, (Subscription)resource);
46054    else if (resource instanceof Substance)
46055      composeSubstance(name, (Substance)resource);
46056    else if (resource instanceof SubstancePolymer)
46057      composeSubstancePolymer(name, (SubstancePolymer)resource);
46058    else if (resource instanceof SubstanceReferenceInformation)
46059      composeSubstanceReferenceInformation(name, (SubstanceReferenceInformation)resource);
46060    else if (resource instanceof SubstanceSpecification)
46061      composeSubstanceSpecification(name, (SubstanceSpecification)resource);
46062    else if (resource instanceof SupplyDelivery)
46063      composeSupplyDelivery(name, (SupplyDelivery)resource);
46064    else if (resource instanceof SupplyRequest)
46065      composeSupplyRequest(name, (SupplyRequest)resource);
46066    else if (resource instanceof Task)
46067      composeTask(name, (Task)resource);
46068    else if (resource instanceof TerminologyCapabilities)
46069      composeTerminologyCapabilities(name, (TerminologyCapabilities)resource);
46070    else if (resource instanceof TestReport)
46071      composeTestReport(name, (TestReport)resource);
46072    else if (resource instanceof TestScript)
46073      composeTestScript(name, (TestScript)resource);
46074    else if (resource instanceof UserSession)
46075      composeUserSession(name, (UserSession)resource);
46076    else if (resource instanceof ValueSet)
46077      composeValueSet(name, (ValueSet)resource);
46078    else if (resource instanceof VerificationResult)
46079      composeVerificationResult(name, (VerificationResult)resource);
46080    else if (resource instanceof VisionPrescription)
46081      composeVisionPrescription(name, (VisionPrescription)resource);
46082    else if (resource instanceof Binary)
46083      composeBinary(name, (Binary)resource);
46084    else
46085      throw new Error("Unhandled resource type "+resource.getClass().getName());
46086  }
46087
46088  protected void composeType(String prefix, Type type) throws IOException {
46089    if (type == null)
46090      ;
46091    else if (type instanceof SimpleQuantity)
46092       composeSimpleQuantity(prefix+"SimpleQuantity", (SimpleQuantity) type);
46093    else if (type instanceof Extension)
46094       composeExtension(prefix+"Extension", (Extension) type);
46095    else if (type instanceof Narrative)
46096       composeNarrative(prefix+"Narrative", (Narrative) type);
46097    else if (type instanceof Count)
46098       composeCount(prefix+"Count", (Count) type);
46099    else if (type instanceof Money)
46100       composeMoney(prefix+"Money", (Money) type);
46101    else if (type instanceof Distance)
46102       composeDistance(prefix+"Distance", (Distance) type);
46103    else if (type instanceof Age)
46104       composeAge(prefix+"Age", (Age) type);
46105    else if (type instanceof Duration)
46106       composeDuration(prefix+"Duration", (Duration) type);
46107    else if (type instanceof Meta)
46108       composeMeta(prefix+"Meta", (Meta) type);
46109    else if (type instanceof Address)
46110       composeAddress(prefix+"Address", (Address) type);
46111    else if (type instanceof Contributor)
46112       composeContributor(prefix+"Contributor", (Contributor) type);
46113    else if (type instanceof Attachment)
46114       composeAttachment(prefix+"Attachment", (Attachment) type);
46115    else if (type instanceof DataRequirement)
46116       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
46117    else if (type instanceof Dosage)
46118       composeDosage(prefix+"Dosage", (Dosage) type);
46119    else if (type instanceof HumanName)
46120       composeHumanName(prefix+"HumanName", (HumanName) type);
46121    else if (type instanceof ContactPoint)
46122       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
46123    else if (type instanceof Identifier)
46124       composeIdentifier(prefix+"Identifier", (Identifier) type);
46125    else if (type instanceof Coding)
46126       composeCoding(prefix+"Coding", (Coding) type);
46127    else if (type instanceof SampledData)
46128       composeSampledData(prefix+"SampledData", (SampledData) type);
46129    else if (type instanceof Ratio)
46130       composeRatio(prefix+"Ratio", (Ratio) type);
46131    else if (type instanceof Reference)
46132       composeReference(prefix+"Reference", (Reference) type);
46133    else if (type instanceof TriggerDefinition)
46134       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
46135    else if (type instanceof Quantity)
46136       composeQuantity(prefix+"Quantity", (Quantity) type);
46137    else if (type instanceof Period)
46138       composePeriod(prefix+"Period", (Period) type);
46139    else if (type instanceof Range)
46140       composeRange(prefix+"Range", (Range) type);
46141    else if (type instanceof RelatedArtifact)
46142       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
46143    else if (type instanceof Annotation)
46144       composeAnnotation(prefix+"Annotation", (Annotation) type);
46145    else if (type instanceof ContactDetail)
46146       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
46147    else if (type instanceof UsageContext)
46148       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
46149    else if (type instanceof Signature)
46150       composeSignature(prefix+"Signature", (Signature) type);
46151    else if (type instanceof Timing)
46152       composeTiming(prefix+"Timing", (Timing) type);
46153    else if (type instanceof CodeableConcept)
46154       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
46155    else if (type instanceof ParameterDefinition)
46156       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
46157    else if (type instanceof CodeType)
46158       composeCode(prefix+"Code", (CodeType) type);
46159    else if (type instanceof OidType)
46160       composeOid(prefix+"Oid", (OidType) type);
46161    else if (type instanceof CanonicalType)
46162       composeCanonical(prefix+"Canonical", (CanonicalType) type);
46163    else if (type instanceof UuidType)
46164       composeUuid(prefix+"Uuid", (UuidType) type);
46165    else if (type instanceof UrlType)
46166       composeUrl(prefix+"Url", (UrlType) type);
46167    else if (type instanceof UnsignedIntType)
46168       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
46169    else if (type instanceof MarkdownType)
46170       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
46171    else if (type instanceof IdType)
46172       composeId(prefix+"Id", (IdType) type);
46173    else if (type instanceof PositiveIntType)
46174       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
46175    else if (type instanceof DateType)
46176       composeDate(prefix+"Date", (DateType) type);
46177    else if (type instanceof DateTimeType)
46178       composeDateTime(prefix+"DateTime", (DateTimeType) type);
46179    else if (type instanceof StringType)
46180       composeString(prefix+"String", (StringType) type);
46181    else if (type instanceof IntegerType)
46182       composeInteger(prefix+"Integer", (IntegerType) type);
46183    else if (type instanceof UriType)
46184       composeUri(prefix+"Uri", (UriType) type);
46185    else if (type instanceof InstantType)
46186       composeInstant(prefix+"Instant", (InstantType) type);
46187    else if (type instanceof BooleanType)
46188       composeBoolean(prefix+"Boolean", (BooleanType) type);
46189    else if (type instanceof Base64BinaryType)
46190       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
46191    else if (type instanceof TimeType)
46192       composeTime(prefix+"Time", (TimeType) type);
46193    else if (type instanceof DecimalType)
46194       composeDecimal(prefix+"Decimal", (DecimalType) type);
46195    else
46196      throw new Error("Unhandled type");
46197  }
46198
46199}
46200