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 Thu, Sep 13, 2018 09:04-0400 for FHIR v3.5.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 && xpp.getName().equals("searchParam")) {
666        res.setSearchParamElement(parseString(xpp));
667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
668        res.setValueSetElement(parseCanonical(xpp));
669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
670        res.getCode().add(parseCoding(xpp));
671      } else if (!parseElementContent(eventType, xpp, res))
672        return false;
673    return true;
674  }
675
676  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDataRequirementDateFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
677    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
678    parseElementAttributes(xpp, res);
679    next(xpp);
680    int eventType = nextNoWhitespace(xpp);
681    while (eventType != XmlPullParser.END_TAG) {
682  if (!parseDataRequirementDataRequirementDateFilterComponentContent(eventType, xpp, owner, res))
683        unknownContent(xpp);
684      eventType = nextNoWhitespace(xpp);
685    }
686    next(xpp);
687    parseElementClose(res);
688    return res;
689  }
690
691  protected boolean parseDataRequirementDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
692      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
693        res.setPathElement(parseString(xpp));
694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
695        res.setSearchParamElement(parseString(xpp));
696      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
697        res.setValue(parseType("value", xpp));
698      } else if (!parseElementContent(eventType, xpp, res))
699        return false;
700    return true;
701  }
702
703  protected DataRequirement.DataRequirementSortComponent parseDataRequirementDataRequirementSortComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
704    DataRequirement.DataRequirementSortComponent res = new DataRequirement.DataRequirementSortComponent();
705    parseElementAttributes(xpp, res);
706    next(xpp);
707    int eventType = nextNoWhitespace(xpp);
708    while (eventType != XmlPullParser.END_TAG) {
709  if (!parseDataRequirementDataRequirementSortComponentContent(eventType, xpp, owner, res))
710        unknownContent(xpp);
711      eventType = nextNoWhitespace(xpp);
712    }
713    next(xpp);
714    parseElementClose(res);
715    return res;
716  }
717
718  protected boolean parseDataRequirementDataRequirementSortComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementSortComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
719      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
720        res.setPathElement(parseString(xpp));
721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
722        res.setDirectionElement(parseEnumeration(xpp, DataRequirement.SortDirection.NULL, new DataRequirement.SortDirectionEnumFactory()));
723      } else if (!parseElementContent(eventType, xpp, res))
724        return false;
725    return true;
726  }
727
728  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
729    Dosage res = new Dosage();
730    parseTypeAttributes(xpp, res);
731    next(xpp);
732    int eventType = nextNoWhitespace(xpp);
733    while (eventType != XmlPullParser.END_TAG) {
734  if (!parseDosageContent(eventType, xpp, res))
735        unknownContent(xpp);
736      eventType = nextNoWhitespace(xpp);
737    }
738    next(xpp);
739    parseElementClose(res);
740    return res;
741  }
742
743  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
744      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
745        res.setSequenceElement(parseInteger(xpp));
746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
747        res.setTextElement(parseString(xpp));
748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
749        res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
751        res.setPatientInstructionElement(parseString(xpp));
752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
753        res.setTiming(parseTiming(xpp));
754      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
755        res.setAsNeeded(parseType("asNeeded", xpp));
756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
757        res.setSite(parseCodeableConcept(xpp));
758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
759        res.setRoute(parseCodeableConcept(xpp));
760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
761        res.setMethod(parseCodeableConcept(xpp));
762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseAndRate")) {
763        res.getDoseAndRate().add(parseDosageDosageDoseAndRateComponent(xpp, res));
764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
765        res.setMaxDosePerPeriod(parseRatio(xpp));
766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
767        res.setMaxDosePerAdministration(parseQuantity(xpp));
768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
769        res.setMaxDosePerLifetime(parseQuantity(xpp));
770      } else if (!parseBackboneElementContent(eventType, xpp, res))
771        return false;
772    return true;
773  }
774
775  protected Dosage.DosageDoseAndRateComponent parseDosageDosageDoseAndRateComponent(XmlPullParser xpp, Dosage owner) throws XmlPullParserException, IOException, FHIRFormatError {
776    Dosage.DosageDoseAndRateComponent res = new Dosage.DosageDoseAndRateComponent();
777    parseElementAttributes(xpp, res);
778    next(xpp);
779    int eventType = nextNoWhitespace(xpp);
780    while (eventType != XmlPullParser.END_TAG) {
781  if (!parseDosageDosageDoseAndRateComponentContent(eventType, xpp, owner, res))
782        unknownContent(xpp);
783      eventType = nextNoWhitespace(xpp);
784    }
785    next(xpp);
786    parseElementClose(res);
787    return res;
788  }
789
790  protected boolean parseDosageDosageDoseAndRateComponentContent(int eventType, XmlPullParser xpp, Dosage owner, Dosage.DosageDoseAndRateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
791      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
792        res.setType(parseCodeableConcept(xpp));
793      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
794        res.setDose(parseType("dose", xpp));
795      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
796        res.setRate(parseType("rate", xpp));
797      } else if (!parseElementContent(eventType, xpp, res))
798        return false;
799    return true;
800  }
801
802  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
803    Money res = new Money();
804    parseTypeAttributes(xpp, res);
805    next(xpp);
806    int eventType = nextNoWhitespace(xpp);
807    while (eventType != XmlPullParser.END_TAG) {
808  if (!parseMoneyContent(eventType, xpp, res))
809        unknownContent(xpp);
810      eventType = nextNoWhitespace(xpp);
811    }
812    next(xpp);
813    parseElementClose(res);
814    return res;
815  }
816
817  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
819        res.setValueElement(parseDecimal(xpp));
820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
821        res.setCurrencyElement(parseCode(xpp));
822      } else if (!parseElementContent(eventType, xpp, res))
823        return false;
824    return true;
825  }
826
827  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
828    HumanName res = new HumanName();
829    parseTypeAttributes(xpp, res);
830    next(xpp);
831    int eventType = nextNoWhitespace(xpp);
832    while (eventType != XmlPullParser.END_TAG) {
833  if (!parseHumanNameContent(eventType, xpp, res))
834        unknownContent(xpp);
835      eventType = nextNoWhitespace(xpp);
836    }
837    next(xpp);
838    parseElementClose(res);
839    return res;
840  }
841
842  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
843      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
844        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
846        res.setTextElement(parseString(xpp));
847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
848        res.setFamilyElement(parseString(xpp));
849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
850        res.getGiven().add(parseString(xpp));
851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
852        res.getPrefix().add(parseString(xpp));
853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
854        res.getSuffix().add(parseString(xpp));
855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
856        res.setPeriod(parsePeriod(xpp));
857      } else if (!parseElementContent(eventType, xpp, res))
858        return false;
859    return true;
860  }
861
862  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
863    ContactPoint res = new ContactPoint();
864    parseTypeAttributes(xpp, res);
865    next(xpp);
866    int eventType = nextNoWhitespace(xpp);
867    while (eventType != XmlPullParser.END_TAG) {
868  if (!parseContactPointContent(eventType, xpp, res))
869        unknownContent(xpp);
870      eventType = nextNoWhitespace(xpp);
871    }
872    next(xpp);
873    parseElementClose(res);
874    return res;
875  }
876
877  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
879        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
881        res.setValueElement(parseString(xpp));
882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
883        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
885        res.setRankElement(parsePositiveInt(xpp));
886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
887        res.setPeriod(parsePeriod(xpp));
888      } else if (!parseElementContent(eventType, xpp, res))
889        return false;
890    return true;
891  }
892
893  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
894    Identifier res = new Identifier();
895    parseTypeAttributes(xpp, res);
896    next(xpp);
897    int eventType = nextNoWhitespace(xpp);
898    while (eventType != XmlPullParser.END_TAG) {
899  if (!parseIdentifierContent(eventType, xpp, res))
900        unknownContent(xpp);
901      eventType = nextNoWhitespace(xpp);
902    }
903    next(xpp);
904    parseElementClose(res);
905    return res;
906  }
907
908  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
909      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
910        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
912        res.setType(parseCodeableConcept(xpp));
913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
914        res.setSystemElement(parseUri(xpp));
915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
916        res.setValueElement(parseString(xpp));
917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
918        res.setPeriod(parsePeriod(xpp));
919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
920        res.setAssigner(parseReference(xpp));
921      } else if (!parseElementContent(eventType, xpp, res))
922        return false;
923    return true;
924  }
925
926  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
927    Coding res = new Coding();
928    parseTypeAttributes(xpp, res);
929    next(xpp);
930    int eventType = nextNoWhitespace(xpp);
931    while (eventType != XmlPullParser.END_TAG) {
932  if (!parseCodingContent(eventType, xpp, res))
933        unknownContent(xpp);
934      eventType = nextNoWhitespace(xpp);
935    }
936    next(xpp);
937    parseElementClose(res);
938    return res;
939  }
940
941  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
942      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
943        res.setSystemElement(parseUri(xpp));
944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
945        res.setVersionElement(parseString(xpp));
946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
947        res.setCodeElement(parseCode(xpp));
948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
949        res.setDisplayElement(parseString(xpp));
950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
951        res.setUserSelectedElement(parseBoolean(xpp));
952      } else if (!parseElementContent(eventType, xpp, res))
953        return false;
954    return true;
955  }
956
957  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
958    SampledData res = new SampledData();
959    parseTypeAttributes(xpp, res);
960    next(xpp);
961    int eventType = nextNoWhitespace(xpp);
962    while (eventType != XmlPullParser.END_TAG) {
963  if (!parseSampledDataContent(eventType, xpp, res))
964        unknownContent(xpp);
965      eventType = nextNoWhitespace(xpp);
966    }
967    next(xpp);
968    parseElementClose(res);
969    return res;
970  }
971
972  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
973      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
974        res.setOrigin(parseQuantity(xpp));
975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
976        res.setPeriodElement(parseDecimal(xpp));
977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
978        res.setFactorElement(parseDecimal(xpp));
979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
980        res.setLowerLimitElement(parseDecimal(xpp));
981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
982        res.setUpperLimitElement(parseDecimal(xpp));
983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
984        res.setDimensionsElement(parsePositiveInt(xpp));
985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
986        res.setDataElement(parseString(xpp));
987      } else if (!parseElementContent(eventType, xpp, res))
988        return false;
989    return true;
990  }
991
992  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
993    Ratio res = new Ratio();
994    parseTypeAttributes(xpp, res);
995    next(xpp);
996    int eventType = nextNoWhitespace(xpp);
997    while (eventType != XmlPullParser.END_TAG) {
998  if (!parseRatioContent(eventType, xpp, res))
999        unknownContent(xpp);
1000      eventType = nextNoWhitespace(xpp);
1001    }
1002    next(xpp);
1003    parseElementClose(res);
1004    return res;
1005  }
1006
1007  protected boolean parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
1008      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
1009        res.setNumerator(parseQuantity(xpp));
1010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
1011        res.setDenominator(parseQuantity(xpp));
1012      } else if (!parseElementContent(eventType, xpp, res))
1013        return false;
1014    return true;
1015  }
1016
1017  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1018    Distance res = new Distance();
1019    parseTypeAttributes(xpp, res);
1020    next(xpp);
1021    int eventType = nextNoWhitespace(xpp);
1022    while (eventType != XmlPullParser.END_TAG) {
1023  if (!parseDistanceContent(eventType, xpp, res))
1024        unknownContent(xpp);
1025      eventType = nextNoWhitespace(xpp);
1026    }
1027    next(xpp);
1028    parseElementClose(res);
1029    return res;
1030  }
1031
1032  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
1033      if (!parseQuantityContent(eventType, xpp, res))
1034        return false;
1035    return true;
1036  }
1037
1038  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1039    Age res = new Age();
1040    parseTypeAttributes(xpp, res);
1041    next(xpp);
1042    int eventType = nextNoWhitespace(xpp);
1043    while (eventType != XmlPullParser.END_TAG) {
1044  if (!parseAgeContent(eventType, xpp, res))
1045        unknownContent(xpp);
1046      eventType = nextNoWhitespace(xpp);
1047    }
1048    next(xpp);
1049    parseElementClose(res);
1050    return res;
1051  }
1052
1053  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
1054      if (!parseQuantityContent(eventType, xpp, res))
1055        return false;
1056    return true;
1057  }
1058
1059  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1060    Reference res = new Reference();
1061    parseTypeAttributes(xpp, res);
1062    next(xpp);
1063    int eventType = nextNoWhitespace(xpp);
1064    while (eventType != XmlPullParser.END_TAG) {
1065  if (!parseReferenceContent(eventType, xpp, res))
1066        unknownContent(xpp);
1067      eventType = nextNoWhitespace(xpp);
1068    }
1069    next(xpp);
1070    parseElementClose(res);
1071    return res;
1072  }
1073
1074  protected boolean parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
1075      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1076        res.setReferenceElement(parseString(xpp));
1077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1078        res.setTypeElement(parseUri(xpp));
1079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1080        res.setIdentifier(parseIdentifier(xpp));
1081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1082        res.setDisplayElement(parseString(xpp));
1083      } else if (!parseElementContent(eventType, xpp, res))
1084        return false;
1085    return true;
1086  }
1087
1088  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1089    TriggerDefinition res = new TriggerDefinition();
1090    parseTypeAttributes(xpp, res);
1091    next(xpp);
1092    int eventType = nextNoWhitespace(xpp);
1093    while (eventType != XmlPullParser.END_TAG) {
1094  if (!parseTriggerDefinitionContent(eventType, xpp, res))
1095        unknownContent(xpp);
1096      eventType = nextNoWhitespace(xpp);
1097    }
1098    next(xpp);
1099    parseElementClose(res);
1100    return res;
1101  }
1102
1103  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1104      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1105        res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
1106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1107        res.setNameElement(parseString(xpp));
1108      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
1109        res.setTiming(parseType("timing", xpp));
1110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1111        res.setData(parseDataRequirement(xpp));
1112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1113        res.setCondition(parseExpression(xpp));
1114      } else if (!parseElementContent(eventType, xpp, res))
1115        return false;
1116    return true;
1117  }
1118
1119  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1120    Quantity res = new Quantity();
1121    parseTypeAttributes(xpp, res);
1122    next(xpp);
1123    int eventType = nextNoWhitespace(xpp);
1124    while (eventType != XmlPullParser.END_TAG) {
1125  if (!parseQuantityContent(eventType, xpp, res))
1126        unknownContent(xpp);
1127      eventType = nextNoWhitespace(xpp);
1128    }
1129    next(xpp);
1130    parseElementClose(res);
1131    return res;
1132  }
1133
1134  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
1135      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1136        res.setValueElement(parseDecimal(xpp));
1137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
1138        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
1139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
1140        res.setUnitElement(parseString(xpp));
1141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1142        res.setSystemElement(parseUri(xpp));
1143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1144        res.setCodeElement(parseCode(xpp));
1145      } else if (!parseElementContent(eventType, xpp, res))
1146        return false;
1147    return true;
1148  }
1149
1150  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1151    Period res = new Period();
1152    parseTypeAttributes(xpp, res);
1153    next(xpp);
1154    int eventType = nextNoWhitespace(xpp);
1155    while (eventType != XmlPullParser.END_TAG) {
1156  if (!parsePeriodContent(eventType, xpp, res))
1157        unknownContent(xpp);
1158      eventType = nextNoWhitespace(xpp);
1159    }
1160    next(xpp);
1161    parseElementClose(res);
1162    return res;
1163  }
1164
1165  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
1166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1167        res.setStartElement(parseDateTime(xpp));
1168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1169        res.setEndElement(parseDateTime(xpp));
1170      } else if (!parseElementContent(eventType, xpp, res))
1171        return false;
1172    return true;
1173  }
1174
1175  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1176    Duration res = new Duration();
1177    parseTypeAttributes(xpp, res);
1178    next(xpp);
1179    int eventType = nextNoWhitespace(xpp);
1180    while (eventType != XmlPullParser.END_TAG) {
1181  if (!parseDurationContent(eventType, xpp, res))
1182        unknownContent(xpp);
1183      eventType = nextNoWhitespace(xpp);
1184    }
1185    next(xpp);
1186    parseElementClose(res);
1187    return res;
1188  }
1189
1190  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
1191      if (!parseQuantityContent(eventType, xpp, res))
1192        return false;
1193    return true;
1194  }
1195
1196  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1197    Range res = new Range();
1198    parseTypeAttributes(xpp, res);
1199    next(xpp);
1200    int eventType = nextNoWhitespace(xpp);
1201    while (eventType != XmlPullParser.END_TAG) {
1202  if (!parseRangeContent(eventType, xpp, res))
1203        unknownContent(xpp);
1204      eventType = nextNoWhitespace(xpp);
1205    }
1206    next(xpp);
1207    parseElementClose(res);
1208    return res;
1209  }
1210
1211  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
1212      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
1213        res.setLow(parseQuantity(xpp));
1214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
1215        res.setHigh(parseQuantity(xpp));
1216      } else if (!parseElementContent(eventType, xpp, res))
1217        return false;
1218    return true;
1219  }
1220
1221  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1222    RelatedArtifact res = new RelatedArtifact();
1223    parseTypeAttributes(xpp, res);
1224    next(xpp);
1225    int eventType = nextNoWhitespace(xpp);
1226    while (eventType != XmlPullParser.END_TAG) {
1227  if (!parseRelatedArtifactContent(eventType, xpp, res))
1228        unknownContent(xpp);
1229      eventType = nextNoWhitespace(xpp);
1230    }
1231    next(xpp);
1232    parseElementClose(res);
1233    return res;
1234  }
1235
1236  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
1237      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1238        res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
1239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1240        res.setDisplayElement(parseString(xpp));
1241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
1242        res.setCitationElement(parseString(xpp));
1243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1244        res.setUrlElement(parseUrl(xpp));
1245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1246        res.setDocument(parseAttachment(xpp));
1247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1248        res.setResourceElement(parseCanonical(xpp));
1249      } else if (!parseElementContent(eventType, xpp, res))
1250        return false;
1251    return true;
1252  }
1253
1254  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1255    Annotation res = new Annotation();
1256    parseTypeAttributes(xpp, res);
1257    next(xpp);
1258    int eventType = nextNoWhitespace(xpp);
1259    while (eventType != XmlPullParser.END_TAG) {
1260  if (!parseAnnotationContent(eventType, xpp, res))
1261        unknownContent(xpp);
1262      eventType = nextNoWhitespace(xpp);
1263    }
1264    next(xpp);
1265    parseElementClose(res);
1266    return res;
1267  }
1268
1269  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
1270      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
1271        res.setAuthor(parseType("author", xpp));
1272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
1273        res.setTimeElement(parseDateTime(xpp));
1274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1275        res.setTextElement(parseMarkdown(xpp));
1276      } else if (!parseElementContent(eventType, xpp, res))
1277        return false;
1278    return true;
1279  }
1280
1281  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1282    ContactDetail res = new ContactDetail();
1283    parseTypeAttributes(xpp, res);
1284    next(xpp);
1285    int eventType = nextNoWhitespace(xpp);
1286    while (eventType != XmlPullParser.END_TAG) {
1287  if (!parseContactDetailContent(eventType, xpp, res))
1288        unknownContent(xpp);
1289      eventType = nextNoWhitespace(xpp);
1290    }
1291    next(xpp);
1292    parseElementClose(res);
1293    return res;
1294  }
1295
1296  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
1297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1298        res.setNameElement(parseString(xpp));
1299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1300        res.getTelecom().add(parseContactPoint(xpp));
1301      } else if (!parseElementContent(eventType, xpp, res))
1302        return false;
1303    return true;
1304  }
1305
1306  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1307    UsageContext res = new UsageContext();
1308    parseTypeAttributes(xpp, res);
1309    next(xpp);
1310    int eventType = nextNoWhitespace(xpp);
1311    while (eventType != XmlPullParser.END_TAG) {
1312  if (!parseUsageContextContent(eventType, xpp, res))
1313        unknownContent(xpp);
1314      eventType = nextNoWhitespace(xpp);
1315    }
1316    next(xpp);
1317    parseElementClose(res);
1318    return res;
1319  }
1320
1321  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
1322      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1323        res.setCode(parseCoding(xpp));
1324      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1325        res.setValue(parseType("value", xpp));
1326      } else if (!parseElementContent(eventType, xpp, res))
1327        return false;
1328    return true;
1329  }
1330
1331  protected Expression parseExpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1332    Expression res = new Expression();
1333    parseTypeAttributes(xpp, res);
1334    next(xpp);
1335    int eventType = nextNoWhitespace(xpp);
1336    while (eventType != XmlPullParser.END_TAG) {
1337  if (!parseExpressionContent(eventType, xpp, res))
1338        unknownContent(xpp);
1339      eventType = nextNoWhitespace(xpp);
1340    }
1341    next(xpp);
1342    parseElementClose(res);
1343    return res;
1344  }
1345
1346  protected boolean parseExpressionContent(int eventType, XmlPullParser xpp, Expression res) throws XmlPullParserException, IOException, FHIRFormatError {
1347      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1348        res.setDescriptionElement(parseString(xpp));
1349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1350        res.setNameElement(parseId(xpp));
1351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1352        res.setLanguageElement(parseEnumeration(xpp, Expression.ExpressionLanguage.NULL, new Expression.ExpressionLanguageEnumFactory()));
1353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1354        res.setExpressionElement(parseString(xpp));
1355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1356        res.setReferenceElement(parseUri(xpp));
1357      } else if (!parseElementContent(eventType, xpp, res))
1358        return false;
1359    return true;
1360  }
1361
1362  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1363    Signature res = new Signature();
1364    parseTypeAttributes(xpp, res);
1365    next(xpp);
1366    int eventType = nextNoWhitespace(xpp);
1367    while (eventType != XmlPullParser.END_TAG) {
1368  if (!parseSignatureContent(eventType, xpp, res))
1369        unknownContent(xpp);
1370      eventType = nextNoWhitespace(xpp);
1371    }
1372    next(xpp);
1373    parseElementClose(res);
1374    return res;
1375  }
1376
1377  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
1378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1379        res.getType().add(parseCoding(xpp));
1380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1381        res.setWhenElement(parseInstant(xpp));
1382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
1383        res.setWho(parseReference(xpp));
1384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
1385        res.setOnBehalfOf(parseReference(xpp));
1386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetFormat")) {
1387        res.setTargetFormatElement(parseCode(xpp));
1388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sigFormat")) {
1389        res.setSigFormatElement(parseCode(xpp));
1390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1391        res.setDataElement(parseBase64Binary(xpp));
1392      } else if (!parseElementContent(eventType, xpp, res))
1393        return false;
1394    return true;
1395  }
1396
1397  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1398    Timing res = new Timing();
1399    parseTypeAttributes(xpp, res);
1400    next(xpp);
1401    int eventType = nextNoWhitespace(xpp);
1402    while (eventType != XmlPullParser.END_TAG) {
1403  if (!parseTimingContent(eventType, xpp, res))
1404        unknownContent(xpp);
1405      eventType = nextNoWhitespace(xpp);
1406    }
1407    next(xpp);
1408    parseElementClose(res);
1409    return res;
1410  }
1411
1412  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
1413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1414        res.getEvent().add(parseDateTime(xpp));
1415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1416        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
1417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1418        res.setCode(parseCodeableConcept(xpp));
1419      } else if (!parseBackboneElementContent(eventType, xpp, res))
1420        return false;
1421    return true;
1422  }
1423
1424  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
1425    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1426    parseElementAttributes(xpp, res);
1427    next(xpp);
1428    int eventType = nextNoWhitespace(xpp);
1429    while (eventType != XmlPullParser.END_TAG) {
1430  if (!parseTimingTimingRepeatComponentContent(eventType, xpp, owner, res))
1431        unknownContent(xpp);
1432      eventType = nextNoWhitespace(xpp);
1433    }
1434    next(xpp);
1435    parseElementClose(res);
1436    return res;
1437  }
1438
1439  protected boolean parseTimingTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing owner, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1440      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1441        res.setBounds(parseType("bounds", xpp));
1442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1443        res.setCountElement(parsePositiveInt(xpp));
1444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
1445        res.setCountMaxElement(parsePositiveInt(xpp));
1446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
1447        res.setDurationElement(parseDecimal(xpp));
1448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
1449        res.setDurationMaxElement(parseDecimal(xpp));
1450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
1451        res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
1453        res.setFrequencyElement(parsePositiveInt(xpp));
1454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
1455        res.setFrequencyMaxElement(parsePositiveInt(xpp));
1456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1457        res.setPeriodElement(parseDecimal(xpp));
1458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
1459        res.setPeriodMaxElement(parseDecimal(xpp));
1460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
1461        res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
1463        res.getDayOfWeek().add(parseEnumeration(xpp, Timing.DayOfWeek.NULL, new Timing.DayOfWeekEnumFactory()));
1464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
1465        res.getTimeOfDay().add(parseTime(xpp));
1466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1467        res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
1468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
1469        res.setOffsetElement(parseUnsignedInt(xpp));
1470      } else if (!parseElementContent(eventType, xpp, res))
1471        return false;
1472    return true;
1473  }
1474
1475  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1476    CodeableConcept res = new CodeableConcept();
1477    parseTypeAttributes(xpp, res);
1478    next(xpp);
1479    int eventType = nextNoWhitespace(xpp);
1480    while (eventType != XmlPullParser.END_TAG) {
1481  if (!parseCodeableConceptContent(eventType, xpp, res))
1482        unknownContent(xpp);
1483      eventType = nextNoWhitespace(xpp);
1484    }
1485    next(xpp);
1486    parseElementClose(res);
1487    return res;
1488  }
1489
1490  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
1491      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
1492        res.getCoding().add(parseCoding(xpp));
1493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1494        res.setTextElement(parseString(xpp));
1495      } else if (!parseElementContent(eventType, xpp, res))
1496        return false;
1497    return true;
1498  }
1499
1500  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1501    ParameterDefinition res = new ParameterDefinition();
1502    parseTypeAttributes(xpp, res);
1503    next(xpp);
1504    int eventType = nextNoWhitespace(xpp);
1505    while (eventType != XmlPullParser.END_TAG) {
1506  if (!parseParameterDefinitionContent(eventType, xpp, res))
1507        unknownContent(xpp);
1508      eventType = nextNoWhitespace(xpp);
1509    }
1510    next(xpp);
1511    parseElementClose(res);
1512    return res;
1513  }
1514
1515  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1516      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1517        res.setNameElement(parseCode(xpp));
1518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1519        res.setUseElement(parseEnumeration(xpp, ParameterDefinition.ParameterUse.NULL, new ParameterDefinition.ParameterUseEnumFactory()));
1520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1521        res.setMinElement(parseInteger(xpp));
1522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1523        res.setMaxElement(parseString(xpp));
1524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1525        res.setDocumentationElement(parseString(xpp));
1526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1527        res.setTypeElement(parseCode(xpp));
1528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1529        res.setProfileElement(parseCanonical(xpp));
1530      } else if (!parseElementContent(eventType, xpp, res))
1531        return false;
1532    return true;
1533  }
1534
1535  protected MarketingStatus parseMarketingStatus(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1536    MarketingStatus res = new MarketingStatus();
1537    parseElementAttributes(xpp, res);
1538    next(xpp);
1539    int eventType = nextNoWhitespace(xpp);
1540    while (eventType != XmlPullParser.END_TAG) {
1541  if (!parseMarketingStatusContent(eventType, xpp, res))
1542        unknownContent(xpp);
1543      eventType = nextNoWhitespace(xpp);
1544    }
1545    next(xpp);
1546    parseElementClose(res);
1547    return res;
1548  }
1549
1550  protected boolean parseMarketingStatusContent(int eventType, XmlPullParser xpp, MarketingStatus res) throws XmlPullParserException, IOException, FHIRFormatError {
1551      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
1552        res.setCountry(parseCodeableConcept(xpp));
1553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
1554        res.setJurisdiction(parseCodeableConcept(xpp));
1555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1556        res.setStatus(parseCodeableConcept(xpp));
1557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRange")) {
1558        res.setDateRange(parsePeriod(xpp));
1559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
1560        res.setRestoreDateElement(parseDateTime(xpp));
1561      } else if (!parseBackboneElementContent(eventType, xpp, res))
1562        return false;
1563    return true;
1564  }
1565
1566  protected SubstanceAmount parseSubstanceAmount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1567    SubstanceAmount res = new SubstanceAmount();
1568    parseElementAttributes(xpp, res);
1569    next(xpp);
1570    int eventType = nextNoWhitespace(xpp);
1571    while (eventType != XmlPullParser.END_TAG) {
1572  if (!parseSubstanceAmountContent(eventType, xpp, res))
1573        unknownContent(xpp);
1574      eventType = nextNoWhitespace(xpp);
1575    }
1576    next(xpp);
1577    parseElementClose(res);
1578    return res;
1579  }
1580
1581  protected boolean parseSubstanceAmountContent(int eventType, XmlPullParser xpp, SubstanceAmount res) throws XmlPullParserException, IOException, FHIRFormatError {
1582      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
1583        res.setAmount(parseType("amount", xpp));
1584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
1585        res.setAmountType(parseCodeableConcept(xpp));
1586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountText")) {
1587        res.setAmountTextElement(parseString(xpp));
1588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
1589        res.setReferenceRange(parseSubstanceAmountSubstanceAmountReferenceRangeComponent(xpp, res));
1590      } else if (!parseBackboneElementContent(eventType, xpp, res))
1591        return false;
1592    return true;
1593  }
1594
1595  protected SubstanceAmount.SubstanceAmountReferenceRangeComponent parseSubstanceAmountSubstanceAmountReferenceRangeComponent(XmlPullParser xpp, SubstanceAmount owner) throws XmlPullParserException, IOException, FHIRFormatError {
1596    SubstanceAmount.SubstanceAmountReferenceRangeComponent res = new SubstanceAmount.SubstanceAmountReferenceRangeComponent();
1597    parseElementAttributes(xpp, res);
1598    next(xpp);
1599    int eventType = nextNoWhitespace(xpp);
1600    while (eventType != XmlPullParser.END_TAG) {
1601  if (!parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(eventType, xpp, owner, res))
1602        unknownContent(xpp);
1603      eventType = nextNoWhitespace(xpp);
1604    }
1605    next(xpp);
1606    parseElementClose(res);
1607    return res;
1608  }
1609
1610  protected boolean parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(int eventType, XmlPullParser xpp, SubstanceAmount owner, SubstanceAmount.SubstanceAmountReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1611      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowLimit")) {
1612        res.setLowLimit(parseQuantity(xpp));
1613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("highLimit")) {
1614        res.setHighLimit(parseQuantity(xpp));
1615      } else if (!parseElementContent(eventType, xpp, res))
1616        return false;
1617    return true;
1618  }
1619
1620  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1621    ElementDefinition res = new ElementDefinition();
1622    parseElementAttributes(xpp, res);
1623    next(xpp);
1624    int eventType = nextNoWhitespace(xpp);
1625    while (eventType != XmlPullParser.END_TAG) {
1626  if (!parseElementDefinitionContent(eventType, xpp, res))
1627        unknownContent(xpp);
1628      eventType = nextNoWhitespace(xpp);
1629    }
1630    next(xpp);
1631    parseElementClose(res);
1632    return res;
1633  }
1634
1635  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1636      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1637        res.setPathElement(parseString(xpp));
1638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1639        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
1641        res.setSliceNameElement(parseString(xpp));
1642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceIsConstraining")) {
1643        res.setSliceIsConstrainingElement(parseBoolean(xpp));
1644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1645        res.setLabelElement(parseString(xpp));
1646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1647        res.getCode().add(parseCoding(xpp));
1648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1649        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1651        res.setShortElement(parseString(xpp));
1652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1653        res.setDefinitionElement(parseMarkdown(xpp));
1654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1655        res.setCommentElement(parseMarkdown(xpp));
1656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1657        res.setRequirementsElement(parseMarkdown(xpp));
1658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1659        res.getAlias().add(parseString(xpp));
1660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1661        res.setMinElement(parseUnsignedInt(xpp));
1662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1663        res.setMaxElement(parseString(xpp));
1664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1665        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1667        res.setContentReferenceElement(parseUri(xpp));
1668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1669        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1670      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1671        res.setDefaultValue(parseType("defaultValue", xpp));
1672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1673        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1675        res.setOrderMeaningElement(parseString(xpp));
1676      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1677        res.setFixed(parseType("fixed", xpp));
1678      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1679        res.setPattern(parseType("pattern", xpp));
1680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1681        res.getExample().add(parseElementDefinitionElementDefinitionExampleComponent(xpp, res));
1682      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1683        res.setMinValue(parseType("minValue", xpp));
1684      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1685        res.setMaxValue(parseType("maxValue", xpp));
1686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1687        res.setMaxLengthElement(parseInteger(xpp));
1688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1689        res.getCondition().add(parseId(xpp));
1690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1691        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1693        res.setMustSupportElement(parseBoolean(xpp));
1694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1695        res.setIsModifierElement(parseBoolean(xpp));
1696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifierReason")) {
1697        res.setIsModifierReasonElement(parseString(xpp));
1698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1699        res.setIsSummaryElement(parseBoolean(xpp));
1700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1701        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1703        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1704      } else if (!parseBackboneElementContent(eventType, xpp, res))
1705        return false;
1706    return true;
1707  }
1708
1709  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1710    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1711    parseElementAttributes(xpp, res);
1712    next(xpp);
1713    int eventType = nextNoWhitespace(xpp);
1714    while (eventType != XmlPullParser.END_TAG) {
1715  if (!parseElementDefinitionElementDefinitionSlicingComponentContent(eventType, xpp, owner, res))
1716        unknownContent(xpp);
1717      eventType = nextNoWhitespace(xpp);
1718    }
1719    next(xpp);
1720    parseElementClose(res);
1721    return res;
1722  }
1723
1724  protected boolean parseElementDefinitionElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1725      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1726        res.getDiscriminator().add(parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(xpp, owner));
1727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1728        res.setDescriptionElement(parseString(xpp));
1729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1730        res.setOrderedElement(parseBoolean(xpp));
1731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1732        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1733      } else if (!parseElementContent(eventType, xpp, res))
1734        return false;
1735    return true;
1736  }
1737
1738  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1739    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1740    parseElementAttributes(xpp, res);
1741    next(xpp);
1742    int eventType = nextNoWhitespace(xpp);
1743    while (eventType != XmlPullParser.END_TAG) {
1744  if (!parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(eventType, xpp, owner, res))
1745        unknownContent(xpp);
1746      eventType = nextNoWhitespace(xpp);
1747    }
1748    next(xpp);
1749    parseElementClose(res);
1750    return res;
1751  }
1752
1753  protected boolean parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1754      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1755        res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1757        res.setPathElement(parseString(xpp));
1758      } else if (!parseElementContent(eventType, xpp, res))
1759        return false;
1760    return true;
1761  }
1762
1763  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1764    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1765    parseElementAttributes(xpp, res);
1766    next(xpp);
1767    int eventType = nextNoWhitespace(xpp);
1768    while (eventType != XmlPullParser.END_TAG) {
1769  if (!parseElementDefinitionElementDefinitionBaseComponentContent(eventType, xpp, owner, res))
1770        unknownContent(xpp);
1771      eventType = nextNoWhitespace(xpp);
1772    }
1773    next(xpp);
1774    parseElementClose(res);
1775    return res;
1776  }
1777
1778  protected boolean parseElementDefinitionElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1779      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1780        res.setPathElement(parseString(xpp));
1781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1782        res.setMinElement(parseUnsignedInt(xpp));
1783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1784        res.setMaxElement(parseString(xpp));
1785      } else if (!parseElementContent(eventType, xpp, res))
1786        return false;
1787    return true;
1788  }
1789
1790  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1791    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1792    parseElementAttributes(xpp, res);
1793    next(xpp);
1794    int eventType = nextNoWhitespace(xpp);
1795    while (eventType != XmlPullParser.END_TAG) {
1796  if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, owner, res))
1797        unknownContent(xpp);
1798      eventType = nextNoWhitespace(xpp);
1799    }
1800    next(xpp);
1801    parseElementClose(res);
1802    return res;
1803  }
1804
1805  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1806      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1807        res.setCodeElement(parseUri(xpp));
1808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1809        res.getProfile().add(parseCanonical(xpp));
1810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1811        res.getTargetProfile().add(parseCanonical(xpp));
1812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1813        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1815        res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1816      } else if (!parseElementContent(eventType, xpp, res))
1817        return false;
1818    return true;
1819  }
1820
1821  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionElementDefinitionExampleComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1822    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1823    parseElementAttributes(xpp, res);
1824    next(xpp);
1825    int eventType = nextNoWhitespace(xpp);
1826    while (eventType != XmlPullParser.END_TAG) {
1827  if (!parseElementDefinitionElementDefinitionExampleComponentContent(eventType, xpp, owner, res))
1828        unknownContent(xpp);
1829      eventType = nextNoWhitespace(xpp);
1830    }
1831    next(xpp);
1832    parseElementClose(res);
1833    return res;
1834  }
1835
1836  protected boolean parseElementDefinitionElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1837      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1838        res.setLabelElement(parseString(xpp));
1839      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1840        res.setValue(parseType("value", xpp));
1841      } else if (!parseElementContent(eventType, xpp, res))
1842        return false;
1843    return true;
1844  }
1845
1846  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1847    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1848    parseElementAttributes(xpp, res);
1849    next(xpp);
1850    int eventType = nextNoWhitespace(xpp);
1851    while (eventType != XmlPullParser.END_TAG) {
1852  if (!parseElementDefinitionElementDefinitionConstraintComponentContent(eventType, xpp, owner, res))
1853        unknownContent(xpp);
1854      eventType = nextNoWhitespace(xpp);
1855    }
1856    next(xpp);
1857    parseElementClose(res);
1858    return res;
1859  }
1860
1861  protected boolean parseElementDefinitionElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1862      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1863        res.setKeyElement(parseId(xpp));
1864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1865        res.setRequirementsElement(parseString(xpp));
1866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1867        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1869        res.setHumanElement(parseString(xpp));
1870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1871        res.setExpressionElement(parseString(xpp));
1872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1873        res.setXpathElement(parseString(xpp));
1874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1875        res.setSourceElement(parseCanonical(xpp));
1876      } else if (!parseElementContent(eventType, xpp, res))
1877        return false;
1878    return true;
1879  }
1880
1881  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1882    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1883    parseElementAttributes(xpp, res);
1884    next(xpp);
1885    int eventType = nextNoWhitespace(xpp);
1886    while (eventType != XmlPullParser.END_TAG) {
1887  if (!parseElementDefinitionElementDefinitionBindingComponentContent(eventType, xpp, owner, res))
1888        unknownContent(xpp);
1889      eventType = nextNoWhitespace(xpp);
1890    }
1891    next(xpp);
1892    parseElementClose(res);
1893    return res;
1894  }
1895
1896  protected boolean parseElementDefinitionElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1897      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1898        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1900        res.setDescriptionElement(parseString(xpp));
1901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
1902        res.setValueSetElement(parseCanonical(xpp));
1903      } else if (!parseElementContent(eventType, xpp, res))
1904        return false;
1905    return true;
1906  }
1907
1908  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1909    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1910    parseElementAttributes(xpp, res);
1911    next(xpp);
1912    int eventType = nextNoWhitespace(xpp);
1913    while (eventType != XmlPullParser.END_TAG) {
1914  if (!parseElementDefinitionElementDefinitionMappingComponentContent(eventType, xpp, owner, res))
1915        unknownContent(xpp);
1916      eventType = nextNoWhitespace(xpp);
1917    }
1918    next(xpp);
1919    parseElementClose(res);
1920    return res;
1921  }
1922
1923  protected boolean parseElementDefinitionElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1924      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1925        res.setIdentityElement(parseId(xpp));
1926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1927        res.setLanguageElement(parseCode(xpp));
1928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1929        res.setMapElement(parseString(xpp));
1930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1931        res.setCommentElement(parseString(xpp));
1932      } else if (!parseElementContent(eventType, xpp, res))
1933        return false;
1934    return true;
1935  }
1936
1937  protected SubstanceMoiety parseSubstanceMoiety(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1938    SubstanceMoiety res = new SubstanceMoiety();
1939    parseElementAttributes(xpp, res);
1940    next(xpp);
1941    int eventType = nextNoWhitespace(xpp);
1942    while (eventType != XmlPullParser.END_TAG) {
1943  if (!parseSubstanceMoietyContent(eventType, xpp, res))
1944        unknownContent(xpp);
1945      eventType = nextNoWhitespace(xpp);
1946    }
1947    next(xpp);
1948    parseElementClose(res);
1949    return res;
1950  }
1951
1952  protected boolean parseSubstanceMoietyContent(int eventType, XmlPullParser xpp, SubstanceMoiety res) throws XmlPullParserException, IOException, FHIRFormatError {
1953      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
1954        res.setRole(parseCodeableConcept(xpp));
1955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1956        res.setIdentifier(parseIdentifier(xpp));
1957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1958        res.setNameElement(parseString(xpp));
1959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
1960        res.setStereochemistry(parseCodeableConcept(xpp));
1961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
1962        res.setOpticalActivity(parseCodeableConcept(xpp));
1963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
1964        res.setMolecularFormulaElement(parseString(xpp));
1965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
1966        res.setAmount(parseSubstanceAmount(xpp));
1967      } else if (!parseBackboneElementContent(eventType, xpp, res))
1968        return false;
1969    return true;
1970  }
1971
1972  protected ProductShelfLife parseProductShelfLife(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1973    ProductShelfLife res = new ProductShelfLife();
1974    parseElementAttributes(xpp, res);
1975    next(xpp);
1976    int eventType = nextNoWhitespace(xpp);
1977    while (eventType != XmlPullParser.END_TAG) {
1978  if (!parseProductShelfLifeContent(eventType, xpp, res))
1979        unknownContent(xpp);
1980      eventType = nextNoWhitespace(xpp);
1981    }
1982    next(xpp);
1983    parseElementClose(res);
1984    return res;
1985  }
1986
1987  protected boolean parseProductShelfLifeContent(int eventType, XmlPullParser xpp, ProductShelfLife res) throws XmlPullParserException, IOException, FHIRFormatError {
1988      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1989        res.setIdentifier(parseIdentifier(xpp));
1990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1991        res.setType(parseCodeableConcept(xpp));
1992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1993        res.setPeriod(parseQuantity(xpp));
1994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialPrecautionsForStorage")) {
1995        res.getSpecialPrecautionsForStorage().add(parseCodeableConcept(xpp));
1996      } else if (!parseBackboneElementContent(eventType, xpp, res))
1997        return false;
1998    return true;
1999  }
2000
2001  protected ProdCharacteristic parseProdCharacteristic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2002    ProdCharacteristic res = new ProdCharacteristic();
2003    parseElementAttributes(xpp, res);
2004    next(xpp);
2005    int eventType = nextNoWhitespace(xpp);
2006    while (eventType != XmlPullParser.END_TAG) {
2007  if (!parseProdCharacteristicContent(eventType, xpp, res))
2008        unknownContent(xpp);
2009      eventType = nextNoWhitespace(xpp);
2010    }
2011    next(xpp);
2012    parseElementClose(res);
2013    return res;
2014  }
2015
2016  protected boolean parseProdCharacteristicContent(int eventType, XmlPullParser xpp, ProdCharacteristic res) throws XmlPullParserException, IOException, FHIRFormatError {
2017      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
2018        res.setHeight(parseQuantity(xpp));
2019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
2020        res.setWidth(parseQuantity(xpp));
2021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("depth")) {
2022        res.setDepth(parseQuantity(xpp));
2023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("weight")) {
2024        res.setWeight(parseQuantity(xpp));
2025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nominalVolume")) {
2026        res.setNominalVolume(parseQuantity(xpp));
2027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("externalDiameter")) {
2028        res.setExternalDiameter(parseQuantity(xpp));
2029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shape")) {
2030        res.setShapeElement(parseString(xpp));
2031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
2032        res.getColor().add(parseString(xpp));
2033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imprint")) {
2034        res.getImprint().add(parseString(xpp));
2035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
2036        res.getImage().add(parseAttachment(xpp));
2037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
2038        res.setScoring(parseCodeableConcept(xpp));
2039      } else if (!parseBackboneElementContent(eventType, xpp, res))
2040        return false;
2041    return true;
2042  }
2043
2044  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2045    parseResourceAttributes(xpp, res);
2046  }
2047
2048  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2049      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
2050        res.setText(parseNarrative(xpp));
2051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
2052        res.getContained().add(parseResourceContained(xpp));
2053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
2054        res.getExtension().add(parseExtension(xpp));
2055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
2056        res.getModifierExtension().add(parseExtension(xpp));
2057    } else
2058    return parseResourceContent(eventType, xpp, res);
2059    return true;
2060  }
2061
2062  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2063    Parameters res = new Parameters();
2064    parseResourceAttributes(xpp, res);
2065    next(xpp);
2066    int eventType = nextNoWhitespace(xpp);
2067    while (eventType != XmlPullParser.END_TAG) {
2068  if (!parseParametersContent(eventType, xpp, res))
2069        unknownContent(xpp);
2070      eventType = nextNoWhitespace(xpp);
2071    }
2072    next(xpp);
2073    parseElementClose(res);
2074    return res;
2075  }
2076
2077  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
2078      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
2079        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
2080      } else if (!parseResourceContent(eventType, xpp, res))
2081        return false;
2082    return true;
2083  }
2084
2085  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
2086    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
2087    parseBackboneAttributes(xpp, res);
2088    next(xpp);
2089    int eventType = nextNoWhitespace(xpp);
2090    while (eventType != XmlPullParser.END_TAG) {
2091  if (!parseParametersParametersParameterComponentContent(eventType, xpp, owner, res))
2092        unknownContent(xpp);
2093      eventType = nextNoWhitespace(xpp);
2094    }
2095    next(xpp);
2096    parseElementClose(res);
2097    return res;
2098  }
2099
2100  protected boolean parseParametersParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters owner, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2101      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2102        res.setNameElement(parseString(xpp));
2103      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2104        res.setValue(parseType("value", xpp));
2105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2106        res.setResource(parseResourceContained(xpp));
2107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
2108        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
2109      } else if (!parseBackboneElementContent(eventType, xpp, res))
2110        return false;
2111    return true;
2112  }
2113
2114  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2115    if (!comments.isEmpty()) {
2116      res.getFormatCommentsPre().addAll(comments);
2117      comments.clear();
2118     }
2119  }
2120
2121  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2122      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
2123        res.setIdElement(parseId(xpp));
2124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
2125        res.setMeta(parseMeta(xpp));
2126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
2127        res.setImplicitRulesElement(parseUri(xpp));
2128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2129        res.setLanguageElement(parseCode(xpp));
2130    } else
2131        return false;
2132    return true;
2133  }
2134
2135  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2136    Account res = new Account();
2137    parseDomainResourceAttributes(xpp, res);
2138    next(xpp);
2139    int eventType = nextNoWhitespace(xpp);
2140    while (eventType != XmlPullParser.END_TAG) {
2141  if (!parseAccountContent(eventType, xpp, res))
2142        unknownContent(xpp);
2143      eventType = nextNoWhitespace(xpp);
2144    }
2145    next(xpp);
2146    parseElementClose(res);
2147    return res;
2148  }
2149
2150  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
2151      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2152        res.getIdentifier().add(parseIdentifier(xpp));
2153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2154        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
2155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2156        res.setType(parseCodeableConcept(xpp));
2157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2158        res.setNameElement(parseString(xpp));
2159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2160        res.getSubject().add(parseReference(xpp));
2161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("servicePeriod")) {
2162        res.setServicePeriod(parsePeriod(xpp));
2163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2164        res.getCoverage().add(parseAccountCoverageComponent(xpp, res));
2165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
2166        res.setOwner(parseReference(xpp));
2167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2168        res.setDescriptionElement(parseString(xpp));
2169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
2170        res.getGuarantor().add(parseAccountGuarantorComponent(xpp, res));
2171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
2172        res.setPartOf(parseReference(xpp));
2173      } else if (!parseDomainResourceContent(eventType, xpp, res))
2174        return false;
2175    return true;
2176  }
2177
2178  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2179    Account.CoverageComponent res = new Account.CoverageComponent();
2180    parseBackboneAttributes(xpp, res);
2181    next(xpp);
2182    int eventType = nextNoWhitespace(xpp);
2183    while (eventType != XmlPullParser.END_TAG) {
2184  if (!parseAccountCoverageComponentContent(eventType, xpp, owner, res))
2185        unknownContent(xpp);
2186      eventType = nextNoWhitespace(xpp);
2187    }
2188    next(xpp);
2189    parseElementClose(res);
2190    return res;
2191  }
2192
2193  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2194      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2195        res.setCoverage(parseReference(xpp));
2196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2197        res.setPriorityElement(parsePositiveInt(xpp));
2198      } else if (!parseBackboneElementContent(eventType, xpp, res))
2199        return false;
2200    return true;
2201  }
2202
2203  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2204    Account.GuarantorComponent res = new Account.GuarantorComponent();
2205    parseBackboneAttributes(xpp, res);
2206    next(xpp);
2207    int eventType = nextNoWhitespace(xpp);
2208    while (eventType != XmlPullParser.END_TAG) {
2209  if (!parseAccountGuarantorComponentContent(eventType, xpp, owner, res))
2210        unknownContent(xpp);
2211      eventType = nextNoWhitespace(xpp);
2212    }
2213    next(xpp);
2214    parseElementClose(res);
2215    return res;
2216  }
2217
2218  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
2220        res.setParty(parseReference(xpp));
2221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
2222        res.setOnHoldElement(parseBoolean(xpp));
2223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2224        res.setPeriod(parsePeriod(xpp));
2225      } else if (!parseBackboneElementContent(eventType, xpp, res))
2226        return false;
2227    return true;
2228  }
2229
2230  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2231    ActivityDefinition res = new ActivityDefinition();
2232    parseDomainResourceAttributes(xpp, res);
2233    next(xpp);
2234    int eventType = nextNoWhitespace(xpp);
2235    while (eventType != XmlPullParser.END_TAG) {
2236  if (!parseActivityDefinitionContent(eventType, xpp, res))
2237        unknownContent(xpp);
2238      eventType = nextNoWhitespace(xpp);
2239    }
2240    next(xpp);
2241    parseElementClose(res);
2242    return res;
2243  }
2244
2245  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2247        res.setUrlElement(parseUri(xpp));
2248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2249        res.getIdentifier().add(parseIdentifier(xpp));
2250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2251        res.setVersionElement(parseString(xpp));
2252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2253        res.setNameElement(parseString(xpp));
2254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2255        res.setTitleElement(parseString(xpp));
2256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
2257        res.setSubtitleElement(parseString(xpp));
2258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2259        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2261        res.setExperimentalElement(parseBoolean(xpp));
2262      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
2263        res.setSubject(parseType("subject", xpp));
2264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2265        res.setDateElement(parseDateTime(xpp));
2266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2267        res.setPublisherElement(parseString(xpp));
2268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2269        res.getContact().add(parseContactDetail(xpp));
2270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2271        res.setDescriptionElement(parseMarkdown(xpp));
2272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2273        res.getUseContext().add(parseUsageContext(xpp));
2274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2275        res.getJurisdiction().add(parseCodeableConcept(xpp));
2276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2277        res.setPurposeElement(parseMarkdown(xpp));
2278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
2279        res.setUsageElement(parseString(xpp));
2280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2281        res.setCopyrightElement(parseMarkdown(xpp));
2282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
2283        res.setApprovalDateElement(parseDate(xpp));
2284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
2285        res.setLastReviewDateElement(parseDate(xpp));
2286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
2287        res.setEffectivePeriod(parsePeriod(xpp));
2288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
2289        res.getTopic().add(parseCodeableConcept(xpp));
2290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2291        res.getAuthor().add(parseContactDetail(xpp));
2292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
2293        res.getEditor().add(parseContactDetail(xpp));
2294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
2295        res.getReviewer().add(parseContactDetail(xpp));
2296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
2297        res.getEndorser().add(parseContactDetail(xpp));
2298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
2299        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
2300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
2301        res.getLibrary().add(parseCanonical(xpp));
2302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2303        res.setKindElement(parseEnumeration(xpp, ActivityDefinition.ActivityDefinitionKind.NULL, new ActivityDefinition.ActivityDefinitionKindEnumFactory()));
2304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
2305        res.setProfileElement(parseCanonical(xpp));
2306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2307        res.setCode(parseCodeableConcept(xpp));
2308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
2309        res.setIntentElement(parseEnumeration(xpp, ActivityDefinition.RequestIntent.NULL, new ActivityDefinition.RequestIntentEnumFactory()));
2310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2311        res.setPriorityElement(parseEnumeration(xpp, ActivityDefinition.RequestPriority.NULL, new ActivityDefinition.RequestPriorityEnumFactory()));
2312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
2313        res.setDoNotPerformElement(parseBoolean(xpp));
2314      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
2315        res.setTiming(parseType("timing", xpp));
2316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2317        res.setLocation(parseReference(xpp));
2318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2319        res.getParticipant().add(parseActivityDefinitionActivityDefinitionParticipantComponent(xpp, res));
2320      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2321        res.setProduct(parseType("product", xpp));
2322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2323        res.setQuantity(parseQuantity(xpp));
2324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
2325        res.getDosage().add(parseDosage(xpp));
2326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2327        res.getBodySite().add(parseCodeableConcept(xpp));
2328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenRequirement")) {
2329        res.getSpecimenRequirement().add(parseReference(xpp));
2330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationRequirement")) {
2331        res.getObservationRequirement().add(parseReference(xpp));
2332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationResultRequirement")) {
2333        res.getObservationResultRequirement().add(parseReference(xpp));
2334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
2335        res.setTransformElement(parseCanonical(xpp));
2336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
2337        res.getDynamicValue().add(parseActivityDefinitionActivityDefinitionDynamicValueComponent(xpp, res));
2338      } else if (!parseDomainResourceContent(eventType, xpp, res))
2339        return false;
2340    return true;
2341  }
2342
2343  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionActivityDefinitionParticipantComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2344    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2345    parseBackboneAttributes(xpp, res);
2346    next(xpp);
2347    int eventType = nextNoWhitespace(xpp);
2348    while (eventType != XmlPullParser.END_TAG) {
2349  if (!parseActivityDefinitionActivityDefinitionParticipantComponentContent(eventType, xpp, owner, res))
2350        unknownContent(xpp);
2351      eventType = nextNoWhitespace(xpp);
2352    }
2353    next(xpp);
2354    parseElementClose(res);
2355    return res;
2356  }
2357
2358  protected boolean parseActivityDefinitionActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2359      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2360        res.setTypeElement(parseEnumeration(xpp, ActivityDefinition.ActivityParticipantType.NULL, new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
2361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2362        res.setRole(parseCodeableConcept(xpp));
2363      } else if (!parseBackboneElementContent(eventType, xpp, res))
2364        return false;
2365    return true;
2366  }
2367
2368  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionActivityDefinitionDynamicValueComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2369    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2370    parseBackboneAttributes(xpp, res);
2371    next(xpp);
2372    int eventType = nextNoWhitespace(xpp);
2373    while (eventType != XmlPullParser.END_TAG) {
2374  if (!parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(eventType, xpp, owner, res))
2375        unknownContent(xpp);
2376      eventType = nextNoWhitespace(xpp);
2377    }
2378    next(xpp);
2379    parseElementClose(res);
2380    return res;
2381  }
2382
2383  protected boolean parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2384      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2385        res.setPathElement(parseString(xpp));
2386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2387        res.setExpression(parseExpression(xpp));
2388      } else if (!parseBackboneElementContent(eventType, xpp, res))
2389        return false;
2390    return true;
2391  }
2392
2393  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2394    AdverseEvent res = new AdverseEvent();
2395    parseDomainResourceAttributes(xpp, res);
2396    next(xpp);
2397    int eventType = nextNoWhitespace(xpp);
2398    while (eventType != XmlPullParser.END_TAG) {
2399  if (!parseAdverseEventContent(eventType, xpp, res))
2400        unknownContent(xpp);
2401      eventType = nextNoWhitespace(xpp);
2402    }
2403    next(xpp);
2404    parseElementClose(res);
2405    return res;
2406  }
2407
2408  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2409      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2410        res.setIdentifier(parseIdentifier(xpp));
2411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actuality")) {
2412        res.setActualityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventActuality.NULL, new AdverseEvent.AdverseEventActualityEnumFactory()));
2413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2414        res.getCategory().add(parseCodeableConcept(xpp));
2415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
2416        res.setEvent(parseCodeableConcept(xpp));
2417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2418        res.setSubject(parseReference(xpp));
2419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
2420        res.setContext(parseReference(xpp));
2421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2422        res.setDateElement(parseDateTime(xpp));
2423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detected")) {
2424        res.setDetectedElement(parseDateTime(xpp));
2425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2426        res.setRecordedDateElement(parseDateTime(xpp));
2427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultingCondition")) {
2428        res.getResultingCondition().add(parseReference(xpp));
2429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2430        res.setLocation(parseReference(xpp));
2431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
2432        res.setSeriousness(parseCodeableConcept(xpp));
2433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2434        res.setSeverity(parseCodeableConcept(xpp));
2435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2436        res.setOutcome(parseCodeableConcept(xpp));
2437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2438        res.setRecorder(parseReference(xpp));
2439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
2440        res.getContributor().add(parseReference(xpp));
2441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
2442        res.getSuspectEntity().add(parseAdverseEventAdverseEventSuspectEntityComponent(xpp, res));
2443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectMedicalHistory")) {
2444        res.getSubjectMedicalHistory().add(parseReference(xpp));
2445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceDocument")) {
2446        res.getReferenceDocument().add(parseReference(xpp));
2447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
2448        res.getStudy().add(parseReference(xpp));
2449      } else if (!parseDomainResourceContent(eventType, xpp, res))
2450        return false;
2451    return true;
2452  }
2453
2454  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventAdverseEventSuspectEntityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2455    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
2456    parseBackboneAttributes(xpp, res);
2457    next(xpp);
2458    int eventType = nextNoWhitespace(xpp);
2459    while (eventType != XmlPullParser.END_TAG) {
2460  if (!parseAdverseEventAdverseEventSuspectEntityComponentContent(eventType, xpp, owner, res))
2461        unknownContent(xpp);
2462      eventType = nextNoWhitespace(xpp);
2463    }
2464    next(xpp);
2465    parseElementClose(res);
2466    return res;
2467  }
2468
2469  protected boolean parseAdverseEventAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2470      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
2471        res.setInstance(parseReference(xpp));
2472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
2473        res.getCausality().add(parseAdverseEventAdverseEventSuspectEntityCausalityComponent(xpp, owner));
2474      } else if (!parseBackboneElementContent(eventType, xpp, res))
2475        return false;
2476    return true;
2477  }
2478
2479  protected AdverseEvent.AdverseEventSuspectEntityCausalityComponent parseAdverseEventAdverseEventSuspectEntityCausalityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2480    AdverseEvent.AdverseEventSuspectEntityCausalityComponent res = new AdverseEvent.AdverseEventSuspectEntityCausalityComponent();
2481    parseBackboneAttributes(xpp, res);
2482    next(xpp);
2483    int eventType = nextNoWhitespace(xpp);
2484    while (eventType != XmlPullParser.END_TAG) {
2485  if (!parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(eventType, xpp, owner, res))
2486        unknownContent(xpp);
2487      eventType = nextNoWhitespace(xpp);
2488    }
2489    next(xpp);
2490    parseElementClose(res);
2491    return res;
2492  }
2493
2494  protected boolean parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityCausalityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2495      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
2496        res.setAssessment(parseCodeableConcept(xpp));
2497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productRelatedness")) {
2498        res.setProductRelatednessElement(parseString(xpp));
2499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2500        res.setAuthor(parseReference(xpp));
2501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2502        res.setMethod(parseCodeableConcept(xpp));
2503      } else if (!parseBackboneElementContent(eventType, xpp, res))
2504        return false;
2505    return true;
2506  }
2507
2508  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2509    AllergyIntolerance res = new AllergyIntolerance();
2510    parseDomainResourceAttributes(xpp, res);
2511    next(xpp);
2512    int eventType = nextNoWhitespace(xpp);
2513    while (eventType != XmlPullParser.END_TAG) {
2514  if (!parseAllergyIntoleranceContent(eventType, xpp, res))
2515        unknownContent(xpp);
2516      eventType = nextNoWhitespace(xpp);
2517    }
2518    next(xpp);
2519    parseElementClose(res);
2520    return res;
2521  }
2522
2523  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
2524      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2525        res.getIdentifier().add(parseIdentifier(xpp));
2526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
2527        res.setClinicalStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceClinicalStatus.NULL, new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory()));
2528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
2529        res.setVerificationStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceVerificationStatus.NULL, new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory()));
2530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2531        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
2532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2533        res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
2534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
2535        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
2536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2537        res.setCode(parseCodeableConcept(xpp));
2538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2539        res.setPatient(parseReference(xpp));
2540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2541        res.setEncounter(parseReference(xpp));
2542      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
2543        res.setOnset(parseType("onset", xpp));
2544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2545        res.setRecordedDateElement(parseDateTime(xpp));
2546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2547        res.setRecorder(parseReference(xpp));
2548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
2549        res.setAsserter(parseReference(xpp));
2550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
2551        res.setLastOccurrenceElement(parseDateTime(xpp));
2552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2553        res.getNote().add(parseAnnotation(xpp));
2554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2555        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
2556      } else if (!parseDomainResourceContent(eventType, xpp, res))
2557        return false;
2558    return true;
2559  }
2560
2561  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
2562    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
2563    parseBackboneAttributes(xpp, res);
2564    next(xpp);
2565    int eventType = nextNoWhitespace(xpp);
2566    while (eventType != XmlPullParser.END_TAG) {
2567  if (!parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(eventType, xpp, owner, res))
2568        unknownContent(xpp);
2569      eventType = nextNoWhitespace(xpp);
2570    }
2571    next(xpp);
2572    parseElementClose(res);
2573    return res;
2574  }
2575
2576  protected boolean parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance owner, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2577      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
2578        res.setSubstance(parseCodeableConcept(xpp));
2579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
2580        res.getManifestation().add(parseCodeableConcept(xpp));
2581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2582        res.setDescriptionElement(parseString(xpp));
2583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2584        res.setOnsetElement(parseDateTime(xpp));
2585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2586        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
2587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
2588        res.setExposureRoute(parseCodeableConcept(xpp));
2589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2590        res.getNote().add(parseAnnotation(xpp));
2591      } else if (!parseBackboneElementContent(eventType, xpp, res))
2592        return false;
2593    return true;
2594  }
2595
2596  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2597    Appointment res = new Appointment();
2598    parseDomainResourceAttributes(xpp, res);
2599    next(xpp);
2600    int eventType = nextNoWhitespace(xpp);
2601    while (eventType != XmlPullParser.END_TAG) {
2602  if (!parseAppointmentContent(eventType, xpp, res))
2603        unknownContent(xpp);
2604      eventType = nextNoWhitespace(xpp);
2605    }
2606    next(xpp);
2607    parseElementClose(res);
2608    return res;
2609  }
2610
2611  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
2612      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2613        res.getIdentifier().add(parseIdentifier(xpp));
2614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2615        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
2616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
2617        res.getServiceCategory().add(parseCodeableConcept(xpp));
2618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
2619        res.getServiceType().add(parseCodeableConcept(xpp));
2620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
2621        res.getSpecialty().add(parseCodeableConcept(xpp));
2622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
2623        res.setAppointmentType(parseCodeableConcept(xpp));
2624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2625        res.getReason().add(parseCodeableConcept(xpp));
2626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
2627        res.getIndication().add(parseReference(xpp));
2628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2629        res.setPriorityElement(parseUnsignedInt(xpp));
2630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2631        res.setDescriptionElement(parseString(xpp));
2632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2633        res.getSupportingInformation().add(parseReference(xpp));
2634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2635        res.setStartElement(parseInstant(xpp));
2636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2637        res.setEndElement(parseInstant(xpp));
2638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
2639        res.setMinutesDurationElement(parsePositiveInt(xpp));
2640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
2641        res.getSlot().add(parseReference(xpp));
2642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2643        res.setCreatedElement(parseDateTime(xpp));
2644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2645        res.setCommentElement(parseString(xpp));
2646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
2647        res.setPatientInstructionElement(parseString(xpp));
2648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
2649        res.getBasedOn().add(parseReference(xpp));
2650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2651        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
2652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
2653        res.getRequestedPeriod().add(parsePeriod(xpp));
2654      } else if (!parseDomainResourceContent(eventType, xpp, res))
2655        return false;
2656    return true;
2657  }
2658
2659  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
2660    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
2661    parseBackboneAttributes(xpp, res);
2662    next(xpp);
2663    int eventType = nextNoWhitespace(xpp);
2664    while (eventType != XmlPullParser.END_TAG) {
2665  if (!parseAppointmentAppointmentParticipantComponentContent(eventType, xpp, owner, res))
2666        unknownContent(xpp);
2667      eventType = nextNoWhitespace(xpp);
2668    }
2669    next(xpp);
2670    parseElementClose(res);
2671    return res;
2672  }
2673
2674  protected boolean parseAppointmentAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment owner, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2675      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2676        res.getType().add(parseCodeableConcept(xpp));
2677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2678        res.setActor(parseReference(xpp));
2679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
2680        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
2681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2682        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
2683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2684        res.setPeriod(parsePeriod(xpp));
2685      } else if (!parseBackboneElementContent(eventType, xpp, res))
2686        return false;
2687    return true;
2688  }
2689
2690  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2691    AppointmentResponse res = new AppointmentResponse();
2692    parseDomainResourceAttributes(xpp, res);
2693    next(xpp);
2694    int eventType = nextNoWhitespace(xpp);
2695    while (eventType != XmlPullParser.END_TAG) {
2696  if (!parseAppointmentResponseContent(eventType, xpp, res))
2697        unknownContent(xpp);
2698      eventType = nextNoWhitespace(xpp);
2699    }
2700    next(xpp);
2701    parseElementClose(res);
2702    return res;
2703  }
2704
2705  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
2706      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2707        res.getIdentifier().add(parseIdentifier(xpp));
2708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
2709        res.setAppointment(parseReference(xpp));
2710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2711        res.setStartElement(parseInstant(xpp));
2712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2713        res.setEndElement(parseInstant(xpp));
2714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
2715        res.getParticipantType().add(parseCodeableConcept(xpp));
2716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2717        res.setActor(parseReference(xpp));
2718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
2719        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL, new AppointmentResponse.ParticipantStatusEnumFactory()));
2720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2721        res.setCommentElement(parseString(xpp));
2722      } else if (!parseDomainResourceContent(eventType, xpp, res))
2723        return false;
2724    return true;
2725  }
2726
2727  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2728    AuditEvent res = new AuditEvent();
2729    parseDomainResourceAttributes(xpp, res);
2730    next(xpp);
2731    int eventType = nextNoWhitespace(xpp);
2732    while (eventType != XmlPullParser.END_TAG) {
2733  if (!parseAuditEventContent(eventType, xpp, res))
2734        unknownContent(xpp);
2735      eventType = nextNoWhitespace(xpp);
2736    }
2737    next(xpp);
2738    parseElementClose(res);
2739    return res;
2740  }
2741
2742  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2744        res.setType(parseCoding(xpp));
2745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
2746        res.getSubtype().add(parseCoding(xpp));
2747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2748        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
2749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2750        res.setPeriod(parsePeriod(xpp));
2751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
2752        res.setRecordedElement(parseInstant(xpp));
2753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2754        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
2755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
2756        res.setOutcomeDescElement(parseString(xpp));
2757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
2758        res.getPurposeOfEvent().add(parseCodeableConcept(xpp));
2759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
2760        res.getAgent().add(parseAuditEventAuditEventAgentComponent(xpp, res));
2761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
2762        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
2763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
2764        res.getEntity().add(parseAuditEventAuditEventEntityComponent(xpp, res));
2765      } else if (!parseDomainResourceContent(eventType, xpp, res))
2766        return false;
2767    return true;
2768  }
2769
2770  protected AuditEvent.AuditEventAgentComponent parseAuditEventAuditEventAgentComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2771    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
2772    parseBackboneAttributes(xpp, res);
2773    next(xpp);
2774    int eventType = nextNoWhitespace(xpp);
2775    while (eventType != XmlPullParser.END_TAG) {
2776  if (!parseAuditEventAuditEventAgentComponentContent(eventType, xpp, owner, res))
2777        unknownContent(xpp);
2778      eventType = nextNoWhitespace(xpp);
2779    }
2780    next(xpp);
2781    parseElementClose(res);
2782    return res;
2783  }
2784
2785  protected boolean parseAuditEventAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2786      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2787        res.setType(parseCodeableConcept(xpp));
2788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2789        res.getRole().add(parseCodeableConcept(xpp));
2790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
2791        res.setWho(parseReference(xpp));
2792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
2793        res.setAltIdElement(parseString(xpp));
2794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2795        res.setNameElement(parseString(xpp));
2796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
2797        res.setRequestorElement(parseBoolean(xpp));
2798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2799        res.setLocation(parseReference(xpp));
2800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
2801        res.getPolicy().add(parseUri(xpp));
2802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
2803        res.setMedia(parseCoding(xpp));
2804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
2805        res.setNetwork(parseAuditEventAuditEventAgentNetworkComponent(xpp, owner));
2806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
2807        res.getPurposeOfUse().add(parseCodeableConcept(xpp));
2808      } else if (!parseBackboneElementContent(eventType, xpp, res))
2809        return false;
2810    return true;
2811  }
2812
2813  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAuditEventAgentNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2814    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
2815    parseBackboneAttributes(xpp, res);
2816    next(xpp);
2817    int eventType = nextNoWhitespace(xpp);
2818    while (eventType != XmlPullParser.END_TAG) {
2819  if (!parseAuditEventAuditEventAgentNetworkComponentContent(eventType, xpp, owner, res))
2820        unknownContent(xpp);
2821      eventType = nextNoWhitespace(xpp);
2822    }
2823    next(xpp);
2824    parseElementClose(res);
2825    return res;
2826  }
2827
2828  protected boolean parseAuditEventAuditEventAgentNetworkComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentNetworkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2829      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
2830        res.setAddressElement(parseString(xpp));
2831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2832        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventAgentNetworkType.NULL, new AuditEvent.AuditEventAgentNetworkTypeEnumFactory()));
2833      } else if (!parseBackboneElementContent(eventType, xpp, res))
2834        return false;
2835    return true;
2836  }
2837
2838  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2839    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
2840    parseBackboneAttributes(xpp, res);
2841    next(xpp);
2842    int eventType = nextNoWhitespace(xpp);
2843    while (eventType != XmlPullParser.END_TAG) {
2844  if (!parseAuditEventAuditEventSourceComponentContent(eventType, xpp, owner, res))
2845        unknownContent(xpp);
2846      eventType = nextNoWhitespace(xpp);
2847    }
2848    next(xpp);
2849    parseElementClose(res);
2850    return res;
2851  }
2852
2853  protected boolean parseAuditEventAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2854      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
2855        res.setSiteElement(parseString(xpp));
2856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observer")) {
2857        res.setObserver(parseReference(xpp));
2858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2859        res.getType().add(parseCoding(xpp));
2860      } else if (!parseBackboneElementContent(eventType, xpp, res))
2861        return false;
2862    return true;
2863  }
2864
2865  protected AuditEvent.AuditEventEntityComponent parseAuditEventAuditEventEntityComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2866    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
2867    parseBackboneAttributes(xpp, res);
2868    next(xpp);
2869    int eventType = nextNoWhitespace(xpp);
2870    while (eventType != XmlPullParser.END_TAG) {
2871  if (!parseAuditEventAuditEventEntityComponentContent(eventType, xpp, owner, res))
2872        unknownContent(xpp);
2873      eventType = nextNoWhitespace(xpp);
2874    }
2875    next(xpp);
2876    parseElementClose(res);
2877    return res;
2878  }
2879
2880  protected boolean parseAuditEventAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2881      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
2882        res.setWhat(parseReference(xpp));
2883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2884        res.setType(parseCoding(xpp));
2885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2886        res.setRole(parseCoding(xpp));
2887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
2888        res.setLifecycle(parseCoding(xpp));
2889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
2890        res.getSecurityLabel().add(parseCoding(xpp));
2891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2892        res.setNameElement(parseString(xpp));
2893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2894        res.setDescriptionElement(parseString(xpp));
2895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
2896        res.setQueryElement(parseBase64Binary(xpp));
2897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2898        res.getDetail().add(parseAuditEventAuditEventEntityDetailComponent(xpp, owner));
2899      } else if (!parseBackboneElementContent(eventType, xpp, res))
2900        return false;
2901    return true;
2902  }
2903
2904  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventAuditEventEntityDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2905    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
2906    parseBackboneAttributes(xpp, res);
2907    next(xpp);
2908    int eventType = nextNoWhitespace(xpp);
2909    while (eventType != XmlPullParser.END_TAG) {
2910  if (!parseAuditEventAuditEventEntityDetailComponentContent(eventType, xpp, owner, res))
2911        unknownContent(xpp);
2912      eventType = nextNoWhitespace(xpp);
2913    }
2914    next(xpp);
2915    parseElementClose(res);
2916    return res;
2917  }
2918
2919  protected boolean parseAuditEventAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2920      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2921        res.setTypeElement(parseString(xpp));
2922      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2923        res.setValue(parseType("value", xpp));
2924      } else if (!parseBackboneElementContent(eventType, xpp, res))
2925        return false;
2926    return true;
2927  }
2928
2929  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2930    Basic res = new Basic();
2931    parseDomainResourceAttributes(xpp, res);
2932    next(xpp);
2933    int eventType = nextNoWhitespace(xpp);
2934    while (eventType != XmlPullParser.END_TAG) {
2935  if (!parseBasicContent(eventType, xpp, res))
2936        unknownContent(xpp);
2937      eventType = nextNoWhitespace(xpp);
2938    }
2939    next(xpp);
2940    parseElementClose(res);
2941    return res;
2942  }
2943
2944  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
2945      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2946        res.getIdentifier().add(parseIdentifier(xpp));
2947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2948        res.setCode(parseCodeableConcept(xpp));
2949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2950        res.setSubject(parseReference(xpp));
2951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2952        res.setCreatedElement(parseDate(xpp));
2953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2954        res.setAuthor(parseReference(xpp));
2955      } else if (!parseDomainResourceContent(eventType, xpp, res))
2956        return false;
2957    return true;
2958  }
2959
2960  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2961    Binary res = new Binary();
2962    parseResourceAttributes(xpp, res);
2963    next(xpp);
2964    int eventType = nextNoWhitespace(xpp);
2965    while (eventType != XmlPullParser.END_TAG) {
2966  if (!parseBinaryContent(eventType, xpp, res))
2967        unknownContent(xpp);
2968      eventType = nextNoWhitespace(xpp);
2969    }
2970    next(xpp);
2971    parseElementClose(res);
2972    return res;
2973  }
2974
2975  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
2976      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
2977        res.setContentTypeElement(parseCode(xpp));
2978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
2979        res.setSecurityContext(parseReference(xpp));
2980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
2981        res.setDataElement(parseBase64Binary(xpp));
2982      } else if (!parseResourceContent(eventType, xpp, res))
2983        return false;
2984    return true;
2985  }
2986
2987  protected BiologicallyDerivedProduct parseBiologicallyDerivedProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2988    BiologicallyDerivedProduct res = new BiologicallyDerivedProduct();
2989    parseDomainResourceAttributes(xpp, res);
2990    next(xpp);
2991    int eventType = nextNoWhitespace(xpp);
2992    while (eventType != XmlPullParser.END_TAG) {
2993  if (!parseBiologicallyDerivedProductContent(eventType, xpp, res))
2994        unknownContent(xpp);
2995      eventType = nextNoWhitespace(xpp);
2996    }
2997    next(xpp);
2998    parseElementClose(res);
2999    return res;
3000  }
3001
3002  protected boolean parseBiologicallyDerivedProductContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
3003      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3004        res.getIdentifier().add(parseIdentifier(xpp));
3005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCategory")) {
3006        res.setProductCategoryElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductCategory.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory()));
3007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCode")) {
3008        res.setProductCode(parseCodeableConcept(xpp));
3009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3010        res.setStatusElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStatus.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory()));
3011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3012        res.getRequest().add(parseReference(xpp));
3013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3014        res.setQuantityElement(parseInteger(xpp));
3015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
3016        res.setParent(parseReference(xpp));
3017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
3018        res.setCollection(parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(xpp, res));
3019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
3020        res.getProcessing().add(parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(xpp, res));
3021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulation")) {
3022        res.setManipulation(parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(xpp, res));
3023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("storage")) {
3024        res.getStorage().add(parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(xpp, res));
3025      } else if (!parseDomainResourceContent(eventType, xpp, res))
3026        return false;
3027    return true;
3028  }
3029
3030  protected BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3031    BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent();
3032    parseBackboneAttributes(xpp, res);
3033    next(xpp);
3034    int eventType = nextNoWhitespace(xpp);
3035    while (eventType != XmlPullParser.END_TAG) {
3036  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(eventType, xpp, owner, res))
3037        unknownContent(xpp);
3038      eventType = nextNoWhitespace(xpp);
3039    }
3040    next(xpp);
3041    parseElementClose(res);
3042    return res;
3043  }
3044
3045  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3046      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
3047        res.setCollector(parseReference(xpp));
3048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
3049        res.setSource(parseReference(xpp));
3050      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
3051        res.setCollected(parseType("collected", xpp));
3052      } else if (!parseBackboneElementContent(eventType, xpp, res))
3053        return false;
3054    return true;
3055  }
3056
3057  protected BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3058    BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent();
3059    parseBackboneAttributes(xpp, res);
3060    next(xpp);
3061    int eventType = nextNoWhitespace(xpp);
3062    while (eventType != XmlPullParser.END_TAG) {
3063  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(eventType, xpp, owner, res))
3064        unknownContent(xpp);
3065      eventType = nextNoWhitespace(xpp);
3066    }
3067    next(xpp);
3068    parseElementClose(res);
3069    return res;
3070  }
3071
3072  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3074        res.setDescriptionElement(parseString(xpp));
3075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
3076        res.setProcedure(parseCodeableConcept(xpp));
3077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
3078        res.setAdditive(parseReference(xpp));
3079      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3080        res.setTime(parseType("time", xpp));
3081      } else if (!parseBackboneElementContent(eventType, xpp, res))
3082        return false;
3083    return true;
3084  }
3085
3086  protected BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3087    BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent();
3088    parseBackboneAttributes(xpp, res);
3089    next(xpp);
3090    int eventType = nextNoWhitespace(xpp);
3091    while (eventType != XmlPullParser.END_TAG) {
3092  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(eventType, xpp, owner, res))
3093        unknownContent(xpp);
3094      eventType = nextNoWhitespace(xpp);
3095    }
3096    next(xpp);
3097    parseElementClose(res);
3098    return res;
3099  }
3100
3101  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3102      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3103        res.setDescriptionElement(parseString(xpp));
3104      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3105        res.setTime(parseType("time", xpp));
3106      } else if (!parseBackboneElementContent(eventType, xpp, res))
3107        return false;
3108    return true;
3109  }
3110
3111  protected BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3112    BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent();
3113    parseBackboneAttributes(xpp, res);
3114    next(xpp);
3115    int eventType = nextNoWhitespace(xpp);
3116    while (eventType != XmlPullParser.END_TAG) {
3117  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(eventType, xpp, owner, res))
3118        unknownContent(xpp);
3119      eventType = nextNoWhitespace(xpp);
3120    }
3121    next(xpp);
3122    parseElementClose(res);
3123    return res;
3124  }
3125
3126  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3127      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3128        res.setDescriptionElement(parseString(xpp));
3129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperature")) {
3130        res.setTemperatureElement(parseDecimal(xpp));
3131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scale")) {
3132        res.setScaleElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScale.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory()));
3133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
3134        res.setDuration(parsePeriod(xpp));
3135      } else if (!parseBackboneElementContent(eventType, xpp, res))
3136        return false;
3137    return true;
3138  }
3139
3140  protected BodyStructure parseBodyStructure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3141    BodyStructure res = new BodyStructure();
3142    parseDomainResourceAttributes(xpp, res);
3143    next(xpp);
3144    int eventType = nextNoWhitespace(xpp);
3145    while (eventType != XmlPullParser.END_TAG) {
3146  if (!parseBodyStructureContent(eventType, xpp, res))
3147        unknownContent(xpp);
3148      eventType = nextNoWhitespace(xpp);
3149    }
3150    next(xpp);
3151    parseElementClose(res);
3152    return res;
3153  }
3154
3155  protected boolean parseBodyStructureContent(int eventType, XmlPullParser xpp, BodyStructure res) throws XmlPullParserException, IOException, FHIRFormatError {
3156      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3157        res.getIdentifier().add(parseIdentifier(xpp));
3158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
3159        res.setActiveElement(parseBoolean(xpp));
3160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("morphology")) {
3161        res.setMorphology(parseCodeableConcept(xpp));
3162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3163        res.setLocation(parseCodeableConcept(xpp));
3164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationQualifier")) {
3165        res.getLocationQualifier().add(parseCodeableConcept(xpp));
3166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3167        res.setDescriptionElement(parseString(xpp));
3168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
3169        res.getImage().add(parseAttachment(xpp));
3170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3171        res.setPatient(parseReference(xpp));
3172      } else if (!parseDomainResourceContent(eventType, xpp, res))
3173        return false;
3174    return true;
3175  }
3176
3177  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3178    Bundle res = new Bundle();
3179    parseResourceAttributes(xpp, res);
3180    next(xpp);
3181    int eventType = nextNoWhitespace(xpp);
3182    while (eventType != XmlPullParser.END_TAG) {
3183  if (!parseBundleContent(eventType, xpp, res))
3184        unknownContent(xpp);
3185      eventType = nextNoWhitespace(xpp);
3186    }
3187    next(xpp);
3188    parseElementClose(res);
3189    return res;
3190  }
3191
3192  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
3193      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3194        res.setIdentifier(parseIdentifier(xpp));
3195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3196        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
3197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
3198        res.setTimestampElement(parseInstant(xpp));
3199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
3200        res.setTotalElement(parseUnsignedInt(xpp));
3201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3202        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
3203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
3204        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
3205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
3206        res.setSignature(parseSignature(xpp));
3207      } else if (!parseResourceContent(eventType, xpp, res))
3208        return false;
3209    return true;
3210  }
3211
3212  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3213    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
3214    parseBackboneAttributes(xpp, res);
3215    next(xpp);
3216    int eventType = nextNoWhitespace(xpp);
3217    while (eventType != XmlPullParser.END_TAG) {
3218  if (!parseBundleBundleLinkComponentContent(eventType, xpp, owner, res))
3219        unknownContent(xpp);
3220      eventType = nextNoWhitespace(xpp);
3221    }
3222    next(xpp);
3223    parseElementClose(res);
3224    return res;
3225  }
3226
3227  protected boolean parseBundleBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3228      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
3229        res.setRelationElement(parseString(xpp));
3230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3231        res.setUrlElement(parseUri(xpp));
3232      } else if (!parseBackboneElementContent(eventType, xpp, res))
3233        return false;
3234    return true;
3235  }
3236
3237  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3238    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
3239    parseBackboneAttributes(xpp, res);
3240    next(xpp);
3241    int eventType = nextNoWhitespace(xpp);
3242    while (eventType != XmlPullParser.END_TAG) {
3243  if (!parseBundleBundleEntryComponentContent(eventType, xpp, owner, res))
3244        unknownContent(xpp);
3245      eventType = nextNoWhitespace(xpp);
3246    }
3247    next(xpp);
3248    parseElementClose(res);
3249    return res;
3250  }
3251
3252  protected boolean parseBundleBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3254        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
3255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
3256        res.setFullUrlElement(parseUri(xpp));
3257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3258        res.setResource(parseResourceContained(xpp));
3259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
3260        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
3261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3262        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
3263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3264        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
3265      } else if (!parseBackboneElementContent(eventType, xpp, res))
3266        return false;
3267    return true;
3268  }
3269
3270  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3271    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
3272    parseBackboneAttributes(xpp, res);
3273    next(xpp);
3274    int eventType = nextNoWhitespace(xpp);
3275    while (eventType != XmlPullParser.END_TAG) {
3276  if (!parseBundleBundleEntrySearchComponentContent(eventType, xpp, owner, res))
3277        unknownContent(xpp);
3278      eventType = nextNoWhitespace(xpp);
3279    }
3280    next(xpp);
3281    parseElementClose(res);
3282    return res;
3283  }
3284
3285  protected boolean parseBundleBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3286      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3287        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
3288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
3289        res.setScoreElement(parseDecimal(xpp));
3290      } else if (!parseBackboneElementContent(eventType, xpp, res))
3291        return false;
3292    return true;
3293  }
3294
3295  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3296    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
3297    parseBackboneAttributes(xpp, res);
3298    next(xpp);
3299    int eventType = nextNoWhitespace(xpp);
3300    while (eventType != XmlPullParser.END_TAG) {
3301  if (!parseBundleBundleEntryRequestComponentContent(eventType, xpp, owner, res))
3302        unknownContent(xpp);
3303      eventType = nextNoWhitespace(xpp);
3304    }
3305    next(xpp);
3306    parseElementClose(res);
3307    return res;
3308  }
3309
3310  protected boolean parseBundleBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3311      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
3312        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
3313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3314        res.setUrlElement(parseUri(xpp));
3315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
3316        res.setIfNoneMatchElement(parseString(xpp));
3317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
3318        res.setIfModifiedSinceElement(parseInstant(xpp));
3319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
3320        res.setIfMatchElement(parseString(xpp));
3321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
3322        res.setIfNoneExistElement(parseString(xpp));
3323      } else if (!parseBackboneElementContent(eventType, xpp, res))
3324        return false;
3325    return true;
3326  }
3327
3328  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3329    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
3330    parseBackboneAttributes(xpp, res);
3331    next(xpp);
3332    int eventType = nextNoWhitespace(xpp);
3333    while (eventType != XmlPullParser.END_TAG) {
3334  if (!parseBundleBundleEntryResponseComponentContent(eventType, xpp, owner, res))
3335        unknownContent(xpp);
3336      eventType = nextNoWhitespace(xpp);
3337    }
3338    next(xpp);
3339    parseElementClose(res);
3340    return res;
3341  }
3342
3343  protected boolean parseBundleBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3344      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3345        res.setStatusElement(parseString(xpp));
3346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3347        res.setLocationElement(parseUri(xpp));
3348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
3349        res.setEtagElement(parseString(xpp));
3350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
3351        res.setLastModifiedElement(parseInstant(xpp));
3352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
3353        res.setOutcome(parseResourceContained(xpp));
3354      } else if (!parseBackboneElementContent(eventType, xpp, res))
3355        return false;
3356    return true;
3357  }
3358
3359  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3360    CapabilityStatement res = new CapabilityStatement();
3361    parseDomainResourceAttributes(xpp, res);
3362    next(xpp);
3363    int eventType = nextNoWhitespace(xpp);
3364    while (eventType != XmlPullParser.END_TAG) {
3365  if (!parseCapabilityStatementContent(eventType, xpp, res))
3366        unknownContent(xpp);
3367      eventType = nextNoWhitespace(xpp);
3368    }
3369    next(xpp);
3370    parseElementClose(res);
3371    return res;
3372  }
3373
3374  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
3375      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3376        res.setUrlElement(parseUri(xpp));
3377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3378        res.setVersionElement(parseString(xpp));
3379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3380        res.setNameElement(parseString(xpp));
3381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3382        res.setTitleElement(parseString(xpp));
3383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3384        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
3385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3386        res.setExperimentalElement(parseBoolean(xpp));
3387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3388        res.setDateElement(parseDateTime(xpp));
3389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3390        res.setPublisherElement(parseString(xpp));
3391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3392        res.getContact().add(parseContactDetail(xpp));
3393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3394        res.setDescriptionElement(parseMarkdown(xpp));
3395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3396        res.getUseContext().add(parseUsageContext(xpp));
3397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
3398        res.getJurisdiction().add(parseCodeableConcept(xpp));
3399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
3400        res.setPurposeElement(parseMarkdown(xpp));
3401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3402        res.setCopyrightElement(parseMarkdown(xpp));
3403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3404        res.setKindElement(parseEnumeration(xpp, CapabilityStatement.CapabilityStatementKind.NULL, new CapabilityStatement.CapabilityStatementKindEnumFactory()));
3405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
3406        res.getInstantiates().add(parseCanonical(xpp));
3407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imports")) {
3408        res.getImports().add(parseCanonical(xpp));
3409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
3410        res.setSoftware(parseCapabilityStatementCapabilityStatementSoftwareComponent(xpp, res));
3411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
3412        res.setImplementation(parseCapabilityStatementCapabilityStatementImplementationComponent(xpp, res));
3413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
3414        res.setFhirVersionElement(parseId(xpp));
3415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
3416        res.getFormat().add(parseCode(xpp));
3417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
3418        res.getPatchFormat().add(parseCode(xpp));
3419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
3420        res.getImplementationGuide().add(parseCanonical(xpp));
3421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
3422        res.getRest().add(parseCapabilityStatementCapabilityStatementRestComponent(xpp, res));
3423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
3424        res.getMessaging().add(parseCapabilityStatementCapabilityStatementMessagingComponent(xpp, res));
3425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
3426        res.getDocument().add(parseCapabilityStatementCapabilityStatementDocumentComponent(xpp, res));
3427      } else if (!parseDomainResourceContent(eventType, xpp, res))
3428        return false;
3429    return true;
3430  }
3431
3432  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementCapabilityStatementSoftwareComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3433    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
3434    parseBackboneAttributes(xpp, res);
3435    next(xpp);
3436    int eventType = nextNoWhitespace(xpp);
3437    while (eventType != XmlPullParser.END_TAG) {
3438  if (!parseCapabilityStatementCapabilityStatementSoftwareComponentContent(eventType, xpp, owner, res))
3439        unknownContent(xpp);
3440      eventType = nextNoWhitespace(xpp);
3441    }
3442    next(xpp);
3443    parseElementClose(res);
3444    return res;
3445  }
3446
3447  protected boolean parseCapabilityStatementCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3448      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3449        res.setNameElement(parseString(xpp));
3450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3451        res.setVersionElement(parseString(xpp));
3452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
3453        res.setReleaseDateElement(parseDateTime(xpp));
3454      } else if (!parseBackboneElementContent(eventType, xpp, res))
3455        return false;
3456    return true;
3457  }
3458
3459  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementCapabilityStatementImplementationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3460    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
3461    parseBackboneAttributes(xpp, res);
3462    next(xpp);
3463    int eventType = nextNoWhitespace(xpp);
3464    while (eventType != XmlPullParser.END_TAG) {
3465  if (!parseCapabilityStatementCapabilityStatementImplementationComponentContent(eventType, xpp, owner, res))
3466        unknownContent(xpp);
3467      eventType = nextNoWhitespace(xpp);
3468    }
3469    next(xpp);
3470    parseElementClose(res);
3471    return res;
3472  }
3473
3474  protected boolean parseCapabilityStatementCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3475      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3476        res.setDescriptionElement(parseString(xpp));
3477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3478        res.setUrlElement(parseUrl(xpp));
3479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
3480        res.setCustodian(parseReference(xpp));
3481      } else if (!parseBackboneElementContent(eventType, xpp, res))
3482        return false;
3483    return true;
3484  }
3485
3486  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementCapabilityStatementRestComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3487    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
3488    parseBackboneAttributes(xpp, res);
3489    next(xpp);
3490    int eventType = nextNoWhitespace(xpp);
3491    while (eventType != XmlPullParser.END_TAG) {
3492  if (!parseCapabilityStatementCapabilityStatementRestComponentContent(eventType, xpp, owner, res))
3493        unknownContent(xpp);
3494      eventType = nextNoWhitespace(xpp);
3495    }
3496    next(xpp);
3497    parseElementClose(res);
3498    return res;
3499  }
3500
3501  protected boolean parseCapabilityStatementCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3502      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3503        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
3504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3505        res.setDocumentationElement(parseMarkdown(xpp));
3506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
3507        res.setSecurity(parseCapabilityStatementCapabilityStatementRestSecurityComponent(xpp, owner));
3508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3509        res.getResource().add(parseCapabilityStatementCapabilityStatementRestResourceComponent(xpp, owner));
3510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3511        res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp, owner));
3512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3513        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3515        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3517        res.getCompartment().add(parseCanonical(xpp));
3518      } else if (!parseBackboneElementContent(eventType, xpp, res))
3519        return false;
3520    return true;
3521  }
3522
3523  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementCapabilityStatementRestSecurityComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3524    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
3525    parseBackboneAttributes(xpp, res);
3526    next(xpp);
3527    int eventType = nextNoWhitespace(xpp);
3528    while (eventType != XmlPullParser.END_TAG) {
3529  if (!parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(eventType, xpp, owner, res))
3530        unknownContent(xpp);
3531      eventType = nextNoWhitespace(xpp);
3532    }
3533    next(xpp);
3534    parseElementClose(res);
3535    return res;
3536  }
3537
3538  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3540        res.setCorsElement(parseBoolean(xpp));
3541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3542        res.getService().add(parseCodeableConcept(xpp));
3543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3544        res.setDescriptionElement(parseMarkdown(xpp));
3545      } else if (!parseBackboneElementContent(eventType, xpp, res))
3546        return false;
3547    return true;
3548  }
3549
3550  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementCapabilityStatementRestResourceComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3551    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
3552    parseBackboneAttributes(xpp, res);
3553    next(xpp);
3554    int eventType = nextNoWhitespace(xpp);
3555    while (eventType != XmlPullParser.END_TAG) {
3556  if (!parseCapabilityStatementCapabilityStatementRestResourceComponentContent(eventType, xpp, owner, res))
3557        unknownContent(xpp);
3558      eventType = nextNoWhitespace(xpp);
3559    }
3560    next(xpp);
3561    parseElementClose(res);
3562    return res;
3563  }
3564
3565  protected boolean parseCapabilityStatementCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3566      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3567        res.setTypeElement(parseCode(xpp));
3568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3569        res.setProfileElement(parseCanonical(xpp));
3570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedProfile")) {
3571        res.getSupportedProfile().add(parseCanonical(xpp));
3572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3573        res.setDocumentationElement(parseMarkdown(xpp));
3574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3575        res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp, owner));
3576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3577        res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
3578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3579        res.setReadHistoryElement(parseBoolean(xpp));
3580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3581        res.setUpdateCreateElement(parseBoolean(xpp));
3582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3583        res.setConditionalCreateElement(parseBoolean(xpp));
3584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
3585        res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
3586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3587        res.setConditionalUpdateElement(parseBoolean(xpp));
3588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3589        res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
3590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
3591        res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
3592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3593        res.getSearchInclude().add(parseString(xpp));
3594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3595        res.getSearchRevInclude().add(parseString(xpp));
3596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3597        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3599        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3600      } else if (!parseBackboneElementContent(eventType, xpp, res))
3601        return false;
3602    return true;
3603  }
3604
3605  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3606    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
3607    parseBackboneAttributes(xpp, res);
3608    next(xpp);
3609    int eventType = nextNoWhitespace(xpp);
3610    while (eventType != XmlPullParser.END_TAG) {
3611  if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, owner, res))
3612        unknownContent(xpp);
3613      eventType = nextNoWhitespace(xpp);
3614    }
3615    next(xpp);
3616    parseElementClose(res);
3617    return res;
3618  }
3619
3620  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3621      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3622        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
3623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3624        res.setDocumentationElement(parseMarkdown(xpp));
3625      } else if (!parseBackboneElementContent(eventType, xpp, res))
3626        return false;
3627    return true;
3628  }
3629
3630  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3631    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
3632    parseBackboneAttributes(xpp, res);
3633    next(xpp);
3634    int eventType = nextNoWhitespace(xpp);
3635    while (eventType != XmlPullParser.END_TAG) {
3636  if (!parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, owner, res))
3637        unknownContent(xpp);
3638      eventType = nextNoWhitespace(xpp);
3639    }
3640    next(xpp);
3641    parseElementClose(res);
3642    return res;
3643  }
3644
3645  protected boolean parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3646      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3647        res.setNameElement(parseString(xpp));
3648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3649        res.setDefinitionElement(parseCanonical(xpp));
3650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3651        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3653        res.setDocumentationElement(parseMarkdown(xpp));
3654      } else if (!parseBackboneElementContent(eventType, xpp, res))
3655        return false;
3656    return true;
3657  }
3658
3659  protected CapabilityStatement.CapabilityStatementRestResourceOperationComponent parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3660    CapabilityStatement.CapabilityStatementRestResourceOperationComponent res = new CapabilityStatement.CapabilityStatementRestResourceOperationComponent();
3661    parseBackboneAttributes(xpp, res);
3662    next(xpp);
3663    int eventType = nextNoWhitespace(xpp);
3664    while (eventType != XmlPullParser.END_TAG) {
3665  if (!parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(eventType, xpp, owner, res))
3666        unknownContent(xpp);
3667      eventType = nextNoWhitespace(xpp);
3668    }
3669    next(xpp);
3670    parseElementClose(res);
3671    return res;
3672  }
3673
3674  protected boolean parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3675      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3676        res.setNameElement(parseString(xpp));
3677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3678        res.setDefinitionElement(parseCanonical(xpp));
3679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3680        res.setDocumentationElement(parseMarkdown(xpp));
3681      } else if (!parseBackboneElementContent(eventType, xpp, res))
3682        return false;
3683    return true;
3684  }
3685
3686  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3687    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
3688    parseBackboneAttributes(xpp, res);
3689    next(xpp);
3690    int eventType = nextNoWhitespace(xpp);
3691    while (eventType != XmlPullParser.END_TAG) {
3692  if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, owner, res))
3693        unknownContent(xpp);
3694      eventType = nextNoWhitespace(xpp);
3695    }
3696    next(xpp);
3697    parseElementClose(res);
3698    return res;
3699  }
3700
3701  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3702      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3703        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
3704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3705        res.setDocumentationElement(parseMarkdown(xpp));
3706      } else if (!parseBackboneElementContent(eventType, xpp, res))
3707        return false;
3708    return true;
3709  }
3710
3711  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementCapabilityStatementMessagingComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3712    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
3713    parseBackboneAttributes(xpp, res);
3714    next(xpp);
3715    int eventType = nextNoWhitespace(xpp);
3716    while (eventType != XmlPullParser.END_TAG) {
3717  if (!parseCapabilityStatementCapabilityStatementMessagingComponentContent(eventType, xpp, owner, res))
3718        unknownContent(xpp);
3719      eventType = nextNoWhitespace(xpp);
3720    }
3721    next(xpp);
3722    parseElementClose(res);
3723    return res;
3724  }
3725
3726  protected boolean parseCapabilityStatementCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3727      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3728        res.getEndpoint().add(parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(xpp, owner));
3729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3730        res.setReliableCacheElement(parseUnsignedInt(xpp));
3731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3732        res.setDocumentationElement(parseMarkdown(xpp));
3733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
3734        res.getSupportedMessage().add(parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(xpp, owner));
3735      } else if (!parseBackboneElementContent(eventType, xpp, res))
3736        return false;
3737    return true;
3738  }
3739
3740  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3741    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
3742    parseBackboneAttributes(xpp, res);
3743    next(xpp);
3744    int eventType = nextNoWhitespace(xpp);
3745    while (eventType != XmlPullParser.END_TAG) {
3746  if (!parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, owner, res))
3747        unknownContent(xpp);
3748      eventType = nextNoWhitespace(xpp);
3749    }
3750    next(xpp);
3751    parseElementClose(res);
3752    return res;
3753  }
3754
3755  protected boolean parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3756      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3757        res.setProtocol(parseCoding(xpp));
3758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3759        res.setAddressElement(parseUrl(xpp));
3760      } else if (!parseBackboneElementContent(eventType, xpp, res))
3761        return false;
3762    return true;
3763  }
3764
3765  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3766    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
3767    parseBackboneAttributes(xpp, res);
3768    next(xpp);
3769    int eventType = nextNoWhitespace(xpp);
3770    while (eventType != XmlPullParser.END_TAG) {
3771  if (!parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, owner, res))
3772        unknownContent(xpp);
3773      eventType = nextNoWhitespace(xpp);
3774    }
3775    next(xpp);
3776    parseElementClose(res);
3777    return res;
3778  }
3779
3780  protected boolean parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3781      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3782        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3784        res.setDefinitionElement(parseCanonical(xpp));
3785      } else if (!parseBackboneElementContent(eventType, xpp, res))
3786        return false;
3787    return true;
3788  }
3789
3790  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementCapabilityStatementDocumentComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3791    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
3792    parseBackboneAttributes(xpp, res);
3793    next(xpp);
3794    int eventType = nextNoWhitespace(xpp);
3795    while (eventType != XmlPullParser.END_TAG) {
3796  if (!parseCapabilityStatementCapabilityStatementDocumentComponentContent(eventType, xpp, owner, res))
3797        unknownContent(xpp);
3798      eventType = nextNoWhitespace(xpp);
3799    }
3800    next(xpp);
3801    parseElementClose(res);
3802    return res;
3803  }
3804
3805  protected boolean parseCapabilityStatementCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3806      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3807        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
3808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3809        res.setDocumentationElement(parseMarkdown(xpp));
3810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3811        res.setProfileElement(parseCanonical(xpp));
3812      } else if (!parseBackboneElementContent(eventType, xpp, res))
3813        return false;
3814    return true;
3815  }
3816
3817  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3818    CarePlan res = new CarePlan();
3819    parseDomainResourceAttributes(xpp, res);
3820    next(xpp);
3821    int eventType = nextNoWhitespace(xpp);
3822    while (eventType != XmlPullParser.END_TAG) {
3823  if (!parseCarePlanContent(eventType, xpp, res))
3824        unknownContent(xpp);
3825      eventType = nextNoWhitespace(xpp);
3826    }
3827    next(xpp);
3828    parseElementClose(res);
3829    return res;
3830  }
3831
3832  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
3833      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3834        res.getIdentifier().add(parseIdentifier(xpp));
3835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
3836        res.getInstantiatesCanonical().add(parseCanonical(xpp));
3837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
3838        res.getInstantiatesUri().add(parseUri(xpp));
3839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3840        res.getBasedOn().add(parseReference(xpp));
3841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
3842        res.getReplaces().add(parseReference(xpp));
3843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3844        res.getPartOf().add(parseReference(xpp));
3845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3846        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
3847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
3848        res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
3849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3850        res.getCategory().add(parseCodeableConcept(xpp));
3851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3852        res.setTitleElement(parseString(xpp));
3853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3854        res.setDescriptionElement(parseString(xpp));
3855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3856        res.setSubject(parseReference(xpp));
3857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3858        res.setContext(parseReference(xpp));
3859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3860        res.setPeriod(parsePeriod(xpp));
3861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3862        res.setCreatedElement(parseDateTime(xpp));
3863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3864        res.setAuthor(parseReference(xpp));
3865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
3866        res.getContributor().add(parseReference(xpp));
3867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3868        res.getCareTeam().add(parseReference(xpp));
3869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
3870        res.getAddresses().add(parseReference(xpp));
3871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
3872        res.getSupportingInfo().add(parseReference(xpp));
3873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3874        res.getGoal().add(parseReference(xpp));
3875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
3876        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
3877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3878        res.getNote().add(parseAnnotation(xpp));
3879      } else if (!parseDomainResourceContent(eventType, xpp, res))
3880        return false;
3881    return true;
3882  }
3883
3884  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3885    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
3886    parseBackboneAttributes(xpp, res);
3887    next(xpp);
3888    int eventType = nextNoWhitespace(xpp);
3889    while (eventType != XmlPullParser.END_TAG) {
3890  if (!parseCarePlanCarePlanActivityComponentContent(eventType, xpp, owner, res))
3891        unknownContent(xpp);
3892      eventType = nextNoWhitespace(xpp);
3893    }
3894    next(xpp);
3895    parseElementClose(res);
3896    return res;
3897  }
3898
3899  protected boolean parseCarePlanCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3900      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCodeableConcept")) {
3901        res.getOutcomeCodeableConcept().add(parseCodeableConcept(xpp));
3902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
3903        res.getOutcomeReference().add(parseReference(xpp));
3904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
3905        res.getProgress().add(parseAnnotation(xpp));
3906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3907        res.setReference(parseReference(xpp));
3908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3909        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
3910      } else if (!parseBackboneElementContent(eventType, xpp, res))
3911        return false;
3912    return true;
3913  }
3914
3915  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3916    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
3917    parseBackboneAttributes(xpp, res);
3918    next(xpp);
3919    int eventType = nextNoWhitespace(xpp);
3920    while (eventType != XmlPullParser.END_TAG) {
3921  if (!parseCarePlanCarePlanActivityDetailComponentContent(eventType, xpp, owner, res))
3922        unknownContent(xpp);
3923      eventType = nextNoWhitespace(xpp);
3924    }
3925    next(xpp);
3926    parseElementClose(res);
3927    return res;
3928  }
3929
3930  protected boolean parseCarePlanCarePlanActivityDetailComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3931      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3932        res.setKindElement(parseEnumeration(xpp, CarePlan.CarePlanActivityKind.NULL, new CarePlan.CarePlanActivityKindEnumFactory()));
3933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
3934        res.getInstantiatesCanonical().add(parseCanonical(xpp));
3935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
3936        res.getInstantiatesUri().add(parseUri(xpp));
3937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3938        res.setCode(parseCodeableConcept(xpp));
3939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3940        res.getReasonCode().add(parseCodeableConcept(xpp));
3941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3942        res.getReasonReference().add(parseReference(xpp));
3943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3944        res.getGoal().add(parseReference(xpp));
3945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3946        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
3947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
3948        res.setStatusReason(parseCodeableConcept(xpp));
3949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
3950        res.setDoNotPerformElement(parseBoolean(xpp));
3951      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
3952        res.setScheduled(parseType("scheduled", xpp));
3953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3954        res.setLocation(parseReference(xpp));
3955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
3956        res.getPerformer().add(parseReference(xpp));
3957      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
3958        res.setProduct(parseType("product", xpp));
3959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
3960        res.setDailyAmount(parseQuantity(xpp));
3961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3962        res.setQuantity(parseQuantity(xpp));
3963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3964        res.setDescriptionElement(parseString(xpp));
3965      } else if (!parseBackboneElementContent(eventType, xpp, res))
3966        return false;
3967    return true;
3968  }
3969
3970  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3971    CareTeam res = new CareTeam();
3972    parseDomainResourceAttributes(xpp, res);
3973    next(xpp);
3974    int eventType = nextNoWhitespace(xpp);
3975    while (eventType != XmlPullParser.END_TAG) {
3976  if (!parseCareTeamContent(eventType, xpp, res))
3977        unknownContent(xpp);
3978      eventType = nextNoWhitespace(xpp);
3979    }
3980    next(xpp);
3981    parseElementClose(res);
3982    return res;
3983  }
3984
3985  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
3986      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3987        res.getIdentifier().add(parseIdentifier(xpp));
3988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3989        res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
3990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3991        res.getCategory().add(parseCodeableConcept(xpp));
3992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3993        res.setNameElement(parseString(xpp));
3994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3995        res.setSubject(parseReference(xpp));
3996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3997        res.setContext(parseReference(xpp));
3998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3999        res.setPeriod(parsePeriod(xpp));
4000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
4001        res.getParticipant().add(parseCareTeamCareTeamParticipantComponent(xpp, res));
4002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4003        res.getReasonCode().add(parseCodeableConcept(xpp));
4004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4005        res.getReasonReference().add(parseReference(xpp));
4006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
4007        res.getManagingOrganization().add(parseReference(xpp));
4008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
4009        res.getTelecom().add(parseContactPoint(xpp));
4010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4011        res.getNote().add(parseAnnotation(xpp));
4012      } else if (!parseDomainResourceContent(eventType, xpp, res))
4013        return false;
4014    return true;
4015  }
4016
4017  protected CareTeam.CareTeamParticipantComponent parseCareTeamCareTeamParticipantComponent(XmlPullParser xpp, CareTeam owner) throws XmlPullParserException, IOException, FHIRFormatError {
4018    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
4019    parseBackboneAttributes(xpp, res);
4020    next(xpp);
4021    int eventType = nextNoWhitespace(xpp);
4022    while (eventType != XmlPullParser.END_TAG) {
4023  if (!parseCareTeamCareTeamParticipantComponentContent(eventType, xpp, owner, res))
4024        unknownContent(xpp);
4025      eventType = nextNoWhitespace(xpp);
4026    }
4027    next(xpp);
4028    parseElementClose(res);
4029    return res;
4030  }
4031
4032  protected boolean parseCareTeamCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam owner, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4033      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4034        res.getRole().add(parseCodeableConcept(xpp));
4035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
4036        res.setMember(parseReference(xpp));
4037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
4038        res.setOnBehalfOf(parseReference(xpp));
4039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4040        res.setPeriod(parsePeriod(xpp));
4041      } else if (!parseBackboneElementContent(eventType, xpp, res))
4042        return false;
4043    return true;
4044  }
4045
4046  protected CatalogEntry parseCatalogEntry(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4047    CatalogEntry res = new CatalogEntry();
4048    parseDomainResourceAttributes(xpp, res);
4049    next(xpp);
4050    int eventType = nextNoWhitespace(xpp);
4051    while (eventType != XmlPullParser.END_TAG) {
4052  if (!parseCatalogEntryContent(eventType, xpp, res))
4053        unknownContent(xpp);
4054      eventType = nextNoWhitespace(xpp);
4055    }
4056    next(xpp);
4057    parseElementClose(res);
4058    return res;
4059  }
4060
4061  protected boolean parseCatalogEntryContent(int eventType, XmlPullParser xpp, CatalogEntry res) throws XmlPullParserException, IOException, FHIRFormatError {
4062      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4063        res.getIdentifier().add(parseIdentifier(xpp));
4064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4065        res.setType(parseCodeableConcept(xpp));
4066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderable")) {
4067        res.setOrderableElement(parseBoolean(xpp));
4068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedItem")) {
4069        res.setReferencedItem(parseReference(xpp));
4070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalIdentifier")) {
4071        res.getAdditionalIdentifier().add(parseIdentifier(xpp));
4072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
4073        res.getClassification().add(parseCodeableConcept(xpp));
4074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4075        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
4077        res.setValidityPeriod(parsePeriod(xpp));
4078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validTo")) {
4079        res.setValidToElement(parseDateTime(xpp));
4080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
4081        res.setLastUpdatedElement(parseDateTime(xpp));
4082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalCharacteristic")) {
4083        res.getAdditionalCharacteristic().add(parseCodeableConcept(xpp));
4084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalClassification")) {
4085        res.getAdditionalClassification().add(parseCodeableConcept(xpp));
4086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedEntry")) {
4087        res.getRelatedEntry().add(parseCatalogEntryCatalogEntryRelatedEntryComponent(xpp, res));
4088      } else if (!parseDomainResourceContent(eventType, xpp, res))
4089        return false;
4090    return true;
4091  }
4092
4093  protected CatalogEntry.CatalogEntryRelatedEntryComponent parseCatalogEntryCatalogEntryRelatedEntryComponent(XmlPullParser xpp, CatalogEntry owner) throws XmlPullParserException, IOException, FHIRFormatError {
4094    CatalogEntry.CatalogEntryRelatedEntryComponent res = new CatalogEntry.CatalogEntryRelatedEntryComponent();
4095    parseBackboneAttributes(xpp, res);
4096    next(xpp);
4097    int eventType = nextNoWhitespace(xpp);
4098    while (eventType != XmlPullParser.END_TAG) {
4099  if (!parseCatalogEntryCatalogEntryRelatedEntryComponentContent(eventType, xpp, owner, res))
4100        unknownContent(xpp);
4101      eventType = nextNoWhitespace(xpp);
4102    }
4103    next(xpp);
4104    parseElementClose(res);
4105    return res;
4106  }
4107
4108  protected boolean parseCatalogEntryCatalogEntryRelatedEntryComponentContent(int eventType, XmlPullParser xpp, CatalogEntry owner, CatalogEntry.CatalogEntryRelatedEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4109      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationtype")) {
4110        res.setRelationtypeElement(parseEnumeration(xpp, CatalogEntry.CatalogEntryRelationType.NULL, new CatalogEntry.CatalogEntryRelationTypeEnumFactory()));
4111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4112        res.setItem(parseReference(xpp));
4113      } else if (!parseBackboneElementContent(eventType, xpp, res))
4114        return false;
4115    return true;
4116  }
4117
4118  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4119    ChargeItem res = new ChargeItem();
4120    parseDomainResourceAttributes(xpp, res);
4121    next(xpp);
4122    int eventType = nextNoWhitespace(xpp);
4123    while (eventType != XmlPullParser.END_TAG) {
4124  if (!parseChargeItemContent(eventType, xpp, res))
4125        unknownContent(xpp);
4126      eventType = nextNoWhitespace(xpp);
4127    }
4128    next(xpp);
4129    parseElementClose(res);
4130    return res;
4131  }
4132
4133  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
4134      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4135        res.getIdentifier().add(parseIdentifier(xpp));
4136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4137        res.getDefinition().add(parseUri(xpp));
4138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4139        res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
4140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4141        res.getPartOf().add(parseReference(xpp));
4142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4143        res.setCode(parseCodeableConcept(xpp));
4144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4145        res.setSubject(parseReference(xpp));
4146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4147        res.setContext(parseReference(xpp));
4148      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
4149        res.setOccurrence(parseType("occurrence", xpp));
4150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
4151        res.getPerformer().add(parseChargeItemChargeItemPerformerComponent(xpp, res));
4152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
4153        res.setPerformingOrganization(parseReference(xpp));
4154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
4155        res.setRequestingOrganization(parseReference(xpp));
4156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costCenter")) {
4157        res.setCostCenter(parseReference(xpp));
4158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4159        res.setQuantity(parseQuantity(xpp));
4160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
4161        res.getBodysite().add(parseCodeableConcept(xpp));
4162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factorOverride")) {
4163        res.setFactorOverrideElement(parseDecimal(xpp));
4164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceOverride")) {
4165        res.setPriceOverride(parseMoney(xpp));
4166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
4167        res.setOverrideReasonElement(parseString(xpp));
4168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4169        res.setEnterer(parseReference(xpp));
4170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
4171        res.setEnteredDateElement(parseDateTime(xpp));
4172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4173        res.getReason().add(parseCodeableConcept(xpp));
4174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4175        res.getService().add(parseReference(xpp));
4176      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
4177        res.setProduct(parseType("product", xpp));
4178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
4179        res.getAccount().add(parseReference(xpp));
4180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4181        res.getNote().add(parseAnnotation(xpp));
4182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
4183        res.getSupportingInformation().add(parseReference(xpp));
4184      } else if (!parseDomainResourceContent(eventType, xpp, res))
4185        return false;
4186    return true;
4187  }
4188
4189  protected ChargeItem.ChargeItemPerformerComponent parseChargeItemChargeItemPerformerComponent(XmlPullParser xpp, ChargeItem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4190    ChargeItem.ChargeItemPerformerComponent res = new ChargeItem.ChargeItemPerformerComponent();
4191    parseBackboneAttributes(xpp, res);
4192    next(xpp);
4193    int eventType = nextNoWhitespace(xpp);
4194    while (eventType != XmlPullParser.END_TAG) {
4195  if (!parseChargeItemChargeItemPerformerComponentContent(eventType, xpp, owner, res))
4196        unknownContent(xpp);
4197      eventType = nextNoWhitespace(xpp);
4198    }
4199    next(xpp);
4200    parseElementClose(res);
4201    return res;
4202  }
4203
4204  protected boolean parseChargeItemChargeItemPerformerComponentContent(int eventType, XmlPullParser xpp, ChargeItem owner, ChargeItem.ChargeItemPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4205      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
4206        res.setFunction(parseCodeableConcept(xpp));
4207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4208        res.setActor(parseReference(xpp));
4209      } else if (!parseBackboneElementContent(eventType, xpp, res))
4210        return false;
4211    return true;
4212  }
4213
4214  protected ChargeItemDefinition parseChargeItemDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4215    ChargeItemDefinition res = new ChargeItemDefinition();
4216    parseDomainResourceAttributes(xpp, res);
4217    next(xpp);
4218    int eventType = nextNoWhitespace(xpp);
4219    while (eventType != XmlPullParser.END_TAG) {
4220  if (!parseChargeItemDefinitionContent(eventType, xpp, res))
4221        unknownContent(xpp);
4222      eventType = nextNoWhitespace(xpp);
4223    }
4224    next(xpp);
4225    parseElementClose(res);
4226    return res;
4227  }
4228
4229  protected boolean parseChargeItemDefinitionContent(int eventType, XmlPullParser xpp, ChargeItemDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
4230      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4231        res.setUrlElement(parseUri(xpp));
4232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4233        res.getIdentifier().add(parseIdentifier(xpp));
4234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4235        res.setVersionElement(parseString(xpp));
4236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4237        res.setTitleElement(parseString(xpp));
4238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromUri")) {
4239        res.getDerivedFromUri().add(parseUri(xpp));
4240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4241        res.getPartOf().add(parseCanonical(xpp));
4242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4243        res.getReplaces().add(parseCanonical(xpp));
4244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4245        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4247        res.setExperimentalElement(parseBoolean(xpp));
4248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4249        res.setDateElement(parseDateTime(xpp));
4250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4251        res.setPublisherElement(parseString(xpp));
4252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4253        res.getContact().add(parseContactDetail(xpp));
4254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4255        res.setDescriptionElement(parseMarkdown(xpp));
4256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4257        res.getUseContext().add(parseUsageContext(xpp));
4258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4259        res.getJurisdiction().add(parseCodeableConcept(xpp));
4260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4261        res.setCopyrightElement(parseMarkdown(xpp));
4262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
4263        res.setApprovalDateElement(parseDate(xpp));
4264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
4265        res.setLastReviewDateElement(parseDate(xpp));
4266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
4267        res.setEffectivePeriod(parsePeriod(xpp));
4268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4269        res.setCode(parseCodeableConcept(xpp));
4270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
4271        res.getInstance().add(parseReference(xpp));
4272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4273        res.getApplicability().add(parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(xpp, res));
4274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("propertyGroup")) {
4275        res.getPropertyGroup().add(parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(xpp, res));
4276      } else if (!parseDomainResourceContent(eventType, xpp, res))
4277        return false;
4278    return true;
4279  }
4280
4281  protected ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4282    ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res = new ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent();
4283    parseBackboneAttributes(xpp, res);
4284    next(xpp);
4285    int eventType = nextNoWhitespace(xpp);
4286    while (eventType != XmlPullParser.END_TAG) {
4287  if (!parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponentContent(eventType, xpp, owner, res))
4288        unknownContent(xpp);
4289      eventType = nextNoWhitespace(xpp);
4290    }
4291    next(xpp);
4292    parseElementClose(res);
4293    return res;
4294  }
4295
4296  protected boolean parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4298        res.setDescriptionElement(parseString(xpp));
4299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4300        res.setLanguageElement(parseString(xpp));
4301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
4302        res.setExpressionElement(parseString(xpp));
4303      } else if (!parseBackboneElementContent(eventType, xpp, res))
4304        return false;
4305    return true;
4306  }
4307
4308  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4309    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent();
4310    parseBackboneAttributes(xpp, res);
4311    next(xpp);
4312    int eventType = nextNoWhitespace(xpp);
4313    while (eventType != XmlPullParser.END_TAG) {
4314  if (!parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentContent(eventType, xpp, owner, res))
4315        unknownContent(xpp);
4316      eventType = nextNoWhitespace(xpp);
4317    }
4318    next(xpp);
4319    parseElementClose(res);
4320    return res;
4321  }
4322
4323  protected boolean parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4325        res.getApplicability().add(parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(xpp, owner));
4326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
4327        res.getPriceComponent().add(parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(xpp, owner));
4328      } else if (!parseBackboneElementContent(eventType, xpp, res))
4329        return false;
4330    return true;
4331  }
4332
4333  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4334    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent();
4335    parseBackboneAttributes(xpp, res);
4336    next(xpp);
4337    int eventType = nextNoWhitespace(xpp);
4338    while (eventType != XmlPullParser.END_TAG) {
4339  if (!parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentContent(eventType, xpp, owner, res))
4340        unknownContent(xpp);
4341      eventType = nextNoWhitespace(xpp);
4342    }
4343    next(xpp);
4344    parseElementClose(res);
4345    return res;
4346  }
4347
4348  protected boolean parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4349      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4350        res.setTypeElement(parseEnumeration(xpp, ChargeItemDefinition.ChargeItemDefinitionPriceComponentType.NULL, new ChargeItemDefinition.ChargeItemDefinitionPriceComponentTypeEnumFactory()));
4351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4352        res.setCode(parseCodeableConcept(xpp));
4353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4354        res.setFactorElement(parseDecimal(xpp));
4355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4356        res.setAmount(parseMoney(xpp));
4357      } else if (!parseBackboneElementContent(eventType, xpp, res))
4358        return false;
4359    return true;
4360  }
4361
4362  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4363    Claim res = new Claim();
4364    parseDomainResourceAttributes(xpp, res);
4365    next(xpp);
4366    int eventType = nextNoWhitespace(xpp);
4367    while (eventType != XmlPullParser.END_TAG) {
4368  if (!parseClaimContent(eventType, xpp, res))
4369        unknownContent(xpp);
4370      eventType = nextNoWhitespace(xpp);
4371    }
4372    next(xpp);
4373    parseElementClose(res);
4374    return res;
4375  }
4376
4377  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
4378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4379        res.getIdentifier().add(parseIdentifier(xpp));
4380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4381        res.setStatusElement(parseEnumeration(xpp, Claim.ClaimStatus.NULL, new Claim.ClaimStatusEnumFactory()));
4382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4383        res.setType(parseCodeableConcept(xpp));
4384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4385        res.setSubType(parseCodeableConcept(xpp));
4386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4387        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
4388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4389        res.setPatient(parseReference(xpp));
4390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
4391        res.setBillablePeriod(parsePeriod(xpp));
4392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4393        res.setCreatedElement(parseDateTime(xpp));
4394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4395        res.setEnterer(parseReference(xpp));
4396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4397        res.setInsurer(parseReference(xpp));
4398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4399        res.setProvider(parseReference(xpp));
4400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4401        res.setPriority(parseCodeableConcept(xpp));
4402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
4403        res.setFundsReserve(parseCodeableConcept(xpp));
4404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
4405        res.getRelated().add(parseClaimRelatedClaimComponent(xpp, res));
4406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
4407        res.setPrescription(parseReference(xpp));
4408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
4409        res.setOriginalPrescription(parseReference(xpp));
4410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
4411        res.setPayee(parseClaimPayeeComponent(xpp, res));
4412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
4413        res.setReferral(parseReference(xpp));
4414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
4415        res.setFacility(parseReference(xpp));
4416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
4417        res.getCareTeam().add(parseClaimCareTeamComponent(xpp, res));
4418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
4419        res.getInformation().add(parseClaimSpecialConditionComponent(xpp, res));
4420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
4421        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
4422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
4423        res.getProcedure().add(parseClaimProcedureComponent(xpp, res));
4424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4425        res.getInsurance().add(parseClaimInsuranceComponent(xpp, res));
4426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
4427        res.setAccident(parseClaimAccidentComponent(xpp, res));
4428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4429        res.getItem().add(parseClaimItemComponent(xpp, res));
4430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4431        res.setTotal(parseMoney(xpp));
4432      } else if (!parseDomainResourceContent(eventType, xpp, res))
4433        return false;
4434    return true;
4435  }
4436
4437  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4438    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
4439    parseBackboneAttributes(xpp, res);
4440    next(xpp);
4441    int eventType = nextNoWhitespace(xpp);
4442    while (eventType != XmlPullParser.END_TAG) {
4443  if (!parseClaimRelatedClaimComponentContent(eventType, xpp, owner, res))
4444        unknownContent(xpp);
4445      eventType = nextNoWhitespace(xpp);
4446    }
4447    next(xpp);
4448    parseElementClose(res);
4449    return res;
4450  }
4451
4452  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4453      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
4454        res.setClaim(parseReference(xpp));
4455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
4456        res.setRelationship(parseCodeableConcept(xpp));
4457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
4458        res.setReference(parseIdentifier(xpp));
4459      } else if (!parseBackboneElementContent(eventType, xpp, res))
4460        return false;
4461    return true;
4462  }
4463
4464  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4465    Claim.PayeeComponent res = new Claim.PayeeComponent();
4466    parseBackboneAttributes(xpp, res);
4467    next(xpp);
4468    int eventType = nextNoWhitespace(xpp);
4469    while (eventType != XmlPullParser.END_TAG) {
4470  if (!parseClaimPayeeComponentContent(eventType, xpp, owner, res))
4471        unknownContent(xpp);
4472      eventType = nextNoWhitespace(xpp);
4473    }
4474    next(xpp);
4475    parseElementClose(res);
4476    return res;
4477  }
4478
4479  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4480      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4481        res.setType(parseCodeableConcept(xpp));
4482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
4483        res.setResource(parseCoding(xpp));
4484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
4485        res.setParty(parseReference(xpp));
4486      } else if (!parseBackboneElementContent(eventType, xpp, res))
4487        return false;
4488    return true;
4489  }
4490
4491  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4492    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
4493    parseBackboneAttributes(xpp, res);
4494    next(xpp);
4495    int eventType = nextNoWhitespace(xpp);
4496    while (eventType != XmlPullParser.END_TAG) {
4497  if (!parseClaimCareTeamComponentContent(eventType, xpp, owner, res))
4498        unknownContent(xpp);
4499      eventType = nextNoWhitespace(xpp);
4500    }
4501    next(xpp);
4502    parseElementClose(res);
4503    return res;
4504  }
4505
4506  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4507      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4508        res.setSequenceElement(parsePositiveInt(xpp));
4509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4510        res.setProvider(parseReference(xpp));
4511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
4512        res.setResponsibleElement(parseBoolean(xpp));
4513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4514        res.setRole(parseCodeableConcept(xpp));
4515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
4516        res.setQualification(parseCodeableConcept(xpp));
4517      } else if (!parseBackboneElementContent(eventType, xpp, res))
4518        return false;
4519    return true;
4520  }
4521
4522  protected Claim.SpecialConditionComponent parseClaimSpecialConditionComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4523    Claim.SpecialConditionComponent res = new Claim.SpecialConditionComponent();
4524    parseBackboneAttributes(xpp, res);
4525    next(xpp);
4526    int eventType = nextNoWhitespace(xpp);
4527    while (eventType != XmlPullParser.END_TAG) {
4528  if (!parseClaimSpecialConditionComponentContent(eventType, xpp, owner, res))
4529        unknownContent(xpp);
4530      eventType = nextNoWhitespace(xpp);
4531    }
4532    next(xpp);
4533    parseElementClose(res);
4534    return res;
4535  }
4536
4537  protected boolean parseClaimSpecialConditionComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SpecialConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4538      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4539        res.setSequenceElement(parsePositiveInt(xpp));
4540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4541        res.setCategory(parseCodeableConcept(xpp));
4542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4543        res.setCode(parseCodeableConcept(xpp));
4544      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
4545        res.setTiming(parseType("timing", xpp));
4546      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
4547        res.setValue(parseType("value", xpp));
4548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4549        res.setReason(parseCodeableConcept(xpp));
4550      } else if (!parseBackboneElementContent(eventType, xpp, res))
4551        return false;
4552    return true;
4553  }
4554
4555  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4556    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
4557    parseBackboneAttributes(xpp, res);
4558    next(xpp);
4559    int eventType = nextNoWhitespace(xpp);
4560    while (eventType != XmlPullParser.END_TAG) {
4561  if (!parseClaimDiagnosisComponentContent(eventType, xpp, owner, res))
4562        unknownContent(xpp);
4563      eventType = nextNoWhitespace(xpp);
4564    }
4565    next(xpp);
4566    parseElementClose(res);
4567    return res;
4568  }
4569
4570  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4571      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4572        res.setSequenceElement(parsePositiveInt(xpp));
4573      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
4574        res.setDiagnosis(parseType("diagnosis", xpp));
4575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4576        res.getType().add(parseCodeableConcept(xpp));
4577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
4578        res.setOnAdmission(parseCodeableConcept(xpp));
4579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
4580        res.setPackageCode(parseCodeableConcept(xpp));
4581      } else if (!parseBackboneElementContent(eventType, xpp, res))
4582        return false;
4583    return true;
4584  }
4585
4586  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4587    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
4588    parseBackboneAttributes(xpp, res);
4589    next(xpp);
4590    int eventType = nextNoWhitespace(xpp);
4591    while (eventType != XmlPullParser.END_TAG) {
4592  if (!parseClaimProcedureComponentContent(eventType, xpp, owner, res))
4593        unknownContent(xpp);
4594      eventType = nextNoWhitespace(xpp);
4595    }
4596    next(xpp);
4597    parseElementClose(res);
4598    return res;
4599  }
4600
4601  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4602      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4603        res.setSequenceElement(parsePositiveInt(xpp));
4604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4605        res.setDateElement(parseDateTime(xpp));
4606      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
4607        res.setProcedure(parseType("procedure", xpp));
4608      } else if (!parseBackboneElementContent(eventType, xpp, res))
4609        return false;
4610    return true;
4611  }
4612
4613  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4614    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
4615    parseBackboneAttributes(xpp, res);
4616    next(xpp);
4617    int eventType = nextNoWhitespace(xpp);
4618    while (eventType != XmlPullParser.END_TAG) {
4619  if (!parseClaimInsuranceComponentContent(eventType, xpp, owner, res))
4620        unknownContent(xpp);
4621      eventType = nextNoWhitespace(xpp);
4622    }
4623    next(xpp);
4624    parseElementClose(res);
4625    return res;
4626  }
4627
4628  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4630        res.setSequenceElement(parsePositiveInt(xpp));
4631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
4632        res.setFocalElement(parseBoolean(xpp));
4633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4634        res.setIdentifier(parseIdentifier(xpp));
4635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4636        res.setCoverage(parseReference(xpp));
4637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
4638        res.setBusinessArrangementElement(parseString(xpp));
4639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4640        res.getPreAuthRef().add(parseString(xpp));
4641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
4642        res.setClaimResponse(parseReference(xpp));
4643      } else if (!parseBackboneElementContent(eventType, xpp, res))
4644        return false;
4645    return true;
4646  }
4647
4648  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4649    Claim.AccidentComponent res = new Claim.AccidentComponent();
4650    parseBackboneAttributes(xpp, res);
4651    next(xpp);
4652    int eventType = nextNoWhitespace(xpp);
4653    while (eventType != XmlPullParser.END_TAG) {
4654  if (!parseClaimAccidentComponentContent(eventType, xpp, owner, res))
4655        unknownContent(xpp);
4656      eventType = nextNoWhitespace(xpp);
4657    }
4658    next(xpp);
4659    parseElementClose(res);
4660    return res;
4661  }
4662
4663  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4664      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4665        res.setDateElement(parseDate(xpp));
4666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4667        res.setType(parseCodeableConcept(xpp));
4668      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4669        res.setLocation(parseType("location", xpp));
4670      } else if (!parseBackboneElementContent(eventType, xpp, res))
4671        return false;
4672    return true;
4673  }
4674
4675  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4676    Claim.ItemComponent res = new Claim.ItemComponent();
4677    parseBackboneAttributes(xpp, res);
4678    next(xpp);
4679    int eventType = nextNoWhitespace(xpp);
4680    while (eventType != XmlPullParser.END_TAG) {
4681  if (!parseClaimItemComponentContent(eventType, xpp, owner, res))
4682        unknownContent(xpp);
4683      eventType = nextNoWhitespace(xpp);
4684    }
4685    next(xpp);
4686    parseElementClose(res);
4687    return res;
4688  }
4689
4690  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4691      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4692        res.setSequenceElement(parsePositiveInt(xpp));
4693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
4694        res.getCareTeamSequence().add(parsePositiveInt(xpp));
4695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
4696        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
4697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
4698        res.getProcedureSequence().add(parsePositiveInt(xpp));
4699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
4700        res.getInformationSequence().add(parsePositiveInt(xpp));
4701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4702        res.setRevenue(parseCodeableConcept(xpp));
4703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4704        res.setCategory(parseCodeableConcept(xpp));
4705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
4706        res.setBillcode(parseCodeableConcept(xpp));
4707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4708        res.getModifier().add(parseCodeableConcept(xpp));
4709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4710        res.getProgramCode().add(parseCodeableConcept(xpp));
4711      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
4712        res.setServiced(parseType("serviced", xpp));
4713      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4714        res.setLocation(parseType("location", xpp));
4715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4716        res.setQuantity(parseQuantity(xpp));
4717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4718        res.setUnitPrice(parseMoney(xpp));
4719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4720        res.setFactorElement(parseDecimal(xpp));
4721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4722        res.setNet(parseMoney(xpp));
4723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4724        res.getUdi().add(parseReference(xpp));
4725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4726        res.setBodySite(parseCodeableConcept(xpp));
4727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
4728        res.getSubSite().add(parseCodeableConcept(xpp));
4729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4730        res.getEncounter().add(parseReference(xpp));
4731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4732        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
4733      } else if (!parseBackboneElementContent(eventType, xpp, res))
4734        return false;
4735    return true;
4736  }
4737
4738  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4739    Claim.DetailComponent res = new Claim.DetailComponent();
4740    parseBackboneAttributes(xpp, res);
4741    next(xpp);
4742    int eventType = nextNoWhitespace(xpp);
4743    while (eventType != XmlPullParser.END_TAG) {
4744  if (!parseClaimDetailComponentContent(eventType, xpp, owner, res))
4745        unknownContent(xpp);
4746      eventType = nextNoWhitespace(xpp);
4747    }
4748    next(xpp);
4749    parseElementClose(res);
4750    return res;
4751  }
4752
4753  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4754      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4755        res.setSequenceElement(parsePositiveInt(xpp));
4756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4757        res.setRevenue(parseCodeableConcept(xpp));
4758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4759        res.setCategory(parseCodeableConcept(xpp));
4760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
4761        res.setBillcode(parseCodeableConcept(xpp));
4762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4763        res.getModifier().add(parseCodeableConcept(xpp));
4764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4765        res.getProgramCode().add(parseCodeableConcept(xpp));
4766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4767        res.setQuantity(parseQuantity(xpp));
4768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4769        res.setUnitPrice(parseMoney(xpp));
4770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4771        res.setFactorElement(parseDecimal(xpp));
4772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4773        res.setNet(parseMoney(xpp));
4774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4775        res.getUdi().add(parseReference(xpp));
4776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4777        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
4778      } else if (!parseBackboneElementContent(eventType, xpp, res))
4779        return false;
4780    return true;
4781  }
4782
4783  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4784    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
4785    parseBackboneAttributes(xpp, res);
4786    next(xpp);
4787    int eventType = nextNoWhitespace(xpp);
4788    while (eventType != XmlPullParser.END_TAG) {
4789  if (!parseClaimSubDetailComponentContent(eventType, xpp, owner, res))
4790        unknownContent(xpp);
4791      eventType = nextNoWhitespace(xpp);
4792    }
4793    next(xpp);
4794    parseElementClose(res);
4795    return res;
4796  }
4797
4798  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4800        res.setSequenceElement(parsePositiveInt(xpp));
4801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4802        res.setRevenue(parseCodeableConcept(xpp));
4803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4804        res.setCategory(parseCodeableConcept(xpp));
4805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
4806        res.setBillcode(parseCodeableConcept(xpp));
4807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4808        res.getModifier().add(parseCodeableConcept(xpp));
4809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4810        res.getProgramCode().add(parseCodeableConcept(xpp));
4811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4812        res.setQuantity(parseQuantity(xpp));
4813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4814        res.setUnitPrice(parseMoney(xpp));
4815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4816        res.setFactorElement(parseDecimal(xpp));
4817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4818        res.setNet(parseMoney(xpp));
4819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4820        res.getUdi().add(parseReference(xpp));
4821      } else if (!parseBackboneElementContent(eventType, xpp, res))
4822        return false;
4823    return true;
4824  }
4825
4826  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4827    ClaimResponse res = new ClaimResponse();
4828    parseDomainResourceAttributes(xpp, res);
4829    next(xpp);
4830    int eventType = nextNoWhitespace(xpp);
4831    while (eventType != XmlPullParser.END_TAG) {
4832  if (!parseClaimResponseContent(eventType, xpp, res))
4833        unknownContent(xpp);
4834      eventType = nextNoWhitespace(xpp);
4835    }
4836    next(xpp);
4837    parseElementClose(res);
4838    return res;
4839  }
4840
4841  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
4842      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4843        res.getIdentifier().add(parseIdentifier(xpp));
4844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4845        res.setStatusElement(parseEnumeration(xpp, ClaimResponse.ClaimResponseStatus.NULL, new ClaimResponse.ClaimResponseStatusEnumFactory()));
4846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4847        res.setType(parseCodeableConcept(xpp));
4848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4849        res.setSubType(parseCodeableConcept(xpp));
4850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4851        res.setUseElement(parseEnumeration(xpp, ClaimResponse.Use.NULL, new ClaimResponse.UseEnumFactory()));
4852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4853        res.setPatient(parseReference(xpp));
4854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4855        res.setCreatedElement(parseDateTime(xpp));
4856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4857        res.setInsurer(parseReference(xpp));
4858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
4859        res.setRequestProvider(parseReference(xpp));
4860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4861        res.setRequest(parseReference(xpp));
4862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4863        res.setOutcomeElement(parseEnumeration(xpp, ClaimResponse.RemittanceOutcome.NULL, new ClaimResponse.RemittanceOutcomeEnumFactory()));
4864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4865        res.setDispositionElement(parseString(xpp));
4866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4867        res.setPreAuthRefElement(parseString(xpp));
4868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
4869        res.setPayeeType(parseCodeableConcept(xpp));
4870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4871        res.getItem().add(parseClaimResponseItemComponent(xpp, res));
4872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
4873        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
4874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
4875        res.getError().add(parseClaimResponseErrorComponent(xpp, res));
4876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4877        res.getTotal().add(parseClaimResponseTotalComponent(xpp, res));
4878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
4879        res.setPayment(parseClaimResponsePaymentComponent(xpp, res));
4880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reserved")) {
4881        res.setReserved(parseCoding(xpp));
4882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
4883        res.setForm(parseCodeableConcept(xpp));
4884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
4885        res.getProcessNote().add(parseClaimResponseNoteComponent(xpp, res));
4886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
4887        res.getCommunicationRequest().add(parseReference(xpp));
4888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4889        res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp, res));
4890      } else if (!parseDomainResourceContent(eventType, xpp, res))
4891        return false;
4892    return true;
4893  }
4894
4895  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4896    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
4897    parseBackboneAttributes(xpp, res);
4898    next(xpp);
4899    int eventType = nextNoWhitespace(xpp);
4900    while (eventType != XmlPullParser.END_TAG) {
4901  if (!parseClaimResponseItemComponentContent(eventType, xpp, owner, res))
4902        unknownContent(xpp);
4903      eventType = nextNoWhitespace(xpp);
4904    }
4905    next(xpp);
4906    parseElementClose(res);
4907    return res;
4908  }
4909
4910  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4911      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
4912        res.setItemSequenceElement(parsePositiveInt(xpp));
4913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4914        res.getNoteNumber().add(parsePositiveInt(xpp));
4915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4916        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4918        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
4919      } else if (!parseBackboneElementContent(eventType, xpp, res))
4920        return false;
4921    return true;
4922  }
4923
4924  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4925    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
4926    parseBackboneAttributes(xpp, res);
4927    next(xpp);
4928    int eventType = nextNoWhitespace(xpp);
4929    while (eventType != XmlPullParser.END_TAG) {
4930  if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, owner, res))
4931        unknownContent(xpp);
4932      eventType = nextNoWhitespace(xpp);
4933    }
4934    next(xpp);
4935    parseElementClose(res);
4936    return res;
4937  }
4938
4939  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4940      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4941        res.setCategory(parseCodeableConcept(xpp));
4942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4943        res.setReason(parseCodeableConcept(xpp));
4944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4945        res.setAmount(parseMoney(xpp));
4946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4947        res.setValueElement(parseDecimal(xpp));
4948      } else if (!parseBackboneElementContent(eventType, xpp, res))
4949        return false;
4950    return true;
4951  }
4952
4953  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4954    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
4955    parseBackboneAttributes(xpp, res);
4956    next(xpp);
4957    int eventType = nextNoWhitespace(xpp);
4958    while (eventType != XmlPullParser.END_TAG) {
4959  if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, owner, res))
4960        unknownContent(xpp);
4961      eventType = nextNoWhitespace(xpp);
4962    }
4963    next(xpp);
4964    parseElementClose(res);
4965    return res;
4966  }
4967
4968  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4969      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
4970        res.setDetailSequenceElement(parsePositiveInt(xpp));
4971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4972        res.getNoteNumber().add(parsePositiveInt(xpp));
4973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4974        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4976        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
4977      } else if (!parseBackboneElementContent(eventType, xpp, res))
4978        return false;
4979    return true;
4980  }
4981
4982  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4983    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
4984    parseBackboneAttributes(xpp, res);
4985    next(xpp);
4986    int eventType = nextNoWhitespace(xpp);
4987    while (eventType != XmlPullParser.END_TAG) {
4988  if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, owner, res))
4989        unknownContent(xpp);
4990      eventType = nextNoWhitespace(xpp);
4991    }
4992    next(xpp);
4993    parseElementClose(res);
4994    return res;
4995  }
4996
4997  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4998      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
4999        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
5000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5001        res.getNoteNumber().add(parsePositiveInt(xpp));
5002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5003        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5004      } else if (!parseBackboneElementContent(eventType, xpp, res))
5005        return false;
5006    return true;
5007  }
5008
5009  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5010    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
5011    parseBackboneAttributes(xpp, res);
5012    next(xpp);
5013    int eventType = nextNoWhitespace(xpp);
5014    while (eventType != XmlPullParser.END_TAG) {
5015  if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, owner, res))
5016        unknownContent(xpp);
5017      eventType = nextNoWhitespace(xpp);
5018    }
5019    next(xpp);
5020    parseElementClose(res);
5021    return res;
5022  }
5023
5024  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5025      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
5026        res.getItemSequence().add(parsePositiveInt(xpp));
5027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
5028        res.getDetailSequence().add(parsePositiveInt(xpp));
5029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequence")) {
5030        res.getSubdetailSequence().add(parsePositiveInt(xpp));
5031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
5032        res.getProvider().add(parseReference(xpp));
5033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
5034        res.setBillcode(parseCodeableConcept(xpp));
5035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5036        res.getModifier().add(parseCodeableConcept(xpp));
5037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
5038        res.getProgramCode().add(parseCodeableConcept(xpp));
5039      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
5040        res.setServiced(parseType("serviced", xpp));
5041      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
5042        res.setLocation(parseType("location", xpp));
5043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5044        res.setQuantity(parseQuantity(xpp));
5045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5046        res.setUnitPrice(parseMoney(xpp));
5047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5048        res.setFactorElement(parseDecimal(xpp));
5049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5050        res.setNet(parseMoney(xpp));
5051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5052        res.setBodySite(parseCodeableConcept(xpp));
5053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
5054        res.getSubSite().add(parseCodeableConcept(xpp));
5055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5056        res.getNoteNumber().add(parsePositiveInt(xpp));
5057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5058        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5060        res.getDetail().add(parseClaimResponseAddedItemDetailComponent(xpp, owner));
5061      } else if (!parseBackboneElementContent(eventType, xpp, res))
5062        return false;
5063    return true;
5064  }
5065
5066  protected ClaimResponse.AddedItemDetailComponent parseClaimResponseAddedItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5067    ClaimResponse.AddedItemDetailComponent res = new ClaimResponse.AddedItemDetailComponent();
5068    parseBackboneAttributes(xpp, res);
5069    next(xpp);
5070    int eventType = nextNoWhitespace(xpp);
5071    while (eventType != XmlPullParser.END_TAG) {
5072  if (!parseClaimResponseAddedItemDetailComponentContent(eventType, xpp, owner, res))
5073        unknownContent(xpp);
5074      eventType = nextNoWhitespace(xpp);
5075    }
5076    next(xpp);
5077    parseElementClose(res);
5078    return res;
5079  }
5080
5081  protected boolean parseClaimResponseAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5082      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
5083        res.setBillcode(parseCodeableConcept(xpp));
5084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5085        res.getModifier().add(parseCodeableConcept(xpp));
5086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5087        res.setQuantity(parseQuantity(xpp));
5088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5089        res.setUnitPrice(parseMoney(xpp));
5090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5091        res.setFactorElement(parseDecimal(xpp));
5092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5093        res.setNet(parseMoney(xpp));
5094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5095        res.getNoteNumber().add(parsePositiveInt(xpp));
5096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5097        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
5099        res.getSubDetail().add(parseClaimResponseAddedItemSubDetailComponent(xpp, owner));
5100      } else if (!parseBackboneElementContent(eventType, xpp, res))
5101        return false;
5102    return true;
5103  }
5104
5105  protected ClaimResponse.AddedItemSubDetailComponent parseClaimResponseAddedItemSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5106    ClaimResponse.AddedItemSubDetailComponent res = new ClaimResponse.AddedItemSubDetailComponent();
5107    parseBackboneAttributes(xpp, res);
5108    next(xpp);
5109    int eventType = nextNoWhitespace(xpp);
5110    while (eventType != XmlPullParser.END_TAG) {
5111  if (!parseClaimResponseAddedItemSubDetailComponentContent(eventType, xpp, owner, res))
5112        unknownContent(xpp);
5113      eventType = nextNoWhitespace(xpp);
5114    }
5115    next(xpp);
5116    parseElementClose(res);
5117    return res;
5118  }
5119
5120  protected boolean parseClaimResponseAddedItemSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5121      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
5122        res.setBillcode(parseCodeableConcept(xpp));
5123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5124        res.getModifier().add(parseCodeableConcept(xpp));
5125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5126        res.setQuantity(parseQuantity(xpp));
5127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5128        res.setUnitPrice(parseMoney(xpp));
5129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5130        res.setFactorElement(parseDecimal(xpp));
5131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5132        res.setNet(parseMoney(xpp));
5133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5134        res.getNoteNumber().add(parsePositiveInt(xpp));
5135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5136        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5137      } else if (!parseBackboneElementContent(eventType, xpp, res))
5138        return false;
5139    return true;
5140  }
5141
5142  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5143    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
5144    parseBackboneAttributes(xpp, res);
5145    next(xpp);
5146    int eventType = nextNoWhitespace(xpp);
5147    while (eventType != XmlPullParser.END_TAG) {
5148  if (!parseClaimResponseErrorComponentContent(eventType, xpp, owner, res))
5149        unknownContent(xpp);
5150      eventType = nextNoWhitespace(xpp);
5151    }
5152    next(xpp);
5153    parseElementClose(res);
5154    return res;
5155  }
5156
5157  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5158      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
5159        res.setItemSequenceElement(parsePositiveInt(xpp));
5160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
5161        res.setDetailSequenceElement(parsePositiveInt(xpp));
5162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
5163        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
5164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5165        res.setCode(parseCodeableConcept(xpp));
5166      } else if (!parseBackboneElementContent(eventType, xpp, res))
5167        return false;
5168    return true;
5169  }
5170
5171  protected ClaimResponse.TotalComponent parseClaimResponseTotalComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5172    ClaimResponse.TotalComponent res = new ClaimResponse.TotalComponent();
5173    parseBackboneAttributes(xpp, res);
5174    next(xpp);
5175    int eventType = nextNoWhitespace(xpp);
5176    while (eventType != XmlPullParser.END_TAG) {
5177  if (!parseClaimResponseTotalComponentContent(eventType, xpp, owner, res))
5178        unknownContent(xpp);
5179      eventType = nextNoWhitespace(xpp);
5180    }
5181    next(xpp);
5182    parseElementClose(res);
5183    return res;
5184  }
5185
5186  protected boolean parseClaimResponseTotalComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5187      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5188        res.setCategory(parseCodeableConcept(xpp));
5189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
5190        res.setAmount(parseMoney(xpp));
5191      } else if (!parseBackboneElementContent(eventType, xpp, res))
5192        return false;
5193    return true;
5194  }
5195
5196  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5197    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
5198    parseBackboneAttributes(xpp, res);
5199    next(xpp);
5200    int eventType = nextNoWhitespace(xpp);
5201    while (eventType != XmlPullParser.END_TAG) {
5202  if (!parseClaimResponsePaymentComponentContent(eventType, xpp, owner, res))
5203        unknownContent(xpp);
5204      eventType = nextNoWhitespace(xpp);
5205    }
5206    next(xpp);
5207    parseElementClose(res);
5208    return res;
5209  }
5210
5211  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5212      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5213        res.setType(parseCodeableConcept(xpp));
5214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
5215        res.setAdjustment(parseMoney(xpp));
5216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
5217        res.setAdjustmentReason(parseCodeableConcept(xpp));
5218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5219        res.setDateElement(parseDate(xpp));
5220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
5221        res.setAmount(parseMoney(xpp));
5222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5223        res.setIdentifier(parseIdentifier(xpp));
5224      } else if (!parseBackboneElementContent(eventType, xpp, res))
5225        return false;
5226    return true;
5227  }
5228
5229  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5230    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
5231    parseBackboneAttributes(xpp, res);
5232    next(xpp);
5233    int eventType = nextNoWhitespace(xpp);
5234    while (eventType != XmlPullParser.END_TAG) {
5235  if (!parseClaimResponseNoteComponentContent(eventType, xpp, owner, res))
5236        unknownContent(xpp);
5237      eventType = nextNoWhitespace(xpp);
5238    }
5239    next(xpp);
5240    parseElementClose(res);
5241    return res;
5242  }
5243
5244  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5245      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
5246        res.setNumberElement(parsePositiveInt(xpp));
5247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5248        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
5249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5250        res.setTextElement(parseString(xpp));
5251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5252        res.setLanguage(parseCodeableConcept(xpp));
5253      } else if (!parseBackboneElementContent(eventType, xpp, res))
5254        return false;
5255    return true;
5256  }
5257
5258  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5259    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
5260    parseBackboneAttributes(xpp, res);
5261    next(xpp);
5262    int eventType = nextNoWhitespace(xpp);
5263    while (eventType != XmlPullParser.END_TAG) {
5264  if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, owner, res))
5265        unknownContent(xpp);
5266      eventType = nextNoWhitespace(xpp);
5267    }
5268    next(xpp);
5269    parseElementClose(res);
5270    return res;
5271  }
5272
5273  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5274      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5275        res.setSequenceElement(parsePositiveInt(xpp));
5276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
5277        res.setFocalElement(parseBoolean(xpp));
5278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
5279        res.setCoverage(parseReference(xpp));
5280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
5281        res.setBusinessArrangementElement(parseString(xpp));
5282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
5283        res.setClaimResponse(parseReference(xpp));
5284      } else if (!parseBackboneElementContent(eventType, xpp, res))
5285        return false;
5286    return true;
5287  }
5288
5289  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5290    ClinicalImpression res = new ClinicalImpression();
5291    parseDomainResourceAttributes(xpp, res);
5292    next(xpp);
5293    int eventType = nextNoWhitespace(xpp);
5294    while (eventType != XmlPullParser.END_TAG) {
5295  if (!parseClinicalImpressionContent(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 parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression 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("status")) {
5308        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
5309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5310        res.setStatusReason(parseCodeableConcept(xpp));
5311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5312        res.setCode(parseCodeableConcept(xpp));
5313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5314        res.setDescriptionElement(parseString(xpp));
5315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5316        res.setSubject(parseReference(xpp));
5317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5318        res.setContext(parseReference(xpp));
5319      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
5320        res.setEffective(parseType("effective", xpp));
5321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5322        res.setDateElement(parseDateTime(xpp));
5323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
5324        res.setAssessor(parseReference(xpp));
5325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
5326        res.setPrevious(parseReference(xpp));
5327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
5328        res.getProblem().add(parseReference(xpp));
5329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigation")) {
5330        res.getInvestigation().add(parseClinicalImpressionClinicalImpressionInvestigationComponent(xpp, res));
5331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
5332        res.getProtocol().add(parseUri(xpp));
5333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5334        res.setSummaryElement(parseString(xpp));
5335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
5336        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
5337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
5338        res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
5339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
5340        res.getPrognosisReference().add(parseReference(xpp));
5341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
5342        res.getSupportingInfo().add(parseReference(xpp));
5343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5344        res.getNote().add(parseAnnotation(xpp));
5345      } else if (!parseDomainResourceContent(eventType, xpp, res))
5346        return false;
5347    return true;
5348  }
5349
5350  protected ClinicalImpression.ClinicalImpressionInvestigationComponent parseClinicalImpressionClinicalImpressionInvestigationComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5351    ClinicalImpression.ClinicalImpressionInvestigationComponent res = new ClinicalImpression.ClinicalImpressionInvestigationComponent();
5352    parseBackboneAttributes(xpp, res);
5353    next(xpp);
5354    int eventType = nextNoWhitespace(xpp);
5355    while (eventType != XmlPullParser.END_TAG) {
5356  if (!parseClinicalImpressionClinicalImpressionInvestigationComponentContent(eventType, xpp, owner, res))
5357        unknownContent(xpp);
5358      eventType = nextNoWhitespace(xpp);
5359    }
5360    next(xpp);
5361    parseElementClose(res);
5362    return res;
5363  }
5364
5365  protected boolean parseClinicalImpressionClinicalImpressionInvestigationComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionInvestigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5366      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5367        res.setCode(parseCodeableConcept(xpp));
5368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
5369        res.getItem().add(parseReference(xpp));
5370      } else if (!parseBackboneElementContent(eventType, xpp, res))
5371        return false;
5372    return true;
5373  }
5374
5375  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5376    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
5377    parseBackboneAttributes(xpp, res);
5378    next(xpp);
5379    int eventType = nextNoWhitespace(xpp);
5380    while (eventType != XmlPullParser.END_TAG) {
5381  if (!parseClinicalImpressionClinicalImpressionFindingComponentContent(eventType, xpp, owner, res))
5382        unknownContent(xpp);
5383      eventType = nextNoWhitespace(xpp);
5384    }
5385    next(xpp);
5386    parseElementClose(res);
5387    return res;
5388  }
5389
5390  protected boolean parseClinicalImpressionClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5391      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemCodeableConcept")) {
5392        res.setItemCodeableConcept(parseCodeableConcept(xpp));
5393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemReference")) {
5394        res.setItemReference(parseReference(xpp));
5395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
5396        res.setBasisElement(parseString(xpp));
5397      } else if (!parseBackboneElementContent(eventType, xpp, res))
5398        return false;
5399    return true;
5400  }
5401
5402  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5403    CodeSystem res = new CodeSystem();
5404    parseDomainResourceAttributes(xpp, res);
5405    next(xpp);
5406    int eventType = nextNoWhitespace(xpp);
5407    while (eventType != XmlPullParser.END_TAG) {
5408  if (!parseCodeSystemContent(eventType, xpp, res))
5409        unknownContent(xpp);
5410      eventType = nextNoWhitespace(xpp);
5411    }
5412    next(xpp);
5413    parseElementClose(res);
5414    return res;
5415  }
5416
5417  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
5418      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5419        res.setUrlElement(parseUri(xpp));
5420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5421        res.getIdentifier().add(parseIdentifier(xpp));
5422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5423        res.setVersionElement(parseString(xpp));
5424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5425        res.setNameElement(parseString(xpp));
5426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5427        res.setTitleElement(parseString(xpp));
5428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5429        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5431        res.setExperimentalElement(parseBoolean(xpp));
5432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5433        res.setDateElement(parseDateTime(xpp));
5434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5435        res.setPublisherElement(parseString(xpp));
5436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5437        res.getContact().add(parseContactDetail(xpp));
5438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5439        res.setDescriptionElement(parseMarkdown(xpp));
5440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5441        res.getUseContext().add(parseUsageContext(xpp));
5442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5443        res.getJurisdiction().add(parseCodeableConcept(xpp));
5444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5445        res.setPurposeElement(parseMarkdown(xpp));
5446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5447        res.setCopyrightElement(parseMarkdown(xpp));
5448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
5449        res.setCaseSensitiveElement(parseBoolean(xpp));
5450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
5451        res.setValueSetElement(parseCanonical(xpp));
5452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
5453        res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
5454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
5455        res.setCompositionalElement(parseBoolean(xpp));
5456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
5457        res.setVersionNeededElement(parseBoolean(xpp));
5458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
5459        res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
5460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplements")) {
5461        res.setSupplementsElement(parseCanonical(xpp));
5462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
5463        res.setCountElement(parseUnsignedInt(xpp));
5464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
5465        res.getFilter().add(parseCodeSystemCodeSystemFilterComponent(xpp, res));
5466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5467        res.getProperty().add(parseCodeSystemPropertyComponent(xpp, res));
5468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5469        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, res));
5470      } else if (!parseDomainResourceContent(eventType, xpp, res))
5471        return false;
5472    return true;
5473  }
5474
5475  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemCodeSystemFilterComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5476    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
5477    parseBackboneAttributes(xpp, res);
5478    next(xpp);
5479    int eventType = nextNoWhitespace(xpp);
5480    while (eventType != XmlPullParser.END_TAG) {
5481  if (!parseCodeSystemCodeSystemFilterComponentContent(eventType, xpp, owner, res))
5482        unknownContent(xpp);
5483      eventType = nextNoWhitespace(xpp);
5484    }
5485    next(xpp);
5486    parseElementClose(res);
5487    return res;
5488  }
5489
5490  protected boolean parseCodeSystemCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5491      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5492        res.setCodeElement(parseCode(xpp));
5493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5494        res.setDescriptionElement(parseString(xpp));
5495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
5496        res.getOperator().add(parseEnumeration(xpp, CodeSystem.FilterOperator.NULL, new CodeSystem.FilterOperatorEnumFactory()));
5497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5498        res.setValueElement(parseString(xpp));
5499      } else if (!parseBackboneElementContent(eventType, xpp, res))
5500        return false;
5501    return true;
5502  }
5503
5504  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5505    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
5506    parseBackboneAttributes(xpp, res);
5507    next(xpp);
5508    int eventType = nextNoWhitespace(xpp);
5509    while (eventType != XmlPullParser.END_TAG) {
5510  if (!parseCodeSystemPropertyComponentContent(eventType, xpp, owner, res))
5511        unknownContent(xpp);
5512      eventType = nextNoWhitespace(xpp);
5513    }
5514    next(xpp);
5515    parseElementClose(res);
5516    return res;
5517  }
5518
5519  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5520      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5521        res.setCodeElement(parseCode(xpp));
5522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
5523        res.setUriElement(parseUri(xpp));
5524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5525        res.setDescriptionElement(parseString(xpp));
5526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5527        res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
5528      } else if (!parseBackboneElementContent(eventType, xpp, res))
5529        return false;
5530    return true;
5531  }
5532
5533  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5534    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
5535    parseBackboneAttributes(xpp, res);
5536    next(xpp);
5537    int eventType = nextNoWhitespace(xpp);
5538    while (eventType != XmlPullParser.END_TAG) {
5539  if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, owner, res))
5540        unknownContent(xpp);
5541      eventType = nextNoWhitespace(xpp);
5542    }
5543    next(xpp);
5544    parseElementClose(res);
5545    return res;
5546  }
5547
5548  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5550        res.setCodeElement(parseCode(xpp));
5551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5552        res.setDisplayElement(parseString(xpp));
5553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
5554        res.setDefinitionElement(parseString(xpp));
5555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
5556        res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp, owner));
5557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5558        res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp, owner));
5559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5560        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, owner));
5561      } else if (!parseBackboneElementContent(eventType, xpp, res))
5562        return false;
5563    return true;
5564  }
5565
5566  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5567    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
5568    parseBackboneAttributes(xpp, res);
5569    next(xpp);
5570    int eventType = nextNoWhitespace(xpp);
5571    while (eventType != XmlPullParser.END_TAG) {
5572  if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, owner, res))
5573        unknownContent(xpp);
5574      eventType = nextNoWhitespace(xpp);
5575    }
5576    next(xpp);
5577    parseElementClose(res);
5578    return res;
5579  }
5580
5581  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5582      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5583        res.setLanguageElement(parseCode(xpp));
5584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
5585        res.setUse(parseCoding(xpp));
5586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5587        res.setValueElement(parseString(xpp));
5588      } else if (!parseBackboneElementContent(eventType, xpp, res))
5589        return false;
5590    return true;
5591  }
5592
5593  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5594    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
5595    parseBackboneAttributes(xpp, res);
5596    next(xpp);
5597    int eventType = nextNoWhitespace(xpp);
5598    while (eventType != XmlPullParser.END_TAG) {
5599  if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, owner, res))
5600        unknownContent(xpp);
5601      eventType = nextNoWhitespace(xpp);
5602    }
5603    next(xpp);
5604    parseElementClose(res);
5605    return res;
5606  }
5607
5608  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5610        res.setCodeElement(parseCode(xpp));
5611      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
5612        res.setValue(parseType("value", xpp));
5613      } else if (!parseBackboneElementContent(eventType, xpp, res))
5614        return false;
5615    return true;
5616  }
5617
5618  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5619    Communication res = new Communication();
5620    parseDomainResourceAttributes(xpp, res);
5621    next(xpp);
5622    int eventType = nextNoWhitespace(xpp);
5623    while (eventType != XmlPullParser.END_TAG) {
5624  if (!parseCommunicationContent(eventType, xpp, res))
5625        unknownContent(xpp);
5626      eventType = nextNoWhitespace(xpp);
5627    }
5628    next(xpp);
5629    parseElementClose(res);
5630    return res;
5631  }
5632
5633  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
5634      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5635        res.getIdentifier().add(parseIdentifier(xpp));
5636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
5637        res.getInstantiatesCanonical().add(parseCanonical(xpp));
5638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
5639        res.getInstantiatesUri().add(parseUri(xpp));
5640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5641        res.getBasedOn().add(parseReference(xpp));
5642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5643        res.getPartOf().add(parseReference(xpp));
5644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inResponseTo")) {
5645        res.getInResponseTo().add(parseReference(xpp));
5646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5647        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
5648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5649        res.setStatusReason(parseCodeableConcept(xpp));
5650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5651        res.getCategory().add(parseCodeableConcept(xpp));
5652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5653        res.setPriorityElement(parseEnumeration(xpp, Communication.CommunicationPriority.NULL, new Communication.CommunicationPriorityEnumFactory()));
5654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5655        res.getMedium().add(parseCodeableConcept(xpp));
5656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5657        res.setSubject(parseReference(xpp));
5658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5659        res.setTopic(parseCodeableConcept(xpp));
5660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5661        res.getAbout().add(parseReference(xpp));
5662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5663        res.setContext(parseReference(xpp));
5664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
5665        res.setSentElement(parseDateTime(xpp));
5666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
5667        res.setReceivedElement(parseDateTime(xpp));
5668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5669        res.getRecipient().add(parseReference(xpp));
5670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5671        res.setSender(parseReference(xpp));
5672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5673        res.getReasonCode().add(parseCodeableConcept(xpp));
5674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5675        res.getReasonReference().add(parseReference(xpp));
5676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5677        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
5678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5679        res.getNote().add(parseAnnotation(xpp));
5680      } else if (!parseDomainResourceContent(eventType, xpp, res))
5681        return false;
5682    return true;
5683  }
5684
5685  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
5686    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
5687    parseBackboneAttributes(xpp, res);
5688    next(xpp);
5689    int eventType = nextNoWhitespace(xpp);
5690    while (eventType != XmlPullParser.END_TAG) {
5691  if (!parseCommunicationCommunicationPayloadComponentContent(eventType, xpp, owner, res))
5692        unknownContent(xpp);
5693      eventType = nextNoWhitespace(xpp);
5694    }
5695    next(xpp);
5696    parseElementClose(res);
5697    return res;
5698  }
5699
5700  protected boolean parseCommunicationCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication owner, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5701      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5702        res.setContent(parseType("content", xpp));
5703      } else if (!parseBackboneElementContent(eventType, xpp, res))
5704        return false;
5705    return true;
5706  }
5707
5708  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5709    CommunicationRequest res = new CommunicationRequest();
5710    parseDomainResourceAttributes(xpp, res);
5711    next(xpp);
5712    int eventType = nextNoWhitespace(xpp);
5713    while (eventType != XmlPullParser.END_TAG) {
5714  if (!parseCommunicationRequestContent(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 parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
5724      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5725        res.getIdentifier().add(parseIdentifier(xpp));
5726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5727        res.getBasedOn().add(parseReference(xpp));
5728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
5729        res.getReplaces().add(parseReference(xpp));
5730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
5731        res.setGroupIdentifier(parseIdentifier(xpp));
5732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5733        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
5734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5735        res.setStatusReason(parseCodeableConcept(xpp));
5736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5737        res.getCategory().add(parseCodeableConcept(xpp));
5738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5739        res.setPriorityElement(parseEnumeration(xpp, CommunicationRequest.CommunicationPriority.NULL, new CommunicationRequest.CommunicationPriorityEnumFactory()));
5740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
5741        res.setDoNotPerformElement(parseBoolean(xpp));
5742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5743        res.getMedium().add(parseCodeableConcept(xpp));
5744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5745        res.setSubject(parseReference(xpp));
5746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5747        res.getAbout().add(parseReference(xpp));
5748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5749        res.setContext(parseReference(xpp));
5750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5751        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
5752      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
5753        res.setOccurrence(parseType("occurrence", xpp));
5754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
5755        res.setAuthoredOnElement(parseDateTime(xpp));
5756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
5757        res.setRequester(parseReference(xpp));
5758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5759        res.getRecipient().add(parseReference(xpp));
5760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5761        res.setSender(parseReference(xpp));
5762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5763        res.getReasonCode().add(parseCodeableConcept(xpp));
5764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5765        res.getReasonReference().add(parseReference(xpp));
5766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5767        res.getNote().add(parseAnnotation(xpp));
5768      } else if (!parseDomainResourceContent(eventType, xpp, res))
5769        return false;
5770    return true;
5771  }
5772
5773  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
5774    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
5775    parseBackboneAttributes(xpp, res);
5776    next(xpp);
5777    int eventType = nextNoWhitespace(xpp);
5778    while (eventType != XmlPullParser.END_TAG) {
5779  if (!parseCommunicationRequestCommunicationRequestPayloadComponentContent(eventType, xpp, owner, res))
5780        unknownContent(xpp);
5781      eventType = nextNoWhitespace(xpp);
5782    }
5783    next(xpp);
5784    parseElementClose(res);
5785    return res;
5786  }
5787
5788  protected boolean parseCommunicationRequestCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5789      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5790        res.setContent(parseType("content", xpp));
5791      } else if (!parseBackboneElementContent(eventType, xpp, res))
5792        return false;
5793    return true;
5794  }
5795
5796  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5797    CompartmentDefinition res = new CompartmentDefinition();
5798    parseDomainResourceAttributes(xpp, res);
5799    next(xpp);
5800    int eventType = nextNoWhitespace(xpp);
5801    while (eventType != XmlPullParser.END_TAG) {
5802  if (!parseCompartmentDefinitionContent(eventType, xpp, res))
5803        unknownContent(xpp);
5804      eventType = nextNoWhitespace(xpp);
5805    }
5806    next(xpp);
5807    parseElementClose(res);
5808    return res;
5809  }
5810
5811  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
5812      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5813        res.setUrlElement(parseUri(xpp));
5814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5815        res.setVersionElement(parseString(xpp));
5816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5817        res.setNameElement(parseString(xpp));
5818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5819        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5821        res.setExperimentalElement(parseBoolean(xpp));
5822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5823        res.setDateElement(parseDateTime(xpp));
5824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5825        res.setPublisherElement(parseString(xpp));
5826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5827        res.getContact().add(parseContactDetail(xpp));
5828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5829        res.setDescriptionElement(parseMarkdown(xpp));
5830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5831        res.getUseContext().add(parseUsageContext(xpp));
5832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5833        res.setPurposeElement(parseMarkdown(xpp));
5834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5835        res.setCodeElement(parseEnumeration(xpp, CompartmentDefinition.CompartmentType.NULL, new CompartmentDefinition.CompartmentTypeEnumFactory()));
5836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
5837        res.setSearchElement(parseBoolean(xpp));
5838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
5839        res.getResource().add(parseCompartmentDefinitionCompartmentDefinitionResourceComponent(xpp, res));
5840      } else if (!parseDomainResourceContent(eventType, xpp, res))
5841        return false;
5842    return true;
5843  }
5844
5845  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionCompartmentDefinitionResourceComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5846    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
5847    parseBackboneAttributes(xpp, res);
5848    next(xpp);
5849    int eventType = nextNoWhitespace(xpp);
5850    while (eventType != XmlPullParser.END_TAG) {
5851  if (!parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(eventType, xpp, owner, res))
5852        unknownContent(xpp);
5853      eventType = nextNoWhitespace(xpp);
5854    }
5855    next(xpp);
5856    parseElementClose(res);
5857    return res;
5858  }
5859
5860  protected boolean parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition owner, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5861      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5862        res.setCodeElement(parseCode(xpp));
5863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
5864        res.getParam().add(parseString(xpp));
5865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
5866        res.setDocumentationElement(parseString(xpp));
5867      } else if (!parseBackboneElementContent(eventType, xpp, res))
5868        return false;
5869    return true;
5870  }
5871
5872  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5873    Composition res = new Composition();
5874    parseDomainResourceAttributes(xpp, res);
5875    next(xpp);
5876    int eventType = nextNoWhitespace(xpp);
5877    while (eventType != XmlPullParser.END_TAG) {
5878  if (!parseCompositionContent(eventType, xpp, res))
5879        unknownContent(xpp);
5880      eventType = nextNoWhitespace(xpp);
5881    }
5882    next(xpp);
5883    parseElementClose(res);
5884    return res;
5885  }
5886
5887  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
5888      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5889        res.setIdentifier(parseIdentifier(xpp));
5890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5891        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
5892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5893        res.setType(parseCodeableConcept(xpp));
5894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5895        res.getCategory().add(parseCodeableConcept(xpp));
5896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5897        res.setSubject(parseReference(xpp));
5898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5899        res.setEncounter(parseReference(xpp));
5900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5901        res.setDateElement(parseDateTime(xpp));
5902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5903        res.getAuthor().add(parseReference(xpp));
5904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5905        res.setTitleElement(parseString(xpp));
5906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
5907        res.setConfidentialityElement(parseEnumeration(xpp, Composition.DocumentConfidentiality.NULL, new Composition.DocumentConfidentialityEnumFactory()));
5908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
5909        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
5910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5911        res.setCustodian(parseReference(xpp));
5912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5913        res.getRelatesTo().add(parseCompositionCompositionRelatesToComponent(xpp, res));
5914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5915        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
5916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5917        res.getSection().add(parseCompositionSectionComponent(xpp, res));
5918      } else if (!parseDomainResourceContent(eventType, xpp, res))
5919        return false;
5920    return true;
5921  }
5922
5923  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5924    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
5925    parseBackboneAttributes(xpp, res);
5926    next(xpp);
5927    int eventType = nextNoWhitespace(xpp);
5928    while (eventType != XmlPullParser.END_TAG) {
5929  if (!parseCompositionCompositionAttesterComponentContent(eventType, xpp, owner, res))
5930        unknownContent(xpp);
5931      eventType = nextNoWhitespace(xpp);
5932    }
5933    next(xpp);
5934    parseElementClose(res);
5935    return res;
5936  }
5937
5938  protected boolean parseCompositionCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5939      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5940        res.setModeElement(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
5941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5942        res.setTimeElement(parseDateTime(xpp));
5943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5944        res.setParty(parseReference(xpp));
5945      } else if (!parseBackboneElementContent(eventType, xpp, res))
5946        return false;
5947    return true;
5948  }
5949
5950  protected Composition.CompositionRelatesToComponent parseCompositionCompositionRelatesToComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5951    Composition.CompositionRelatesToComponent res = new Composition.CompositionRelatesToComponent();
5952    parseBackboneAttributes(xpp, res);
5953    next(xpp);
5954    int eventType = nextNoWhitespace(xpp);
5955    while (eventType != XmlPullParser.END_TAG) {
5956  if (!parseCompositionCompositionRelatesToComponentContent(eventType, xpp, owner, res))
5957        unknownContent(xpp);
5958      eventType = nextNoWhitespace(xpp);
5959    }
5960    next(xpp);
5961    parseElementClose(res);
5962    return res;
5963  }
5964
5965  protected boolean parseCompositionCompositionRelatesToComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5966      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5967        res.setCodeElement(parseEnumeration(xpp, Composition.DocumentRelationshipType.NULL, new Composition.DocumentRelationshipTypeEnumFactory()));
5968      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5969        res.setTarget(parseType("target", xpp));
5970      } else if (!parseBackboneElementContent(eventType, xpp, res))
5971        return false;
5972    return true;
5973  }
5974
5975  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5976    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
5977    parseBackboneAttributes(xpp, res);
5978    next(xpp);
5979    int eventType = nextNoWhitespace(xpp);
5980    while (eventType != XmlPullParser.END_TAG) {
5981  if (!parseCompositionCompositionEventComponentContent(eventType, xpp, owner, res))
5982        unknownContent(xpp);
5983      eventType = nextNoWhitespace(xpp);
5984    }
5985    next(xpp);
5986    parseElementClose(res);
5987    return res;
5988  }
5989
5990  protected boolean parseCompositionCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5991      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5992        res.getCode().add(parseCodeableConcept(xpp));
5993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5994        res.setPeriod(parsePeriod(xpp));
5995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5996        res.getDetail().add(parseReference(xpp));
5997      } else if (!parseBackboneElementContent(eventType, xpp, res))
5998        return false;
5999    return true;
6000  }
6001
6002  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6003    Composition.SectionComponent res = new Composition.SectionComponent();
6004    parseBackboneAttributes(xpp, res);
6005    next(xpp);
6006    int eventType = nextNoWhitespace(xpp);
6007    while (eventType != XmlPullParser.END_TAG) {
6008  if (!parseCompositionSectionComponentContent(eventType, xpp, owner, res))
6009        unknownContent(xpp);
6010      eventType = nextNoWhitespace(xpp);
6011    }
6012    next(xpp);
6013    parseElementClose(res);
6014    return res;
6015  }
6016
6017  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6018      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6019        res.setTitleElement(parseString(xpp));
6020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6021        res.setCode(parseCodeableConcept(xpp));
6022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6023        res.getAuthor().add(parseReference(xpp));
6024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6025        res.setText(parseNarrative(xpp));
6026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6027        res.setModeElement(parseEnumeration(xpp, Composition.SectionMode.NULL, new Composition.SectionModeEnumFactory()));
6028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
6029        res.setOrderedBy(parseCodeableConcept(xpp));
6030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
6031        res.getEntry().add(parseReference(xpp));
6032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
6033        res.setEmptyReason(parseCodeableConcept(xpp));
6034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
6035        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
6036      } else if (!parseBackboneElementContent(eventType, xpp, res))
6037        return false;
6038    return true;
6039  }
6040
6041  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6042    ConceptMap res = new ConceptMap();
6043    parseDomainResourceAttributes(xpp, res);
6044    next(xpp);
6045    int eventType = nextNoWhitespace(xpp);
6046    while (eventType != XmlPullParser.END_TAG) {
6047  if (!parseConceptMapContent(eventType, xpp, res))
6048        unknownContent(xpp);
6049      eventType = nextNoWhitespace(xpp);
6050    }
6051    next(xpp);
6052    parseElementClose(res);
6053    return res;
6054  }
6055
6056  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
6057      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6058        res.setUrlElement(parseUri(xpp));
6059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6060        res.setIdentifier(parseIdentifier(xpp));
6061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6062        res.setVersionElement(parseString(xpp));
6063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6064        res.setNameElement(parseString(xpp));
6065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6066        res.setTitleElement(parseString(xpp));
6067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6068        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
6069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6070        res.setExperimentalElement(parseBoolean(xpp));
6071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6072        res.setDateElement(parseDateTime(xpp));
6073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6074        res.setPublisherElement(parseString(xpp));
6075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6076        res.getContact().add(parseContactDetail(xpp));
6077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6078        res.setDescriptionElement(parseMarkdown(xpp));
6079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6080        res.getUseContext().add(parseUsageContext(xpp));
6081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6082        res.getJurisdiction().add(parseCodeableConcept(xpp));
6083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6084        res.setPurposeElement(parseMarkdown(xpp));
6085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6086        res.setCopyrightElement(parseMarkdown(xpp));
6087      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6088        res.setSource(parseType("source", xpp));
6089      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
6090        res.setTarget(parseType("target", xpp));
6091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6092        res.getGroup().add(parseConceptMapConceptMapGroupComponent(xpp, res));
6093      } else if (!parseDomainResourceContent(eventType, xpp, res))
6094        return false;
6095    return true;
6096  }
6097
6098  protected ConceptMap.ConceptMapGroupComponent parseConceptMapConceptMapGroupComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6099    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
6100    parseBackboneAttributes(xpp, res);
6101    next(xpp);
6102    int eventType = nextNoWhitespace(xpp);
6103    while (eventType != XmlPullParser.END_TAG) {
6104  if (!parseConceptMapConceptMapGroupComponentContent(eventType, xpp, owner, res))
6105        unknownContent(xpp);
6106      eventType = nextNoWhitespace(xpp);
6107    }
6108    next(xpp);
6109    parseElementClose(res);
6110    return res;
6111  }
6112
6113  protected boolean parseConceptMapConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6114      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6115        res.setSourceElement(parseUri(xpp));
6116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceVersion")) {
6117        res.setSourceVersionElement(parseString(xpp));
6118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
6119        res.setTargetElement(parseUri(xpp));
6120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetVersion")) {
6121        res.setTargetVersionElement(parseString(xpp));
6122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
6123        res.getElement().add(parseConceptMapSourceElementComponent(xpp, owner));
6124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
6125        res.setUnmapped(parseConceptMapConceptMapGroupUnmappedComponent(xpp, owner));
6126      } else if (!parseBackboneElementContent(eventType, xpp, res))
6127        return false;
6128    return true;
6129  }
6130
6131  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6132    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
6133    parseBackboneAttributes(xpp, res);
6134    next(xpp);
6135    int eventType = nextNoWhitespace(xpp);
6136    while (eventType != XmlPullParser.END_TAG) {
6137  if (!parseConceptMapSourceElementComponentContent(eventType, xpp, owner, res))
6138        unknownContent(xpp);
6139      eventType = nextNoWhitespace(xpp);
6140    }
6141    next(xpp);
6142    parseElementClose(res);
6143    return res;
6144  }
6145
6146  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6147      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6148        res.setCodeElement(parseCode(xpp));
6149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6150        res.setDisplayElement(parseString(xpp));
6151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
6152        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
6153      } else if (!parseBackboneElementContent(eventType, xpp, res))
6154        return false;
6155    return true;
6156  }
6157
6158  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6159    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
6160    parseBackboneAttributes(xpp, res);
6161    next(xpp);
6162    int eventType = nextNoWhitespace(xpp);
6163    while (eventType != XmlPullParser.END_TAG) {
6164  if (!parseConceptMapTargetElementComponentContent(eventType, xpp, owner, res))
6165        unknownContent(xpp);
6166      eventType = nextNoWhitespace(xpp);
6167    }
6168    next(xpp);
6169    parseElementClose(res);
6170    return res;
6171  }
6172
6173  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6174      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6175        res.setCodeElement(parseCode(xpp));
6176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6177        res.setDisplayElement(parseString(xpp));
6178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
6179        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
6180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
6181        res.setCommentElement(parseString(xpp));
6182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
6183        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
6184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
6185        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
6186      } else if (!parseBackboneElementContent(eventType, xpp, res))
6187        return false;
6188    return true;
6189  }
6190
6191  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6192    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
6193    parseBackboneAttributes(xpp, res);
6194    next(xpp);
6195    int eventType = nextNoWhitespace(xpp);
6196    while (eventType != XmlPullParser.END_TAG) {
6197  if (!parseConceptMapOtherElementComponentContent(eventType, xpp, owner, res))
6198        unknownContent(xpp);
6199      eventType = nextNoWhitespace(xpp);
6200    }
6201    next(xpp);
6202    parseElementClose(res);
6203    return res;
6204  }
6205
6206  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6207      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
6208        res.setPropertyElement(parseUri(xpp));
6209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
6210        res.setSystemElement(parseCanonical(xpp));
6211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6212        res.setValueElement(parseString(xpp));
6213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6214        res.setDisplayElement(parseString(xpp));
6215      } else if (!parseBackboneElementContent(eventType, xpp, res))
6216        return false;
6217    return true;
6218  }
6219
6220  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapConceptMapGroupUnmappedComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6221    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
6222    parseBackboneAttributes(xpp, res);
6223    next(xpp);
6224    int eventType = nextNoWhitespace(xpp);
6225    while (eventType != XmlPullParser.END_TAG) {
6226  if (!parseConceptMapConceptMapGroupUnmappedComponentContent(eventType, xpp, owner, res))
6227        unknownContent(xpp);
6228      eventType = nextNoWhitespace(xpp);
6229    }
6230    next(xpp);
6231    parseElementClose(res);
6232    return res;
6233  }
6234
6235  protected boolean parseConceptMapConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6236      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6237        res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
6238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6239        res.setCodeElement(parseCode(xpp));
6240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6241        res.setDisplayElement(parseString(xpp));
6242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6243        res.setUrlElement(parseCanonical(xpp));
6244      } else if (!parseBackboneElementContent(eventType, xpp, res))
6245        return false;
6246    return true;
6247  }
6248
6249  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6250    Condition res = new Condition();
6251    parseDomainResourceAttributes(xpp, res);
6252    next(xpp);
6253    int eventType = nextNoWhitespace(xpp);
6254    while (eventType != XmlPullParser.END_TAG) {
6255  if (!parseConditionContent(eventType, xpp, res))
6256        unknownContent(xpp);
6257      eventType = nextNoWhitespace(xpp);
6258    }
6259    next(xpp);
6260    parseElementClose(res);
6261    return res;
6262  }
6263
6264  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
6265      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6266        res.getIdentifier().add(parseIdentifier(xpp));
6267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
6268        res.setClinicalStatus(parseCodeableConcept(xpp));
6269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
6270        res.setVerificationStatus(parseCodeableConcept(xpp));
6271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6272        res.getCategory().add(parseCodeableConcept(xpp));
6273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
6274        res.setSeverity(parseCodeableConcept(xpp));
6275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6276        res.setCode(parseCodeableConcept(xpp));
6277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6278        res.getBodySite().add(parseCodeableConcept(xpp));
6279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6280        res.setSubject(parseReference(xpp));
6281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6282        res.setContext(parseReference(xpp));
6283      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
6284        res.setOnset(parseType("onset", xpp));
6285      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
6286        res.setAbatement(parseType("abatement", xpp));
6287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
6288        res.setRecordedDateElement(parseDateTime(xpp));
6289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
6290        res.setRecorder(parseReference(xpp));
6291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
6292        res.setAsserter(parseReference(xpp));
6293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
6294        res.getStage().add(parseConditionConditionStageComponent(xpp, res));
6295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
6296        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
6297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6298        res.getNote().add(parseAnnotation(xpp));
6299      } else if (!parseDomainResourceContent(eventType, xpp, res))
6300        return false;
6301    return true;
6302  }
6303
6304  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6305    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
6306    parseBackboneAttributes(xpp, res);
6307    next(xpp);
6308    int eventType = nextNoWhitespace(xpp);
6309    while (eventType != XmlPullParser.END_TAG) {
6310  if (!parseConditionConditionStageComponentContent(eventType, xpp, owner, res))
6311        unknownContent(xpp);
6312      eventType = nextNoWhitespace(xpp);
6313    }
6314    next(xpp);
6315    parseElementClose(res);
6316    return res;
6317  }
6318
6319  protected boolean parseConditionConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6320      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
6321        res.setSummary(parseCodeableConcept(xpp));
6322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
6323        res.getAssessment().add(parseReference(xpp));
6324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6325        res.setType(parseCodeableConcept(xpp));
6326      } else if (!parseBackboneElementContent(eventType, xpp, res))
6327        return false;
6328    return true;
6329  }
6330
6331  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6332    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
6333    parseBackboneAttributes(xpp, res);
6334    next(xpp);
6335    int eventType = nextNoWhitespace(xpp);
6336    while (eventType != XmlPullParser.END_TAG) {
6337  if (!parseConditionConditionEvidenceComponentContent(eventType, xpp, owner, res))
6338        unknownContent(xpp);
6339      eventType = nextNoWhitespace(xpp);
6340    }
6341    next(xpp);
6342    parseElementClose(res);
6343    return res;
6344  }
6345
6346  protected boolean parseConditionConditionEvidenceComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6347      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6348        res.getCode().add(parseCodeableConcept(xpp));
6349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6350        res.getDetail().add(parseReference(xpp));
6351      } else if (!parseBackboneElementContent(eventType, xpp, res))
6352        return false;
6353    return true;
6354  }
6355
6356  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6357    Consent res = new Consent();
6358    parseDomainResourceAttributes(xpp, res);
6359    next(xpp);
6360    int eventType = nextNoWhitespace(xpp);
6361    while (eventType != XmlPullParser.END_TAG) {
6362  if (!parseConsentContent(eventType, xpp, res))
6363        unknownContent(xpp);
6364      eventType = nextNoWhitespace(xpp);
6365    }
6366    next(xpp);
6367    parseElementClose(res);
6368    return res;
6369  }
6370
6371  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
6372      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6373        res.getIdentifier().add(parseIdentifier(xpp));
6374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6375        res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
6376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6377        res.setScope(parseCodeableConcept(xpp));
6378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6379        res.getCategory().add(parseCodeableConcept(xpp));
6380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6381        res.setPatient(parseReference(xpp));
6382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
6383        res.setDateTimeElement(parseDateTime(xpp));
6384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6385        res.getPerformer().add(parseReference(xpp));
6386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
6387        res.getOrganization().add(parseReference(xpp));
6388      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6389        res.setSource(parseType("source", xpp));
6390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
6391        res.getPolicy().add(parseConsentConsentPolicyComponent(xpp, res));
6392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyRule")) {
6393        res.setPolicyRule(parseCodeableConcept(xpp));
6394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verification")) {
6395        res.getVerification().add(parseConsentConsentVerificationComponent(xpp, res));
6396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6397        res.setProvision(parseConsentprovisionComponent(xpp, res));
6398      } else if (!parseDomainResourceContent(eventType, xpp, res))
6399        return false;
6400    return true;
6401  }
6402
6403  protected Consent.ConsentPolicyComponent parseConsentConsentPolicyComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6404    Consent.ConsentPolicyComponent res = new Consent.ConsentPolicyComponent();
6405    parseBackboneAttributes(xpp, res);
6406    next(xpp);
6407    int eventType = nextNoWhitespace(xpp);
6408    while (eventType != XmlPullParser.END_TAG) {
6409  if (!parseConsentConsentPolicyComponentContent(eventType, xpp, owner, res))
6410        unknownContent(xpp);
6411      eventType = nextNoWhitespace(xpp);
6412    }
6413    next(xpp);
6414    parseElementClose(res);
6415    return res;
6416  }
6417
6418  protected boolean parseConsentConsentPolicyComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentPolicyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6419      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6420        res.setAuthorityElement(parseUri(xpp));
6421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6422        res.setUriElement(parseUri(xpp));
6423      } else if (!parseBackboneElementContent(eventType, xpp, res))
6424        return false;
6425    return true;
6426  }
6427
6428  protected Consent.ConsentVerificationComponent parseConsentConsentVerificationComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6429    Consent.ConsentVerificationComponent res = new Consent.ConsentVerificationComponent();
6430    parseBackboneAttributes(xpp, res);
6431    next(xpp);
6432    int eventType = nextNoWhitespace(xpp);
6433    while (eventType != XmlPullParser.END_TAG) {
6434  if (!parseConsentConsentVerificationComponentContent(eventType, xpp, owner, res))
6435        unknownContent(xpp);
6436      eventType = nextNoWhitespace(xpp);
6437    }
6438    next(xpp);
6439    parseElementClose(res);
6440    return res;
6441  }
6442
6443  protected boolean parseConsentConsentVerificationComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentVerificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6444      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verified")) {
6445        res.setVerifiedElement(parseBoolean(xpp));
6446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verifiedWith")) {
6447        res.setVerifiedWith(parseReference(xpp));
6448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationDate")) {
6449        res.setVerificationDateElement(parseDateTime(xpp));
6450      } else if (!parseBackboneElementContent(eventType, xpp, res))
6451        return false;
6452    return true;
6453  }
6454
6455  protected Consent.provisionComponent parseConsentprovisionComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6456    Consent.provisionComponent res = new Consent.provisionComponent();
6457    parseBackboneAttributes(xpp, res);
6458    next(xpp);
6459    int eventType = nextNoWhitespace(xpp);
6460    while (eventType != XmlPullParser.END_TAG) {
6461  if (!parseConsentprovisionComponentContent(eventType, xpp, owner, res))
6462        unknownContent(xpp);
6463      eventType = nextNoWhitespace(xpp);
6464    }
6465    next(xpp);
6466    parseElementClose(res);
6467    return res;
6468  }
6469
6470  protected boolean parseConsentprovisionComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6471      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6472        res.setTypeElement(parseEnumeration(xpp, Consent.ConsentProvisionType.NULL, new Consent.ConsentProvisionTypeEnumFactory()));
6473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6474        res.setPeriod(parsePeriod(xpp));
6475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6476        res.getActor().add(parseConsentprovisionActorComponent(xpp, owner));
6477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6478        res.getAction().add(parseCodeableConcept(xpp));
6479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6480        res.getSecurityLabel().add(parseCoding(xpp));
6481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6482        res.getPurpose().add(parseCoding(xpp));
6483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6484        res.getClass_().add(parseCoding(xpp));
6485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6486        res.getCode().add(parseCodeableConcept(xpp));
6487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
6488        res.setDataPeriod(parsePeriod(xpp));
6489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
6490        res.getData().add(parseConsentprovisionDataComponent(xpp, owner));
6491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6492        res.getProvision().add(parseConsentprovisionComponent(xpp, owner));
6493      } else if (!parseBackboneElementContent(eventType, xpp, res))
6494        return false;
6495    return true;
6496  }
6497
6498  protected Consent.provisionActorComponent parseConsentprovisionActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6499    Consent.provisionActorComponent res = new Consent.provisionActorComponent();
6500    parseBackboneAttributes(xpp, res);
6501    next(xpp);
6502    int eventType = nextNoWhitespace(xpp);
6503    while (eventType != XmlPullParser.END_TAG) {
6504  if (!parseConsentprovisionActorComponentContent(eventType, xpp, owner, res))
6505        unknownContent(xpp);
6506      eventType = nextNoWhitespace(xpp);
6507    }
6508    next(xpp);
6509    parseElementClose(res);
6510    return res;
6511  }
6512
6513  protected boolean parseConsentprovisionActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6514      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6515        res.setRole(parseCodeableConcept(xpp));
6516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6517        res.setReference(parseReference(xpp));
6518      } else if (!parseBackboneElementContent(eventType, xpp, res))
6519        return false;
6520    return true;
6521  }
6522
6523  protected Consent.provisionDataComponent parseConsentprovisionDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6524    Consent.provisionDataComponent res = new Consent.provisionDataComponent();
6525    parseBackboneAttributes(xpp, res);
6526    next(xpp);
6527    int eventType = nextNoWhitespace(xpp);
6528    while (eventType != XmlPullParser.END_TAG) {
6529  if (!parseConsentprovisionDataComponentContent(eventType, xpp, owner, res))
6530        unknownContent(xpp);
6531      eventType = nextNoWhitespace(xpp);
6532    }
6533    next(xpp);
6534    parseElementClose(res);
6535    return res;
6536  }
6537
6538  protected boolean parseConsentprovisionDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
6540        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
6541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6542        res.setReference(parseReference(xpp));
6543      } else if (!parseBackboneElementContent(eventType, xpp, res))
6544        return false;
6545    return true;
6546  }
6547
6548  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6549    Contract res = new Contract();
6550    parseDomainResourceAttributes(xpp, res);
6551    next(xpp);
6552    int eventType = nextNoWhitespace(xpp);
6553    while (eventType != XmlPullParser.END_TAG) {
6554  if (!parseContractContent(eventType, xpp, res))
6555        unknownContent(xpp);
6556      eventType = nextNoWhitespace(xpp);
6557    }
6558    next(xpp);
6559    parseElementClose(res);
6560    return res;
6561  }
6562
6563  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
6564      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6565        res.getIdentifier().add(parseIdentifier(xpp));
6566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6567        res.setUrlElement(parseUri(xpp));
6568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6569        res.setVersionElement(parseString(xpp));
6570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6571        res.setStatusElement(parseEnumeration(xpp, Contract.ContractStatus.NULL, new Contract.ContractStatusEnumFactory()));
6572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalState")) {
6573        res.setLegalState(parseCodeableConcept(xpp));
6574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
6575        res.setInstantiatesCanonical(parseReference(xpp));
6576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
6577        res.setInstantiatesUriElement(parseUri(xpp));
6578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
6579        res.setContentDerivative(parseCodeableConcept(xpp));
6580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6581        res.setIssuedElement(parseDateTime(xpp));
6582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6583        res.setApplies(parsePeriod(xpp));
6584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationType")) {
6585        res.setExpirationType(parseCodeableConcept(xpp));
6586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6587        res.getSubject().add(parseReference(xpp));
6588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6589        res.getAuthority().add(parseReference(xpp));
6590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
6591        res.getDomain().add(parseReference(xpp));
6592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
6593        res.getSite().add(parseReference(xpp));
6594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6595        res.setNameElement(parseString(xpp));
6596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6597        res.setTitleElement(parseString(xpp));
6598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
6599        res.setSubtitleElement(parseString(xpp));
6600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
6601        res.getAlias().add(parseString(xpp));
6602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6603        res.setAuthor(parseReference(xpp));
6604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6605        res.setScope(parseCodeableConcept(xpp));
6606      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
6607        res.setTopic(parseType("topic", xpp));
6608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6609        res.setType(parseCodeableConcept(xpp));
6610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6611        res.getSubType().add(parseCodeableConcept(xpp));
6612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDefinition")) {
6613        res.setContentDefinition(parseContractContentDefinitionComponent(xpp, res));
6614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
6615        res.getTerm().add(parseContractTermComponent(xpp, res));
6616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
6617        res.getSupportingInfo().add(parseReference(xpp));
6618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
6619        res.getRelevantHistory().add(parseReference(xpp));
6620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
6621        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
6622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
6623        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
6624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
6625        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
6626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
6627        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
6628      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "legallyBinding")) {
6629        res.setLegallyBinding(parseType("legallyBinding", xpp));
6630      } else if (!parseDomainResourceContent(eventType, xpp, res))
6631        return false;
6632    return true;
6633  }
6634
6635  protected Contract.ContentDefinitionComponent parseContractContentDefinitionComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6636    Contract.ContentDefinitionComponent res = new Contract.ContentDefinitionComponent();
6637    parseBackboneAttributes(xpp, res);
6638    next(xpp);
6639    int eventType = nextNoWhitespace(xpp);
6640    while (eventType != XmlPullParser.END_TAG) {
6641  if (!parseContractContentDefinitionComponentContent(eventType, xpp, owner, res))
6642        unknownContent(xpp);
6643      eventType = nextNoWhitespace(xpp);
6644    }
6645    next(xpp);
6646    parseElementClose(res);
6647    return res;
6648  }
6649
6650  protected boolean parseContractContentDefinitionComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContentDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6651      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6652        res.setType(parseCodeableConcept(xpp));
6653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6654        res.setSubType(parseCodeableConcept(xpp));
6655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6656        res.setPublisher(parseReference(xpp));
6657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
6658        res.setPublicationDateElement(parseDateTime(xpp));
6659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationStatus")) {
6660        res.setPublicationStatusElement(parseEnumeration(xpp, Contract.ContractPublicationStatus.NULL, new Contract.ContractPublicationStatusEnumFactory()));
6661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6662        res.setCopyrightElement(parseMarkdown(xpp));
6663      } else if (!parseBackboneElementContent(eventType, xpp, res))
6664        return false;
6665    return true;
6666  }
6667
6668  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6669    Contract.TermComponent res = new Contract.TermComponent();
6670    parseBackboneAttributes(xpp, res);
6671    next(xpp);
6672    int eventType = nextNoWhitespace(xpp);
6673    while (eventType != XmlPullParser.END_TAG) {
6674  if (!parseContractTermComponentContent(eventType, xpp, owner, res))
6675        unknownContent(xpp);
6676      eventType = nextNoWhitespace(xpp);
6677    }
6678    next(xpp);
6679    parseElementClose(res);
6680    return res;
6681  }
6682
6683  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6684      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6685        res.setIdentifier(parseIdentifier(xpp));
6686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6687        res.setIssuedElement(parseDateTime(xpp));
6688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6689        res.setApplies(parsePeriod(xpp));
6690      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
6691        res.setTopic(parseType("topic", xpp));
6692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6693        res.setType(parseCodeableConcept(xpp));
6694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6695        res.setSubType(parseCodeableConcept(xpp));
6696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6697        res.setTextElement(parseString(xpp));
6698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6699        res.getSecurityLabel().add(parseContractSecurityLabelComponent(xpp, owner));
6700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offer")) {
6701        res.setOffer(parseContractContractOfferComponent(xpp, owner));
6702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asset")) {
6703        res.getAsset().add(parseContractContractAssetComponent(xpp, owner));
6704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6705        res.getAction().add(parseContractActionComponent(xpp, owner));
6706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6707        res.getGroup().add(parseContractTermComponent(xpp, owner));
6708      } else if (!parseBackboneElementContent(eventType, xpp, res))
6709        return false;
6710    return true;
6711  }
6712
6713  protected Contract.SecurityLabelComponent parseContractSecurityLabelComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6714    Contract.SecurityLabelComponent res = new Contract.SecurityLabelComponent();
6715    parseBackboneAttributes(xpp, res);
6716    next(xpp);
6717    int eventType = nextNoWhitespace(xpp);
6718    while (eventType != XmlPullParser.END_TAG) {
6719  if (!parseContractSecurityLabelComponentContent(eventType, xpp, owner, res))
6720        unknownContent(xpp);
6721      eventType = nextNoWhitespace(xpp);
6722    }
6723    next(xpp);
6724    parseElementClose(res);
6725    return res;
6726  }
6727
6728  protected boolean parseContractSecurityLabelComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SecurityLabelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6729      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
6730        res.getNumber().add(parseUnsignedInt(xpp));
6731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
6732        res.setClassification(parseCoding(xpp));
6733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6734        res.getCategory().add(parseCoding(xpp));
6735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("control")) {
6736        res.getControl().add(parseCoding(xpp));
6737      } else if (!parseBackboneElementContent(eventType, xpp, res))
6738        return false;
6739    return true;
6740  }
6741
6742  protected Contract.ContractOfferComponent parseContractContractOfferComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6743    Contract.ContractOfferComponent res = new Contract.ContractOfferComponent();
6744    parseBackboneAttributes(xpp, res);
6745    next(xpp);
6746    int eventType = nextNoWhitespace(xpp);
6747    while (eventType != XmlPullParser.END_TAG) {
6748  if (!parseContractContractOfferComponentContent(eventType, xpp, owner, res))
6749        unknownContent(xpp);
6750      eventType = nextNoWhitespace(xpp);
6751    }
6752    next(xpp);
6753    parseElementClose(res);
6754    return res;
6755  }
6756
6757  protected boolean parseContractContractOfferComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractOfferComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6758      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6759        res.getIdentifier().add(parseIdentifier(xpp));
6760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
6761        res.getParty().add(parseContractContractPartyComponent(xpp, owner));
6762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
6763        res.setTopic(parseReference(xpp));
6764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6765        res.setType(parseCodeableConcept(xpp));
6766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
6767        res.setDecision(parseCodeableConcept(xpp));
6768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decisionMode")) {
6769        res.getDecisionMode().add(parseCodeableConcept(xpp));
6770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
6771        res.getAnswer().add(parseContractAnswerComponent(xpp, owner));
6772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6773        res.setTextElement(parseString(xpp));
6774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6775        res.getLinkId().add(parseString(xpp));
6776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6777        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6778      } else if (!parseBackboneElementContent(eventType, xpp, res))
6779        return false;
6780    return true;
6781  }
6782
6783  protected Contract.ContractPartyComponent parseContractContractPartyComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6784    Contract.ContractPartyComponent res = new Contract.ContractPartyComponent();
6785    parseBackboneAttributes(xpp, res);
6786    next(xpp);
6787    int eventType = nextNoWhitespace(xpp);
6788    while (eventType != XmlPullParser.END_TAG) {
6789  if (!parseContractContractPartyComponentContent(eventType, xpp, owner, res))
6790        unknownContent(xpp);
6791      eventType = nextNoWhitespace(xpp);
6792    }
6793    next(xpp);
6794    parseElementClose(res);
6795    return res;
6796  }
6797
6798  protected boolean parseContractContractPartyComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractPartyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6800        res.getReference().add(parseReference(xpp));
6801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6802        res.setRole(parseCodeableConcept(xpp));
6803      } else if (!parseBackboneElementContent(eventType, xpp, res))
6804        return false;
6805    return true;
6806  }
6807
6808  protected Contract.AnswerComponent parseContractAnswerComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6809    Contract.AnswerComponent res = new Contract.AnswerComponent();
6810    parseBackboneAttributes(xpp, res);
6811    next(xpp);
6812    int eventType = nextNoWhitespace(xpp);
6813    while (eventType != XmlPullParser.END_TAG) {
6814  if (!parseContractAnswerComponentContent(eventType, xpp, owner, res))
6815        unknownContent(xpp);
6816      eventType = nextNoWhitespace(xpp);
6817    }
6818    next(xpp);
6819    parseElementClose(res);
6820    return res;
6821  }
6822
6823  protected boolean parseContractAnswerComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6824      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
6825        res.setValue(parseType("value", xpp));
6826      } else if (!parseBackboneElementContent(eventType, xpp, res))
6827        return false;
6828    return true;
6829  }
6830
6831  protected Contract.ContractAssetComponent parseContractContractAssetComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6832    Contract.ContractAssetComponent res = new Contract.ContractAssetComponent();
6833    parseBackboneAttributes(xpp, res);
6834    next(xpp);
6835    int eventType = nextNoWhitespace(xpp);
6836    while (eventType != XmlPullParser.END_TAG) {
6837  if (!parseContractContractAssetComponentContent(eventType, xpp, owner, res))
6838        unknownContent(xpp);
6839      eventType = nextNoWhitespace(xpp);
6840    }
6841    next(xpp);
6842    parseElementClose(res);
6843    return res;
6844  }
6845
6846  protected boolean parseContractContractAssetComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractAssetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6847      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6848        res.setScope(parseCodeableConcept(xpp));
6849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6850        res.getType().add(parseCodeableConcept(xpp));
6851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
6852        res.getTypeReference().add(parseReference(xpp));
6853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
6854        res.getSubtype().add(parseCodeableConcept(xpp));
6855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6856        res.setRelationship(parseCoding(xpp));
6857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6858        res.getContext().add(parseContractAssetContextComponent(xpp, owner));
6859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
6860        res.setConditionElement(parseString(xpp));
6861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodType")) {
6862        res.getPeriodType().add(parseCodeableConcept(xpp));
6863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6864        res.getPeriod().add(parsePeriod(xpp));
6865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usePeriod")) {
6866        res.getUsePeriod().add(parsePeriod(xpp));
6867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6868        res.setTextElement(parseString(xpp));
6869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6870        res.getLinkId().add(parseString(xpp));
6871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
6872        res.getAnswer().add(parseContractAnswerComponent(xpp, owner));
6873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6874        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
6876        res.getValuedItem().add(parseContractValuedItemComponent(xpp, owner));
6877      } else if (!parseBackboneElementContent(eventType, xpp, res))
6878        return false;
6879    return true;
6880  }
6881
6882  protected Contract.AssetContextComponent parseContractAssetContextComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6883    Contract.AssetContextComponent res = new Contract.AssetContextComponent();
6884    parseBackboneAttributes(xpp, res);
6885    next(xpp);
6886    int eventType = nextNoWhitespace(xpp);
6887    while (eventType != XmlPullParser.END_TAG) {
6888  if (!parseContractAssetContextComponentContent(eventType, xpp, owner, res))
6889        unknownContent(xpp);
6890      eventType = nextNoWhitespace(xpp);
6891    }
6892    next(xpp);
6893    parseElementClose(res);
6894    return res;
6895  }
6896
6897  protected boolean parseContractAssetContextComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AssetContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6899        res.setReference(parseReference(xpp));
6900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6901        res.getCode().add(parseCodeableConcept(xpp));
6902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6903        res.setTextElement(parseString(xpp));
6904      } else if (!parseBackboneElementContent(eventType, xpp, res))
6905        return false;
6906    return true;
6907  }
6908
6909  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6910    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
6911    parseBackboneAttributes(xpp, res);
6912    next(xpp);
6913    int eventType = nextNoWhitespace(xpp);
6914    while (eventType != XmlPullParser.END_TAG) {
6915  if (!parseContractValuedItemComponentContent(eventType, xpp, owner, res))
6916        unknownContent(xpp);
6917      eventType = nextNoWhitespace(xpp);
6918    }
6919    next(xpp);
6920    parseElementClose(res);
6921    return res;
6922  }
6923
6924  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6925      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
6926        res.setEntity(parseType("entity", xpp));
6927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6928        res.setIdentifier(parseIdentifier(xpp));
6929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
6930        res.setEffectiveTimeElement(parseDateTime(xpp));
6931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6932        res.setQuantity(parseQuantity(xpp));
6933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6934        res.setUnitPrice(parseMoney(xpp));
6935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6936        res.setFactorElement(parseDecimal(xpp));
6937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6938        res.setPointsElement(parseDecimal(xpp));
6939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6940        res.setNet(parseMoney(xpp));
6941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
6942        res.setPaymentElement(parseString(xpp));
6943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
6944        res.setPaymentDateElement(parseDateTime(xpp));
6945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
6946        res.setResponsible(parseReference(xpp));
6947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
6948        res.setRecipient(parseReference(xpp));
6949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6950        res.getLinkId().add(parseString(xpp));
6951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6952        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6953      } else if (!parseBackboneElementContent(eventType, xpp, res))
6954        return false;
6955    return true;
6956  }
6957
6958  protected Contract.ActionComponent parseContractActionComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6959    Contract.ActionComponent res = new Contract.ActionComponent();
6960    parseBackboneAttributes(xpp, res);
6961    next(xpp);
6962    int eventType = nextNoWhitespace(xpp);
6963    while (eventType != XmlPullParser.END_TAG) {
6964  if (!parseContractActionComponentContent(eventType, xpp, owner, res))
6965        unknownContent(xpp);
6966      eventType = nextNoWhitespace(xpp);
6967    }
6968    next(xpp);
6969    parseElementClose(res);
6970    return res;
6971  }
6972
6973  protected boolean parseContractActionComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6974      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
6975        res.setDoNotPerformElement(parseBoolean(xpp));
6976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6977        res.setType(parseCodeableConcept(xpp));
6978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6979        res.getSubject().add(parseContractActionSubjectComponent(xpp, owner));
6980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
6981        res.setIntent(parseCodeableConcept(xpp));
6982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6983        res.getLinkId().add(parseString(xpp));
6984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6985        res.setStatus(parseCodeableConcept(xpp));
6986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6987        res.setContext(parseReference(xpp));
6988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextLinkId")) {
6989        res.getContextLinkId().add(parseString(xpp));
6990      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
6991        res.setOccurrence(parseType("occurrence", xpp));
6992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
6993        res.getRequester().add(parseReference(xpp));
6994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requesterLinkId")) {
6995        res.getRequesterLinkId().add(parseString(xpp));
6996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
6997        res.getPerformerType().add(parseCodeableConcept(xpp));
6998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerRole")) {
6999        res.setPerformerRole(parseCodeableConcept(xpp));
7000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7001        res.setPerformer(parseReference(xpp));
7002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerLinkId")) {
7003        res.getPerformerLinkId().add(parseString(xpp));
7004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
7005        res.getReasonCode().add(parseCodeableConcept(xpp));
7006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
7007        res.getReasonReference().add(parseReference(xpp));
7008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7009        res.getReason().add(parseString(xpp));
7010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonLinkId")) {
7011        res.getReasonLinkId().add(parseString(xpp));
7012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7013        res.getNote().add(parseAnnotation(xpp));
7014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
7015        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
7016      } else if (!parseBackboneElementContent(eventType, xpp, res))
7017        return false;
7018    return true;
7019  }
7020
7021  protected Contract.ActionSubjectComponent parseContractActionSubjectComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7022    Contract.ActionSubjectComponent res = new Contract.ActionSubjectComponent();
7023    parseBackboneAttributes(xpp, res);
7024    next(xpp);
7025    int eventType = nextNoWhitespace(xpp);
7026    while (eventType != XmlPullParser.END_TAG) {
7027  if (!parseContractActionSubjectComponentContent(eventType, xpp, owner, res))
7028        unknownContent(xpp);
7029      eventType = nextNoWhitespace(xpp);
7030    }
7031    next(xpp);
7032    parseElementClose(res);
7033    return res;
7034  }
7035
7036  protected boolean parseContractActionSubjectComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ActionSubjectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7037      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7038        res.getReference().add(parseReference(xpp));
7039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7040        res.setRole(parseCodeableConcept(xpp));
7041      } else if (!parseBackboneElementContent(eventType, xpp, res))
7042        return false;
7043    return true;
7044  }
7045
7046  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7047    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
7048    parseBackboneAttributes(xpp, res);
7049    next(xpp);
7050    int eventType = nextNoWhitespace(xpp);
7051    while (eventType != XmlPullParser.END_TAG) {
7052  if (!parseContractSignatoryComponentContent(eventType, xpp, owner, res))
7053        unknownContent(xpp);
7054      eventType = nextNoWhitespace(xpp);
7055    }
7056    next(xpp);
7057    parseElementClose(res);
7058    return res;
7059  }
7060
7061  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7062      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7063        res.setType(parseCoding(xpp));
7064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
7065        res.setParty(parseReference(xpp));
7066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
7067        res.getSignature().add(parseSignature(xpp));
7068      } else if (!parseBackboneElementContent(eventType, xpp, res))
7069        return false;
7070    return true;
7071  }
7072
7073  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7074    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
7075    parseBackboneAttributes(xpp, res);
7076    next(xpp);
7077    int eventType = nextNoWhitespace(xpp);
7078    while (eventType != XmlPullParser.END_TAG) {
7079  if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, owner, res))
7080        unknownContent(xpp);
7081      eventType = nextNoWhitespace(xpp);
7082    }
7083    next(xpp);
7084    parseElementClose(res);
7085    return res;
7086  }
7087
7088  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7089      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7090        res.setContent(parseType("content", xpp));
7091      } else if (!parseBackboneElementContent(eventType, xpp, res))
7092        return false;
7093    return true;
7094  }
7095
7096  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7097    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
7098    parseBackboneAttributes(xpp, res);
7099    next(xpp);
7100    int eventType = nextNoWhitespace(xpp);
7101    while (eventType != XmlPullParser.END_TAG) {
7102  if (!parseContractLegalLanguageComponentContent(eventType, xpp, owner, res))
7103        unknownContent(xpp);
7104      eventType = nextNoWhitespace(xpp);
7105    }
7106    next(xpp);
7107    parseElementClose(res);
7108    return res;
7109  }
7110
7111  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7112      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7113        res.setContent(parseType("content", xpp));
7114      } else if (!parseBackboneElementContent(eventType, xpp, res))
7115        return false;
7116    return true;
7117  }
7118
7119  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7120    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
7121    parseBackboneAttributes(xpp, res);
7122    next(xpp);
7123    int eventType = nextNoWhitespace(xpp);
7124    while (eventType != XmlPullParser.END_TAG) {
7125  if (!parseContractComputableLanguageComponentContent(eventType, xpp, owner, res))
7126        unknownContent(xpp);
7127      eventType = nextNoWhitespace(xpp);
7128    }
7129    next(xpp);
7130    parseElementClose(res);
7131    return res;
7132  }
7133
7134  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7135      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7136        res.setContent(parseType("content", xpp));
7137      } else if (!parseBackboneElementContent(eventType, xpp, res))
7138        return false;
7139    return true;
7140  }
7141
7142  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7143    Coverage res = new Coverage();
7144    parseDomainResourceAttributes(xpp, res);
7145    next(xpp);
7146    int eventType = nextNoWhitespace(xpp);
7147    while (eventType != XmlPullParser.END_TAG) {
7148  if (!parseCoverageContent(eventType, xpp, res))
7149        unknownContent(xpp);
7150      eventType = nextNoWhitespace(xpp);
7151    }
7152    next(xpp);
7153    parseElementClose(res);
7154    return res;
7155  }
7156
7157  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
7158      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7159        res.getIdentifier().add(parseIdentifier(xpp));
7160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7161        res.setStatusElement(parseEnumeration(xpp, Coverage.CoverageStatus.NULL, new Coverage.CoverageStatusEnumFactory()));
7162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7163        res.setType(parseCodeableConcept(xpp));
7164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
7165        res.setPolicyHolder(parseReference(xpp));
7166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
7167        res.setSubscriber(parseReference(xpp));
7168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
7169        res.setSubscriberIdElement(parseString(xpp));
7170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
7171        res.setBeneficiary(parseReference(xpp));
7172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
7173        res.setDependentElement(parseString(xpp));
7174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
7175        res.setRelationship(parseCodeableConcept(xpp));
7176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7177        res.setPeriod(parsePeriod(xpp));
7178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payor")) {
7179        res.getPayor().add(parseReference(xpp));
7180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7181        res.getClass_().add(parseCoverageClassComponent(xpp, res));
7182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
7183        res.setOrderElement(parsePositiveInt(xpp));
7184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7185        res.setNetworkElement(parseString(xpp));
7186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copay")) {
7187        res.getCopay().add(parseCoverageCoPayComponent(xpp, res));
7188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
7189        res.getContract().add(parseReference(xpp));
7190      } else if (!parseDomainResourceContent(eventType, xpp, res))
7191        return false;
7192    return true;
7193  }
7194
7195  protected Coverage.ClassComponent parseCoverageClassComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7196    Coverage.ClassComponent res = new Coverage.ClassComponent();
7197    parseBackboneAttributes(xpp, res);
7198    next(xpp);
7199    int eventType = nextNoWhitespace(xpp);
7200    while (eventType != XmlPullParser.END_TAG) {
7201  if (!parseCoverageClassComponentContent(eventType, xpp, owner, res))
7202        unknownContent(xpp);
7203      eventType = nextNoWhitespace(xpp);
7204    }
7205    next(xpp);
7206    parseElementClose(res);
7207    return res;
7208  }
7209
7210  protected boolean parseCoverageClassComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.ClassComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7211      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7212        res.setType(parseCoding(xpp));
7213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7214        res.setValueElement(parseString(xpp));
7215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7216        res.setNameElement(parseString(xpp));
7217      } else if (!parseBackboneElementContent(eventType, xpp, res))
7218        return false;
7219    return true;
7220  }
7221
7222  protected Coverage.CoPayComponent parseCoverageCoPayComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7223    Coverage.CoPayComponent res = new Coverage.CoPayComponent();
7224    parseBackboneAttributes(xpp, res);
7225    next(xpp);
7226    int eventType = nextNoWhitespace(xpp);
7227    while (eventType != XmlPullParser.END_TAG) {
7228  if (!parseCoverageCoPayComponentContent(eventType, xpp, owner, res))
7229        unknownContent(xpp);
7230      eventType = nextNoWhitespace(xpp);
7231    }
7232    next(xpp);
7233    parseElementClose(res);
7234    return res;
7235  }
7236
7237  protected boolean parseCoverageCoPayComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.CoPayComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7238      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7239        res.setType(parseCoding(xpp));
7240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7241        res.setValue(parseQuantity(xpp));
7242      } else if (!parseBackboneElementContent(eventType, xpp, res))
7243        return false;
7244    return true;
7245  }
7246
7247  protected CoverageEligibilityRequest parseCoverageEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7248    CoverageEligibilityRequest res = new CoverageEligibilityRequest();
7249    parseDomainResourceAttributes(xpp, res);
7250    next(xpp);
7251    int eventType = nextNoWhitespace(xpp);
7252    while (eventType != XmlPullParser.END_TAG) {
7253  if (!parseCoverageEligibilityRequestContent(eventType, xpp, res))
7254        unknownContent(xpp);
7255      eventType = nextNoWhitespace(xpp);
7256    }
7257    next(xpp);
7258    parseElementClose(res);
7259    return res;
7260  }
7261
7262  protected boolean parseCoverageEligibilityRequestContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7263      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7264        res.getIdentifier().add(parseIdentifier(xpp));
7265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7266        res.setStatusElement(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestStatus.NULL, new CoverageEligibilityRequest.EligibilityRequestStatusEnumFactory()));
7267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7268        res.setPriority(parseCodeableConcept(xpp));
7269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7270        res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestPurpose.NULL, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory()));
7271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7272        res.setPatient(parseReference(xpp));
7273      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7274        res.setServiced(parseType("serviced", xpp));
7275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7276        res.setCreatedElement(parseDateTime(xpp));
7277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
7278        res.setEnterer(parseReference(xpp));
7279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7280        res.setProvider(parseReference(xpp));
7281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7282        res.setInsurer(parseReference(xpp));
7283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7284        res.setFacility(parseReference(xpp));
7285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
7286        res.getSupportingInformation().add(parseCoverageEligibilityRequestInformationComponent(xpp, res));
7287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7288        res.getInsurance().add(parseCoverageEligibilityRequestInsuranceComponent(xpp, res));
7289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
7290        res.getItem().add(parseCoverageEligibilityRequestDetailsComponent(xpp, res));
7291      } else if (!parseDomainResourceContent(eventType, xpp, res))
7292        return false;
7293    return true;
7294  }
7295
7296  protected CoverageEligibilityRequest.InformationComponent parseCoverageEligibilityRequestInformationComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7297    CoverageEligibilityRequest.InformationComponent res = new CoverageEligibilityRequest.InformationComponent();
7298    parseBackboneAttributes(xpp, res);
7299    next(xpp);
7300    int eventType = nextNoWhitespace(xpp);
7301    while (eventType != XmlPullParser.END_TAG) {
7302  if (!parseCoverageEligibilityRequestInformationComponentContent(eventType, xpp, owner, res))
7303        unknownContent(xpp);
7304      eventType = nextNoWhitespace(xpp);
7305    }
7306    next(xpp);
7307    parseElementClose(res);
7308    return res;
7309  }
7310
7311  protected boolean parseCoverageEligibilityRequestInformationComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.InformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7312      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
7313        res.setSequenceElement(parsePositiveInt(xpp));
7314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
7315        res.setInformation(parseReference(xpp));
7316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesToAll")) {
7317        res.setAppliesToAllElement(parseBoolean(xpp));
7318      } else if (!parseBackboneElementContent(eventType, xpp, res))
7319        return false;
7320    return true;
7321  }
7322
7323  protected CoverageEligibilityRequest.InsuranceComponent parseCoverageEligibilityRequestInsuranceComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7324    CoverageEligibilityRequest.InsuranceComponent res = new CoverageEligibilityRequest.InsuranceComponent();
7325    parseBackboneAttributes(xpp, res);
7326    next(xpp);
7327    int eventType = nextNoWhitespace(xpp);
7328    while (eventType != XmlPullParser.END_TAG) {
7329  if (!parseCoverageEligibilityRequestInsuranceComponentContent(eventType, xpp, owner, res))
7330        unknownContent(xpp);
7331      eventType = nextNoWhitespace(xpp);
7332    }
7333    next(xpp);
7334    parseElementClose(res);
7335    return res;
7336  }
7337
7338  protected boolean parseCoverageEligibilityRequestInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
7340        res.setFocalElement(parseBoolean(xpp));
7341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7342        res.setCoverage(parseReference(xpp));
7343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
7344        res.setBusinessArrangementElement(parseString(xpp));
7345      } else if (!parseBackboneElementContent(eventType, xpp, res))
7346        return false;
7347    return true;
7348  }
7349
7350  protected CoverageEligibilityRequest.DetailsComponent parseCoverageEligibilityRequestDetailsComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7351    CoverageEligibilityRequest.DetailsComponent res = new CoverageEligibilityRequest.DetailsComponent();
7352    parseBackboneAttributes(xpp, res);
7353    next(xpp);
7354    int eventType = nextNoWhitespace(xpp);
7355    while (eventType != XmlPullParser.END_TAG) {
7356  if (!parseCoverageEligibilityRequestDetailsComponentContent(eventType, xpp, owner, res))
7357        unknownContent(xpp);
7358      eventType = nextNoWhitespace(xpp);
7359    }
7360    next(xpp);
7361    parseElementClose(res);
7362    return res;
7363  }
7364
7365  protected boolean parseCoverageEligibilityRequestDetailsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7366      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformationSequence")) {
7367        res.getSupportingInformationSequence().add(parsePositiveInt(xpp));
7368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7369        res.setCategory(parseCodeableConcept(xpp));
7370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
7371        res.setBillcode(parseCodeableConcept(xpp));
7372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7373        res.getModifier().add(parseCodeableConcept(xpp));
7374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7375        res.setProvider(parseReference(xpp));
7376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7377        res.setQuantity(parseQuantity(xpp));
7378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
7379        res.setUnitPrice(parseMoney(xpp));
7380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7381        res.setFacility(parseReference(xpp));
7382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7383        res.getDiagnosis().add(parseCoverageEligibilityRequestDiagnosisComponent(xpp, owner));
7384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7385        res.getDetail().add(parseReference(xpp));
7386      } else if (!parseBackboneElementContent(eventType, xpp, res))
7387        return false;
7388    return true;
7389  }
7390
7391  protected CoverageEligibilityRequest.DiagnosisComponent parseCoverageEligibilityRequestDiagnosisComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7392    CoverageEligibilityRequest.DiagnosisComponent res = new CoverageEligibilityRequest.DiagnosisComponent();
7393    parseBackboneAttributes(xpp, res);
7394    next(xpp);
7395    int eventType = nextNoWhitespace(xpp);
7396    while (eventType != XmlPullParser.END_TAG) {
7397  if (!parseCoverageEligibilityRequestDiagnosisComponentContent(eventType, xpp, owner, res))
7398        unknownContent(xpp);
7399      eventType = nextNoWhitespace(xpp);
7400    }
7401    next(xpp);
7402    parseElementClose(res);
7403    return res;
7404  }
7405
7406  protected boolean parseCoverageEligibilityRequestDiagnosisComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7407      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
7408        res.setDiagnosis(parseType("diagnosis", xpp));
7409      } else if (!parseBackboneElementContent(eventType, xpp, res))
7410        return false;
7411    return true;
7412  }
7413
7414  protected CoverageEligibilityResponse parseCoverageEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7415    CoverageEligibilityResponse res = new CoverageEligibilityResponse();
7416    parseDomainResourceAttributes(xpp, res);
7417    next(xpp);
7418    int eventType = nextNoWhitespace(xpp);
7419    while (eventType != XmlPullParser.END_TAG) {
7420  if (!parseCoverageEligibilityResponseContent(eventType, xpp, res))
7421        unknownContent(xpp);
7422      eventType = nextNoWhitespace(xpp);
7423    }
7424    next(xpp);
7425    parseElementClose(res);
7426    return res;
7427  }
7428
7429  protected boolean parseCoverageEligibilityResponseContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7431        res.getIdentifier().add(parseIdentifier(xpp));
7432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7433        res.setStatusElement(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponseStatus.NULL, new CoverageEligibilityResponse.EligibilityResponseStatusEnumFactory()));
7434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7435        res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponsePurpose.NULL, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory()));
7436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7437        res.setPatient(parseReference(xpp));
7438      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7439        res.setServiced(parseType("serviced", xpp));
7440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7441        res.setCreatedElement(parseDateTime(xpp));
7442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
7443        res.setRequestProvider(parseReference(xpp));
7444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7445        res.setRequest(parseReference(xpp));
7446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7447        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
7448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7449        res.setDispositionElement(parseString(xpp));
7450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7451        res.setInsurer(parseReference(xpp));
7452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7453        res.getInsurance().add(parseCoverageEligibilityResponseInsuranceComponent(xpp, res));
7454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
7455        res.setPreAuthRefElement(parseString(xpp));
7456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
7457        res.setForm(parseCodeableConcept(xpp));
7458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
7459        res.getError().add(parseCoverageEligibilityResponseErrorsComponent(xpp, res));
7460      } else if (!parseDomainResourceContent(eventType, xpp, res))
7461        return false;
7462    return true;
7463  }
7464
7465  protected CoverageEligibilityResponse.InsuranceComponent parseCoverageEligibilityResponseInsuranceComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7466    CoverageEligibilityResponse.InsuranceComponent res = new CoverageEligibilityResponse.InsuranceComponent();
7467    parseBackboneAttributes(xpp, res);
7468    next(xpp);
7469    int eventType = nextNoWhitespace(xpp);
7470    while (eventType != XmlPullParser.END_TAG) {
7471  if (!parseCoverageEligibilityResponseInsuranceComponentContent(eventType, xpp, owner, res))
7472        unknownContent(xpp);
7473      eventType = nextNoWhitespace(xpp);
7474    }
7475    next(xpp);
7476    parseElementClose(res);
7477    return res;
7478  }
7479
7480  protected boolean parseCoverageEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7481      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7482        res.setCoverage(parseReference(xpp));
7483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
7484        res.setContract(parseReference(xpp));
7485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
7486        res.setInforceElement(parseBoolean(xpp));
7487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
7488        res.getItem().add(parseCoverageEligibilityResponseItemsComponent(xpp, owner));
7489      } else if (!parseBackboneElementContent(eventType, xpp, res))
7490        return false;
7491    return true;
7492  }
7493
7494  protected CoverageEligibilityResponse.ItemsComponent parseCoverageEligibilityResponseItemsComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7495    CoverageEligibilityResponse.ItemsComponent res = new CoverageEligibilityResponse.ItemsComponent();
7496    parseBackboneAttributes(xpp, res);
7497    next(xpp);
7498    int eventType = nextNoWhitespace(xpp);
7499    while (eventType != XmlPullParser.END_TAG) {
7500  if (!parseCoverageEligibilityResponseItemsComponentContent(eventType, xpp, owner, res))
7501        unknownContent(xpp);
7502      eventType = nextNoWhitespace(xpp);
7503    }
7504    next(xpp);
7505    parseElementClose(res);
7506    return res;
7507  }
7508
7509  protected boolean parseCoverageEligibilityResponseItemsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7510      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7511        res.setCategory(parseCodeableConcept(xpp));
7512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
7513        res.setBillcode(parseCodeableConcept(xpp));
7514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7515        res.getModifier().add(parseCodeableConcept(xpp));
7516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7517        res.setProvider(parseReference(xpp));
7518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
7519        res.setExcludedElement(parseBoolean(xpp));
7520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7521        res.setNameElement(parseString(xpp));
7522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7523        res.setDescriptionElement(parseString(xpp));
7524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7525        res.setNetwork(parseCodeableConcept(xpp));
7526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
7527        res.setUnit(parseCodeableConcept(xpp));
7528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
7529        res.setTerm(parseCodeableConcept(xpp));
7530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
7531        res.getBenefit().add(parseCoverageEligibilityResponseBenefitComponent(xpp, owner));
7532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationRequired")) {
7533        res.setAuthorizationRequiredElement(parseBoolean(xpp));
7534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationSupporting")) {
7535        res.getAuthorizationSupporting().add(parseCodeableConcept(xpp));
7536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationUrl")) {
7537        res.setAuthorizationUrlElement(parseUri(xpp));
7538      } else if (!parseBackboneElementContent(eventType, xpp, res))
7539        return false;
7540    return true;
7541  }
7542
7543  protected CoverageEligibilityResponse.BenefitComponent parseCoverageEligibilityResponseBenefitComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7544    CoverageEligibilityResponse.BenefitComponent res = new CoverageEligibilityResponse.BenefitComponent();
7545    parseBackboneAttributes(xpp, res);
7546    next(xpp);
7547    int eventType = nextNoWhitespace(xpp);
7548    while (eventType != XmlPullParser.END_TAG) {
7549  if (!parseCoverageEligibilityResponseBenefitComponentContent(eventType, xpp, owner, res))
7550        unknownContent(xpp);
7551      eventType = nextNoWhitespace(xpp);
7552    }
7553    next(xpp);
7554    parseElementClose(res);
7555    return res;
7556  }
7557
7558  protected boolean parseCoverageEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7559      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7560        res.setType(parseCodeableConcept(xpp));
7561      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
7562        res.setAllowed(parseType("allowed", xpp));
7563      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
7564        res.setUsed(parseType("used", xpp));
7565      } else if (!parseBackboneElementContent(eventType, xpp, res))
7566        return false;
7567    return true;
7568  }
7569
7570  protected CoverageEligibilityResponse.ErrorsComponent parseCoverageEligibilityResponseErrorsComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7571    CoverageEligibilityResponse.ErrorsComponent res = new CoverageEligibilityResponse.ErrorsComponent();
7572    parseBackboneAttributes(xpp, res);
7573    next(xpp);
7574    int eventType = nextNoWhitespace(xpp);
7575    while (eventType != XmlPullParser.END_TAG) {
7576  if (!parseCoverageEligibilityResponseErrorsComponentContent(eventType, xpp, owner, res))
7577        unknownContent(xpp);
7578      eventType = nextNoWhitespace(xpp);
7579    }
7580    next(xpp);
7581    parseElementClose(res);
7582    return res;
7583  }
7584
7585  protected boolean parseCoverageEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7586      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7587        res.setCode(parseCodeableConcept(xpp));
7588      } else if (!parseBackboneElementContent(eventType, xpp, res))
7589        return false;
7590    return true;
7591  }
7592
7593  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7594    DetectedIssue res = new DetectedIssue();
7595    parseDomainResourceAttributes(xpp, res);
7596    next(xpp);
7597    int eventType = nextNoWhitespace(xpp);
7598    while (eventType != XmlPullParser.END_TAG) {
7599  if (!parseDetectedIssueContent(eventType, xpp, res))
7600        unknownContent(xpp);
7601      eventType = nextNoWhitespace(xpp);
7602    }
7603    next(xpp);
7604    parseElementClose(res);
7605    return res;
7606  }
7607
7608  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
7609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7610        res.getIdentifier().add(parseIdentifier(xpp));
7611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7612        res.setStatusElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueStatus.NULL, new DetectedIssue.DetectedIssueStatusEnumFactory()));
7613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7614        res.setCategory(parseCodeableConcept(xpp));
7615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
7616        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
7617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7618        res.setPatient(parseReference(xpp));
7619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7620        res.setDateElement(parseDateTime(xpp));
7621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7622        res.setAuthor(parseReference(xpp));
7623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
7624        res.getImplicated().add(parseReference(xpp));
7625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7626        res.setDetailElement(parseString(xpp));
7627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7628        res.setReferenceElement(parseUri(xpp));
7629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
7630        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
7631      } else if (!parseDomainResourceContent(eventType, xpp, res))
7632        return false;
7633    return true;
7634  }
7635
7636  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
7637    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
7638    parseBackboneAttributes(xpp, res);
7639    next(xpp);
7640    int eventType = nextNoWhitespace(xpp);
7641    while (eventType != XmlPullParser.END_TAG) {
7642  if (!parseDetectedIssueDetectedIssueMitigationComponentContent(eventType, xpp, owner, res))
7643        unknownContent(xpp);
7644      eventType = nextNoWhitespace(xpp);
7645    }
7646    next(xpp);
7647    parseElementClose(res);
7648    return res;
7649  }
7650
7651  protected boolean parseDetectedIssueDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7652      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
7653        res.setAction(parseCodeableConcept(xpp));
7654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7655        res.setDateElement(parseDateTime(xpp));
7656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7657        res.setAuthor(parseReference(xpp));
7658      } else if (!parseBackboneElementContent(eventType, xpp, res))
7659        return false;
7660    return true;
7661  }
7662
7663  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7664    Device res = new Device();
7665    parseDomainResourceAttributes(xpp, res);
7666    next(xpp);
7667    int eventType = nextNoWhitespace(xpp);
7668    while (eventType != XmlPullParser.END_TAG) {
7669  if (!parseDeviceContent(eventType, xpp, res))
7670        unknownContent(xpp);
7671      eventType = nextNoWhitespace(xpp);
7672    }
7673    next(xpp);
7674    parseElementClose(res);
7675    return res;
7676  }
7677
7678  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
7679      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7680        res.getIdentifier().add(parseIdentifier(xpp));
7681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
7682        res.setDefinition(parseReference(xpp));
7683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiCarrier")) {
7684        res.getUdiCarrier().add(parseDeviceDeviceUdiCarrierComponent(xpp, res));
7685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7686        res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
7687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
7688        res.getStatusReason().add(parseCodeableConcept(xpp));
7689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("distinctIdentificationCode")) {
7690        res.setDistinctIdentificationCodeElement(parseString(xpp));
7691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
7692        res.setManufacturerElement(parseString(xpp));
7693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
7694        res.setManufactureDateElement(parseDateTime(xpp));
7695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
7696        res.setExpirationDateElement(parseDateTime(xpp));
7697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
7698        res.setLotNumberElement(parseString(xpp));
7699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
7700        res.setSerialNumberElement(parseString(xpp));
7701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
7702        res.getDeviceName().add(parseDeviceDeviceDeviceNameComponent(xpp, res));
7703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
7704        res.setModelNumberElement(parseString(xpp));
7705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partNumber")) {
7706        res.setPartNumberElement(parseString(xpp));
7707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7708        res.setType(parseCodeableConcept(xpp));
7709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
7710        res.getSpecialization().add(parseDeviceDeviceSpecializationComponent(xpp, res));
7711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7712        res.getVersion().add(parseDeviceDeviceVersionComponent(xpp, res));
7713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7714        res.getProperty().add(parseDeviceDevicePropertyComponent(xpp, res));
7715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7716        res.setPatient(parseReference(xpp));
7717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
7718        res.setOwner(parseReference(xpp));
7719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7720        res.getContact().add(parseContactPoint(xpp));
7721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7722        res.setLocation(parseReference(xpp));
7723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7724        res.setUrlElement(parseUri(xpp));
7725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7726        res.getNote().add(parseAnnotation(xpp));
7727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
7728        res.getSafety().add(parseCodeableConcept(xpp));
7729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
7730        res.setParent(parseReference(xpp));
7731      } else if (!parseDomainResourceContent(eventType, xpp, res))
7732        return false;
7733    return true;
7734  }
7735
7736  protected Device.DeviceUdiCarrierComponent parseDeviceDeviceUdiCarrierComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7737    Device.DeviceUdiCarrierComponent res = new Device.DeviceUdiCarrierComponent();
7738    parseBackboneAttributes(xpp, res);
7739    next(xpp);
7740    int eventType = nextNoWhitespace(xpp);
7741    while (eventType != XmlPullParser.END_TAG) {
7742  if (!parseDeviceDeviceUdiCarrierComponentContent(eventType, xpp, owner, res))
7743        unknownContent(xpp);
7744      eventType = nextNoWhitespace(xpp);
7745    }
7746    next(xpp);
7747    parseElementClose(res);
7748    return res;
7749  }
7750
7751  protected boolean parseDeviceDeviceUdiCarrierComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceUdiCarrierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7752      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
7753        res.setDeviceIdentifierElement(parseString(xpp));
7754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
7755        res.setIssuerElement(parseUri(xpp));
7756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7757        res.setJurisdictionElement(parseUri(xpp));
7758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
7759        res.setCarrierAIDCElement(parseBase64Binary(xpp));
7760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
7761        res.setCarrierHRFElement(parseString(xpp));
7762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
7763        res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
7764      } else if (!parseBackboneElementContent(eventType, xpp, res))
7765        return false;
7766    return true;
7767  }
7768
7769  protected Device.DeviceDeviceNameComponent parseDeviceDeviceDeviceNameComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7770    Device.DeviceDeviceNameComponent res = new Device.DeviceDeviceNameComponent();
7771    parseBackboneAttributes(xpp, res);
7772    next(xpp);
7773    int eventType = nextNoWhitespace(xpp);
7774    while (eventType != XmlPullParser.END_TAG) {
7775  if (!parseDeviceDeviceDeviceNameComponentContent(eventType, xpp, owner, res))
7776        unknownContent(xpp);
7777      eventType = nextNoWhitespace(xpp);
7778    }
7779    next(xpp);
7780    parseElementClose(res);
7781    return res;
7782  }
7783
7784  protected boolean parseDeviceDeviceDeviceNameComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7785      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7786        res.setNameElement(parseString(xpp));
7787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7788        res.setTypeElement(parseEnumeration(xpp, Device.DeviceNameType.NULL, new Device.DeviceNameTypeEnumFactory()));
7789      } else if (!parseBackboneElementContent(eventType, xpp, res))
7790        return false;
7791    return true;
7792  }
7793
7794  protected Device.DeviceSpecializationComponent parseDeviceDeviceSpecializationComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7795    Device.DeviceSpecializationComponent res = new Device.DeviceSpecializationComponent();
7796    parseBackboneAttributes(xpp, res);
7797    next(xpp);
7798    int eventType = nextNoWhitespace(xpp);
7799    while (eventType != XmlPullParser.END_TAG) {
7800  if (!parseDeviceDeviceSpecializationComponentContent(eventType, xpp, owner, res))
7801        unknownContent(xpp);
7802      eventType = nextNoWhitespace(xpp);
7803    }
7804    next(xpp);
7805    parseElementClose(res);
7806    return res;
7807  }
7808
7809  protected boolean parseDeviceDeviceSpecializationComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7810      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
7811        res.setSystemType(parseCodeableConcept(xpp));
7812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7813        res.setVersionElement(parseString(xpp));
7814      } else if (!parseBackboneElementContent(eventType, xpp, res))
7815        return false;
7816    return true;
7817  }
7818
7819  protected Device.DeviceVersionComponent parseDeviceDeviceVersionComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7820    Device.DeviceVersionComponent res = new Device.DeviceVersionComponent();
7821    parseBackboneAttributes(xpp, res);
7822    next(xpp);
7823    int eventType = nextNoWhitespace(xpp);
7824    while (eventType != XmlPullParser.END_TAG) {
7825  if (!parseDeviceDeviceVersionComponentContent(eventType, xpp, owner, res))
7826        unknownContent(xpp);
7827      eventType = nextNoWhitespace(xpp);
7828    }
7829    next(xpp);
7830    parseElementClose(res);
7831    return res;
7832  }
7833
7834  protected boolean parseDeviceDeviceVersionComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7835      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7836        res.setType(parseCodeableConcept(xpp));
7837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
7838        res.setComponent(parseIdentifier(xpp));
7839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7840        res.setValueElement(parseString(xpp));
7841      } else if (!parseBackboneElementContent(eventType, xpp, res))
7842        return false;
7843    return true;
7844  }
7845
7846  protected Device.DevicePropertyComponent parseDeviceDevicePropertyComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7847    Device.DevicePropertyComponent res = new Device.DevicePropertyComponent();
7848    parseBackboneAttributes(xpp, res);
7849    next(xpp);
7850    int eventType = nextNoWhitespace(xpp);
7851    while (eventType != XmlPullParser.END_TAG) {
7852  if (!parseDeviceDevicePropertyComponentContent(eventType, xpp, owner, res))
7853        unknownContent(xpp);
7854      eventType = nextNoWhitespace(xpp);
7855    }
7856    next(xpp);
7857    parseElementClose(res);
7858    return res;
7859  }
7860
7861  protected boolean parseDeviceDevicePropertyComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DevicePropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7862      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7863        res.setType(parseCodeableConcept(xpp));
7864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuanity")) {
7865        res.getValueQuanity().add(parseQuantity(xpp));
7866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
7867        res.getValueCode().add(parseCodeableConcept(xpp));
7868      } else if (!parseBackboneElementContent(eventType, xpp, res))
7869        return false;
7870    return true;
7871  }
7872
7873  protected DeviceDefinition parseDeviceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7874    DeviceDefinition res = new DeviceDefinition();
7875    parseDomainResourceAttributes(xpp, res);
7876    next(xpp);
7877    int eventType = nextNoWhitespace(xpp);
7878    while (eventType != XmlPullParser.END_TAG) {
7879  if (!parseDeviceDefinitionContent(eventType, xpp, res))
7880        unknownContent(xpp);
7881      eventType = nextNoWhitespace(xpp);
7882    }
7883    next(xpp);
7884    parseElementClose(res);
7885    return res;
7886  }
7887
7888  protected boolean parseDeviceDefinitionContent(int eventType, XmlPullParser xpp, DeviceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
7889      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7890        res.getIdentifier().add(parseIdentifier(xpp));
7891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiDeviceIdentifier")) {
7892        res.getUdiDeviceIdentifier().add(parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(xpp, res));
7893      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "manufacturer")) {
7894        res.setManufacturer(parseType("manufacturer", xpp));
7895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
7896        res.getDeviceName().add(parseDeviceDefinitionDeviceDefinitionDeviceNameComponent(xpp, res));
7897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
7898        res.setModelNumberElement(parseString(xpp));
7899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7900        res.setType(parseCodeableConcept(xpp));
7901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
7902        res.getSpecialization().add(parseDeviceDefinitionDeviceDefinitionSpecializationComponent(xpp, res));
7903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7904        res.getVersion().add(parseString(xpp));
7905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
7906        res.getSafety().add(parseCodeableConcept(xpp));
7907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
7908        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
7909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
7910        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
7911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
7912        res.getLanguageCode().add(parseCodeableConcept(xpp));
7913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
7914        res.getCapability().add(parseDeviceDefinitionDeviceDefinitionCapabilityComponent(xpp, res));
7915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7916        res.getProperty().add(parseDeviceDefinitionDeviceDefinitionPropertyComponent(xpp, res));
7917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
7918        res.setOwner(parseReference(xpp));
7919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7920        res.getContact().add(parseContactPoint(xpp));
7921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7922        res.setUrlElement(parseUri(xpp));
7923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onlineInformation")) {
7924        res.setOnlineInformationElement(parseUri(xpp));
7925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7926        res.getNote().add(parseAnnotation(xpp));
7927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7928        res.setQuantity(parseQuantity(xpp));
7929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentDevice")) {
7930        res.setParentDevice(parseReference(xpp));
7931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
7932        res.getMaterial().add(parseDeviceDefinitionDeviceDefinitionMaterialComponent(xpp, res));
7933      } else if (!parseDomainResourceContent(eventType, xpp, res))
7934        return false;
7935    return true;
7936  }
7937
7938  protected DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7939    DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res = new DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent();
7940    parseBackboneAttributes(xpp, res);
7941    next(xpp);
7942    int eventType = nextNoWhitespace(xpp);
7943    while (eventType != XmlPullParser.END_TAG) {
7944  if (!parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentContent(eventType, xpp, owner, res))
7945        unknownContent(xpp);
7946      eventType = nextNoWhitespace(xpp);
7947    }
7948    next(xpp);
7949    parseElementClose(res);
7950    return res;
7951  }
7952
7953  protected boolean parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7954      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
7955        res.setDeviceIdentifierElement(parseString(xpp));
7956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
7957        res.setIssuerElement(parseUri(xpp));
7958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7959        res.setJurisdictionElement(parseUri(xpp));
7960      } else if (!parseBackboneElementContent(eventType, xpp, res))
7961        return false;
7962    return true;
7963  }
7964
7965  protected DeviceDefinition.DeviceDefinitionDeviceNameComponent parseDeviceDefinitionDeviceDefinitionDeviceNameComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7966    DeviceDefinition.DeviceDefinitionDeviceNameComponent res = new DeviceDefinition.DeviceDefinitionDeviceNameComponent();
7967    parseBackboneAttributes(xpp, res);
7968    next(xpp);
7969    int eventType = nextNoWhitespace(xpp);
7970    while (eventType != XmlPullParser.END_TAG) {
7971  if (!parseDeviceDefinitionDeviceDefinitionDeviceNameComponentContent(eventType, xpp, owner, res))
7972        unknownContent(xpp);
7973      eventType = nextNoWhitespace(xpp);
7974    }
7975    next(xpp);
7976    parseElementClose(res);
7977    return res;
7978  }
7979
7980  protected boolean parseDeviceDefinitionDeviceDefinitionDeviceNameComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7981      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7982        res.setNameElement(parseString(xpp));
7983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7984        res.setTypeElement(parseEnumeration(xpp, DeviceDefinition.DeviceNameType.NULL, new DeviceDefinition.DeviceNameTypeEnumFactory()));
7985      } else if (!parseBackboneElementContent(eventType, xpp, res))
7986        return false;
7987    return true;
7988  }
7989
7990  protected DeviceDefinition.DeviceDefinitionSpecializationComponent parseDeviceDefinitionDeviceDefinitionSpecializationComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7991    DeviceDefinition.DeviceDefinitionSpecializationComponent res = new DeviceDefinition.DeviceDefinitionSpecializationComponent();
7992    parseBackboneAttributes(xpp, res);
7993    next(xpp);
7994    int eventType = nextNoWhitespace(xpp);
7995    while (eventType != XmlPullParser.END_TAG) {
7996  if (!parseDeviceDefinitionDeviceDefinitionSpecializationComponentContent(eventType, xpp, owner, res))
7997        unknownContent(xpp);
7998      eventType = nextNoWhitespace(xpp);
7999    }
8000    next(xpp);
8001    parseElementClose(res);
8002    return res;
8003  }
8004
8005  protected boolean parseDeviceDefinitionDeviceDefinitionSpecializationComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8006      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
8007        res.setSystemTypeElement(parseString(xpp));
8008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8009        res.setVersionElement(parseString(xpp));
8010      } else if (!parseBackboneElementContent(eventType, xpp, res))
8011        return false;
8012    return true;
8013  }
8014
8015  protected DeviceDefinition.DeviceDefinitionCapabilityComponent parseDeviceDefinitionDeviceDefinitionCapabilityComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8016    DeviceDefinition.DeviceDefinitionCapabilityComponent res = new DeviceDefinition.DeviceDefinitionCapabilityComponent();
8017    parseBackboneAttributes(xpp, res);
8018    next(xpp);
8019    int eventType = nextNoWhitespace(xpp);
8020    while (eventType != XmlPullParser.END_TAG) {
8021  if (!parseDeviceDefinitionDeviceDefinitionCapabilityComponentContent(eventType, xpp, owner, res))
8022        unknownContent(xpp);
8023      eventType = nextNoWhitespace(xpp);
8024    }
8025    next(xpp);
8026    parseElementClose(res);
8027    return res;
8028  }
8029
8030  protected boolean parseDeviceDefinitionDeviceDefinitionCapabilityComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8031      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8032        res.setType(parseCodeableConcept(xpp));
8033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8034        res.getDescription().add(parseCodeableConcept(xpp));
8035      } else if (!parseBackboneElementContent(eventType, xpp, res))
8036        return false;
8037    return true;
8038  }
8039
8040  protected DeviceDefinition.DeviceDefinitionPropertyComponent parseDeviceDefinitionDeviceDefinitionPropertyComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8041    DeviceDefinition.DeviceDefinitionPropertyComponent res = new DeviceDefinition.DeviceDefinitionPropertyComponent();
8042    parseBackboneAttributes(xpp, res);
8043    next(xpp);
8044    int eventType = nextNoWhitespace(xpp);
8045    while (eventType != XmlPullParser.END_TAG) {
8046  if (!parseDeviceDefinitionDeviceDefinitionPropertyComponentContent(eventType, xpp, owner, res))
8047        unknownContent(xpp);
8048      eventType = nextNoWhitespace(xpp);
8049    }
8050    next(xpp);
8051    parseElementClose(res);
8052    return res;
8053  }
8054
8055  protected boolean parseDeviceDefinitionDeviceDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8056      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8057        res.setType(parseCodeableConcept(xpp));
8058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuanity")) {
8059        res.getValueQuanity().add(parseQuantity(xpp));
8060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
8061        res.getValueCode().add(parseCodeableConcept(xpp));
8062      } else if (!parseBackboneElementContent(eventType, xpp, res))
8063        return false;
8064    return true;
8065  }
8066
8067  protected DeviceDefinition.DeviceDefinitionMaterialComponent parseDeviceDefinitionDeviceDefinitionMaterialComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8068    DeviceDefinition.DeviceDefinitionMaterialComponent res = new DeviceDefinition.DeviceDefinitionMaterialComponent();
8069    parseBackboneAttributes(xpp, res);
8070    next(xpp);
8071    int eventType = nextNoWhitespace(xpp);
8072    while (eventType != XmlPullParser.END_TAG) {
8073  if (!parseDeviceDefinitionDeviceDefinitionMaterialComponentContent(eventType, xpp, owner, res))
8074        unknownContent(xpp);
8075      eventType = nextNoWhitespace(xpp);
8076    }
8077    next(xpp);
8078    parseElementClose(res);
8079    return res;
8080  }
8081
8082  protected boolean parseDeviceDefinitionDeviceDefinitionMaterialComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8083      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
8084        res.setSubstance(parseCodeableConcept(xpp));
8085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternate")) {
8086        res.setAlternateElement(parseBoolean(xpp));
8087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
8088        res.setAllergenicIndicatorElement(parseBoolean(xpp));
8089      } else if (!parseBackboneElementContent(eventType, xpp, res))
8090        return false;
8091    return true;
8092  }
8093
8094  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8095    DeviceMetric res = new DeviceMetric();
8096    parseDomainResourceAttributes(xpp, res);
8097    next(xpp);
8098    int eventType = nextNoWhitespace(xpp);
8099    while (eventType != XmlPullParser.END_TAG) {
8100  if (!parseDeviceMetricContent(eventType, xpp, res))
8101        unknownContent(xpp);
8102      eventType = nextNoWhitespace(xpp);
8103    }
8104    next(xpp);
8105    parseElementClose(res);
8106    return res;
8107  }
8108
8109  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
8110      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8111        res.getIdentifier().add(parseIdentifier(xpp));
8112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8113        res.setType(parseCodeableConcept(xpp));
8114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
8115        res.setUnit(parseCodeableConcept(xpp));
8116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8117        res.setSource(parseReference(xpp));
8118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
8119        res.setParent(parseReference(xpp));
8120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
8121        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
8122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
8123        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
8124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8125        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
8126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
8127        res.setMeasurementPeriod(parseTiming(xpp));
8128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
8129        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
8130      } else if (!parseDomainResourceContent(eventType, xpp, res))
8131        return false;
8132    return true;
8133  }
8134
8135  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
8136    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
8137    parseBackboneAttributes(xpp, res);
8138    next(xpp);
8139    int eventType = nextNoWhitespace(xpp);
8140    while (eventType != XmlPullParser.END_TAG) {
8141  if (!parseDeviceMetricDeviceMetricCalibrationComponentContent(eventType, xpp, owner, res))
8142        unknownContent(xpp);
8143      eventType = nextNoWhitespace(xpp);
8144    }
8145    next(xpp);
8146    parseElementClose(res);
8147    return res;
8148  }
8149
8150  protected boolean parseDeviceMetricDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric owner, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8151      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8152        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
8153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
8154        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
8155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
8156        res.setTimeElement(parseInstant(xpp));
8157      } else if (!parseBackboneElementContent(eventType, xpp, res))
8158        return false;
8159    return true;
8160  }
8161
8162  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8163    DeviceRequest res = new DeviceRequest();
8164    parseDomainResourceAttributes(xpp, res);
8165    next(xpp);
8166    int eventType = nextNoWhitespace(xpp);
8167    while (eventType != XmlPullParser.END_TAG) {
8168  if (!parseDeviceRequestContent(eventType, xpp, res))
8169        unknownContent(xpp);
8170      eventType = nextNoWhitespace(xpp);
8171    }
8172    next(xpp);
8173    parseElementClose(res);
8174    return res;
8175  }
8176
8177  protected boolean parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
8178      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8179        res.getIdentifier().add(parseIdentifier(xpp));
8180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
8181        res.getInstantiatesCanonical().add(parseCanonical(xpp));
8182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
8183        res.getInstantiatesUri().add(parseUri(xpp));
8184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8185        res.getBasedOn().add(parseReference(xpp));
8186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorRequest")) {
8187        res.getPriorRequest().add(parseReference(xpp));
8188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
8189        res.setGroupIdentifier(parseIdentifier(xpp));
8190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8191        res.setStatusElement(parseEnumeration(xpp, DeviceRequest.DeviceRequestStatus.NULL, new DeviceRequest.DeviceRequestStatusEnumFactory()));
8192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
8193        res.setIntentElement(parseEnumeration(xpp, DeviceRequest.RequestIntent.NULL, new DeviceRequest.RequestIntentEnumFactory()));
8194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8195        res.setPriorityElement(parseEnumeration(xpp, DeviceRequest.RequestPriority.NULL, new DeviceRequest.RequestPriorityEnumFactory()));
8196      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "code")) {
8197        res.setCode(parseType("code", xpp));
8198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
8199        res.getParameter().add(parseDeviceRequestDeviceRequestParameterComponent(xpp, res));
8200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8201        res.setSubject(parseReference(xpp));
8202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
8203        res.setContext(parseReference(xpp));
8204      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
8205        res.setOccurrence(parseType("occurrence", xpp));
8206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
8207        res.setAuthoredOnElement(parseDateTime(xpp));
8208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
8209        res.setRequester(parseReference(xpp));
8210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
8211        res.setPerformerType(parseCodeableConcept(xpp));
8212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8213        res.setPerformer(parseReference(xpp));
8214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8215        res.getReasonCode().add(parseCodeableConcept(xpp));
8216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8217        res.getReasonReference().add(parseReference(xpp));
8218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
8219        res.getInsurance().add(parseReference(xpp));
8220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
8221        res.getSupportingInfo().add(parseReference(xpp));
8222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8223        res.getNote().add(parseAnnotation(xpp));
8224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
8225        res.getRelevantHistory().add(parseReference(xpp));
8226      } else if (!parseDomainResourceContent(eventType, xpp, res))
8227        return false;
8228    return true;
8229  }
8230
8231  protected DeviceRequest.DeviceRequestParameterComponent parseDeviceRequestDeviceRequestParameterComponent(XmlPullParser xpp, DeviceRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8232    DeviceRequest.DeviceRequestParameterComponent res = new DeviceRequest.DeviceRequestParameterComponent();
8233    parseBackboneAttributes(xpp, res);
8234    next(xpp);
8235    int eventType = nextNoWhitespace(xpp);
8236    while (eventType != XmlPullParser.END_TAG) {
8237  if (!parseDeviceRequestDeviceRequestParameterComponentContent(eventType, xpp, owner, res))
8238        unknownContent(xpp);
8239      eventType = nextNoWhitespace(xpp);
8240    }
8241    next(xpp);
8242    parseElementClose(res);
8243    return res;
8244  }
8245
8246  protected boolean parseDeviceRequestDeviceRequestParameterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest owner, DeviceRequest.DeviceRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8247      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8248        res.setCode(parseCodeableConcept(xpp));
8249      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8250        res.setValue(parseType("value", xpp));
8251      } else if (!parseBackboneElementContent(eventType, xpp, res))
8252        return false;
8253    return true;
8254  }
8255
8256  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8257    DeviceUseStatement res = new DeviceUseStatement();
8258    parseDomainResourceAttributes(xpp, res);
8259    next(xpp);
8260    int eventType = nextNoWhitespace(xpp);
8261    while (eventType != XmlPullParser.END_TAG) {
8262  if (!parseDeviceUseStatementContent(eventType, xpp, res))
8263        unknownContent(xpp);
8264      eventType = nextNoWhitespace(xpp);
8265    }
8266    next(xpp);
8267    parseElementClose(res);
8268    return res;
8269  }
8270
8271  protected boolean parseDeviceUseStatementContent(int eventType, XmlPullParser xpp, DeviceUseStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
8272      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8273        res.getIdentifier().add(parseIdentifier(xpp));
8274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8275        res.getBasedOn().add(parseReference(xpp));
8276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8277        res.setStatusElement(parseEnumeration(xpp, DeviceUseStatement.DeviceUseStatementStatus.NULL, new DeviceUseStatement.DeviceUseStatementStatusEnumFactory()));
8278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8279        res.setSubject(parseReference(xpp));
8280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
8281        res.getDerivedFrom().add(parseReference(xpp));
8282      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
8283        res.setTiming(parseType("timing", xpp));
8284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
8285        res.setRecordedOnElement(parseDateTime(xpp));
8286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8287        res.setSource(parseReference(xpp));
8288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
8289        res.setDevice(parseReference(xpp));
8290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8291        res.getReasonCode().add(parseCodeableConcept(xpp));
8292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8293        res.getReasonReference().add(parseReference(xpp));
8294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8295        res.setBodySite(parseCodeableConcept(xpp));
8296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8297        res.getNote().add(parseAnnotation(xpp));
8298      } else if (!parseDomainResourceContent(eventType, xpp, res))
8299        return false;
8300    return true;
8301  }
8302
8303  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8304    DiagnosticReport res = new DiagnosticReport();
8305    parseDomainResourceAttributes(xpp, res);
8306    next(xpp);
8307    int eventType = nextNoWhitespace(xpp);
8308    while (eventType != XmlPullParser.END_TAG) {
8309  if (!parseDiagnosticReportContent(eventType, xpp, res))
8310        unknownContent(xpp);
8311      eventType = nextNoWhitespace(xpp);
8312    }
8313    next(xpp);
8314    parseElementClose(res);
8315    return res;
8316  }
8317
8318  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
8319      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8320        res.getIdentifier().add(parseIdentifier(xpp));
8321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8322        res.getBasedOn().add(parseReference(xpp));
8323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8324        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
8325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8326        res.setCategory(parseCodeableConcept(xpp));
8327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8328        res.setCode(parseCodeableConcept(xpp));
8329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8330        res.setSubject(parseReference(xpp));
8331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
8332        res.setContext(parseReference(xpp));
8333      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
8334        res.setEffective(parseType("effective", xpp));
8335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
8336        res.setIssuedElement(parseInstant(xpp));
8337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8338        res.getPerformer().add(parseReference(xpp));
8339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsInterpreter")) {
8340        res.getResultsInterpreter().add(parseReference(xpp));
8341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
8342        res.getSpecimen().add(parseReference(xpp));
8343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
8344        res.getResult().add(parseReference(xpp));
8345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
8346        res.getImagingStudy().add(parseReference(xpp));
8347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
8348        res.getMedia().add(parseDiagnosticReportDiagnosticReportMediaComponent(xpp, res));
8349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
8350        res.setConclusionElement(parseString(xpp));
8351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusionCode")) {
8352        res.getConclusionCode().add(parseCodeableConcept(xpp));
8353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
8354        res.getPresentedForm().add(parseAttachment(xpp));
8355      } else if (!parseDomainResourceContent(eventType, xpp, res))
8356        return false;
8357    return true;
8358  }
8359
8360  protected DiagnosticReport.DiagnosticReportMediaComponent parseDiagnosticReportDiagnosticReportMediaComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8361    DiagnosticReport.DiagnosticReportMediaComponent res = new DiagnosticReport.DiagnosticReportMediaComponent();
8362    parseBackboneAttributes(xpp, res);
8363    next(xpp);
8364    int eventType = nextNoWhitespace(xpp);
8365    while (eventType != XmlPullParser.END_TAG) {
8366  if (!parseDiagnosticReportDiagnosticReportMediaComponentContent(eventType, xpp, owner, res))
8367        unknownContent(xpp);
8368      eventType = nextNoWhitespace(xpp);
8369    }
8370    next(xpp);
8371    parseElementClose(res);
8372    return res;
8373  }
8374
8375  protected boolean parseDiagnosticReportDiagnosticReportMediaComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportMediaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8376      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
8377        res.setCommentElement(parseString(xpp));
8378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
8379        res.setLink(parseReference(xpp));
8380      } else if (!parseBackboneElementContent(eventType, xpp, res))
8381        return false;
8382    return true;
8383  }
8384
8385  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8386    DocumentManifest res = new DocumentManifest();
8387    parseDomainResourceAttributes(xpp, res);
8388    next(xpp);
8389    int eventType = nextNoWhitespace(xpp);
8390    while (eventType != XmlPullParser.END_TAG) {
8391  if (!parseDocumentManifestContent(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 parseDocumentManifestContent(int eventType, XmlPullParser xpp, DocumentManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
8401      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
8402        res.setMasterIdentifier(parseIdentifier(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("status")) {
8406        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
8407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8408        res.setType(parseCodeableConcept(xpp));
8409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8410        res.setSubject(parseReference(xpp));
8411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8412        res.setCreatedElement(parseDateTime(xpp));
8413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
8414        res.getAgent().add(parseDocumentManifestDocumentManifestAgentComponent(xpp, res));
8415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
8416        res.getRecipient().add(parseReference(xpp));
8417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8418        res.setSourceElement(parseUri(xpp));
8419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8420        res.setDescriptionElement(parseString(xpp));
8421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8422        res.getContent().add(parseReference(xpp));
8423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8424        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
8425      } else if (!parseDomainResourceContent(eventType, xpp, res))
8426        return false;
8427    return true;
8428  }
8429
8430  protected DocumentManifest.DocumentManifestAgentComponent parseDocumentManifestDocumentManifestAgentComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8431    DocumentManifest.DocumentManifestAgentComponent res = new DocumentManifest.DocumentManifestAgentComponent();
8432    parseBackboneAttributes(xpp, res);
8433    next(xpp);
8434    int eventType = nextNoWhitespace(xpp);
8435    while (eventType != XmlPullParser.END_TAG) {
8436  if (!parseDocumentManifestDocumentManifestAgentComponentContent(eventType, xpp, owner, res))
8437        unknownContent(xpp);
8438      eventType = nextNoWhitespace(xpp);
8439    }
8440    next(xpp);
8441    parseElementClose(res);
8442    return res;
8443  }
8444
8445  protected boolean parseDocumentManifestDocumentManifestAgentComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8446      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8447        res.setType(parseCodeableConcept(xpp));
8448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
8449        res.setWho(parseReference(xpp));
8450      } else if (!parseBackboneElementContent(eventType, xpp, res))
8451        return false;
8452    return true;
8453  }
8454
8455  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8456    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
8457    parseBackboneAttributes(xpp, res);
8458    next(xpp);
8459    int eventType = nextNoWhitespace(xpp);
8460    while (eventType != XmlPullParser.END_TAG) {
8461  if (!parseDocumentManifestDocumentManifestRelatedComponentContent(eventType, xpp, owner, res))
8462        unknownContent(xpp);
8463      eventType = nextNoWhitespace(xpp);
8464    }
8465    next(xpp);
8466    parseElementClose(res);
8467    return res;
8468  }
8469
8470  protected boolean parseDocumentManifestDocumentManifestRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8471      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8472        res.setIdentifier(parseIdentifier(xpp));
8473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
8474        res.setRef(parseReference(xpp));
8475      } else if (!parseBackboneElementContent(eventType, xpp, res))
8476        return false;
8477    return true;
8478  }
8479
8480  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8481    DocumentReference res = new DocumentReference();
8482    parseDomainResourceAttributes(xpp, res);
8483    next(xpp);
8484    int eventType = nextNoWhitespace(xpp);
8485    while (eventType != XmlPullParser.END_TAG) {
8486  if (!parseDocumentReferenceContent(eventType, xpp, res))
8487        unknownContent(xpp);
8488      eventType = nextNoWhitespace(xpp);
8489    }
8490    next(xpp);
8491    parseElementClose(res);
8492    return res;
8493  }
8494
8495  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
8496      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
8497        res.setMasterIdentifier(parseIdentifier(xpp));
8498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8499        res.getIdentifier().add(parseIdentifier(xpp));
8500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8501        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
8502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
8503        res.setDocStatusElement(parseEnumeration(xpp, DocumentReference.ReferredDocumentStatus.NULL, new DocumentReference.ReferredDocumentStatusEnumFactory()));
8504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8505        res.setType(parseCodeableConcept(xpp));
8506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8507        res.getCategory().add(parseCodeableConcept(xpp));
8508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8509        res.setSubject(parseReference(xpp));
8510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8511        res.setDateElement(parseInstant(xpp));
8512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
8513        res.getAgent().add(parseDocumentReferenceDocumentReferenceAgentComponent(xpp, res));
8514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
8515        res.setAuthenticator(parseReference(xpp));
8516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
8517        res.setCustodian(parseReference(xpp));
8518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
8519        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
8520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8521        res.setDescriptionElement(parseString(xpp));
8522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
8523        res.getSecurityLabel().add(parseCodeableConcept(xpp));
8524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8525        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
8526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
8527        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
8528      } else if (!parseDomainResourceContent(eventType, xpp, res))
8529        return false;
8530    return true;
8531  }
8532
8533  protected DocumentReference.DocumentReferenceAgentComponent parseDocumentReferenceDocumentReferenceAgentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8534    DocumentReference.DocumentReferenceAgentComponent res = new DocumentReference.DocumentReferenceAgentComponent();
8535    parseBackboneAttributes(xpp, res);
8536    next(xpp);
8537    int eventType = nextNoWhitespace(xpp);
8538    while (eventType != XmlPullParser.END_TAG) {
8539  if (!parseDocumentReferenceDocumentReferenceAgentComponentContent(eventType, xpp, owner, res))
8540        unknownContent(xpp);
8541      eventType = nextNoWhitespace(xpp);
8542    }
8543    next(xpp);
8544    parseElementClose(res);
8545    return res;
8546  }
8547
8548  protected boolean parseDocumentReferenceDocumentReferenceAgentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8550        res.setType(parseCodeableConcept(xpp));
8551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
8552        res.setWho(parseReference(xpp));
8553      } else if (!parseBackboneElementContent(eventType, xpp, res))
8554        return false;
8555    return true;
8556  }
8557
8558  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8559    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
8560    parseBackboneAttributes(xpp, res);
8561    next(xpp);
8562    int eventType = nextNoWhitespace(xpp);
8563    while (eventType != XmlPullParser.END_TAG) {
8564  if (!parseDocumentReferenceDocumentReferenceRelatesToComponentContent(eventType, xpp, owner, res))
8565        unknownContent(xpp);
8566      eventType = nextNoWhitespace(xpp);
8567    }
8568    next(xpp);
8569    parseElementClose(res);
8570    return res;
8571  }
8572
8573  protected boolean parseDocumentReferenceDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8574      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8575        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
8576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8577        res.setTarget(parseReference(xpp));
8578      } else if (!parseBackboneElementContent(eventType, xpp, res))
8579        return false;
8580    return true;
8581  }
8582
8583  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8584    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
8585    parseBackboneAttributes(xpp, res);
8586    next(xpp);
8587    int eventType = nextNoWhitespace(xpp);
8588    while (eventType != XmlPullParser.END_TAG) {
8589  if (!parseDocumentReferenceDocumentReferenceContentComponentContent(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 parseDocumentReferenceDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8599      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
8600        res.setAttachment(parseAttachment(xpp));
8601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
8602        res.setFormat(parseCoding(xpp));
8603      } else if (!parseBackboneElementContent(eventType, xpp, res))
8604        return false;
8605    return true;
8606  }
8607
8608  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8609    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
8610    parseBackboneAttributes(xpp, res);
8611    next(xpp);
8612    int eventType = nextNoWhitespace(xpp);
8613    while (eventType != XmlPullParser.END_TAG) {
8614  if (!parseDocumentReferenceDocumentReferenceContextComponentContent(eventType, xpp, owner, res))
8615        unknownContent(xpp);
8616      eventType = nextNoWhitespace(xpp);
8617    }
8618    next(xpp);
8619    parseElementClose(res);
8620    return res;
8621  }
8622
8623  protected boolean parseDocumentReferenceDocumentReferenceContextComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8624      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8625        res.getEncounter().add(parseReference(xpp));
8626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
8627        res.getEvent().add(parseCodeableConcept(xpp));
8628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8629        res.setPeriod(parsePeriod(xpp));
8630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
8631        res.setFacilityType(parseCodeableConcept(xpp));
8632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
8633        res.setPracticeSetting(parseCodeableConcept(xpp));
8634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
8635        res.setSourcePatientInfo(parseReference(xpp));
8636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8637        res.getRelated().add(parseReference(xpp));
8638      } else if (!parseBackboneElementContent(eventType, xpp, res))
8639        return false;
8640    return true;
8641  }
8642
8643  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8644    Encounter res = new Encounter();
8645    parseDomainResourceAttributes(xpp, res);
8646    next(xpp);
8647    int eventType = nextNoWhitespace(xpp);
8648    while (eventType != XmlPullParser.END_TAG) {
8649  if (!parseEncounterContent(eventType, xpp, res))
8650        unknownContent(xpp);
8651      eventType = nextNoWhitespace(xpp);
8652    }
8653    next(xpp);
8654    parseElementClose(res);
8655    return res;
8656  }
8657
8658  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
8659      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8660        res.getIdentifier().add(parseIdentifier(xpp));
8661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8662        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
8663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
8664        res.getStatusHistory().add(parseEncounterStatusHistoryComponent(xpp, res));
8665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
8666        res.setClass_(parseCoding(xpp));
8667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classHistory")) {
8668        res.getClassHistory().add(parseEncounterClassHistoryComponent(xpp, res));
8669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8670        res.getType().add(parseCodeableConcept(xpp));
8671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
8672        res.setServiceType(parseCodeableConcept(xpp));
8673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8674        res.setPriority(parseCodeableConcept(xpp));
8675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8676        res.setSubject(parseReference(xpp));
8677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
8678        res.getEpisodeOfCare().add(parseReference(xpp));
8679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8680        res.getBasedOn().add(parseReference(xpp));
8681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
8682        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
8683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
8684        res.setAppointment(parseReference(xpp));
8685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8686        res.setPeriod(parsePeriod(xpp));
8687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
8688        res.setLength(parseDuration(xpp));
8689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8690        res.getReason().add(parseCodeableConcept(xpp));
8691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
8692        res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp, res));
8693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
8694        res.getAccount().add(parseReference(xpp));
8695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
8696        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
8697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8698        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
8699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
8700        res.setServiceProvider(parseReference(xpp));
8701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
8702        res.setPartOf(parseReference(xpp));
8703      } else if (!parseDomainResourceContent(eventType, xpp, res))
8704        return false;
8705    return true;
8706  }
8707
8708  protected Encounter.StatusHistoryComponent parseEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8709    Encounter.StatusHistoryComponent res = new Encounter.StatusHistoryComponent();
8710    parseBackboneAttributes(xpp, res);
8711    next(xpp);
8712    int eventType = nextNoWhitespace(xpp);
8713    while (eventType != XmlPullParser.END_TAG) {
8714  if (!parseEncounterStatusHistoryComponentContent(eventType, xpp, owner, res))
8715        unknownContent(xpp);
8716      eventType = nextNoWhitespace(xpp);
8717    }
8718    next(xpp);
8719    parseElementClose(res);
8720    return res;
8721  }
8722
8723  protected boolean parseEncounterStatusHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.StatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8724      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8725        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
8726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8727        res.setPeriod(parsePeriod(xpp));
8728      } else if (!parseBackboneElementContent(eventType, xpp, res))
8729        return false;
8730    return true;
8731  }
8732
8733  protected Encounter.ClassHistoryComponent parseEncounterClassHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8734    Encounter.ClassHistoryComponent res = new Encounter.ClassHistoryComponent();
8735    parseBackboneAttributes(xpp, res);
8736    next(xpp);
8737    int eventType = nextNoWhitespace(xpp);
8738    while (eventType != XmlPullParser.END_TAG) {
8739  if (!parseEncounterClassHistoryComponentContent(eventType, xpp, owner, res))
8740        unknownContent(xpp);
8741      eventType = nextNoWhitespace(xpp);
8742    }
8743    next(xpp);
8744    parseElementClose(res);
8745    return res;
8746  }
8747
8748  protected boolean parseEncounterClassHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.ClassHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8749      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
8750        res.setClass_(parseCoding(xpp));
8751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8752        res.setPeriod(parsePeriod(xpp));
8753      } else if (!parseBackboneElementContent(eventType, xpp, res))
8754        return false;
8755    return true;
8756  }
8757
8758  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8759    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
8760    parseBackboneAttributes(xpp, res);
8761    next(xpp);
8762    int eventType = nextNoWhitespace(xpp);
8763    while (eventType != XmlPullParser.END_TAG) {
8764  if (!parseEncounterEncounterParticipantComponentContent(eventType, xpp, owner, res))
8765        unknownContent(xpp);
8766      eventType = nextNoWhitespace(xpp);
8767    }
8768    next(xpp);
8769    parseElementClose(res);
8770    return res;
8771  }
8772
8773  protected boolean parseEncounterEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8774      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8775        res.getType().add(parseCodeableConcept(xpp));
8776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8777        res.setPeriod(parsePeriod(xpp));
8778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
8779        res.setIndividual(parseReference(xpp));
8780      } else if (!parseBackboneElementContent(eventType, xpp, res))
8781        return false;
8782    return true;
8783  }
8784
8785  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8786    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
8787    parseBackboneAttributes(xpp, res);
8788    next(xpp);
8789    int eventType = nextNoWhitespace(xpp);
8790    while (eventType != XmlPullParser.END_TAG) {
8791  if (!parseEncounterDiagnosisComponentContent(eventType, xpp, owner, res))
8792        unknownContent(xpp);
8793      eventType = nextNoWhitespace(xpp);
8794    }
8795    next(xpp);
8796    parseElementClose(res);
8797    return res;
8798  }
8799
8800  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8801      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
8802        res.setCondition(parseReference(xpp));
8803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8804        res.setRole(parseCodeableConcept(xpp));
8805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
8806        res.setRankElement(parsePositiveInt(xpp));
8807      } else if (!parseBackboneElementContent(eventType, xpp, res))
8808        return false;
8809    return true;
8810  }
8811
8812  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8813    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
8814    parseBackboneAttributes(xpp, res);
8815    next(xpp);
8816    int eventType = nextNoWhitespace(xpp);
8817    while (eventType != XmlPullParser.END_TAG) {
8818  if (!parseEncounterEncounterHospitalizationComponentContent(eventType, xpp, owner, res))
8819        unknownContent(xpp);
8820      eventType = nextNoWhitespace(xpp);
8821    }
8822    next(xpp);
8823    parseElementClose(res);
8824    return res;
8825  }
8826
8827  protected boolean parseEncounterEncounterHospitalizationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterHospitalizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8828      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
8829        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
8830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
8831        res.setOrigin(parseReference(xpp));
8832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
8833        res.setAdmitSource(parseCodeableConcept(xpp));
8834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
8835        res.setReAdmission(parseCodeableConcept(xpp));
8836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
8837        res.getDietPreference().add(parseCodeableConcept(xpp));
8838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
8839        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
8840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
8841        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
8842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
8843        res.setDestination(parseReference(xpp));
8844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
8845        res.setDischargeDisposition(parseCodeableConcept(xpp));
8846      } else if (!parseBackboneElementContent(eventType, xpp, res))
8847        return false;
8848    return true;
8849  }
8850
8851  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8852    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
8853    parseBackboneAttributes(xpp, res);
8854    next(xpp);
8855    int eventType = nextNoWhitespace(xpp);
8856    while (eventType != XmlPullParser.END_TAG) {
8857  if (!parseEncounterEncounterLocationComponentContent(eventType, xpp, owner, res))
8858        unknownContent(xpp);
8859      eventType = nextNoWhitespace(xpp);
8860    }
8861    next(xpp);
8862    parseElementClose(res);
8863    return res;
8864  }
8865
8866  protected boolean parseEncounterEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8867      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8868        res.setLocation(parseReference(xpp));
8869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8870        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
8871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8872        res.setPeriod(parsePeriod(xpp));
8873      } else if (!parseBackboneElementContent(eventType, xpp, res))
8874        return false;
8875    return true;
8876  }
8877
8878  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8879    Endpoint res = new Endpoint();
8880    parseDomainResourceAttributes(xpp, res);
8881    next(xpp);
8882    int eventType = nextNoWhitespace(xpp);
8883    while (eventType != XmlPullParser.END_TAG) {
8884  if (!parseEndpointContent(eventType, xpp, res))
8885        unknownContent(xpp);
8886      eventType = nextNoWhitespace(xpp);
8887    }
8888    next(xpp);
8889    parseElementClose(res);
8890    return res;
8891  }
8892
8893  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
8894      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8895        res.getIdentifier().add(parseIdentifier(xpp));
8896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8897        res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
8898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
8899        res.setConnectionType(parseCoding(xpp));
8900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8901        res.setNameElement(parseString(xpp));
8902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
8903        res.setManagingOrganization(parseReference(xpp));
8904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8905        res.getContact().add(parseContactPoint(xpp));
8906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8907        res.setPeriod(parsePeriod(xpp));
8908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadType")) {
8909        res.getPayloadType().add(parseCodeableConcept(xpp));
8910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadMimeType")) {
8911        res.getPayloadMimeType().add(parseCode(xpp));
8912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
8913        res.setAddressElement(parseUrl(xpp));
8914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
8915        res.getHeader().add(parseString(xpp));
8916      } else if (!parseDomainResourceContent(eventType, xpp, res))
8917        return false;
8918    return true;
8919  }
8920
8921  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8922    EnrollmentRequest res = new EnrollmentRequest();
8923    parseDomainResourceAttributes(xpp, res);
8924    next(xpp);
8925    int eventType = nextNoWhitespace(xpp);
8926    while (eventType != XmlPullParser.END_TAG) {
8927  if (!parseEnrollmentRequestContent(eventType, xpp, res))
8928        unknownContent(xpp);
8929      eventType = nextNoWhitespace(xpp);
8930    }
8931    next(xpp);
8932    parseElementClose(res);
8933    return res;
8934  }
8935
8936  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
8937      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8938        res.getIdentifier().add(parseIdentifier(xpp));
8939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8940        res.setStatusElement(parseEnumeration(xpp, EnrollmentRequest.EnrollmentRequestStatus.NULL, new EnrollmentRequest.EnrollmentRequestStatusEnumFactory()));
8941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8942        res.setCreatedElement(parseDateTime(xpp));
8943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
8944        res.setInsurer(parseReference(xpp));
8945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8946        res.setProvider(parseReference(xpp));
8947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("candidate")) {
8948        res.setCandidate(parseReference(xpp));
8949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
8950        res.setCoverage(parseReference(xpp));
8951      } else if (!parseDomainResourceContent(eventType, xpp, res))
8952        return false;
8953    return true;
8954  }
8955
8956  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8957    EnrollmentResponse res = new EnrollmentResponse();
8958    parseDomainResourceAttributes(xpp, res);
8959    next(xpp);
8960    int eventType = nextNoWhitespace(xpp);
8961    while (eventType != XmlPullParser.END_TAG) {
8962  if (!parseEnrollmentResponseContent(eventType, xpp, res))
8963        unknownContent(xpp);
8964      eventType = nextNoWhitespace(xpp);
8965    }
8966    next(xpp);
8967    parseElementClose(res);
8968    return res;
8969  }
8970
8971  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
8972      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8973        res.getIdentifier().add(parseIdentifier(xpp));
8974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8975        res.setStatusElement(parseEnumeration(xpp, EnrollmentResponse.EnrollmentResponseStatus.NULL, new EnrollmentResponse.EnrollmentResponseStatusEnumFactory()));
8976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8977        res.setRequest(parseReference(xpp));
8978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8979        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
8980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8981        res.setDispositionElement(parseString(xpp));
8982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8983        res.setCreatedElement(parseDateTime(xpp));
8984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8985        res.setOrganization(parseReference(xpp));
8986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
8987        res.setRequestProvider(parseReference(xpp));
8988      } else if (!parseDomainResourceContent(eventType, xpp, res))
8989        return false;
8990    return true;
8991  }
8992
8993  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8994    EpisodeOfCare res = new EpisodeOfCare();
8995    parseDomainResourceAttributes(xpp, res);
8996    next(xpp);
8997    int eventType = nextNoWhitespace(xpp);
8998    while (eventType != XmlPullParser.END_TAG) {
8999  if (!parseEpisodeOfCareContent(eventType, xpp, res))
9000        unknownContent(xpp);
9001      eventType = nextNoWhitespace(xpp);
9002    }
9003    next(xpp);
9004    parseElementClose(res);
9005    return res;
9006  }
9007
9008  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
9009      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9010        res.getIdentifier().add(parseIdentifier(xpp));
9011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9012        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
9013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
9014        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
9015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9016        res.getType().add(parseCodeableConcept(xpp));
9017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
9018        res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp, res));
9019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9020        res.setPatient(parseReference(xpp));
9021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
9022        res.setManagingOrganization(parseReference(xpp));
9023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9024        res.setPeriod(parsePeriod(xpp));
9025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
9026        res.getReferralRequest().add(parseReference(xpp));
9027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
9028        res.setCareManager(parseReference(xpp));
9029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
9030        res.getTeam().add(parseReference(xpp));
9031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
9032        res.getAccount().add(parseReference(xpp));
9033      } else if (!parseDomainResourceContent(eventType, xpp, res))
9034        return false;
9035    return true;
9036  }
9037
9038  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
9039    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
9040    parseBackboneAttributes(xpp, res);
9041    next(xpp);
9042    int eventType = nextNoWhitespace(xpp);
9043    while (eventType != XmlPullParser.END_TAG) {
9044  if (!parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, owner, res))
9045        unknownContent(xpp);
9046      eventType = nextNoWhitespace(xpp);
9047    }
9048    next(xpp);
9049    parseElementClose(res);
9050    return res;
9051  }
9052
9053  protected boolean parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9054      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9055        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
9056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9057        res.setPeriod(parsePeriod(xpp));
9058      } else if (!parseBackboneElementContent(eventType, xpp, res))
9059        return false;
9060    return true;
9061  }
9062
9063  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
9064    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
9065    parseBackboneAttributes(xpp, res);
9066    next(xpp);
9067    int eventType = nextNoWhitespace(xpp);
9068    while (eventType != XmlPullParser.END_TAG) {
9069  if (!parseEpisodeOfCareDiagnosisComponentContent(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 parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9079      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
9080        res.setCondition(parseReference(xpp));
9081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9082        res.setRole(parseCodeableConcept(xpp));
9083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
9084        res.setRankElement(parsePositiveInt(xpp));
9085      } else if (!parseBackboneElementContent(eventType, xpp, res))
9086        return false;
9087    return true;
9088  }
9089
9090  protected EventDefinition parseEventDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9091    EventDefinition res = new EventDefinition();
9092    parseDomainResourceAttributes(xpp, res);
9093    next(xpp);
9094    int eventType = nextNoWhitespace(xpp);
9095    while (eventType != XmlPullParser.END_TAG) {
9096  if (!parseEventDefinitionContent(eventType, xpp, res))
9097        unknownContent(xpp);
9098      eventType = nextNoWhitespace(xpp);
9099    }
9100    next(xpp);
9101    parseElementClose(res);
9102    return res;
9103  }
9104
9105  protected boolean parseEventDefinitionContent(int eventType, XmlPullParser xpp, EventDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
9106      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9107        res.setUrlElement(parseUri(xpp));
9108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9109        res.getIdentifier().add(parseIdentifier(xpp));
9110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9111        res.setVersionElement(parseString(xpp));
9112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9113        res.setNameElement(parseString(xpp));
9114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9115        res.setTitleElement(parseString(xpp));
9116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9117        res.setSubtitleElement(parseString(xpp));
9118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9119        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9121        res.setExperimentalElement(parseBoolean(xpp));
9122      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
9123        res.setSubject(parseType("subject", xpp));
9124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9125        res.setDateElement(parseDateTime(xpp));
9126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9127        res.setPublisherElement(parseString(xpp));
9128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9129        res.getContact().add(parseContactDetail(xpp));
9130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9131        res.setDescriptionElement(parseMarkdown(xpp));
9132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9133        res.getUseContext().add(parseUsageContext(xpp));
9134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9135        res.getJurisdiction().add(parseCodeableConcept(xpp));
9136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9137        res.setPurposeElement(parseMarkdown(xpp));
9138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
9139        res.setUsageElement(parseString(xpp));
9140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9141        res.setCopyrightElement(parseMarkdown(xpp));
9142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9143        res.setApprovalDateElement(parseDate(xpp));
9144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9145        res.setLastReviewDateElement(parseDate(xpp));
9146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9147        res.setEffectivePeriod(parsePeriod(xpp));
9148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9149        res.getTopic().add(parseCodeableConcept(xpp));
9150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9151        res.getAuthor().add(parseContactDetail(xpp));
9152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9153        res.getEditor().add(parseContactDetail(xpp));
9154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9155        res.getReviewer().add(parseContactDetail(xpp));
9156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9157        res.getEndorser().add(parseContactDetail(xpp));
9158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9159        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
9161        res.setTrigger(parseTriggerDefinition(xpp));
9162      } else if (!parseDomainResourceContent(eventType, xpp, res))
9163        return false;
9164    return true;
9165  }
9166
9167  protected ExampleScenario parseExampleScenario(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9168    ExampleScenario res = new ExampleScenario();
9169    parseDomainResourceAttributes(xpp, res);
9170    next(xpp);
9171    int eventType = nextNoWhitespace(xpp);
9172    while (eventType != XmlPullParser.END_TAG) {
9173  if (!parseExampleScenarioContent(eventType, xpp, res))
9174        unknownContent(xpp);
9175      eventType = nextNoWhitespace(xpp);
9176    }
9177    next(xpp);
9178    parseElementClose(res);
9179    return res;
9180  }
9181
9182  protected boolean parseExampleScenarioContent(int eventType, XmlPullParser xpp, ExampleScenario res) throws XmlPullParserException, IOException, FHIRFormatError {
9183      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9184        res.setUrlElement(parseUri(xpp));
9185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9186        res.getIdentifier().add(parseIdentifier(xpp));
9187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9188        res.setVersionElement(parseString(xpp));
9189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9190        res.setNameElement(parseString(xpp));
9191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9192        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9194        res.setExperimentalElement(parseBoolean(xpp));
9195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9196        res.setDateElement(parseDateTime(xpp));
9197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9198        res.setPublisherElement(parseString(xpp));
9199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9200        res.getContact().add(parseContactDetail(xpp));
9201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9202        res.getUseContext().add(parseUsageContext(xpp));
9203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9204        res.getJurisdiction().add(parseCodeableConcept(xpp));
9205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9206        res.setCopyrightElement(parseMarkdown(xpp));
9207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9208        res.setPurposeElement(parseMarkdown(xpp));
9209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
9210        res.getActor().add(parseExampleScenarioExampleScenarioActorComponent(xpp, res));
9211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9212        res.getInstance().add(parseExampleScenarioExampleScenarioInstanceComponent(xpp, res));
9213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
9214        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, res));
9215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workflow")) {
9216        res.getWorkflow().add(parseCanonical(xpp));
9217      } else if (!parseDomainResourceContent(eventType, xpp, res))
9218        return false;
9219    return true;
9220  }
9221
9222  protected ExampleScenario.ExampleScenarioActorComponent parseExampleScenarioExampleScenarioActorComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9223    ExampleScenario.ExampleScenarioActorComponent res = new ExampleScenario.ExampleScenarioActorComponent();
9224    parseBackboneAttributes(xpp, res);
9225    next(xpp);
9226    int eventType = nextNoWhitespace(xpp);
9227    while (eventType != XmlPullParser.END_TAG) {
9228  if (!parseExampleScenarioExampleScenarioActorComponentContent(eventType, xpp, owner, res))
9229        unknownContent(xpp);
9230      eventType = nextNoWhitespace(xpp);
9231    }
9232    next(xpp);
9233    parseElementClose(res);
9234    return res;
9235  }
9236
9237  protected boolean parseExampleScenarioExampleScenarioActorComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9238      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actorId")) {
9239        res.setActorIdElement(parseString(xpp));
9240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9241        res.setTypeElement(parseEnumeration(xpp, ExampleScenario.ExampleScenarioActorType.NULL, new ExampleScenario.ExampleScenarioActorTypeEnumFactory()));
9242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9243        res.setNameElement(parseString(xpp));
9244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9245        res.setDescriptionElement(parseMarkdown(xpp));
9246      } else if (!parseBackboneElementContent(eventType, xpp, res))
9247        return false;
9248    return true;
9249  }
9250
9251  protected ExampleScenario.ExampleScenarioInstanceComponent parseExampleScenarioExampleScenarioInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9252    ExampleScenario.ExampleScenarioInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceComponent();
9253    parseBackboneAttributes(xpp, res);
9254    next(xpp);
9255    int eventType = nextNoWhitespace(xpp);
9256    while (eventType != XmlPullParser.END_TAG) {
9257  if (!parseExampleScenarioExampleScenarioInstanceComponentContent(eventType, xpp, owner, res))
9258        unknownContent(xpp);
9259      eventType = nextNoWhitespace(xpp);
9260    }
9261    next(xpp);
9262    parseElementClose(res);
9263    return res;
9264  }
9265
9266  protected boolean parseExampleScenarioExampleScenarioInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9267      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
9268        res.setResourceIdElement(parseString(xpp));
9269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
9270        res.setResourceTypeElement(parseEnumeration(xpp, ExampleScenario.FHIRResourceType.NULL, new ExampleScenario.FHIRResourceTypeEnumFactory()));
9271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9272        res.setNameElement(parseString(xpp));
9273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9274        res.setDescriptionElement(parseMarkdown(xpp));
9275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9276        res.getVersion().add(parseExampleScenarioExampleScenarioInstanceVersionComponent(xpp, owner));
9277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedInstance")) {
9278        res.getContainedInstance().add(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9279      } else if (!parseBackboneElementContent(eventType, xpp, res))
9280        return false;
9281    return true;
9282  }
9283
9284  protected ExampleScenario.ExampleScenarioInstanceVersionComponent parseExampleScenarioExampleScenarioInstanceVersionComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9285    ExampleScenario.ExampleScenarioInstanceVersionComponent res = new ExampleScenario.ExampleScenarioInstanceVersionComponent();
9286    parseBackboneAttributes(xpp, res);
9287    next(xpp);
9288    int eventType = nextNoWhitespace(xpp);
9289    while (eventType != XmlPullParser.END_TAG) {
9290  if (!parseExampleScenarioExampleScenarioInstanceVersionComponentContent(eventType, xpp, owner, res))
9291        unknownContent(xpp);
9292      eventType = nextNoWhitespace(xpp);
9293    }
9294    next(xpp);
9295    parseElementClose(res);
9296    return res;
9297  }
9298
9299  protected boolean parseExampleScenarioExampleScenarioInstanceVersionComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9300      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
9301        res.setVersionIdElement(parseString(xpp));
9302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9303        res.setDescriptionElement(parseMarkdown(xpp));
9304      } else if (!parseBackboneElementContent(eventType, xpp, res))
9305        return false;
9306    return true;
9307  }
9308
9309  protected ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9310    ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent();
9311    parseBackboneAttributes(xpp, res);
9312    next(xpp);
9313    int eventType = nextNoWhitespace(xpp);
9314    while (eventType != XmlPullParser.END_TAG) {
9315  if (!parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(eventType, xpp, owner, res))
9316        unknownContent(xpp);
9317      eventType = nextNoWhitespace(xpp);
9318    }
9319    next(xpp);
9320    parseElementClose(res);
9321    return res;
9322  }
9323
9324  protected boolean parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9325      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
9326        res.setResourceIdElement(parseString(xpp));
9327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
9328        res.setVersionIdElement(parseString(xpp));
9329      } else if (!parseBackboneElementContent(eventType, xpp, res))
9330        return false;
9331    return true;
9332  }
9333
9334  protected ExampleScenario.ExampleScenarioProcessComponent parseExampleScenarioExampleScenarioProcessComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9335    ExampleScenario.ExampleScenarioProcessComponent res = new ExampleScenario.ExampleScenarioProcessComponent();
9336    parseBackboneAttributes(xpp, res);
9337    next(xpp);
9338    int eventType = nextNoWhitespace(xpp);
9339    while (eventType != XmlPullParser.END_TAG) {
9340  if (!parseExampleScenarioExampleScenarioProcessComponentContent(eventType, xpp, owner, res))
9341        unknownContent(xpp);
9342      eventType = nextNoWhitespace(xpp);
9343    }
9344    next(xpp);
9345    parseElementClose(res);
9346    return res;
9347  }
9348
9349  protected boolean parseExampleScenarioExampleScenarioProcessComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9350      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9351        res.setTitleElement(parseString(xpp));
9352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9353        res.setDescriptionElement(parseMarkdown(xpp));
9354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preConditions")) {
9355        res.setPreConditionsElement(parseMarkdown(xpp));
9356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postConditions")) {
9357        res.setPostConditionsElement(parseMarkdown(xpp));
9358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
9359        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
9360      } else if (!parseBackboneElementContent(eventType, xpp, res))
9361        return false;
9362    return true;
9363  }
9364
9365  protected ExampleScenario.ExampleScenarioProcessStepComponent parseExampleScenarioExampleScenarioProcessStepComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9366    ExampleScenario.ExampleScenarioProcessStepComponent res = new ExampleScenario.ExampleScenarioProcessStepComponent();
9367    parseBackboneAttributes(xpp, res);
9368    next(xpp);
9369    int eventType = nextNoWhitespace(xpp);
9370    while (eventType != XmlPullParser.END_TAG) {
9371  if (!parseExampleScenarioExampleScenarioProcessStepComponentContent(eventType, xpp, owner, res))
9372        unknownContent(xpp);
9373      eventType = nextNoWhitespace(xpp);
9374    }
9375    next(xpp);
9376    parseElementClose(res);
9377    return res;
9378  }
9379
9380  protected boolean parseExampleScenarioExampleScenarioProcessStepComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9381      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
9382        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, owner));
9383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pause")) {
9384        res.setPauseElement(parseBoolean(xpp));
9385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
9386        res.setOperation(parseExampleScenarioExampleScenarioProcessStepOperationComponent(xpp, owner));
9387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternative")) {
9388        res.setAlternative(parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(xpp, owner));
9389      } else if (!parseBackboneElementContent(eventType, xpp, res))
9390        return false;
9391    return true;
9392  }
9393
9394  protected ExampleScenario.ExampleScenarioProcessStepOperationComponent parseExampleScenarioExampleScenarioProcessStepOperationComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9395    ExampleScenario.ExampleScenarioProcessStepOperationComponent res = new ExampleScenario.ExampleScenarioProcessStepOperationComponent();
9396    parseBackboneAttributes(xpp, res);
9397    next(xpp);
9398    int eventType = nextNoWhitespace(xpp);
9399    while (eventType != XmlPullParser.END_TAG) {
9400  if (!parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(eventType, xpp, owner, res))
9401        unknownContent(xpp);
9402      eventType = nextNoWhitespace(xpp);
9403    }
9404    next(xpp);
9405    parseElementClose(res);
9406    return res;
9407  }
9408
9409  protected boolean parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9410      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9411        res.setNumberElement(parseString(xpp));
9412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9413        res.setTypeElement(parseString(xpp));
9414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9415        res.setNameElement(parseString(xpp));
9416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiator")) {
9417        res.setInitiatorElement(parseString(xpp));
9418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
9419        res.setReceiverElement(parseString(xpp));
9420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9421        res.setDescriptionElement(parseMarkdown(xpp));
9422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiatorActive")) {
9423        res.setInitiatorActiveElement(parseBoolean(xpp));
9424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiverActive")) {
9425        res.setReceiverActiveElement(parseBoolean(xpp));
9426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
9427        res.setRequest(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
9429        res.setResponse(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9430      } else if (!parseBackboneElementContent(eventType, xpp, res))
9431        return false;
9432    return true;
9433  }
9434
9435  protected ExampleScenario.ExampleScenarioProcessStepAlternativeComponent parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9436    ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res = new ExampleScenario.ExampleScenarioProcessStepAlternativeComponent();
9437    parseBackboneAttributes(xpp, res);
9438    next(xpp);
9439    int eventType = nextNoWhitespace(xpp);
9440    while (eventType != XmlPullParser.END_TAG) {
9441  if (!parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(eventType, xpp, owner, res))
9442        unknownContent(xpp);
9443      eventType = nextNoWhitespace(xpp);
9444    }
9445    next(xpp);
9446    parseElementClose(res);
9447    return res;
9448  }
9449
9450  protected boolean parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9451      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9452        res.setNameElement(parseString(xpp));
9453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
9454        res.getOption().add(parseExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(xpp, owner));
9455      } else if (!parseBackboneElementContent(eventType, xpp, res))
9456        return false;
9457    return true;
9458  }
9459
9460  protected ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent parseExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9461    ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent res = new ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent();
9462    parseBackboneAttributes(xpp, res);
9463    next(xpp);
9464    int eventType = nextNoWhitespace(xpp);
9465    while (eventType != XmlPullParser.END_TAG) {
9466  if (!parseExampleScenarioExampleScenarioProcessStepAlternativeOptionComponentContent(eventType, xpp, owner, res))
9467        unknownContent(xpp);
9468      eventType = nextNoWhitespace(xpp);
9469    }
9470    next(xpp);
9471    parseElementClose(res);
9472    return res;
9473  }
9474
9475  protected boolean parseExampleScenarioExampleScenarioProcessStepAlternativeOptionComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9476      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9477        res.setDescriptionElement(parseMarkdown(xpp));
9478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
9479        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
9480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pause")) {
9481        res.getPause().add(parseBoolean(xpp));
9482      } else if (!parseBackboneElementContent(eventType, xpp, res))
9483        return false;
9484    return true;
9485  }
9486
9487  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9488    ExplanationOfBenefit res = new ExplanationOfBenefit();
9489    parseDomainResourceAttributes(xpp, res);
9490    next(xpp);
9491    int eventType = nextNoWhitespace(xpp);
9492    while (eventType != XmlPullParser.END_TAG) {
9493  if (!parseExplanationOfBenefitContent(eventType, xpp, res))
9494        unknownContent(xpp);
9495      eventType = nextNoWhitespace(xpp);
9496    }
9497    next(xpp);
9498    parseElementClose(res);
9499    return res;
9500  }
9501
9502  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
9503      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9504        res.getIdentifier().add(parseIdentifier(xpp));
9505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9506        res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
9507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9508        res.setType(parseCodeableConcept(xpp));
9509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
9510        res.setSubType(parseCodeableConcept(xpp));
9511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9512        res.setUseElement(parseEnumeration(xpp, ExplanationOfBenefit.Use.NULL, new ExplanationOfBenefit.UseEnumFactory()));
9513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9514        res.setPatient(parseReference(xpp));
9515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
9516        res.setBillablePeriod(parsePeriod(xpp));
9517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9518        res.setCreatedElement(parseDateTime(xpp));
9519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
9520        res.setEnterer(parseReference(xpp));
9521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
9522        res.setInsurer(parseReference(xpp));
9523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9524        res.setProvider(parseReference(xpp));
9525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
9526        res.setReferral(parseReference(xpp));
9527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
9528        res.setFacility(parseReference(xpp));
9529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
9530        res.setClaim(parseReference(xpp));
9531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
9532        res.setClaimResponse(parseReference(xpp));
9533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9534        res.setOutcomeElement(parseEnumeration(xpp, ExplanationOfBenefit.RemittanceOutcome.NULL, new ExplanationOfBenefit.RemittanceOutcomeEnumFactory()));
9535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
9536        res.setDispositionElement(parseString(xpp));
9537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
9538        res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp, res));
9539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
9540        res.setPrescription(parseReference(xpp));
9541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
9542        res.setOriginalPrescription(parseReference(xpp));
9543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
9544        res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp, res));
9545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
9546        res.getInformation().add(parseExplanationOfBenefitSupportingInformationComponent(xpp, res));
9547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
9548        res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp, res));
9549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
9550        res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp, res));
9551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
9552        res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp, res));
9553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
9554        res.setPrecedenceElement(parsePositiveInt(xpp));
9555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
9556        res.getInsurance().add(parseExplanationOfBenefitInsuranceComponent(xpp, res));
9557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
9558        res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp, res));
9559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
9560        res.getItem().add(parseExplanationOfBenefitItemComponent(xpp, res));
9561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
9562        res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp, res));
9563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
9564        res.getTotal().add(parseExplanationOfBenefitTotalComponent(xpp, res));
9565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
9566        res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp, res));
9567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
9568        res.setForm(parseCodeableConcept(xpp));
9569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
9570        res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp, res));
9571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
9572        res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp, res));
9573      } else if (!parseDomainResourceContent(eventType, xpp, res))
9574        return false;
9575    return true;
9576  }
9577
9578  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9579    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
9580    parseBackboneAttributes(xpp, res);
9581    next(xpp);
9582    int eventType = nextNoWhitespace(xpp);
9583    while (eventType != XmlPullParser.END_TAG) {
9584  if (!parseExplanationOfBenefitRelatedClaimComponentContent(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 parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9594      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
9595        res.setClaim(parseReference(xpp));
9596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
9597        res.setRelationship(parseCodeableConcept(xpp));
9598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
9599        res.setReference(parseIdentifier(xpp));
9600      } else if (!parseBackboneElementContent(eventType, xpp, res))
9601        return false;
9602    return true;
9603  }
9604
9605  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9606    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
9607    parseBackboneAttributes(xpp, res);
9608    next(xpp);
9609    int eventType = nextNoWhitespace(xpp);
9610    while (eventType != XmlPullParser.END_TAG) {
9611  if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, owner, res))
9612        unknownContent(xpp);
9613      eventType = nextNoWhitespace(xpp);
9614    }
9615    next(xpp);
9616    parseElementClose(res);
9617    return res;
9618  }
9619
9620  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9621      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9622        res.setType(parseCodeableConcept(xpp));
9623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
9624        res.setResource(parseCoding(xpp));
9625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
9626        res.setParty(parseReference(xpp));
9627      } else if (!parseBackboneElementContent(eventType, xpp, res))
9628        return false;
9629    return true;
9630  }
9631
9632  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9633    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
9634    parseBackboneAttributes(xpp, res);
9635    next(xpp);
9636    int eventType = nextNoWhitespace(xpp);
9637    while (eventType != XmlPullParser.END_TAG) {
9638  if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, owner, res))
9639        unknownContent(xpp);
9640      eventType = nextNoWhitespace(xpp);
9641    }
9642    next(xpp);
9643    parseElementClose(res);
9644    return res;
9645  }
9646
9647  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9648      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9649        res.setSequenceElement(parsePositiveInt(xpp));
9650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9651        res.setCategory(parseCodeableConcept(xpp));
9652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9653        res.setCode(parseCodeableConcept(xpp));
9654      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
9655        res.setTiming(parseType("timing", xpp));
9656      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9657        res.setValue(parseType("value", xpp));
9658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9659        res.setReason(parseCoding(xpp));
9660      } else if (!parseBackboneElementContent(eventType, xpp, res))
9661        return false;
9662    return true;
9663  }
9664
9665  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9666    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
9667    parseBackboneAttributes(xpp, res);
9668    next(xpp);
9669    int eventType = nextNoWhitespace(xpp);
9670    while (eventType != XmlPullParser.END_TAG) {
9671  if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, owner, res))
9672        unknownContent(xpp);
9673      eventType = nextNoWhitespace(xpp);
9674    }
9675    next(xpp);
9676    parseElementClose(res);
9677    return res;
9678  }
9679
9680  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9681      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9682        res.setSequenceElement(parsePositiveInt(xpp));
9683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9684        res.setProvider(parseReference(xpp));
9685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
9686        res.setResponsibleElement(parseBoolean(xpp));
9687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9688        res.setRole(parseCodeableConcept(xpp));
9689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
9690        res.setQualification(parseCodeableConcept(xpp));
9691      } else if (!parseBackboneElementContent(eventType, xpp, res))
9692        return false;
9693    return true;
9694  }
9695
9696  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9697    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
9698    parseBackboneAttributes(xpp, res);
9699    next(xpp);
9700    int eventType = nextNoWhitespace(xpp);
9701    while (eventType != XmlPullParser.END_TAG) {
9702  if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, owner, res))
9703        unknownContent(xpp);
9704      eventType = nextNoWhitespace(xpp);
9705    }
9706    next(xpp);
9707    parseElementClose(res);
9708    return res;
9709  }
9710
9711  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9712      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9713        res.setSequenceElement(parsePositiveInt(xpp));
9714      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
9715        res.setDiagnosis(parseType("diagnosis", xpp));
9716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9717        res.getType().add(parseCodeableConcept(xpp));
9718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
9719        res.setOnAdmission(parseCodeableConcept(xpp));
9720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
9721        res.setPackageCode(parseCodeableConcept(xpp));
9722      } else if (!parseBackboneElementContent(eventType, xpp, res))
9723        return false;
9724    return true;
9725  }
9726
9727  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9728    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
9729    parseBackboneAttributes(xpp, res);
9730    next(xpp);
9731    int eventType = nextNoWhitespace(xpp);
9732    while (eventType != XmlPullParser.END_TAG) {
9733  if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, owner, res))
9734        unknownContent(xpp);
9735      eventType = nextNoWhitespace(xpp);
9736    }
9737    next(xpp);
9738    parseElementClose(res);
9739    return res;
9740  }
9741
9742  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9744        res.setSequenceElement(parsePositiveInt(xpp));
9745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9746        res.setDateElement(parseDateTime(xpp));
9747      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
9748        res.setProcedure(parseType("procedure", xpp));
9749      } else if (!parseBackboneElementContent(eventType, xpp, res))
9750        return false;
9751    return true;
9752  }
9753
9754  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9755    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
9756    parseBackboneAttributes(xpp, res);
9757    next(xpp);
9758    int eventType = nextNoWhitespace(xpp);
9759    while (eventType != XmlPullParser.END_TAG) {
9760  if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, owner, res))
9761        unknownContent(xpp);
9762      eventType = nextNoWhitespace(xpp);
9763    }
9764    next(xpp);
9765    parseElementClose(res);
9766    return res;
9767  }
9768
9769  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9770      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
9771        res.setFocalElement(parseBoolean(xpp));
9772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
9773        res.setCoverage(parseReference(xpp));
9774      } else if (!parseBackboneElementContent(eventType, xpp, res))
9775        return false;
9776    return true;
9777  }
9778
9779  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9780    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
9781    parseBackboneAttributes(xpp, res);
9782    next(xpp);
9783    int eventType = nextNoWhitespace(xpp);
9784    while (eventType != XmlPullParser.END_TAG) {
9785  if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, owner, res))
9786        unknownContent(xpp);
9787      eventType = nextNoWhitespace(xpp);
9788    }
9789    next(xpp);
9790    parseElementClose(res);
9791    return res;
9792  }
9793
9794  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9795      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9796        res.setDateElement(parseDate(xpp));
9797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9798        res.setType(parseCodeableConcept(xpp));
9799      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
9800        res.setLocation(parseType("location", xpp));
9801      } else if (!parseBackboneElementContent(eventType, xpp, res))
9802        return false;
9803    return true;
9804  }
9805
9806  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9807    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
9808    parseBackboneAttributes(xpp, res);
9809    next(xpp);
9810    int eventType = nextNoWhitespace(xpp);
9811    while (eventType != XmlPullParser.END_TAG) {
9812  if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, owner, res))
9813        unknownContent(xpp);
9814      eventType = nextNoWhitespace(xpp);
9815    }
9816    next(xpp);
9817    parseElementClose(res);
9818    return res;
9819  }
9820
9821  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9822      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9823        res.setSequenceElement(parsePositiveInt(xpp));
9824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
9825        res.getCareTeamSequence().add(parsePositiveInt(xpp));
9826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
9827        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
9828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
9829        res.getProcedureSequence().add(parsePositiveInt(xpp));
9830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
9831        res.getInformationSequence().add(parsePositiveInt(xpp));
9832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
9833        res.setRevenue(parseCodeableConcept(xpp));
9834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9835        res.setCategory(parseCodeableConcept(xpp));
9836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
9837        res.setBillcode(parseCodeableConcept(xpp));
9838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
9839        res.getModifier().add(parseCodeableConcept(xpp));
9840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
9841        res.getProgramCode().add(parseCodeableConcept(xpp));
9842      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
9843        res.setServiced(parseType("serviced", xpp));
9844      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
9845        res.setLocation(parseType("location", xpp));
9846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9847        res.setQuantity(parseQuantity(xpp));
9848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
9849        res.setUnitPrice(parseMoney(xpp));
9850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
9851        res.setFactorElement(parseDecimal(xpp));
9852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
9853        res.setNet(parseMoney(xpp));
9854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
9855        res.getUdi().add(parseReference(xpp));
9856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
9857        res.setBodySite(parseCodeableConcept(xpp));
9858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
9859        res.getSubSite().add(parseCodeableConcept(xpp));
9860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9861        res.getEncounter().add(parseReference(xpp));
9862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
9863        res.getNoteNumber().add(parsePositiveInt(xpp));
9864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
9865        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
9866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
9867        res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp, owner));
9868      } else if (!parseBackboneElementContent(eventType, xpp, res))
9869        return false;
9870    return true;
9871  }
9872
9873  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9874    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
9875    parseBackboneAttributes(xpp, res);
9876    next(xpp);
9877    int eventType = nextNoWhitespace(xpp);
9878    while (eventType != XmlPullParser.END_TAG) {
9879  if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, owner, res))
9880        unknownContent(xpp);
9881      eventType = nextNoWhitespace(xpp);
9882    }
9883    next(xpp);
9884    parseElementClose(res);
9885    return res;
9886  }
9887
9888  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9889      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9890        res.setCategory(parseCodeableConcept(xpp));
9891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9892        res.setReason(parseCodeableConcept(xpp));
9893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
9894        res.setAmount(parseMoney(xpp));
9895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9896        res.setValueElement(parseDecimal(xpp));
9897      } else if (!parseBackboneElementContent(eventType, xpp, res))
9898        return false;
9899    return true;
9900  }
9901
9902  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9903    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
9904    parseBackboneAttributes(xpp, res);
9905    next(xpp);
9906    int eventType = nextNoWhitespace(xpp);
9907    while (eventType != XmlPullParser.END_TAG) {
9908  if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, owner, res))
9909        unknownContent(xpp);
9910      eventType = nextNoWhitespace(xpp);
9911    }
9912    next(xpp);
9913    parseElementClose(res);
9914    return res;
9915  }
9916
9917  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9919        res.setSequenceElement(parsePositiveInt(xpp));
9920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
9921        res.setRevenue(parseCodeableConcept(xpp));
9922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9923        res.setCategory(parseCodeableConcept(xpp));
9924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
9925        res.setBillcode(parseCodeableConcept(xpp));
9926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
9927        res.getModifier().add(parseCodeableConcept(xpp));
9928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
9929        res.getProgramCode().add(parseCodeableConcept(xpp));
9930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9931        res.setQuantity(parseQuantity(xpp));
9932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
9933        res.setUnitPrice(parseMoney(xpp));
9934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
9935        res.setFactorElement(parseDecimal(xpp));
9936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
9937        res.setNet(parseMoney(xpp));
9938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
9939        res.getUdi().add(parseReference(xpp));
9940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
9941        res.getNoteNumber().add(parsePositiveInt(xpp));
9942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
9943        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
9944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
9945        res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp, owner));
9946      } else if (!parseBackboneElementContent(eventType, xpp, res))
9947        return false;
9948    return true;
9949  }
9950
9951  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9952    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
9953    parseBackboneAttributes(xpp, res);
9954    next(xpp);
9955    int eventType = nextNoWhitespace(xpp);
9956    while (eventType != XmlPullParser.END_TAG) {
9957  if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, owner, res))
9958        unknownContent(xpp);
9959      eventType = nextNoWhitespace(xpp);
9960    }
9961    next(xpp);
9962    parseElementClose(res);
9963    return res;
9964  }
9965
9966  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9967      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9968        res.setSequenceElement(parsePositiveInt(xpp));
9969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
9970        res.setRevenue(parseCodeableConcept(xpp));
9971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9972        res.setCategory(parseCodeableConcept(xpp));
9973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
9974        res.setBillcode(parseCodeableConcept(xpp));
9975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
9976        res.getModifier().add(parseCodeableConcept(xpp));
9977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
9978        res.getProgramCode().add(parseCodeableConcept(xpp));
9979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9980        res.setQuantity(parseQuantity(xpp));
9981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
9982        res.setUnitPrice(parseMoney(xpp));
9983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
9984        res.setFactorElement(parseDecimal(xpp));
9985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
9986        res.setNet(parseMoney(xpp));
9987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
9988        res.getUdi().add(parseReference(xpp));
9989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
9990        res.getNoteNumber().add(parsePositiveInt(xpp));
9991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
9992        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
9993      } else if (!parseBackboneElementContent(eventType, xpp, res))
9994        return false;
9995    return true;
9996  }
9997
9998  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
9999    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
10000    parseBackboneAttributes(xpp, res);
10001    next(xpp);
10002    int eventType = nextNoWhitespace(xpp);
10003    while (eventType != XmlPullParser.END_TAG) {
10004  if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, owner, res))
10005        unknownContent(xpp);
10006      eventType = nextNoWhitespace(xpp);
10007    }
10008    next(xpp);
10009    parseElementClose(res);
10010    return res;
10011  }
10012
10013  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10014      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
10015        res.getItemSequence().add(parsePositiveInt(xpp));
10016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
10017        res.getDetailSequence().add(parsePositiveInt(xpp));
10018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
10019        res.getSubDetailSequence().add(parsePositiveInt(xpp));
10020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10021        res.getProvider().add(parseReference(xpp));
10022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
10023        res.setBillcode(parseCodeableConcept(xpp));
10024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10025        res.getModifier().add(parseCodeableConcept(xpp));
10026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10027        res.getProgramCode().add(parseCodeableConcept(xpp));
10028      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
10029        res.setServiced(parseType("serviced", xpp));
10030      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10031        res.setLocation(parseType("location", xpp));
10032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10033        res.setQuantity(parseQuantity(xpp));
10034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10035        res.setUnitPrice(parseMoney(xpp));
10036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10037        res.setFactorElement(parseDecimal(xpp));
10038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10039        res.setNet(parseMoney(xpp));
10040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10041        res.setBodySite(parseCodeableConcept(xpp));
10042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
10043        res.getSubSite().add(parseCodeableConcept(xpp));
10044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10045        res.getNoteNumber().add(parsePositiveInt(xpp));
10046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10047        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10049        res.getDetail().add(parseExplanationOfBenefitAddedItemDetailComponent(xpp, owner));
10050      } else if (!parseBackboneElementContent(eventType, xpp, res))
10051        return false;
10052    return true;
10053  }
10054
10055  protected ExplanationOfBenefit.AddedItemDetailComponent parseExplanationOfBenefitAddedItemDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10056    ExplanationOfBenefit.AddedItemDetailComponent res = new ExplanationOfBenefit.AddedItemDetailComponent();
10057    parseBackboneAttributes(xpp, res);
10058    next(xpp);
10059    int eventType = nextNoWhitespace(xpp);
10060    while (eventType != XmlPullParser.END_TAG) {
10061  if (!parseExplanationOfBenefitAddedItemDetailComponentContent(eventType, xpp, owner, res))
10062        unknownContent(xpp);
10063      eventType = nextNoWhitespace(xpp);
10064    }
10065    next(xpp);
10066    parseElementClose(res);
10067    return res;
10068  }
10069
10070  protected boolean parseExplanationOfBenefitAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10071      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
10072        res.setBillcode(parseCodeableConcept(xpp));
10073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10074        res.getModifier().add(parseCodeableConcept(xpp));
10075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10076        res.setQuantity(parseQuantity(xpp));
10077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10078        res.setUnitPrice(parseMoney(xpp));
10079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10080        res.setFactorElement(parseDecimal(xpp));
10081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10082        res.setNet(parseMoney(xpp));
10083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10084        res.getNoteNumber().add(parsePositiveInt(xpp));
10085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10086        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
10088        res.getSubDetail().add(parseExplanationOfBenefitAddedItemDetailSubDetailComponent(xpp, owner));
10089      } else if (!parseBackboneElementContent(eventType, xpp, res))
10090        return false;
10091    return true;
10092  }
10093
10094  protected ExplanationOfBenefit.AddedItemDetailSubDetailComponent parseExplanationOfBenefitAddedItemDetailSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10095    ExplanationOfBenefit.AddedItemDetailSubDetailComponent res = new ExplanationOfBenefit.AddedItemDetailSubDetailComponent();
10096    parseBackboneAttributes(xpp, res);
10097    next(xpp);
10098    int eventType = nextNoWhitespace(xpp);
10099    while (eventType != XmlPullParser.END_TAG) {
10100  if (!parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(eventType, xpp, owner, res))
10101        unknownContent(xpp);
10102      eventType = nextNoWhitespace(xpp);
10103    }
10104    next(xpp);
10105    parseElementClose(res);
10106    return res;
10107  }
10108
10109  protected boolean parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemDetailSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10110      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billcode")) {
10111        res.setBillcode(parseCodeableConcept(xpp));
10112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10113        res.getModifier().add(parseCodeableConcept(xpp));
10114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10115        res.setQuantity(parseQuantity(xpp));
10116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10117        res.setUnitPrice(parseMoney(xpp));
10118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10119        res.setFactorElement(parseDecimal(xpp));
10120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10121        res.setNet(parseMoney(xpp));
10122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10123        res.getNoteNumber().add(parsePositiveInt(xpp));
10124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10125        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10126      } else if (!parseBackboneElementContent(eventType, xpp, res))
10127        return false;
10128    return true;
10129  }
10130
10131  protected ExplanationOfBenefit.TotalComponent parseExplanationOfBenefitTotalComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10132    ExplanationOfBenefit.TotalComponent res = new ExplanationOfBenefit.TotalComponent();
10133    parseBackboneAttributes(xpp, res);
10134    next(xpp);
10135    int eventType = nextNoWhitespace(xpp);
10136    while (eventType != XmlPullParser.END_TAG) {
10137  if (!parseExplanationOfBenefitTotalComponentContent(eventType, xpp, owner, res))
10138        unknownContent(xpp);
10139      eventType = nextNoWhitespace(xpp);
10140    }
10141    next(xpp);
10142    parseElementClose(res);
10143    return res;
10144  }
10145
10146  protected boolean parseExplanationOfBenefitTotalComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10147      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10148        res.setCategory(parseCodeableConcept(xpp));
10149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10150        res.setAmount(parseMoney(xpp));
10151      } else if (!parseBackboneElementContent(eventType, xpp, res))
10152        return false;
10153    return true;
10154  }
10155
10156  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10157    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
10158    parseBackboneAttributes(xpp, res);
10159    next(xpp);
10160    int eventType = nextNoWhitespace(xpp);
10161    while (eventType != XmlPullParser.END_TAG) {
10162  if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, owner, res))
10163        unknownContent(xpp);
10164      eventType = nextNoWhitespace(xpp);
10165    }
10166    next(xpp);
10167    parseElementClose(res);
10168    return res;
10169  }
10170
10171  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10172      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10173        res.setType(parseCodeableConcept(xpp));
10174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
10175        res.setAdjustment(parseMoney(xpp));
10176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
10177        res.setAdjustmentReason(parseCodeableConcept(xpp));
10178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10179        res.setDateElement(parseDate(xpp));
10180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10181        res.setAmount(parseMoney(xpp));
10182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10183        res.setIdentifier(parseIdentifier(xpp));
10184      } else if (!parseBackboneElementContent(eventType, xpp, res))
10185        return false;
10186    return true;
10187  }
10188
10189  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10190    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
10191    parseBackboneAttributes(xpp, res);
10192    next(xpp);
10193    int eventType = nextNoWhitespace(xpp);
10194    while (eventType != XmlPullParser.END_TAG) {
10195  if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, owner, res))
10196        unknownContent(xpp);
10197      eventType = nextNoWhitespace(xpp);
10198    }
10199    next(xpp);
10200    parseElementClose(res);
10201    return res;
10202  }
10203
10204  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10205      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
10206        res.setNumberElement(parsePositiveInt(xpp));
10207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10208        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
10209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
10210        res.setTextElement(parseString(xpp));
10211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
10212        res.setLanguage(parseCodeableConcept(xpp));
10213      } else if (!parseBackboneElementContent(eventType, xpp, res))
10214        return false;
10215    return true;
10216  }
10217
10218  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10219    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
10220    parseBackboneAttributes(xpp, res);
10221    next(xpp);
10222    int eventType = nextNoWhitespace(xpp);
10223    while (eventType != XmlPullParser.END_TAG) {
10224  if (!parseExplanationOfBenefitBenefitBalanceComponentContent(eventType, xpp, owner, res))
10225        unknownContent(xpp);
10226      eventType = nextNoWhitespace(xpp);
10227    }
10228    next(xpp);
10229    parseElementClose(res);
10230    return res;
10231  }
10232
10233  protected boolean parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10234      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10235        res.setCategory(parseCodeableConcept(xpp));
10236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
10237        res.setExcludedElement(parseBoolean(xpp));
10238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10239        res.setNameElement(parseString(xpp));
10240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10241        res.setDescriptionElement(parseString(xpp));
10242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
10243        res.setNetwork(parseCodeableConcept(xpp));
10244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
10245        res.setUnit(parseCodeableConcept(xpp));
10246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
10247        res.setTerm(parseCodeableConcept(xpp));
10248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
10249        res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp, owner));
10250      } else if (!parseBackboneElementContent(eventType, xpp, res))
10251        return false;
10252    return true;
10253  }
10254
10255  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10256    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
10257    parseBackboneAttributes(xpp, res);
10258    next(xpp);
10259    int eventType = nextNoWhitespace(xpp);
10260    while (eventType != XmlPullParser.END_TAG) {
10261  if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, owner, res))
10262        unknownContent(xpp);
10263      eventType = nextNoWhitespace(xpp);
10264    }
10265    next(xpp);
10266    parseElementClose(res);
10267    return res;
10268  }
10269
10270  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10271      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10272        res.setType(parseCodeableConcept(xpp));
10273      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
10274        res.setAllowed(parseType("allowed", xpp));
10275      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
10276        res.setUsed(parseType("used", xpp));
10277      } else if (!parseBackboneElementContent(eventType, xpp, res))
10278        return false;
10279    return true;
10280  }
10281
10282  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10283    FamilyMemberHistory res = new FamilyMemberHistory();
10284    parseDomainResourceAttributes(xpp, res);
10285    next(xpp);
10286    int eventType = nextNoWhitespace(xpp);
10287    while (eventType != XmlPullParser.END_TAG) {
10288  if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
10289        unknownContent(xpp);
10290      eventType = nextNoWhitespace(xpp);
10291    }
10292    next(xpp);
10293    parseElementClose(res);
10294    return res;
10295  }
10296
10297  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
10298      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10299        res.getIdentifier().add(parseIdentifier(xpp));
10300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
10301        res.getInstantiatesCanonical().add(parseCanonical(xpp));
10302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
10303        res.getInstantiatesUri().add(parseUri(xpp));
10304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10305        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
10306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
10307        res.setDataAbsentReason(parseCodeableConcept(xpp));
10308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10309        res.setPatient(parseReference(xpp));
10310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10311        res.setDateElement(parseDateTime(xpp));
10312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10313        res.setNameElement(parseString(xpp));
10314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
10315        res.setRelationship(parseCodeableConcept(xpp));
10316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
10317        res.setGender(parseCodeableConcept(xpp));
10318      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
10319        res.setBorn(parseType("born", xpp));
10320      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
10321        res.setAge(parseType("age", xpp));
10322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
10323        res.setEstimatedAgeElement(parseBoolean(xpp));
10324      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
10325        res.setDeceased(parseType("deceased", xpp));
10326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10327        res.getReasonCode().add(parseCodeableConcept(xpp));
10328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10329        res.getReasonReference().add(parseReference(xpp));
10330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10331        res.getNote().add(parseAnnotation(xpp));
10332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
10333        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
10334      } else if (!parseDomainResourceContent(eventType, xpp, res))
10335        return false;
10336    return true;
10337  }
10338
10339  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
10340    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
10341    parseBackboneAttributes(xpp, res);
10342    next(xpp);
10343    int eventType = nextNoWhitespace(xpp);
10344    while (eventType != XmlPullParser.END_TAG) {
10345  if (!parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(eventType, xpp, owner, res))
10346        unknownContent(xpp);
10347      eventType = nextNoWhitespace(xpp);
10348    }
10349    next(xpp);
10350    parseElementClose(res);
10351    return res;
10352  }
10353
10354  protected boolean parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory owner, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10355      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10356        res.setCode(parseCodeableConcept(xpp));
10357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
10358        res.setOutcome(parseCodeableConcept(xpp));
10359      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
10360        res.setOnset(parseType("onset", xpp));
10361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10362        res.getNote().add(parseAnnotation(xpp));
10363      } else if (!parseBackboneElementContent(eventType, xpp, res))
10364        return false;
10365    return true;
10366  }
10367
10368  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10369    Flag res = new Flag();
10370    parseDomainResourceAttributes(xpp, res);
10371    next(xpp);
10372    int eventType = nextNoWhitespace(xpp);
10373    while (eventType != XmlPullParser.END_TAG) {
10374  if (!parseFlagContent(eventType, xpp, res))
10375        unknownContent(xpp);
10376      eventType = nextNoWhitespace(xpp);
10377    }
10378    next(xpp);
10379    parseElementClose(res);
10380    return res;
10381  }
10382
10383  protected boolean parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
10384      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10385        res.getIdentifier().add(parseIdentifier(xpp));
10386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10387        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
10388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10389        res.getCategory().add(parseCodeableConcept(xpp));
10390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10391        res.setCode(parseCodeableConcept(xpp));
10392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10393        res.setSubject(parseReference(xpp));
10394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10395        res.setPeriod(parsePeriod(xpp));
10396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10397        res.setEncounter(parseReference(xpp));
10398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10399        res.setAuthor(parseReference(xpp));
10400      } else if (!parseDomainResourceContent(eventType, xpp, res))
10401        return false;
10402    return true;
10403  }
10404
10405  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10406    Goal res = new Goal();
10407    parseDomainResourceAttributes(xpp, res);
10408    next(xpp);
10409    int eventType = nextNoWhitespace(xpp);
10410    while (eventType != XmlPullParser.END_TAG) {
10411  if (!parseGoalContent(eventType, xpp, res))
10412        unknownContent(xpp);
10413      eventType = nextNoWhitespace(xpp);
10414    }
10415    next(xpp);
10416    parseElementClose(res);
10417    return res;
10418  }
10419
10420  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
10421      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10422        res.getIdentifier().add(parseIdentifier(xpp));
10423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10424        res.setStatusElement(parseEnumeration(xpp, Goal.GoalStatus.NULL, new Goal.GoalStatusEnumFactory()));
10425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10426        res.getCategory().add(parseCodeableConcept(xpp));
10427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
10428        res.setPriority(parseCodeableConcept(xpp));
10429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10430        res.setDescription(parseCodeableConcept(xpp));
10431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10432        res.setSubject(parseReference(xpp));
10433      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
10434        res.setStart(parseType("start", xpp));
10435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
10436        res.setTarget(parseGoalGoalTargetComponent(xpp, res));
10437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
10438        res.setStatusDateElement(parseDate(xpp));
10439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
10440        res.setStatusReasonElement(parseString(xpp));
10441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expressedBy")) {
10442        res.setExpressedBy(parseReference(xpp));
10443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
10444        res.getAddresses().add(parseReference(xpp));
10445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10446        res.getNote().add(parseAnnotation(xpp));
10447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCode")) {
10448        res.getOutcomeCode().add(parseCodeableConcept(xpp));
10449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
10450        res.getOutcomeReference().add(parseReference(xpp));
10451      } else if (!parseDomainResourceContent(eventType, xpp, res))
10452        return false;
10453    return true;
10454  }
10455
10456  protected Goal.GoalTargetComponent parseGoalGoalTargetComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
10457    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
10458    parseBackboneAttributes(xpp, res);
10459    next(xpp);
10460    int eventType = nextNoWhitespace(xpp);
10461    while (eventType != XmlPullParser.END_TAG) {
10462  if (!parseGoalGoalTargetComponentContent(eventType, xpp, owner, res))
10463        unknownContent(xpp);
10464      eventType = nextNoWhitespace(xpp);
10465    }
10466    next(xpp);
10467    parseElementClose(res);
10468    return res;
10469  }
10470
10471  protected boolean parseGoalGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal owner, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10472      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
10473        res.setMeasure(parseCodeableConcept(xpp));
10474      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
10475        res.setDetail(parseType("detail", xpp));
10476      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
10477        res.setDue(parseType("due", xpp));
10478      } else if (!parseBackboneElementContent(eventType, xpp, res))
10479        return false;
10480    return true;
10481  }
10482
10483  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10484    GraphDefinition res = new GraphDefinition();
10485    parseDomainResourceAttributes(xpp, res);
10486    next(xpp);
10487    int eventType = nextNoWhitespace(xpp);
10488    while (eventType != XmlPullParser.END_TAG) {
10489  if (!parseGraphDefinitionContent(eventType, xpp, res))
10490        unknownContent(xpp);
10491      eventType = nextNoWhitespace(xpp);
10492    }
10493    next(xpp);
10494    parseElementClose(res);
10495    return res;
10496  }
10497
10498  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
10499      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10500        res.setUrlElement(parseUri(xpp));
10501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10502        res.setVersionElement(parseString(xpp));
10503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10504        res.setNameElement(parseString(xpp));
10505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10506        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10508        res.setExperimentalElement(parseBoolean(xpp));
10509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10510        res.setDateElement(parseDateTime(xpp));
10511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10512        res.setPublisherElement(parseString(xpp));
10513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10514        res.getContact().add(parseContactDetail(xpp));
10515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10516        res.setDescriptionElement(parseMarkdown(xpp));
10517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10518        res.getUseContext().add(parseUsageContext(xpp));
10519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10520        res.getJurisdiction().add(parseCodeableConcept(xpp));
10521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10522        res.setPurposeElement(parseMarkdown(xpp));
10523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
10524        res.setStartElement(parseCode(xpp));
10525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10526        res.setProfileElement(parseCanonical(xpp));
10527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
10528        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, res));
10529      } else if (!parseDomainResourceContent(eventType, xpp, res))
10530        return false;
10531    return true;
10532  }
10533
10534  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionGraphDefinitionLinkComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
10535    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
10536    parseBackboneAttributes(xpp, res);
10537    next(xpp);
10538    int eventType = nextNoWhitespace(xpp);
10539    while (eventType != XmlPullParser.END_TAG) {
10540  if (!parseGraphDefinitionGraphDefinitionLinkComponentContent(eventType, xpp, owner, res))
10541        unknownContent(xpp);
10542      eventType = nextNoWhitespace(xpp);
10543    }
10544    next(xpp);
10545    parseElementClose(res);
10546    return res;
10547  }
10548
10549  protected boolean parseGraphDefinitionGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10550      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
10551        res.setPathElement(parseString(xpp));
10552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
10553        res.setSliceNameElement(parseString(xpp));
10554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
10555        res.setMinElement(parseInteger(xpp));
10556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
10557        res.setMaxElement(parseString(xpp));
10558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10559        res.setDescriptionElement(parseString(xpp));
10560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
10561        res.getTarget().add(parseGraphDefinitionGraphDefinitionLinkTargetComponent(xpp, owner));
10562      } else if (!parseBackboneElementContent(eventType, xpp, res))
10563        return false;
10564    return true;
10565  }
10566
10567  protected GraphDefinition.GraphDefinitionLinkTargetComponent parseGraphDefinitionGraphDefinitionLinkTargetComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
10568    GraphDefinition.GraphDefinitionLinkTargetComponent res = new GraphDefinition.GraphDefinitionLinkTargetComponent();
10569    parseBackboneAttributes(xpp, res);
10570    next(xpp);
10571    int eventType = nextNoWhitespace(xpp);
10572    while (eventType != XmlPullParser.END_TAG) {
10573  if (!parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(eventType, xpp, owner, res))
10574        unknownContent(xpp);
10575      eventType = nextNoWhitespace(xpp);
10576    }
10577    next(xpp);
10578    parseElementClose(res);
10579    return res;
10580  }
10581
10582  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10583      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10584        res.setTypeElement(parseCode(xpp));
10585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
10586        res.setParamsElement(parseString(xpp));
10587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10588        res.setProfileElement(parseCanonical(xpp));
10589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
10590        res.getCompartment().add(parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(xpp, owner));
10591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
10592        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, owner));
10593      } else if (!parseBackboneElementContent(eventType, xpp, res))
10594        return false;
10595    return true;
10596  }
10597
10598  protected GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
10599    GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent();
10600    parseBackboneAttributes(xpp, res);
10601    next(xpp);
10602    int eventType = nextNoWhitespace(xpp);
10603    while (eventType != XmlPullParser.END_TAG) {
10604  if (!parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(eventType, xpp, owner, res))
10605        unknownContent(xpp);
10606      eventType = nextNoWhitespace(xpp);
10607    }
10608    next(xpp);
10609    parseElementClose(res);
10610    return res;
10611  }
10612
10613  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10614      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
10615        res.setUseElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentUse.NULL, new GraphDefinition.GraphCompartmentUseEnumFactory()));
10616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10617        res.setCodeElement(parseEnumeration(xpp, GraphDefinition.CompartmentCode.NULL, new GraphDefinition.CompartmentCodeEnumFactory()));
10618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
10619        res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
10620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
10621        res.setExpressionElement(parseString(xpp));
10622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10623        res.setDescriptionElement(parseString(xpp));
10624      } else if (!parseBackboneElementContent(eventType, xpp, res))
10625        return false;
10626    return true;
10627  }
10628
10629  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10630    Group res = new Group();
10631    parseDomainResourceAttributes(xpp, res);
10632    next(xpp);
10633    int eventType = nextNoWhitespace(xpp);
10634    while (eventType != XmlPullParser.END_TAG) {
10635  if (!parseGroupContent(eventType, xpp, res))
10636        unknownContent(xpp);
10637      eventType = nextNoWhitespace(xpp);
10638    }
10639    next(xpp);
10640    parseElementClose(res);
10641    return res;
10642  }
10643
10644  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
10645      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10646        res.getIdentifier().add(parseIdentifier(xpp));
10647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10648        res.setActiveElement(parseBoolean(xpp));
10649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10650        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
10651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
10652        res.setActualElement(parseBoolean(xpp));
10653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10654        res.setCode(parseCodeableConcept(xpp));
10655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10656        res.setNameElement(parseString(xpp));
10657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10658        res.setQuantityElement(parseUnsignedInt(xpp));
10659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
10660        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
10661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
10662        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
10663      } else if (!parseDomainResourceContent(eventType, xpp, res))
10664        return false;
10665    return true;
10666  }
10667
10668  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
10669    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
10670    parseBackboneAttributes(xpp, res);
10671    next(xpp);
10672    int eventType = nextNoWhitespace(xpp);
10673    while (eventType != XmlPullParser.END_TAG) {
10674  if (!parseGroupGroupCharacteristicComponentContent(eventType, xpp, owner, res))
10675        unknownContent(xpp);
10676      eventType = nextNoWhitespace(xpp);
10677    }
10678    next(xpp);
10679    parseElementClose(res);
10680    return res;
10681  }
10682
10683  protected boolean parseGroupGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10684      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10685        res.setCode(parseCodeableConcept(xpp));
10686      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
10687        res.setValue(parseType("value", xpp));
10688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
10689        res.setExcludeElement(parseBoolean(xpp));
10690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10691        res.setPeriod(parsePeriod(xpp));
10692      } else if (!parseBackboneElementContent(eventType, xpp, res))
10693        return false;
10694    return true;
10695  }
10696
10697  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
10698    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
10699    parseBackboneAttributes(xpp, res);
10700    next(xpp);
10701    int eventType = nextNoWhitespace(xpp);
10702    while (eventType != XmlPullParser.END_TAG) {
10703  if (!parseGroupGroupMemberComponentContent(eventType, xpp, owner, res))
10704        unknownContent(xpp);
10705      eventType = nextNoWhitespace(xpp);
10706    }
10707    next(xpp);
10708    parseElementClose(res);
10709    return res;
10710  }
10711
10712  protected boolean parseGroupGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10713      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
10714        res.setEntity(parseReference(xpp));
10715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10716        res.setPeriod(parsePeriod(xpp));
10717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
10718        res.setInactiveElement(parseBoolean(xpp));
10719      } else if (!parseBackboneElementContent(eventType, xpp, res))
10720        return false;
10721    return true;
10722  }
10723
10724  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10725    GuidanceResponse res = new GuidanceResponse();
10726    parseDomainResourceAttributes(xpp, res);
10727    next(xpp);
10728    int eventType = nextNoWhitespace(xpp);
10729    while (eventType != XmlPullParser.END_TAG) {
10730  if (!parseGuidanceResponseContent(eventType, xpp, res))
10731        unknownContent(xpp);
10732      eventType = nextNoWhitespace(xpp);
10733    }
10734    next(xpp);
10735    parseElementClose(res);
10736    return res;
10737  }
10738
10739  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
10740      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestIdentifier")) {
10741        res.setRequestIdentifier(parseIdentifier(xpp));
10742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10743        res.getIdentifier().add(parseIdentifier(xpp));
10744      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "module")) {
10745        res.setModule(parseType("module", xpp));
10746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10747        res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
10748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10749        res.setSubject(parseReference(xpp));
10750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
10751        res.setContext(parseReference(xpp));
10752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
10753        res.setOccurrenceDateTimeElement(parseDateTime(xpp));
10754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
10755        res.setPerformer(parseReference(xpp));
10756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10757        res.getReasonCode().add(parseCodeableConcept(xpp));
10758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10759        res.getReasonReference().add(parseReference(xpp));
10760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10761        res.getNote().add(parseAnnotation(xpp));
10762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
10763        res.getEvaluationMessage().add(parseReference(xpp));
10764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
10765        res.setOutputParameters(parseReference(xpp));
10766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
10767        res.setResult(parseReference(xpp));
10768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
10769        res.getDataRequirement().add(parseDataRequirement(xpp));
10770      } else if (!parseDomainResourceContent(eventType, xpp, res))
10771        return false;
10772    return true;
10773  }
10774
10775  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10776    HealthcareService res = new HealthcareService();
10777    parseDomainResourceAttributes(xpp, res);
10778    next(xpp);
10779    int eventType = nextNoWhitespace(xpp);
10780    while (eventType != XmlPullParser.END_TAG) {
10781  if (!parseHealthcareServiceContent(eventType, xpp, res))
10782        unknownContent(xpp);
10783      eventType = nextNoWhitespace(xpp);
10784    }
10785    next(xpp);
10786    parseElementClose(res);
10787    return res;
10788  }
10789
10790  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
10791      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10792        res.getIdentifier().add(parseIdentifier(xpp));
10793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10794        res.setActiveElement(parseBoolean(xpp));
10795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
10796        res.setProvidedBy(parseReference(xpp));
10797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10798        res.getCategory().add(parseCodeableConcept(xpp));
10799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10800        res.getType().add(parseCodeableConcept(xpp));
10801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
10802        res.getSpecialty().add(parseCodeableConcept(xpp));
10803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10804        res.getLocation().add(parseReference(xpp));
10805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10806        res.setNameElement(parseString(xpp));
10807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
10808        res.setCommentElement(parseString(xpp));
10809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
10810        res.setExtraDetailsElement(parseString(xpp));
10811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
10812        res.setPhoto(parseAttachment(xpp));
10813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10814        res.getTelecom().add(parseContactPoint(xpp));
10815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
10816        res.getCoverageArea().add(parseReference(xpp));
10817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
10818        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
10819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
10820        res.setEligibility(parseCodeableConcept(xpp));
10821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibilityNote")) {
10822        res.setEligibilityNoteElement(parseString(xpp));
10823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programName")) {
10824        res.getProgramName().add(parseString(xpp));
10825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
10826        res.getCharacteristic().add(parseCodeableConcept(xpp));
10827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
10828        res.getReferralMethod().add(parseCodeableConcept(xpp));
10829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
10830        res.setAppointmentRequiredElement(parseBoolean(xpp));
10831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
10832        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
10833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
10834        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
10835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
10836        res.setAvailabilityExceptionsElement(parseString(xpp));
10837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10838        res.getEndpoint().add(parseReference(xpp));
10839      } else if (!parseDomainResourceContent(eventType, xpp, res))
10840        return false;
10841    return true;
10842  }
10843
10844  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
10845    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
10846    parseBackboneAttributes(xpp, res);
10847    next(xpp);
10848    int eventType = nextNoWhitespace(xpp);
10849    while (eventType != XmlPullParser.END_TAG) {
10850  if (!parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(eventType, xpp, owner, res))
10851        unknownContent(xpp);
10852      eventType = nextNoWhitespace(xpp);
10853    }
10854    next(xpp);
10855    parseElementClose(res);
10856    return res;
10857  }
10858
10859  protected boolean parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10860      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
10861        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
10862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
10863        res.setAllDayElement(parseBoolean(xpp));
10864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
10865        res.setAvailableStartTimeElement(parseTime(xpp));
10866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
10867        res.setAvailableEndTimeElement(parseTime(xpp));
10868      } else if (!parseBackboneElementContent(eventType, xpp, res))
10869        return false;
10870    return true;
10871  }
10872
10873  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
10874    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
10875    parseBackboneAttributes(xpp, res);
10876    next(xpp);
10877    int eventType = nextNoWhitespace(xpp);
10878    while (eventType != XmlPullParser.END_TAG) {
10879  if (!parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(eventType, xpp, owner, res))
10880        unknownContent(xpp);
10881      eventType = nextNoWhitespace(xpp);
10882    }
10883    next(xpp);
10884    parseElementClose(res);
10885    return res;
10886  }
10887
10888  protected boolean parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10889      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10890        res.setDescriptionElement(parseString(xpp));
10891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
10892        res.setDuring(parsePeriod(xpp));
10893      } else if (!parseBackboneElementContent(eventType, xpp, res))
10894        return false;
10895    return true;
10896  }
10897
10898  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10899    ImagingStudy res = new ImagingStudy();
10900    parseDomainResourceAttributes(xpp, res);
10901    next(xpp);
10902    int eventType = nextNoWhitespace(xpp);
10903    while (eventType != XmlPullParser.END_TAG) {
10904  if (!parseImagingStudyContent(eventType, xpp, res))
10905        unknownContent(xpp);
10906      eventType = nextNoWhitespace(xpp);
10907    }
10908    next(xpp);
10909    parseElementClose(res);
10910    return res;
10911  }
10912
10913  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
10914      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10915        res.getIdentifier().add(parseIdentifier(xpp));
10916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10917        res.setStatusElement(parseEnumeration(xpp, ImagingStudy.ImagingStudyStatus.NULL, new ImagingStudy.ImagingStudyStatusEnumFactory()));
10918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
10919        res.getModality().add(parseCoding(xpp));
10920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10921        res.setSubject(parseReference(xpp));
10922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
10923        res.setContext(parseReference(xpp));
10924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
10925        res.setStartedElement(parseDateTime(xpp));
10926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
10927        res.getBasedOn().add(parseReference(xpp));
10928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
10929        res.setReferrer(parseReference(xpp));
10930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
10931        res.getInterpreter().add(parseReference(xpp));
10932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10933        res.getEndpoint().add(parseReference(xpp));
10934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
10935        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
10936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
10937        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
10938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureReference")) {
10939        res.setProcedureReference(parseReference(xpp));
10940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureCode")) {
10941        res.getProcedureCode().add(parseCodeableConcept(xpp));
10942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10943        res.setLocation(parseReference(xpp));
10944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10945        res.getReasonCode().add(parseCodeableConcept(xpp));
10946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10947        res.getReasonReference().add(parseReference(xpp));
10948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10949        res.getNote().add(parseAnnotation(xpp));
10950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10951        res.setDescriptionElement(parseString(xpp));
10952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
10953        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
10954      } else if (!parseDomainResourceContent(eventType, xpp, res))
10955        return false;
10956    return true;
10957  }
10958
10959  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
10960    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
10961    parseBackboneAttributes(xpp, res);
10962    next(xpp);
10963    int eventType = nextNoWhitespace(xpp);
10964    while (eventType != XmlPullParser.END_TAG) {
10965  if (!parseImagingStudyImagingStudySeriesComponentContent(eventType, xpp, owner, res))
10966        unknownContent(xpp);
10967      eventType = nextNoWhitespace(xpp);
10968    }
10969    next(xpp);
10970    parseElementClose(res);
10971    return res;
10972  }
10973
10974  protected boolean parseImagingStudyImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10975      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10976        res.setIdentifier(parseIdentifier(xpp));
10977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
10978        res.setNumberElement(parseUnsignedInt(xpp));
10979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
10980        res.setModality(parseCoding(xpp));
10981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10982        res.setDescriptionElement(parseString(xpp));
10983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
10984        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
10985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10986        res.getEndpoint().add(parseReference(xpp));
10987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10988        res.setBodySite(parseCoding(xpp));
10989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
10990        res.setLaterality(parseCoding(xpp));
10991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
10992        res.getSpecimen().add(parseReference(xpp));
10993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
10994        res.setStartedElement(parseDateTime(xpp));
10995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
10996        res.getPerformer().add(parseImagingStudyImagingStudySeriesPerformerComponent(xpp, owner));
10997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
10998        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
10999      } else if (!parseBackboneElementContent(eventType, xpp, res))
11000        return false;
11001    return true;
11002  }
11003
11004  protected ImagingStudy.ImagingStudySeriesPerformerComponent parseImagingStudyImagingStudySeriesPerformerComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11005    ImagingStudy.ImagingStudySeriesPerformerComponent res = new ImagingStudy.ImagingStudySeriesPerformerComponent();
11006    parseBackboneAttributes(xpp, res);
11007    next(xpp);
11008    int eventType = nextNoWhitespace(xpp);
11009    while (eventType != XmlPullParser.END_TAG) {
11010  if (!parseImagingStudyImagingStudySeriesPerformerComponentContent(eventType, xpp, owner, res))
11011        unknownContent(xpp);
11012      eventType = nextNoWhitespace(xpp);
11013    }
11014    next(xpp);
11015    parseElementClose(res);
11016    return res;
11017  }
11018
11019  protected boolean parseImagingStudyImagingStudySeriesPerformerComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11020      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
11021        res.setFunction(parseCodeableConcept(xpp));
11022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11023        res.setActor(parseReference(xpp));
11024      } else if (!parseBackboneElementContent(eventType, xpp, res))
11025        return false;
11026    return true;
11027  }
11028
11029  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11030    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
11031    parseBackboneAttributes(xpp, res);
11032    next(xpp);
11033    int eventType = nextNoWhitespace(xpp);
11034    while (eventType != XmlPullParser.END_TAG) {
11035  if (!parseImagingStudyImagingStudySeriesInstanceComponentContent(eventType, xpp, owner, res))
11036        unknownContent(xpp);
11037      eventType = nextNoWhitespace(xpp);
11038    }
11039    next(xpp);
11040    parseElementClose(res);
11041    return res;
11042  }
11043
11044  protected boolean parseImagingStudyImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11045      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11046        res.setIdentifier(parseIdentifier(xpp));
11047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
11048        res.setNumberElement(parseUnsignedInt(xpp));
11049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
11050        res.setSopClass(parseCoding(xpp));
11051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11052        res.setTitleElement(parseString(xpp));
11053      } else if (!parseBackboneElementContent(eventType, xpp, res))
11054        return false;
11055    return true;
11056  }
11057
11058  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11059    Immunization res = new Immunization();
11060    parseDomainResourceAttributes(xpp, res);
11061    next(xpp);
11062    int eventType = nextNoWhitespace(xpp);
11063    while (eventType != XmlPullParser.END_TAG) {
11064  if (!parseImmunizationContent(eventType, xpp, res))
11065        unknownContent(xpp);
11066      eventType = nextNoWhitespace(xpp);
11067    }
11068    next(xpp);
11069    parseElementClose(res);
11070    return res;
11071  }
11072
11073  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
11074      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11075        res.getIdentifier().add(parseIdentifier(xpp));
11076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11077        res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatus.NULL, new Immunization.ImmunizationStatusEnumFactory()));
11078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
11079        res.setStatusReason(parseCodeableConcept(xpp));
11080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
11081        res.setVaccineCode(parseCodeableConcept(xpp));
11082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11083        res.setPatient(parseReference(xpp));
11084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11085        res.setEncounter(parseReference(xpp));
11086      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
11087        res.setOccurrence(parseType("occurrence", xpp));
11088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
11089        res.setRecordedElement(parseDateTime(xpp));
11090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
11091        res.setPrimarySourceElement(parseBoolean(xpp));
11092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportOrigin")) {
11093        res.setReportOrigin(parseCodeableConcept(xpp));
11094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11095        res.setLocation(parseReference(xpp));
11096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
11097        res.setManufacturer(parseReference(xpp));
11098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
11099        res.setLotNumberElement(parseString(xpp));
11100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
11101        res.setExpirationDateElement(parseDate(xpp));
11102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
11103        res.setSite(parseCodeableConcept(xpp));
11104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
11105        res.setRoute(parseCodeableConcept(xpp));
11106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
11107        res.setDoseQuantity(parseQuantity(xpp));
11108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11109        res.getPerformer().add(parseImmunizationImmunizationPerformerComponent(xpp, res));
11110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11111        res.getNote().add(parseAnnotation(xpp));
11112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11113        res.getReasonCode().add(parseCodeableConcept(xpp));
11114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11115        res.getReasonReference().add(parseReference(xpp));
11116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSubpotent")) {
11117        res.setIsSubpotentElement(parseBoolean(xpp));
11118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subpotentReason")) {
11119        res.getSubpotentReason().add(parseCodeableConcept(xpp));
11120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("education")) {
11121        res.getEducation().add(parseImmunizationImmunizationEducationComponent(xpp, res));
11122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programEligibility")) {
11123        res.getProgramEligibility().add(parseCodeableConcept(xpp));
11124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundingSource")) {
11125        res.setFundingSource(parseCodeableConcept(xpp));
11126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocolApplied")) {
11127        res.getProtocolApplied().add(parseImmunizationImmunizationProtocolAppliedComponent(xpp, res));
11128      } else if (!parseDomainResourceContent(eventType, xpp, res))
11129        return false;
11130    return true;
11131  }
11132
11133  protected Immunization.ImmunizationPerformerComponent parseImmunizationImmunizationPerformerComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11134    Immunization.ImmunizationPerformerComponent res = new Immunization.ImmunizationPerformerComponent();
11135    parseBackboneAttributes(xpp, res);
11136    next(xpp);
11137    int eventType = nextNoWhitespace(xpp);
11138    while (eventType != XmlPullParser.END_TAG) {
11139  if (!parseImmunizationImmunizationPerformerComponentContent(eventType, xpp, owner, res))
11140        unknownContent(xpp);
11141      eventType = nextNoWhitespace(xpp);
11142    }
11143    next(xpp);
11144    parseElementClose(res);
11145    return res;
11146  }
11147
11148  protected boolean parseImmunizationImmunizationPerformerComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11149      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
11150        res.setFunction(parseCodeableConcept(xpp));
11151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11152        res.setActor(parseReference(xpp));
11153      } else if (!parseBackboneElementContent(eventType, xpp, res))
11154        return false;
11155    return true;
11156  }
11157
11158  protected Immunization.ImmunizationEducationComponent parseImmunizationImmunizationEducationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11159    Immunization.ImmunizationEducationComponent res = new Immunization.ImmunizationEducationComponent();
11160    parseBackboneAttributes(xpp, res);
11161    next(xpp);
11162    int eventType = nextNoWhitespace(xpp);
11163    while (eventType != XmlPullParser.END_TAG) {
11164  if (!parseImmunizationImmunizationEducationComponentContent(eventType, xpp, owner, res))
11165        unknownContent(xpp);
11166      eventType = nextNoWhitespace(xpp);
11167    }
11168    next(xpp);
11169    parseElementClose(res);
11170    return res;
11171  }
11172
11173  protected boolean parseImmunizationImmunizationEducationComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationEducationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11174      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentType")) {
11175        res.setDocumentTypeElement(parseString(xpp));
11176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11177        res.setReferenceElement(parseUri(xpp));
11178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
11179        res.setPublicationDateElement(parseDateTime(xpp));
11180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationDate")) {
11181        res.setPresentationDateElement(parseDateTime(xpp));
11182      } else if (!parseBackboneElementContent(eventType, xpp, res))
11183        return false;
11184    return true;
11185  }
11186
11187  protected Immunization.ImmunizationProtocolAppliedComponent parseImmunizationImmunizationProtocolAppliedComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11188    Immunization.ImmunizationProtocolAppliedComponent res = new Immunization.ImmunizationProtocolAppliedComponent();
11189    parseBackboneAttributes(xpp, res);
11190    next(xpp);
11191    int eventType = nextNoWhitespace(xpp);
11192    while (eventType != XmlPullParser.END_TAG) {
11193  if (!parseImmunizationImmunizationProtocolAppliedComponentContent(eventType, xpp, owner, res))
11194        unknownContent(xpp);
11195      eventType = nextNoWhitespace(xpp);
11196    }
11197    next(xpp);
11198    parseElementClose(res);
11199    return res;
11200  }
11201
11202  protected boolean parseImmunizationImmunizationProtocolAppliedComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationProtocolAppliedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11203      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11204        res.setSeriesElement(parseString(xpp));
11205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11206        res.setAuthority(parseReference(xpp));
11207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11208        res.setTargetDisease(parseCodeableConcept(xpp));
11209      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11210        res.setDoseNumber(parseType("doseNumber", xpp));
11211      } else if (!parseBackboneElementContent(eventType, xpp, res))
11212        return false;
11213    return true;
11214  }
11215
11216  protected ImmunizationEvaluation parseImmunizationEvaluation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11217    ImmunizationEvaluation res = new ImmunizationEvaluation();
11218    parseDomainResourceAttributes(xpp, res);
11219    next(xpp);
11220    int eventType = nextNoWhitespace(xpp);
11221    while (eventType != XmlPullParser.END_TAG) {
11222  if (!parseImmunizationEvaluationContent(eventType, xpp, res))
11223        unknownContent(xpp);
11224      eventType = nextNoWhitespace(xpp);
11225    }
11226    next(xpp);
11227    parseElementClose(res);
11228    return res;
11229  }
11230
11231  protected boolean parseImmunizationEvaluationContent(int eventType, XmlPullParser xpp, ImmunizationEvaluation res) throws XmlPullParserException, IOException, FHIRFormatError {
11232      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11233        res.getIdentifier().add(parseIdentifier(xpp));
11234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11235        res.setStatusElement(parseEnumeration(xpp, ImmunizationEvaluation.ImmunizationEvaluationStatus.NULL, new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory()));
11236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11237        res.setPatient(parseReference(xpp));
11238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11239        res.setDateElement(parseDateTime(xpp));
11240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11241        res.setAuthority(parseReference(xpp));
11242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11243        res.setTargetDisease(parseCodeableConcept(xpp));
11244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immunizationEvent")) {
11245        res.setImmunizationEvent(parseReference(xpp));
11246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
11247        res.setDoseStatus(parseCodeableConcept(xpp));
11248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
11249        res.getDoseStatusReason().add(parseCodeableConcept(xpp));
11250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11251        res.setDescriptionElement(parseString(xpp));
11252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11253        res.setSeriesElement(parseString(xpp));
11254      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11255        res.setDoseNumber(parseType("doseNumber", xpp));
11256      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11257        res.setSeriesDoses(parseType("seriesDoses", xpp));
11258      } else if (!parseDomainResourceContent(eventType, xpp, res))
11259        return false;
11260    return true;
11261  }
11262
11263  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11264    ImmunizationRecommendation res = new ImmunizationRecommendation();
11265    parseDomainResourceAttributes(xpp, res);
11266    next(xpp);
11267    int eventType = nextNoWhitespace(xpp);
11268    while (eventType != XmlPullParser.END_TAG) {
11269  if (!parseImmunizationRecommendationContent(eventType, xpp, res))
11270        unknownContent(xpp);
11271      eventType = nextNoWhitespace(xpp);
11272    }
11273    next(xpp);
11274    parseElementClose(res);
11275    return res;
11276  }
11277
11278  protected boolean parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
11279      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11280        res.getIdentifier().add(parseIdentifier(xpp));
11281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11282        res.setPatient(parseReference(xpp));
11283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11284        res.setDateElement(parseDateTime(xpp));
11285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11286        res.setAuthority(parseReference(xpp));
11287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
11288        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
11289      } else if (!parseDomainResourceContent(eventType, xpp, res))
11290        return false;
11291    return true;
11292  }
11293
11294  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
11295    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
11296    parseBackboneAttributes(xpp, res);
11297    next(xpp);
11298    int eventType = nextNoWhitespace(xpp);
11299    while (eventType != XmlPullParser.END_TAG) {
11300  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(eventType, xpp, owner, res))
11301        unknownContent(xpp);
11302      eventType = nextNoWhitespace(xpp);
11303    }
11304    next(xpp);
11305    parseElementClose(res);
11306    return res;
11307  }
11308
11309  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11310      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
11311        res.getVaccineCode().add(parseCodeableConcept(xpp));
11312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11313        res.setTargetDisease(parseCodeableConcept(xpp));
11314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindicatedVaccineCode")) {
11315        res.getContraindicatedVaccineCode().add(parseCodeableConcept(xpp));
11316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
11317        res.setForecastStatus(parseCodeableConcept(xpp));
11318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastReason")) {
11319        res.getForecastReason().add(parseCodeableConcept(xpp));
11320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
11321        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
11322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11323        res.setDescriptionElement(parseString(xpp));
11324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11325        res.setSeriesElement(parseString(xpp));
11326      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11327        res.setDoseNumber(parseType("doseNumber", xpp));
11328      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11329        res.setSeriesDoses(parseType("seriesDoses", xpp));
11330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
11331        res.getSupportingImmunization().add(parseReference(xpp));
11332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
11333        res.getSupportingPatientInformation().add(parseReference(xpp));
11334      } else if (!parseBackboneElementContent(eventType, xpp, res))
11335        return false;
11336    return true;
11337  }
11338
11339  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
11340    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
11341    parseBackboneAttributes(xpp, res);
11342    next(xpp);
11343    int eventType = nextNoWhitespace(xpp);
11344    while (eventType != XmlPullParser.END_TAG) {
11345  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, owner, res))
11346        unknownContent(xpp);
11347      eventType = nextNoWhitespace(xpp);
11348    }
11349    next(xpp);
11350    parseElementClose(res);
11351    return res;
11352  }
11353
11354  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11355      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11356        res.setCode(parseCodeableConcept(xpp));
11357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11358        res.setValueElement(parseDateTime(xpp));
11359      } else if (!parseBackboneElementContent(eventType, xpp, res))
11360        return false;
11361    return true;
11362  }
11363
11364  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11365    ImplementationGuide res = new ImplementationGuide();
11366    parseDomainResourceAttributes(xpp, res);
11367    next(xpp);
11368    int eventType = nextNoWhitespace(xpp);
11369    while (eventType != XmlPullParser.END_TAG) {
11370  if (!parseImplementationGuideContent(eventType, xpp, res))
11371        unknownContent(xpp);
11372      eventType = nextNoWhitespace(xpp);
11373    }
11374    next(xpp);
11375    parseElementClose(res);
11376    return res;
11377  }
11378
11379  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
11380      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11381        res.setUrlElement(parseUri(xpp));
11382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11383        res.setVersionElement(parseString(xpp));
11384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11385        res.setNameElement(parseString(xpp));
11386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11387        res.setTitleElement(parseString(xpp));
11388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11389        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11391        res.setExperimentalElement(parseBoolean(xpp));
11392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11393        res.setDateElement(parseDateTime(xpp));
11394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11395        res.setPublisherElement(parseString(xpp));
11396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11397        res.getContact().add(parseContactDetail(xpp));
11398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11399        res.setDescriptionElement(parseMarkdown(xpp));
11400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11401        res.getUseContext().add(parseUsageContext(xpp));
11402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11403        res.getJurisdiction().add(parseCodeableConcept(xpp));
11404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11405        res.setCopyrightElement(parseMarkdown(xpp));
11406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
11407        res.setPackageIdElement(parseId(xpp));
11408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("license")) {
11409        res.setLicenseElement(parseEnumeration(xpp, ImplementationGuide.SPDXLicense.NULL, new ImplementationGuide.SPDXLicenseEnumFactory()));
11410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
11411        res.setFhirVersionElement(parseId(xpp));
11412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
11413        res.getDependsOn().add(parseImplementationGuideImplementationGuideDependsOnComponent(xpp, res));
11414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
11415        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
11416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
11417        res.setDefinition(parseImplementationGuideImplementationGuideDefinitionComponent(xpp, res));
11418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifest")) {
11419        res.setManifest(parseImplementationGuideImplementationGuideManifestComponent(xpp, res));
11420      } else if (!parseDomainResourceContent(eventType, xpp, res))
11421        return false;
11422    return true;
11423  }
11424
11425  protected ImplementationGuide.ImplementationGuideDependsOnComponent parseImplementationGuideImplementationGuideDependsOnComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11426    ImplementationGuide.ImplementationGuideDependsOnComponent res = new ImplementationGuide.ImplementationGuideDependsOnComponent();
11427    parseBackboneAttributes(xpp, res);
11428    next(xpp);
11429    int eventType = nextNoWhitespace(xpp);
11430    while (eventType != XmlPullParser.END_TAG) {
11431  if (!parseImplementationGuideImplementationGuideDependsOnComponentContent(eventType, xpp, owner, res))
11432        unknownContent(xpp);
11433      eventType = nextNoWhitespace(xpp);
11434    }
11435    next(xpp);
11436    parseElementClose(res);
11437    return res;
11438  }
11439
11440  protected boolean parseImplementationGuideImplementationGuideDependsOnComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDependsOnComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11441      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
11442        res.setUriElement(parseCanonical(xpp));
11443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
11444        res.setPackageIdElement(parseId(xpp));
11445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11446        res.setVersionElement(parseString(xpp));
11447      } else if (!parseBackboneElementContent(eventType, xpp, res))
11448        return false;
11449    return true;
11450  }
11451
11452  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11453    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
11454    parseBackboneAttributes(xpp, res);
11455    next(xpp);
11456    int eventType = nextNoWhitespace(xpp);
11457    while (eventType != XmlPullParser.END_TAG) {
11458  if (!parseImplementationGuideImplementationGuideGlobalComponentContent(eventType, xpp, owner, res))
11459        unknownContent(xpp);
11460      eventType = nextNoWhitespace(xpp);
11461    }
11462    next(xpp);
11463    parseElementClose(res);
11464    return res;
11465  }
11466
11467  protected boolean parseImplementationGuideImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11468      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11469        res.setTypeElement(parseCode(xpp));
11470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11471        res.setProfileElement(parseCanonical(xpp));
11472      } else if (!parseBackboneElementContent(eventType, xpp, res))
11473        return false;
11474    return true;
11475  }
11476
11477  protected ImplementationGuide.ImplementationGuideDefinitionComponent parseImplementationGuideImplementationGuideDefinitionComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11478    ImplementationGuide.ImplementationGuideDefinitionComponent res = new ImplementationGuide.ImplementationGuideDefinitionComponent();
11479    parseBackboneAttributes(xpp, res);
11480    next(xpp);
11481    int eventType = nextNoWhitespace(xpp);
11482    while (eventType != XmlPullParser.END_TAG) {
11483  if (!parseImplementationGuideImplementationGuideDefinitionComponentContent(eventType, xpp, owner, res))
11484        unknownContent(xpp);
11485      eventType = nextNoWhitespace(xpp);
11486    }
11487    next(xpp);
11488    parseElementClose(res);
11489    return res;
11490  }
11491
11492  protected boolean parseImplementationGuideImplementationGuideDefinitionComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11493      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
11494        res.getPackage().add(parseImplementationGuideImplementationGuideDefinitionPackageComponent(xpp, owner));
11495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
11496        res.getResource().add(parseImplementationGuideImplementationGuideDefinitionResourceComponent(xpp, owner));
11497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
11498        res.setPage(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
11499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
11500        res.getParameter().add(parseImplementationGuideImplementationGuideDefinitionParameterComponent(xpp, owner));
11501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("template")) {
11502        res.getTemplate().add(parseImplementationGuideImplementationGuideDefinitionTemplateComponent(xpp, owner));
11503      } else if (!parseBackboneElementContent(eventType, xpp, res))
11504        return false;
11505    return true;
11506  }
11507
11508  protected ImplementationGuide.ImplementationGuideDefinitionPackageComponent parseImplementationGuideImplementationGuideDefinitionPackageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11509    ImplementationGuide.ImplementationGuideDefinitionPackageComponent res = new ImplementationGuide.ImplementationGuideDefinitionPackageComponent();
11510    parseBackboneAttributes(xpp, res);
11511    next(xpp);
11512    int eventType = nextNoWhitespace(xpp);
11513    while (eventType != XmlPullParser.END_TAG) {
11514  if (!parseImplementationGuideImplementationGuideDefinitionPackageComponentContent(eventType, xpp, owner, res))
11515        unknownContent(xpp);
11516      eventType = nextNoWhitespace(xpp);
11517    }
11518    next(xpp);
11519    parseElementClose(res);
11520    return res;
11521  }
11522
11523  protected boolean parseImplementationGuideImplementationGuideDefinitionPackageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionPackageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11524      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11525        res.setNameElement(parseString(xpp));
11526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11527        res.setDescriptionElement(parseString(xpp));
11528      } else if (!parseBackboneElementContent(eventType, xpp, res))
11529        return false;
11530    return true;
11531  }
11532
11533  protected ImplementationGuide.ImplementationGuideDefinitionResourceComponent parseImplementationGuideImplementationGuideDefinitionResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11534    ImplementationGuide.ImplementationGuideDefinitionResourceComponent res = new ImplementationGuide.ImplementationGuideDefinitionResourceComponent();
11535    parseBackboneAttributes(xpp, res);
11536    next(xpp);
11537    int eventType = nextNoWhitespace(xpp);
11538    while (eventType != XmlPullParser.END_TAG) {
11539  if (!parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(eventType, xpp, owner, res))
11540        unknownContent(xpp);
11541      eventType = nextNoWhitespace(xpp);
11542    }
11543    next(xpp);
11544    parseElementClose(res);
11545    return res;
11546  }
11547
11548  protected boolean parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11550        res.setReference(parseReference(xpp));
11551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11552        res.setNameElement(parseString(xpp));
11553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11554        res.setDescriptionElement(parseString(xpp));
11555      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
11556        res.setExample(parseType("example", xpp));
11557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
11558        res.setPackageElement(parseId(xpp));
11559      } else if (!parseBackboneElementContent(eventType, xpp, res))
11560        return false;
11561    return true;
11562  }
11563
11564  protected ImplementationGuide.ImplementationGuideDefinitionPageComponent parseImplementationGuideImplementationGuideDefinitionPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11565    ImplementationGuide.ImplementationGuideDefinitionPageComponent res = new ImplementationGuide.ImplementationGuideDefinitionPageComponent();
11566    parseBackboneAttributes(xpp, res);
11567    next(xpp);
11568    int eventType = nextNoWhitespace(xpp);
11569    while (eventType != XmlPullParser.END_TAG) {
11570  if (!parseImplementationGuideImplementationGuideDefinitionPageComponentContent(eventType, xpp, owner, res))
11571        unknownContent(xpp);
11572      eventType = nextNoWhitespace(xpp);
11573    }
11574    next(xpp);
11575    parseElementClose(res);
11576    return res;
11577  }
11578
11579  protected boolean parseImplementationGuideImplementationGuideDefinitionPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11580      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "name")) {
11581        res.setName(parseType("name", xpp));
11582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11583        res.setTitleElement(parseString(xpp));
11584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generation")) {
11585        res.setGenerationElement(parseEnumeration(xpp, ImplementationGuide.GuidePageGeneration.NULL, new ImplementationGuide.GuidePageGenerationEnumFactory()));
11586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
11587        res.getPage().add(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
11588      } else if (!parseBackboneElementContent(eventType, xpp, res))
11589        return false;
11590    return true;
11591  }
11592
11593  protected ImplementationGuide.ImplementationGuideDefinitionParameterComponent parseImplementationGuideImplementationGuideDefinitionParameterComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11594    ImplementationGuide.ImplementationGuideDefinitionParameterComponent res = new ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
11595    parseBackboneAttributes(xpp, res);
11596    next(xpp);
11597    int eventType = nextNoWhitespace(xpp);
11598    while (eventType != XmlPullParser.END_TAG) {
11599  if (!parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(eventType, xpp, owner, res))
11600        unknownContent(xpp);
11601      eventType = nextNoWhitespace(xpp);
11602    }
11603    next(xpp);
11604    parseElementClose(res);
11605    return res;
11606  }
11607
11608  protected boolean parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11610        res.setCodeElement(parseEnumeration(xpp, ImplementationGuide.GuideParameterCode.NULL, new ImplementationGuide.GuideParameterCodeEnumFactory()));
11611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11612        res.setValueElement(parseString(xpp));
11613      } else if (!parseBackboneElementContent(eventType, xpp, res))
11614        return false;
11615    return true;
11616  }
11617
11618  protected ImplementationGuide.ImplementationGuideDefinitionTemplateComponent parseImplementationGuideImplementationGuideDefinitionTemplateComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11619    ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res = new ImplementationGuide.ImplementationGuideDefinitionTemplateComponent();
11620    parseBackboneAttributes(xpp, res);
11621    next(xpp);
11622    int eventType = nextNoWhitespace(xpp);
11623    while (eventType != XmlPullParser.END_TAG) {
11624  if (!parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(eventType, xpp, owner, res))
11625        unknownContent(xpp);
11626      eventType = nextNoWhitespace(xpp);
11627    }
11628    next(xpp);
11629    parseElementClose(res);
11630    return res;
11631  }
11632
11633  protected boolean parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11634      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11635        res.setCodeElement(parseCode(xpp));
11636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
11637        res.setSourceElement(parseString(xpp));
11638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
11639        res.setScopeElement(parseString(xpp));
11640      } else if (!parseBackboneElementContent(eventType, xpp, res))
11641        return false;
11642    return true;
11643  }
11644
11645  protected ImplementationGuide.ImplementationGuideManifestComponent parseImplementationGuideImplementationGuideManifestComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11646    ImplementationGuide.ImplementationGuideManifestComponent res = new ImplementationGuide.ImplementationGuideManifestComponent();
11647    parseBackboneAttributes(xpp, res);
11648    next(xpp);
11649    int eventType = nextNoWhitespace(xpp);
11650    while (eventType != XmlPullParser.END_TAG) {
11651  if (!parseImplementationGuideImplementationGuideManifestComponentContent(eventType, xpp, owner, res))
11652        unknownContent(xpp);
11653      eventType = nextNoWhitespace(xpp);
11654    }
11655    next(xpp);
11656    parseElementClose(res);
11657    return res;
11658  }
11659
11660  protected boolean parseImplementationGuideImplementationGuideManifestComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideManifestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11661      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rendering")) {
11662        res.setRenderingElement(parseUrl(xpp));
11663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
11664        res.getResource().add(parseImplementationGuideManifestResourceComponent(xpp, owner));
11665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
11666        res.getPage().add(parseImplementationGuideManifestPageComponent(xpp, owner));
11667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
11668        res.getImage().add(parseString(xpp));
11669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
11670        res.getOther().add(parseString(xpp));
11671      } else if (!parseBackboneElementContent(eventType, xpp, res))
11672        return false;
11673    return true;
11674  }
11675
11676  protected ImplementationGuide.ManifestResourceComponent parseImplementationGuideManifestResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11677    ImplementationGuide.ManifestResourceComponent res = new ImplementationGuide.ManifestResourceComponent();
11678    parseBackboneAttributes(xpp, res);
11679    next(xpp);
11680    int eventType = nextNoWhitespace(xpp);
11681    while (eventType != XmlPullParser.END_TAG) {
11682  if (!parseImplementationGuideManifestResourceComponentContent(eventType, xpp, owner, res))
11683        unknownContent(xpp);
11684      eventType = nextNoWhitespace(xpp);
11685    }
11686    next(xpp);
11687    parseElementClose(res);
11688    return res;
11689  }
11690
11691  protected boolean parseImplementationGuideManifestResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ManifestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11692      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11693        res.setReference(parseReference(xpp));
11694      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
11695        res.setExample(parseType("example", xpp));
11696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativePath")) {
11697        res.setRelativePathElement(parseUrl(xpp));
11698      } else if (!parseBackboneElementContent(eventType, xpp, res))
11699        return false;
11700    return true;
11701  }
11702
11703  protected ImplementationGuide.ManifestPageComponent parseImplementationGuideManifestPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11704    ImplementationGuide.ManifestPageComponent res = new ImplementationGuide.ManifestPageComponent();
11705    parseBackboneAttributes(xpp, res);
11706    next(xpp);
11707    int eventType = nextNoWhitespace(xpp);
11708    while (eventType != XmlPullParser.END_TAG) {
11709  if (!parseImplementationGuideManifestPageComponentContent(eventType, xpp, owner, res))
11710        unknownContent(xpp);
11711      eventType = nextNoWhitespace(xpp);
11712    }
11713    next(xpp);
11714    parseElementClose(res);
11715    return res;
11716  }
11717
11718  protected boolean parseImplementationGuideManifestPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ManifestPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11719      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11720        res.setNameElement(parseString(xpp));
11721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11722        res.setTitleElement(parseString(xpp));
11723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("anchor")) {
11724        res.getAnchor().add(parseString(xpp));
11725      } else if (!parseBackboneElementContent(eventType, xpp, res))
11726        return false;
11727    return true;
11728  }
11729
11730  protected InsurancePlan parseInsurancePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11731    InsurancePlan res = new InsurancePlan();
11732    parseDomainResourceAttributes(xpp, res);
11733    next(xpp);
11734    int eventType = nextNoWhitespace(xpp);
11735    while (eventType != XmlPullParser.END_TAG) {
11736  if (!parseInsurancePlanContent(eventType, xpp, res))
11737        unknownContent(xpp);
11738      eventType = nextNoWhitespace(xpp);
11739    }
11740    next(xpp);
11741    parseElementClose(res);
11742    return res;
11743  }
11744
11745  protected boolean parseInsurancePlanContent(int eventType, XmlPullParser xpp, InsurancePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
11746      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11747        res.getIdentifier().add(parseIdentifier(xpp));
11748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11749        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11751        res.getType().add(parseCodeableConcept(xpp));
11752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11753        res.setNameElement(parseString(xpp));
11754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
11755        res.getAlias().add(parseString(xpp));
11756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11757        res.setPeriod(parsePeriod(xpp));
11758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ownedBy")) {
11759        res.setOwnedBy(parseReference(xpp));
11760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administeredBy")) {
11761        res.setAdministeredBy(parseReference(xpp));
11762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
11763        res.getCoverageArea().add(parseReference(xpp));
11764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11765        res.getContact().add(parseInsurancePlanInsurancePlanContactComponent(xpp, res));
11766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11767        res.getEndpoint().add(parseReference(xpp));
11768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
11769        res.getNetwork().add(parseReference(xpp));
11770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
11771        res.getCoverage().add(parseInsurancePlanInsurancePlanCoverageComponent(xpp, res));
11772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
11773        res.getPlan().add(parseInsurancePlanInsurancePlanPlanComponent(xpp, res));
11774      } else if (!parseDomainResourceContent(eventType, xpp, res))
11775        return false;
11776    return true;
11777  }
11778
11779  protected InsurancePlan.InsurancePlanContactComponent parseInsurancePlanInsurancePlanContactComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
11780    InsurancePlan.InsurancePlanContactComponent res = new InsurancePlan.InsurancePlanContactComponent();
11781    parseBackboneAttributes(xpp, res);
11782    next(xpp);
11783    int eventType = nextNoWhitespace(xpp);
11784    while (eventType != XmlPullParser.END_TAG) {
11785  if (!parseInsurancePlanInsurancePlanContactComponentContent(eventType, xpp, owner, res))
11786        unknownContent(xpp);
11787      eventType = nextNoWhitespace(xpp);
11788    }
11789    next(xpp);
11790    parseElementClose(res);
11791    return res;
11792  }
11793
11794  protected boolean parseInsurancePlanInsurancePlanContactComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11795      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
11796        res.setPurpose(parseCodeableConcept(xpp));
11797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11798        res.setName(parseHumanName(xpp));
11799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
11800        res.getTelecom().add(parseContactPoint(xpp));
11801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
11802        res.setAddress(parseAddress(xpp));
11803      } else if (!parseBackboneElementContent(eventType, xpp, res))
11804        return false;
11805    return true;
11806  }
11807
11808  protected InsurancePlan.InsurancePlanCoverageComponent parseInsurancePlanInsurancePlanCoverageComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
11809    InsurancePlan.InsurancePlanCoverageComponent res = new InsurancePlan.InsurancePlanCoverageComponent();
11810    parseBackboneAttributes(xpp, res);
11811    next(xpp);
11812    int eventType = nextNoWhitespace(xpp);
11813    while (eventType != XmlPullParser.END_TAG) {
11814  if (!parseInsurancePlanInsurancePlanCoverageComponentContent(eventType, xpp, owner, res))
11815        unknownContent(xpp);
11816      eventType = nextNoWhitespace(xpp);
11817    }
11818    next(xpp);
11819    parseElementClose(res);
11820    return res;
11821  }
11822
11823  protected boolean parseInsurancePlanInsurancePlanCoverageComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanCoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11824      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11825        res.setType(parseCodeableConcept(xpp));
11826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
11827        res.getNetwork().add(parseReference(xpp));
11828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
11829        res.getBenefit().add(parseInsurancePlanCoverageBenefitComponent(xpp, owner));
11830      } else if (!parseBackboneElementContent(eventType, xpp, res))
11831        return false;
11832    return true;
11833  }
11834
11835  protected InsurancePlan.CoverageBenefitComponent parseInsurancePlanCoverageBenefitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
11836    InsurancePlan.CoverageBenefitComponent res = new InsurancePlan.CoverageBenefitComponent();
11837    parseBackboneAttributes(xpp, res);
11838    next(xpp);
11839    int eventType = nextNoWhitespace(xpp);
11840    while (eventType != XmlPullParser.END_TAG) {
11841  if (!parseInsurancePlanCoverageBenefitComponentContent(eventType, xpp, owner, res))
11842        unknownContent(xpp);
11843      eventType = nextNoWhitespace(xpp);
11844    }
11845    next(xpp);
11846    parseElementClose(res);
11847    return res;
11848  }
11849
11850  protected boolean parseInsurancePlanCoverageBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.CoverageBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11851      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11852        res.setType(parseCodeableConcept(xpp));
11853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
11854        res.setRequirementElement(parseString(xpp));
11855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
11856        res.getLimit().add(parseInsurancePlanCoverageBenefitLimitComponent(xpp, owner));
11857      } else if (!parseBackboneElementContent(eventType, xpp, res))
11858        return false;
11859    return true;
11860  }
11861
11862  protected InsurancePlan.CoverageBenefitLimitComponent parseInsurancePlanCoverageBenefitLimitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
11863    InsurancePlan.CoverageBenefitLimitComponent res = new InsurancePlan.CoverageBenefitLimitComponent();
11864    parseBackboneAttributes(xpp, res);
11865    next(xpp);
11866    int eventType = nextNoWhitespace(xpp);
11867    while (eventType != XmlPullParser.END_TAG) {
11868  if (!parseInsurancePlanCoverageBenefitLimitComponentContent(eventType, xpp, owner, res))
11869        unknownContent(xpp);
11870      eventType = nextNoWhitespace(xpp);
11871    }
11872    next(xpp);
11873    parseElementClose(res);
11874    return res;
11875  }
11876
11877  protected boolean parseInsurancePlanCoverageBenefitLimitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.CoverageBenefitLimitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11879        res.setValue(parseQuantity(xpp));
11880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11881        res.setCode(parseCodeableConcept(xpp));
11882      } else if (!parseBackboneElementContent(eventType, xpp, res))
11883        return false;
11884    return true;
11885  }
11886
11887  protected InsurancePlan.InsurancePlanPlanComponent parseInsurancePlanInsurancePlanPlanComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
11888    InsurancePlan.InsurancePlanPlanComponent res = new InsurancePlan.InsurancePlanPlanComponent();
11889    parseBackboneAttributes(xpp, res);
11890    next(xpp);
11891    int eventType = nextNoWhitespace(xpp);
11892    while (eventType != XmlPullParser.END_TAG) {
11893  if (!parseInsurancePlanInsurancePlanPlanComponentContent(eventType, xpp, owner, res))
11894        unknownContent(xpp);
11895      eventType = nextNoWhitespace(xpp);
11896    }
11897    next(xpp);
11898    parseElementClose(res);
11899    return res;
11900  }
11901
11902  protected boolean parseInsurancePlanInsurancePlanPlanComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11904        res.getIdentifier().add(parseIdentifier(xpp));
11905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11906        res.setType(parseCodeableConcept(xpp));
11907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
11908        res.getCoverageArea().add(parseReference(xpp));
11909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
11910        res.getNetwork().add(parseReference(xpp));
11911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalCost")) {
11912        res.getGeneralCost().add(parseInsurancePlanInsurancePlanPlanGeneralCostComponent(xpp, owner));
11913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specificCost")) {
11914        res.getSpecificCost().add(parseInsurancePlanInsurancePlanPlanSpecificCostComponent(xpp, owner));
11915      } else if (!parseBackboneElementContent(eventType, xpp, res))
11916        return false;
11917    return true;
11918  }
11919
11920  protected InsurancePlan.InsurancePlanPlanGeneralCostComponent parseInsurancePlanInsurancePlanPlanGeneralCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
11921    InsurancePlan.InsurancePlanPlanGeneralCostComponent res = new InsurancePlan.InsurancePlanPlanGeneralCostComponent();
11922    parseBackboneAttributes(xpp, res);
11923    next(xpp);
11924    int eventType = nextNoWhitespace(xpp);
11925    while (eventType != XmlPullParser.END_TAG) {
11926  if (!parseInsurancePlanInsurancePlanPlanGeneralCostComponentContent(eventType, xpp, owner, res))
11927        unknownContent(xpp);
11928      eventType = nextNoWhitespace(xpp);
11929    }
11930    next(xpp);
11931    parseElementClose(res);
11932    return res;
11933  }
11934
11935  protected boolean parseInsurancePlanInsurancePlanPlanGeneralCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanGeneralCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11936      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11937        res.setType(parseCodeableConcept(xpp));
11938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupSize")) {
11939        res.setGroupSizeElement(parsePositiveInt(xpp));
11940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
11941        res.setCost(parseMoney(xpp));
11942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11943        res.setCommentElement(parseString(xpp));
11944      } else if (!parseBackboneElementContent(eventType, xpp, res))
11945        return false;
11946    return true;
11947  }
11948
11949  protected InsurancePlan.InsurancePlanPlanSpecificCostComponent parseInsurancePlanInsurancePlanPlanSpecificCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
11950    InsurancePlan.InsurancePlanPlanSpecificCostComponent res = new InsurancePlan.InsurancePlanPlanSpecificCostComponent();
11951    parseBackboneAttributes(xpp, res);
11952    next(xpp);
11953    int eventType = nextNoWhitespace(xpp);
11954    while (eventType != XmlPullParser.END_TAG) {
11955  if (!parseInsurancePlanInsurancePlanPlanSpecificCostComponentContent(eventType, xpp, owner, res))
11956        unknownContent(xpp);
11957      eventType = nextNoWhitespace(xpp);
11958    }
11959    next(xpp);
11960    parseElementClose(res);
11961    return res;
11962  }
11963
11964  protected boolean parseInsurancePlanInsurancePlanPlanSpecificCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanSpecificCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11965      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11966        res.setCategory(parseCodeableConcept(xpp));
11967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
11968        res.getBenefit().add(parseInsurancePlanPlanBenefitComponent(xpp, owner));
11969      } else if (!parseBackboneElementContent(eventType, xpp, res))
11970        return false;
11971    return true;
11972  }
11973
11974  protected InsurancePlan.PlanBenefitComponent parseInsurancePlanPlanBenefitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
11975    InsurancePlan.PlanBenefitComponent res = new InsurancePlan.PlanBenefitComponent();
11976    parseBackboneAttributes(xpp, res);
11977    next(xpp);
11978    int eventType = nextNoWhitespace(xpp);
11979    while (eventType != XmlPullParser.END_TAG) {
11980  if (!parseInsurancePlanPlanBenefitComponentContent(eventType, xpp, owner, res))
11981        unknownContent(xpp);
11982      eventType = nextNoWhitespace(xpp);
11983    }
11984    next(xpp);
11985    parseElementClose(res);
11986    return res;
11987  }
11988
11989  protected boolean parseInsurancePlanPlanBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.PlanBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11990      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11991        res.setType(parseCodeableConcept(xpp));
11992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
11993        res.getCost().add(parseInsurancePlanPlanBenefitCostComponent(xpp, owner));
11994      } else if (!parseBackboneElementContent(eventType, xpp, res))
11995        return false;
11996    return true;
11997  }
11998
11999  protected InsurancePlan.PlanBenefitCostComponent parseInsurancePlanPlanBenefitCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12000    InsurancePlan.PlanBenefitCostComponent res = new InsurancePlan.PlanBenefitCostComponent();
12001    parseBackboneAttributes(xpp, res);
12002    next(xpp);
12003    int eventType = nextNoWhitespace(xpp);
12004    while (eventType != XmlPullParser.END_TAG) {
12005  if (!parseInsurancePlanPlanBenefitCostComponentContent(eventType, xpp, owner, res))
12006        unknownContent(xpp);
12007      eventType = nextNoWhitespace(xpp);
12008    }
12009    next(xpp);
12010    parseElementClose(res);
12011    return res;
12012  }
12013
12014  protected boolean parseInsurancePlanPlanBenefitCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.PlanBenefitCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12015      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12016        res.setType(parseCodeableConcept(xpp));
12017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
12018        res.setApplicability(parseCodeableConcept(xpp));
12019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiers")) {
12020        res.getQualifiers().add(parseCodeableConcept(xpp));
12021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12022        res.setValue(parseQuantity(xpp));
12023      } else if (!parseBackboneElementContent(eventType, xpp, res))
12024        return false;
12025    return true;
12026  }
12027
12028  protected Invoice parseInvoice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12029    Invoice res = new Invoice();
12030    parseDomainResourceAttributes(xpp, res);
12031    next(xpp);
12032    int eventType = nextNoWhitespace(xpp);
12033    while (eventType != XmlPullParser.END_TAG) {
12034  if (!parseInvoiceContent(eventType, xpp, res))
12035        unknownContent(xpp);
12036      eventType = nextNoWhitespace(xpp);
12037    }
12038    next(xpp);
12039    parseElementClose(res);
12040    return res;
12041  }
12042
12043  protected boolean parseInvoiceContent(int eventType, XmlPullParser xpp, Invoice res) throws XmlPullParserException, IOException, FHIRFormatError {
12044      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12045        res.getIdentifier().add(parseIdentifier(xpp));
12046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12047        res.setStatusElement(parseEnumeration(xpp, Invoice.InvoiceStatus.NULL, new Invoice.InvoiceStatusEnumFactory()));
12048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelledReason")) {
12049        res.setCancelledReasonElement(parseString(xpp));
12050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12051        res.setType(parseCodeableConcept(xpp));
12052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12053        res.setSubject(parseReference(xpp));
12054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
12055        res.setRecipient(parseReference(xpp));
12056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12057        res.setDateElement(parseDateTime(xpp));
12058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
12059        res.getParticipant().add(parseInvoiceInvoiceParticipantComponent(xpp, res));
12060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
12061        res.setIssuer(parseReference(xpp));
12062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
12063        res.setAccount(parseReference(xpp));
12064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lineItem")) {
12065        res.getLineItem().add(parseInvoiceInvoiceLineItemComponent(xpp, res));
12066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalPriceComponent")) {
12067        res.getTotalPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, res));
12068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalNet")) {
12069        res.setTotalNet(parseMoney(xpp));
12070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalGross")) {
12071        res.setTotalGross(parseMoney(xpp));
12072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentTerms")) {
12073        res.setPaymentTermsElement(parseMarkdown(xpp));
12074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12075        res.getNote().add(parseAnnotation(xpp));
12076      } else if (!parseDomainResourceContent(eventType, xpp, res))
12077        return false;
12078    return true;
12079  }
12080
12081  protected Invoice.InvoiceParticipantComponent parseInvoiceInvoiceParticipantComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12082    Invoice.InvoiceParticipantComponent res = new Invoice.InvoiceParticipantComponent();
12083    parseBackboneAttributes(xpp, res);
12084    next(xpp);
12085    int eventType = nextNoWhitespace(xpp);
12086    while (eventType != XmlPullParser.END_TAG) {
12087  if (!parseInvoiceInvoiceParticipantComponentContent(eventType, xpp, owner, res))
12088        unknownContent(xpp);
12089      eventType = nextNoWhitespace(xpp);
12090    }
12091    next(xpp);
12092    parseElementClose(res);
12093    return res;
12094  }
12095
12096  protected boolean parseInvoiceInvoiceParticipantComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12097      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
12098        res.setRole(parseCodeableConcept(xpp));
12099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
12100        res.setActor(parseReference(xpp));
12101      } else if (!parseBackboneElementContent(eventType, xpp, res))
12102        return false;
12103    return true;
12104  }
12105
12106  protected Invoice.InvoiceLineItemComponent parseInvoiceInvoiceLineItemComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12107    Invoice.InvoiceLineItemComponent res = new Invoice.InvoiceLineItemComponent();
12108    parseBackboneAttributes(xpp, res);
12109    next(xpp);
12110    int eventType = nextNoWhitespace(xpp);
12111    while (eventType != XmlPullParser.END_TAG) {
12112  if (!parseInvoiceInvoiceLineItemComponentContent(eventType, xpp, owner, res))
12113        unknownContent(xpp);
12114      eventType = nextNoWhitespace(xpp);
12115    }
12116    next(xpp);
12117    parseElementClose(res);
12118    return res;
12119  }
12120
12121  protected boolean parseInvoiceInvoiceLineItemComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12122      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
12123        res.setSequenceElement(parsePositiveInt(xpp));
12124      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "chargeItem")) {
12125        res.setChargeItem(parseType("chargeItem", xpp));
12126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
12127        res.getPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, owner));
12128      } else if (!parseBackboneElementContent(eventType, xpp, res))
12129        return false;
12130    return true;
12131  }
12132
12133  protected Invoice.InvoiceLineItemPriceComponentComponent parseInvoiceInvoiceLineItemPriceComponentComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12134    Invoice.InvoiceLineItemPriceComponentComponent res = new Invoice.InvoiceLineItemPriceComponentComponent();
12135    parseBackboneAttributes(xpp, res);
12136    next(xpp);
12137    int eventType = nextNoWhitespace(xpp);
12138    while (eventType != XmlPullParser.END_TAG) {
12139  if (!parseInvoiceInvoiceLineItemPriceComponentComponentContent(eventType, xpp, owner, res))
12140        unknownContent(xpp);
12141      eventType = nextNoWhitespace(xpp);
12142    }
12143    next(xpp);
12144    parseElementClose(res);
12145    return res;
12146  }
12147
12148  protected boolean parseInvoiceInvoiceLineItemPriceComponentComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12149      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12150        res.setTypeElement(parseEnumeration(xpp, Invoice.InvoicePriceComponentType.NULL, new Invoice.InvoicePriceComponentTypeEnumFactory()));
12151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12152        res.setCode(parseCodeableConcept(xpp));
12153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
12154        res.setFactorElement(parseDecimal(xpp));
12155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12156        res.setAmount(parseMoney(xpp));
12157      } else if (!parseBackboneElementContent(eventType, xpp, res))
12158        return false;
12159    return true;
12160  }
12161
12162  protected ItemInstance parseItemInstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12163    ItemInstance res = new ItemInstance();
12164    parseDomainResourceAttributes(xpp, res);
12165    next(xpp);
12166    int eventType = nextNoWhitespace(xpp);
12167    while (eventType != XmlPullParser.END_TAG) {
12168  if (!parseItemInstanceContent(eventType, xpp, res))
12169        unknownContent(xpp);
12170      eventType = nextNoWhitespace(xpp);
12171    }
12172    next(xpp);
12173    parseElementClose(res);
12174    return res;
12175  }
12176
12177  protected boolean parseItemInstanceContent(int eventType, XmlPullParser xpp, ItemInstance res) throws XmlPullParserException, IOException, FHIRFormatError {
12178      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
12179        res.setCountElement(parseInteger(xpp));
12180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
12181        res.setLocation(parseReference(xpp));
12182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12183        res.setSubject(parseReference(xpp));
12184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
12185        res.setManufactureDateElement(parseDateTime(xpp));
12186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiryDate")) {
12187        res.setExpiryDateElement(parseDateTime(xpp));
12188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currentSWVersion")) {
12189        res.setCurrentSWVersionElement(parseString(xpp));
12190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
12191        res.setLotNumberElement(parseString(xpp));
12192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
12193        res.setSerialNumberElement(parseString(xpp));
12194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
12195        res.setCarrierAIDCElement(parseString(xpp));
12196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
12197        res.setCarrierHRFElement(parseString(xpp));
12198      } else if (!parseDomainResourceContent(eventType, xpp, res))
12199        return false;
12200    return true;
12201  }
12202
12203  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12204    Library res = new Library();
12205    parseDomainResourceAttributes(xpp, res);
12206    next(xpp);
12207    int eventType = nextNoWhitespace(xpp);
12208    while (eventType != XmlPullParser.END_TAG) {
12209  if (!parseLibraryContent(eventType, xpp, res))
12210        unknownContent(xpp);
12211      eventType = nextNoWhitespace(xpp);
12212    }
12213    next(xpp);
12214    parseElementClose(res);
12215    return res;
12216  }
12217
12218  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
12219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12220        res.setUrlElement(parseUri(xpp));
12221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12222        res.getIdentifier().add(parseIdentifier(xpp));
12223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12224        res.setVersionElement(parseString(xpp));
12225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12226        res.setNameElement(parseString(xpp));
12227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12228        res.setTitleElement(parseString(xpp));
12229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
12230        res.setSubtitleElement(parseString(xpp));
12231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12232        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12234        res.setExperimentalElement(parseBoolean(xpp));
12235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12236        res.setType(parseCodeableConcept(xpp));
12237      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
12238        res.setSubject(parseType("subject", xpp));
12239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12240        res.setDateElement(parseDateTime(xpp));
12241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12242        res.setPublisherElement(parseString(xpp));
12243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12244        res.getContact().add(parseContactDetail(xpp));
12245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12246        res.setDescriptionElement(parseMarkdown(xpp));
12247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12248        res.getUseContext().add(parseUsageContext(xpp));
12249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12250        res.getJurisdiction().add(parseCodeableConcept(xpp));
12251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12252        res.setPurposeElement(parseMarkdown(xpp));
12253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12254        res.setUsageElement(parseString(xpp));
12255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12256        res.setCopyrightElement(parseMarkdown(xpp));
12257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12258        res.setApprovalDateElement(parseDate(xpp));
12259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12260        res.setLastReviewDateElement(parseDate(xpp));
12261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
12262        res.setEffectivePeriod(parsePeriod(xpp));
12263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
12264        res.getTopic().add(parseCodeableConcept(xpp));
12265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12266        res.getAuthor().add(parseContactDetail(xpp));
12267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
12268        res.getEditor().add(parseContactDetail(xpp));
12269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
12270        res.getReviewer().add(parseContactDetail(xpp));
12271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
12272        res.getEndorser().add(parseContactDetail(xpp));
12273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12274        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12276        res.getParameter().add(parseParameterDefinition(xpp));
12277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
12278        res.getDataRequirement().add(parseDataRequirement(xpp));
12279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
12280        res.getContent().add(parseAttachment(xpp));
12281      } else if (!parseDomainResourceContent(eventType, xpp, res))
12282        return false;
12283    return true;
12284  }
12285
12286  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12287    Linkage res = new Linkage();
12288    parseDomainResourceAttributes(xpp, res);
12289    next(xpp);
12290    int eventType = nextNoWhitespace(xpp);
12291    while (eventType != XmlPullParser.END_TAG) {
12292  if (!parseLinkageContent(eventType, xpp, res))
12293        unknownContent(xpp);
12294      eventType = nextNoWhitespace(xpp);
12295    }
12296    next(xpp);
12297    parseElementClose(res);
12298    return res;
12299  }
12300
12301  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
12302      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12303        res.setActiveElement(parseBoolean(xpp));
12304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12305        res.setAuthor(parseReference(xpp));
12306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
12307        res.getItem().add(parseLinkageLinkageItemComponent(xpp, res));
12308      } else if (!parseDomainResourceContent(eventType, xpp, res))
12309        return false;
12310    return true;
12311  }
12312
12313  protected Linkage.LinkageItemComponent parseLinkageLinkageItemComponent(XmlPullParser xpp, Linkage owner) throws XmlPullParserException, IOException, FHIRFormatError {
12314    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
12315    parseBackboneAttributes(xpp, res);
12316    next(xpp);
12317    int eventType = nextNoWhitespace(xpp);
12318    while (eventType != XmlPullParser.END_TAG) {
12319  if (!parseLinkageLinkageItemComponentContent(eventType, xpp, owner, res))
12320        unknownContent(xpp);
12321      eventType = nextNoWhitespace(xpp);
12322    }
12323    next(xpp);
12324    parseElementClose(res);
12325    return res;
12326  }
12327
12328  protected boolean parseLinkageLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage owner, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12329      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12330        res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
12331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12332        res.setResource(parseReference(xpp));
12333      } else if (!parseBackboneElementContent(eventType, xpp, res))
12334        return false;
12335    return true;
12336  }
12337
12338  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12339    ListResource res = new ListResource();
12340    parseDomainResourceAttributes(xpp, res);
12341    next(xpp);
12342    int eventType = nextNoWhitespace(xpp);
12343    while (eventType != XmlPullParser.END_TAG) {
12344  if (!parseListResourceContent(eventType, xpp, res))
12345        unknownContent(xpp);
12346      eventType = nextNoWhitespace(xpp);
12347    }
12348    next(xpp);
12349    parseElementClose(res);
12350    return res;
12351  }
12352
12353  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
12354      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12355        res.getIdentifier().add(parseIdentifier(xpp));
12356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12357        res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
12358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12359        res.setModeElement(parseEnumeration(xpp, ListResource.ListMode.NULL, new ListResource.ListModeEnumFactory()));
12360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12361        res.setTitleElement(parseString(xpp));
12362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12363        res.setCode(parseCodeableConcept(xpp));
12364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12365        res.setSubject(parseReference(xpp));
12366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
12367        res.setEncounter(parseReference(xpp));
12368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12369        res.setDateElement(parseDateTime(xpp));
12370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12371        res.setSource(parseReference(xpp));
12372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
12373        res.setOrderedBy(parseCodeableConcept(xpp));
12374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12375        res.getNote().add(parseAnnotation(xpp));
12376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
12377        res.getEntry().add(parseListResourceListEntryComponent(xpp, res));
12378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
12379        res.setEmptyReason(parseCodeableConcept(xpp));
12380      } else if (!parseDomainResourceContent(eventType, xpp, res))
12381        return false;
12382    return true;
12383  }
12384
12385  protected ListResource.ListEntryComponent parseListResourceListEntryComponent(XmlPullParser xpp, ListResource owner) throws XmlPullParserException, IOException, FHIRFormatError {
12386    ListResource.ListEntryComponent res = new ListResource.ListEntryComponent();
12387    parseBackboneAttributes(xpp, res);
12388    next(xpp);
12389    int eventType = nextNoWhitespace(xpp);
12390    while (eventType != XmlPullParser.END_TAG) {
12391  if (!parseListResourceListEntryComponentContent(eventType, xpp, owner, res))
12392        unknownContent(xpp);
12393      eventType = nextNoWhitespace(xpp);
12394    }
12395    next(xpp);
12396    parseElementClose(res);
12397    return res;
12398  }
12399
12400  protected boolean parseListResourceListEntryComponentContent(int eventType, XmlPullParser xpp, ListResource owner, ListResource.ListEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12401      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
12402        res.setFlag(parseCodeableConcept(xpp));
12403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
12404        res.setDeletedElement(parseBoolean(xpp));
12405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12406        res.setDateElement(parseDateTime(xpp));
12407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
12408        res.setItem(parseReference(xpp));
12409      } else if (!parseBackboneElementContent(eventType, xpp, res))
12410        return false;
12411    return true;
12412  }
12413
12414  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12415    Location res = new Location();
12416    parseDomainResourceAttributes(xpp, res);
12417    next(xpp);
12418    int eventType = nextNoWhitespace(xpp);
12419    while (eventType != XmlPullParser.END_TAG) {
12420  if (!parseLocationContent(eventType, xpp, res))
12421        unknownContent(xpp);
12422      eventType = nextNoWhitespace(xpp);
12423    }
12424    next(xpp);
12425    parseElementClose(res);
12426    return res;
12427  }
12428
12429  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
12430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12431        res.getIdentifier().add(parseIdentifier(xpp));
12432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12433        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
12434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
12435        res.setOperationalStatus(parseCoding(xpp));
12436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12437        res.setNameElement(parseString(xpp));
12438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12439        res.getAlias().add(parseString(xpp));
12440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12441        res.setDescriptionElement(parseString(xpp));
12442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12443        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
12444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12445        res.getType().add(parseCodeableConcept(xpp));
12446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12447        res.getTelecom().add(parseContactPoint(xpp));
12448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12449        res.setAddress(parseAddress(xpp));
12450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
12451        res.setPhysicalType(parseCodeableConcept(xpp));
12452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
12453        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
12454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12455        res.setManagingOrganization(parseReference(xpp));
12456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12457        res.setPartOf(parseReference(xpp));
12458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hoursOfOperation")) {
12459        res.getHoursOfOperation().add(parseLocationLocationHoursOfOperationComponent(xpp, res));
12460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
12461        res.setAvailabilityExceptionsElement(parseString(xpp));
12462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12463        res.getEndpoint().add(parseReference(xpp));
12464      } else if (!parseDomainResourceContent(eventType, xpp, res))
12465        return false;
12466    return true;
12467  }
12468
12469  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
12470    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
12471    parseBackboneAttributes(xpp, res);
12472    next(xpp);
12473    int eventType = nextNoWhitespace(xpp);
12474    while (eventType != XmlPullParser.END_TAG) {
12475  if (!parseLocationLocationPositionComponentContent(eventType, xpp, owner, res))
12476        unknownContent(xpp);
12477      eventType = nextNoWhitespace(xpp);
12478    }
12479    next(xpp);
12480    parseElementClose(res);
12481    return res;
12482  }
12483
12484  protected boolean parseLocationLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12485      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
12486        res.setLongitudeElement(parseDecimal(xpp));
12487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
12488        res.setLatitudeElement(parseDecimal(xpp));
12489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
12490        res.setAltitudeElement(parseDecimal(xpp));
12491      } else if (!parseBackboneElementContent(eventType, xpp, res))
12492        return false;
12493    return true;
12494  }
12495
12496  protected Location.LocationHoursOfOperationComponent parseLocationLocationHoursOfOperationComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
12497    Location.LocationHoursOfOperationComponent res = new Location.LocationHoursOfOperationComponent();
12498    parseBackboneAttributes(xpp, res);
12499    next(xpp);
12500    int eventType = nextNoWhitespace(xpp);
12501    while (eventType != XmlPullParser.END_TAG) {
12502  if (!parseLocationLocationHoursOfOperationComponentContent(eventType, xpp, owner, res))
12503        unknownContent(xpp);
12504      eventType = nextNoWhitespace(xpp);
12505    }
12506    next(xpp);
12507    parseElementClose(res);
12508    return res;
12509  }
12510
12511  protected boolean parseLocationLocationHoursOfOperationComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationHoursOfOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12512      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
12513        res.getDaysOfWeek().add(parseEnumeration(xpp, Location.DaysOfWeek.NULL, new Location.DaysOfWeekEnumFactory()));
12514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
12515        res.setAllDayElement(parseBoolean(xpp));
12516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("openingTime")) {
12517        res.setOpeningTimeElement(parseTime(xpp));
12518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closingTime")) {
12519        res.setClosingTimeElement(parseTime(xpp));
12520      } else if (!parseBackboneElementContent(eventType, xpp, res))
12521        return false;
12522    return true;
12523  }
12524
12525  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12526    Measure res = new Measure();
12527    parseDomainResourceAttributes(xpp, res);
12528    next(xpp);
12529    int eventType = nextNoWhitespace(xpp);
12530    while (eventType != XmlPullParser.END_TAG) {
12531  if (!parseMeasureContent(eventType, xpp, res))
12532        unknownContent(xpp);
12533      eventType = nextNoWhitespace(xpp);
12534    }
12535    next(xpp);
12536    parseElementClose(res);
12537    return res;
12538  }
12539
12540  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
12541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12542        res.setUrlElement(parseUri(xpp));
12543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12544        res.getIdentifier().add(parseIdentifier(xpp));
12545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12546        res.setVersionElement(parseString(xpp));
12547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12548        res.setNameElement(parseString(xpp));
12549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12550        res.setTitleElement(parseString(xpp));
12551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
12552        res.setSubtitleElement(parseString(xpp));
12553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12554        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12556        res.setExperimentalElement(parseBoolean(xpp));
12557      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
12558        res.setSubject(parseType("subject", xpp));
12559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12560        res.setDateElement(parseDateTime(xpp));
12561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12562        res.setPublisherElement(parseString(xpp));
12563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12564        res.getContact().add(parseContactDetail(xpp));
12565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12566        res.setDescriptionElement(parseMarkdown(xpp));
12567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12568        res.getUseContext().add(parseUsageContext(xpp));
12569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12570        res.getJurisdiction().add(parseCodeableConcept(xpp));
12571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12572        res.setPurposeElement(parseMarkdown(xpp));
12573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12574        res.setUsageElement(parseString(xpp));
12575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12576        res.setCopyrightElement(parseMarkdown(xpp));
12577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12578        res.setApprovalDateElement(parseDate(xpp));
12579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12580        res.setLastReviewDateElement(parseDate(xpp));
12581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
12582        res.setEffectivePeriod(parsePeriod(xpp));
12583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
12584        res.getTopic().add(parseCodeableConcept(xpp));
12585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12586        res.getAuthor().add(parseContactDetail(xpp));
12587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
12588        res.getEditor().add(parseContactDetail(xpp));
12589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
12590        res.getReviewer().add(parseContactDetail(xpp));
12591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
12592        res.getEndorser().add(parseContactDetail(xpp));
12593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12594        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
12596        res.getLibrary().add(parseCanonical(xpp));
12597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
12598        res.setDisclaimerElement(parseMarkdown(xpp));
12599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
12600        res.setScoring(parseCodeableConcept(xpp));
12601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
12602        res.setCompositeScoring(parseCodeableConcept(xpp));
12603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12604        res.getType().add(parseCodeableConcept(xpp));
12605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
12606        res.setRiskAdjustmentElement(parseString(xpp));
12607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
12608        res.setRateAggregationElement(parseString(xpp));
12609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
12610        res.setRationaleElement(parseMarkdown(xpp));
12611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
12612        res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
12613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
12614        res.setImprovementNotationElement(parseEnumeration(xpp, Measure.MeasureImprovementNotation.NULL, new Measure.MeasureImprovementNotationEnumFactory()));
12615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
12616        res.getDefinition().add(parseMarkdown(xpp));
12617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
12618        res.setGuidanceElement(parseMarkdown(xpp));
12619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
12620        res.getGroup().add(parseMeasureMeasureGroupComponent(xpp, res));
12621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
12622        res.getSupplementalData().add(parseMeasureMeasureSupplementalDataComponent(xpp, res));
12623      } else if (!parseDomainResourceContent(eventType, xpp, res))
12624        return false;
12625    return true;
12626  }
12627
12628  protected Measure.MeasureGroupComponent parseMeasureMeasureGroupComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
12629    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
12630    parseBackboneAttributes(xpp, res);
12631    next(xpp);
12632    int eventType = nextNoWhitespace(xpp);
12633    while (eventType != XmlPullParser.END_TAG) {
12634  if (!parseMeasureMeasureGroupComponentContent(eventType, xpp, owner, res))
12635        unknownContent(xpp);
12636      eventType = nextNoWhitespace(xpp);
12637    }
12638    next(xpp);
12639    parseElementClose(res);
12640    return res;
12641  }
12642
12643  protected boolean parseMeasureMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12644      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12645        res.setCode(parseCodeableConcept(xpp));
12646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12647        res.setDescriptionElement(parseString(xpp));
12648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
12649        res.getPopulation().add(parseMeasureMeasureGroupPopulationComponent(xpp, owner));
12650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
12651        res.getStratifier().add(parseMeasureMeasureGroupStratifierComponent(xpp, owner));
12652      } else if (!parseBackboneElementContent(eventType, xpp, res))
12653        return false;
12654    return true;
12655  }
12656
12657  protected Measure.MeasureGroupPopulationComponent parseMeasureMeasureGroupPopulationComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
12658    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
12659    parseBackboneAttributes(xpp, res);
12660    next(xpp);
12661    int eventType = nextNoWhitespace(xpp);
12662    while (eventType != XmlPullParser.END_TAG) {
12663  if (!parseMeasureMeasureGroupPopulationComponentContent(eventType, xpp, owner, res))
12664        unknownContent(xpp);
12665      eventType = nextNoWhitespace(xpp);
12666    }
12667    next(xpp);
12668    parseElementClose(res);
12669    return res;
12670  }
12671
12672  protected boolean parseMeasureMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12673      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12674        res.setCode(parseCodeableConcept(xpp));
12675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12676        res.setDescriptionElement(parseString(xpp));
12677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
12678        res.setCriteria(parseExpression(xpp));
12679      } else if (!parseBackboneElementContent(eventType, xpp, res))
12680        return false;
12681    return true;
12682  }
12683
12684  protected Measure.MeasureGroupStratifierComponent parseMeasureMeasureGroupStratifierComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
12685    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
12686    parseBackboneAttributes(xpp, res);
12687    next(xpp);
12688    int eventType = nextNoWhitespace(xpp);
12689    while (eventType != XmlPullParser.END_TAG) {
12690  if (!parseMeasureMeasureGroupStratifierComponentContent(eventType, xpp, owner, res))
12691        unknownContent(xpp);
12692      eventType = nextNoWhitespace(xpp);
12693    }
12694    next(xpp);
12695    parseElementClose(res);
12696    return res;
12697  }
12698
12699  protected boolean parseMeasureMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12700      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12701        res.setCode(parseCodeableConcept(xpp));
12702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12703        res.setDescriptionElement(parseString(xpp));
12704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
12705        res.setCriteria(parseExpression(xpp));
12706      } else if (!parseBackboneElementContent(eventType, xpp, res))
12707        return false;
12708    return true;
12709  }
12710
12711  protected Measure.MeasureSupplementalDataComponent parseMeasureMeasureSupplementalDataComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
12712    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
12713    parseBackboneAttributes(xpp, res);
12714    next(xpp);
12715    int eventType = nextNoWhitespace(xpp);
12716    while (eventType != XmlPullParser.END_TAG) {
12717  if (!parseMeasureMeasureSupplementalDataComponentContent(eventType, xpp, owner, res))
12718        unknownContent(xpp);
12719      eventType = nextNoWhitespace(xpp);
12720    }
12721    next(xpp);
12722    parseElementClose(res);
12723    return res;
12724  }
12725
12726  protected boolean parseMeasureMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12727      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12728        res.setCode(parseCodeableConcept(xpp));
12729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12730        res.getUsage().add(parseCodeableConcept(xpp));
12731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12732        res.setDescriptionElement(parseString(xpp));
12733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
12734        res.setCriteria(parseExpression(xpp));
12735      } else if (!parseBackboneElementContent(eventType, xpp, res))
12736        return false;
12737    return true;
12738  }
12739
12740  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12741    MeasureReport res = new MeasureReport();
12742    parseDomainResourceAttributes(xpp, res);
12743    next(xpp);
12744    int eventType = nextNoWhitespace(xpp);
12745    while (eventType != XmlPullParser.END_TAG) {
12746  if (!parseMeasureReportContent(eventType, xpp, res))
12747        unknownContent(xpp);
12748      eventType = nextNoWhitespace(xpp);
12749    }
12750    next(xpp);
12751    parseElementClose(res);
12752    return res;
12753  }
12754
12755  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
12756      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12757        res.getIdentifier().add(parseIdentifier(xpp));
12758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12759        res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
12760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12761        res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
12762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
12763        res.setMeasureElement(parseCanonical(xpp));
12764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12765        res.setSubject(parseReference(xpp));
12766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12767        res.setDateElement(parseDateTime(xpp));
12768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
12769        res.setReporter(parseReference(xpp));
12770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12771        res.setPeriod(parsePeriod(xpp));
12772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
12773        res.setImprovementNotationElement(parseEnumeration(xpp, MeasureReport.MeasureImprovementNotation.NULL, new MeasureReport.MeasureImprovementNotationEnumFactory()));
12774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
12775        res.getGroup().add(parseMeasureReportMeasureReportGroupComponent(xpp, res));
12776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResource")) {
12777        res.getEvaluatedResource().add(parseReference(xpp));
12778      } else if (!parseDomainResourceContent(eventType, xpp, res))
12779        return false;
12780    return true;
12781  }
12782
12783  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportMeasureReportGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
12784    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
12785    parseBackboneAttributes(xpp, res);
12786    next(xpp);
12787    int eventType = nextNoWhitespace(xpp);
12788    while (eventType != XmlPullParser.END_TAG) {
12789  if (!parseMeasureReportMeasureReportGroupComponentContent(eventType, xpp, owner, res))
12790        unknownContent(xpp);
12791      eventType = nextNoWhitespace(xpp);
12792    }
12793    next(xpp);
12794    parseElementClose(res);
12795    return res;
12796  }
12797
12798  protected boolean parseMeasureReportMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12800        res.setCode(parseCodeableConcept(xpp));
12801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
12802        res.getPopulation().add(parseMeasureReportMeasureReportGroupPopulationComponent(xpp, owner));
12803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
12804        res.setMeasureScore(parseQuantity(xpp));
12805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
12806        res.getStratifier().add(parseMeasureReportMeasureReportGroupStratifierComponent(xpp, owner));
12807      } else if (!parseBackboneElementContent(eventType, xpp, res))
12808        return false;
12809    return true;
12810  }
12811
12812  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportMeasureReportGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
12813    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
12814    parseBackboneAttributes(xpp, res);
12815    next(xpp);
12816    int eventType = nextNoWhitespace(xpp);
12817    while (eventType != XmlPullParser.END_TAG) {
12818  if (!parseMeasureReportMeasureReportGroupPopulationComponentContent(eventType, xpp, owner, res))
12819        unknownContent(xpp);
12820      eventType = nextNoWhitespace(xpp);
12821    }
12822    next(xpp);
12823    parseElementClose(res);
12824    return res;
12825  }
12826
12827  protected boolean parseMeasureReportMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12828      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12829        res.setCode(parseCodeableConcept(xpp));
12830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
12831        res.setCountElement(parseInteger(xpp));
12832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
12833        res.setSubjectResults(parseReference(xpp));
12834      } else if (!parseBackboneElementContent(eventType, xpp, res))
12835        return false;
12836    return true;
12837  }
12838
12839  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportMeasureReportGroupStratifierComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
12840    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
12841    parseBackboneAttributes(xpp, res);
12842    next(xpp);
12843    int eventType = nextNoWhitespace(xpp);
12844    while (eventType != XmlPullParser.END_TAG) {
12845  if (!parseMeasureReportMeasureReportGroupStratifierComponentContent(eventType, xpp, owner, res))
12846        unknownContent(xpp);
12847      eventType = nextNoWhitespace(xpp);
12848    }
12849    next(xpp);
12850    parseElementClose(res);
12851    return res;
12852  }
12853
12854  protected boolean parseMeasureReportMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12855      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12856        res.setCode(parseCodeableConcept(xpp));
12857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
12858        res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp, owner));
12859      } else if (!parseBackboneElementContent(eventType, xpp, res))
12860        return false;
12861    return true;
12862  }
12863
12864  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
12865    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
12866    parseBackboneAttributes(xpp, res);
12867    next(xpp);
12868    int eventType = nextNoWhitespace(xpp);
12869    while (eventType != XmlPullParser.END_TAG) {
12870  if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, owner, res))
12871        unknownContent(xpp);
12872      eventType = nextNoWhitespace(xpp);
12873    }
12874    next(xpp);
12875    parseElementClose(res);
12876    return res;
12877  }
12878
12879  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12880      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12881        res.setValue(parseCodeableConcept(xpp));
12882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
12883        res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp, owner));
12884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
12885        res.setMeasureScore(parseQuantity(xpp));
12886      } else if (!parseBackboneElementContent(eventType, xpp, res))
12887        return false;
12888    return true;
12889  }
12890
12891  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
12892    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
12893    parseBackboneAttributes(xpp, res);
12894    next(xpp);
12895    int eventType = nextNoWhitespace(xpp);
12896    while (eventType != XmlPullParser.END_TAG) {
12897  if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, owner, res))
12898        unknownContent(xpp);
12899      eventType = nextNoWhitespace(xpp);
12900    }
12901    next(xpp);
12902    parseElementClose(res);
12903    return res;
12904  }
12905
12906  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12907      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12908        res.setCode(parseCodeableConcept(xpp));
12909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
12910        res.setCountElement(parseInteger(xpp));
12911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
12912        res.setSubjectResults(parseReference(xpp));
12913      } else if (!parseBackboneElementContent(eventType, xpp, res))
12914        return false;
12915    return true;
12916  }
12917
12918  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12919    Media res = new Media();
12920    parseDomainResourceAttributes(xpp, res);
12921    next(xpp);
12922    int eventType = nextNoWhitespace(xpp);
12923    while (eventType != XmlPullParser.END_TAG) {
12924  if (!parseMediaContent(eventType, xpp, res))
12925        unknownContent(xpp);
12926      eventType = nextNoWhitespace(xpp);
12927    }
12928    next(xpp);
12929    parseElementClose(res);
12930    return res;
12931  }
12932
12933  protected boolean parseMediaContent(int eventType, XmlPullParser xpp, Media res) throws XmlPullParserException, IOException, FHIRFormatError {
12934      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12935        res.getIdentifier().add(parseIdentifier(xpp));
12936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
12937        res.getBasedOn().add(parseReference(xpp));
12938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12939        res.getPartOf().add(parseReference(xpp));
12940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12941        res.setStatusElement(parseEnumeration(xpp, Media.MediaStatus.NULL, new Media.MediaStatusEnumFactory()));
12942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12943        res.setType(parseCodeableConcept(xpp));
12944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
12945        res.setModality(parseCodeableConcept(xpp));
12946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
12947        res.setView(parseCodeableConcept(xpp));
12948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12949        res.setSubject(parseReference(xpp));
12950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12951        res.setContext(parseReference(xpp));
12952      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "created")) {
12953        res.setCreated(parseType("created", xpp));
12954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
12955        res.setIssuedElement(parseInstant(xpp));
12956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
12957        res.setOperator(parseReference(xpp));
12958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
12959        res.getReasonCode().add(parseCodeableConcept(xpp));
12960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
12961        res.setBodySite(parseCodeableConcept(xpp));
12962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
12963        res.setDeviceNameElement(parseString(xpp));
12964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
12965        res.setDevice(parseReference(xpp));
12966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
12967        res.setHeightElement(parsePositiveInt(xpp));
12968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
12969        res.setWidthElement(parsePositiveInt(xpp));
12970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
12971        res.setFramesElement(parsePositiveInt(xpp));
12972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
12973        res.setDurationElement(parseDecimal(xpp));
12974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
12975        res.setContent(parseAttachment(xpp));
12976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12977        res.getNote().add(parseAnnotation(xpp));
12978      } else if (!parseDomainResourceContent(eventType, xpp, res))
12979        return false;
12980    return true;
12981  }
12982
12983  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12984    Medication res = new Medication();
12985    parseDomainResourceAttributes(xpp, res);
12986    next(xpp);
12987    int eventType = nextNoWhitespace(xpp);
12988    while (eventType != XmlPullParser.END_TAG) {
12989  if (!parseMedicationContent(eventType, xpp, res))
12990        unknownContent(xpp);
12991      eventType = nextNoWhitespace(xpp);
12992    }
12993    next(xpp);
12994    parseElementClose(res);
12995    return res;
12996  }
12997
12998  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
12999      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13000        res.setCode(parseCodeableConcept(xpp));
13001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13002        res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatus.NULL, new Medication.MedicationStatusEnumFactory()));
13003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13004        res.setManufacturer(parseReference(xpp));
13005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
13006        res.setForm(parseCodeableConcept(xpp));
13007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
13008        res.setAmount(parseQuantity(xpp));
13009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13010        res.getIngredient().add(parseMedicationMedicationIngredientComponent(xpp, res));
13011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
13012        res.setBatch(parseMedicationMedicationBatchComponent(xpp, res));
13013      } else if (!parseDomainResourceContent(eventType, xpp, res))
13014        return false;
13015    return true;
13016  }
13017
13018  protected Medication.MedicationIngredientComponent parseMedicationMedicationIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
13019    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
13020    parseBackboneAttributes(xpp, res);
13021    next(xpp);
13022    int eventType = nextNoWhitespace(xpp);
13023    while (eventType != XmlPullParser.END_TAG) {
13024  if (!parseMedicationMedicationIngredientComponentContent(eventType, xpp, owner, res))
13025        unknownContent(xpp);
13026      eventType = nextNoWhitespace(xpp);
13027    }
13028    next(xpp);
13029    parseElementClose(res);
13030    return res;
13031  }
13032
13033  protected boolean parseMedicationMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13034      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
13035        res.setItem(parseType("item", xpp));
13036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
13037        res.setIsActiveElement(parseBoolean(xpp));
13038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
13039        res.setAmount(parseRatio(xpp));
13040      } else if (!parseBackboneElementContent(eventType, xpp, res))
13041        return false;
13042    return true;
13043  }
13044
13045  protected Medication.MedicationBatchComponent parseMedicationMedicationBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
13046    Medication.MedicationBatchComponent res = new Medication.MedicationBatchComponent();
13047    parseBackboneAttributes(xpp, res);
13048    next(xpp);
13049    int eventType = nextNoWhitespace(xpp);
13050    while (eventType != XmlPullParser.END_TAG) {
13051  if (!parseMedicationMedicationBatchComponentContent(eventType, xpp, owner, res))
13052        unknownContent(xpp);
13053      eventType = nextNoWhitespace(xpp);
13054    }
13055    next(xpp);
13056    parseElementClose(res);
13057    return res;
13058  }
13059
13060  protected boolean parseMedicationMedicationBatchComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13061      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
13062        res.setLotNumberElement(parseString(xpp));
13063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
13064        res.setExpirationDateElement(parseDateTime(xpp));
13065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
13066        res.setSerialNumberElement(parseString(xpp));
13067      } else if (!parseBackboneElementContent(eventType, xpp, res))
13068        return false;
13069    return true;
13070  }
13071
13072  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13073    MedicationAdministration res = new MedicationAdministration();
13074    parseDomainResourceAttributes(xpp, res);
13075    next(xpp);
13076    int eventType = nextNoWhitespace(xpp);
13077    while (eventType != XmlPullParser.END_TAG) {
13078  if (!parseMedicationAdministrationContent(eventType, xpp, res))
13079        unknownContent(xpp);
13080      eventType = nextNoWhitespace(xpp);
13081    }
13082    next(xpp);
13083    parseElementClose(res);
13084    return res;
13085  }
13086
13087  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
13088      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13089        res.getIdentifier().add(parseIdentifier(xpp));
13090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
13091        res.getInstantiates().add(parseUri(xpp));
13092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13093        res.getPartOf().add(parseReference(xpp));
13094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13095        res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatus.NULL, new MedicationAdministration.MedicationAdministrationStatusEnumFactory()));
13096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13097        res.setCategory(parseCodeableConcept(xpp));
13098      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13099        res.setMedication(parseType("medication", xpp));
13100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13101        res.setSubject(parseReference(xpp));
13102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13103        res.setContext(parseReference(xpp));
13104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
13105        res.getSupportingInformation().add(parseReference(xpp));
13106      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
13107        res.setEffective(parseType("effective", xpp));
13108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13109        res.getPerformer().add(parseMedicationAdministrationMedicationAdministrationPerformerComponent(xpp, res));
13110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
13111        res.getStatusReason().add(parseCodeableConcept(xpp));
13112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13113        res.getReasonCode().add(parseCodeableConcept(xpp));
13114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13115        res.getReasonReference().add(parseReference(xpp));
13116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13117        res.setRequest(parseReference(xpp));
13118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13119        res.getDevice().add(parseReference(xpp));
13120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13121        res.getNote().add(parseAnnotation(xpp));
13122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
13123        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
13124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
13125        res.getEventHistory().add(parseReference(xpp));
13126      } else if (!parseDomainResourceContent(eventType, xpp, res))
13127        return false;
13128    return true;
13129  }
13130
13131  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationMedicationAdministrationPerformerComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
13132    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
13133    parseBackboneAttributes(xpp, res);
13134    next(xpp);
13135    int eventType = nextNoWhitespace(xpp);
13136    while (eventType != XmlPullParser.END_TAG) {
13137  if (!parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(eventType, xpp, owner, res))
13138        unknownContent(xpp);
13139      eventType = nextNoWhitespace(xpp);
13140    }
13141    next(xpp);
13142    parseElementClose(res);
13143    return res;
13144  }
13145
13146  protected boolean parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13147      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13148        res.setFunction(parseCodeableConcept(xpp));
13149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13150        res.setActor(parseReference(xpp));
13151      } else if (!parseBackboneElementContent(eventType, xpp, res))
13152        return false;
13153    return true;
13154  }
13155
13156  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
13157    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
13158    parseBackboneAttributes(xpp, res);
13159    next(xpp);
13160    int eventType = nextNoWhitespace(xpp);
13161    while (eventType != XmlPullParser.END_TAG) {
13162  if (!parseMedicationAdministrationMedicationAdministrationDosageComponentContent(eventType, xpp, owner, res))
13163        unknownContent(xpp);
13164      eventType = nextNoWhitespace(xpp);
13165    }
13166    next(xpp);
13167    parseElementClose(res);
13168    return res;
13169  }
13170
13171  protected boolean parseMedicationAdministrationMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13172      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13173        res.setTextElement(parseString(xpp));
13174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
13175        res.setSite(parseCodeableConcept(xpp));
13176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
13177        res.setRoute(parseCodeableConcept(xpp));
13178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
13179        res.setMethod(parseCodeableConcept(xpp));
13180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
13181        res.setDose(parseQuantity(xpp));
13182      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
13183        res.setRate(parseType("rate", xpp));
13184      } else if (!parseBackboneElementContent(eventType, xpp, res))
13185        return false;
13186    return true;
13187  }
13188
13189  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13190    MedicationDispense res = new MedicationDispense();
13191    parseDomainResourceAttributes(xpp, res);
13192    next(xpp);
13193    int eventType = nextNoWhitespace(xpp);
13194    while (eventType != XmlPullParser.END_TAG) {
13195  if (!parseMedicationDispenseContent(eventType, xpp, res))
13196        unknownContent(xpp);
13197      eventType = nextNoWhitespace(xpp);
13198    }
13199    next(xpp);
13200    parseElementClose(res);
13201    return res;
13202  }
13203
13204  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
13205      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13206        res.getIdentifier().add(parseIdentifier(xpp));
13207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13208        res.getPartOf().add(parseReference(xpp));
13209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13210        res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatus.NULL, new MedicationDispense.MedicationDispenseStatusEnumFactory()));
13211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13212        res.setCategory(parseCodeableConcept(xpp));
13213      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13214        res.setMedication(parseType("medication", xpp));
13215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13216        res.setSubject(parseReference(xpp));
13217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13218        res.setContext(parseReference(xpp));
13219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
13220        res.getSupportingInformation().add(parseReference(xpp));
13221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13222        res.getPerformer().add(parseMedicationDispenseMedicationDispensePerformerComponent(xpp, res));
13223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13224        res.setLocation(parseReference(xpp));
13225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
13226        res.getAuthorizingPrescription().add(parseReference(xpp));
13227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13228        res.setType(parseCodeableConcept(xpp));
13229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13230        res.setQuantity(parseQuantity(xpp));
13231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
13232        res.setDaysSupply(parseQuantity(xpp));
13233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
13234        res.setWhenPreparedElement(parseDateTime(xpp));
13235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
13236        res.setWhenHandedOverElement(parseDateTime(xpp));
13237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
13238        res.setDestination(parseReference(xpp));
13239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
13240        res.getReceiver().add(parseReference(xpp));
13241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13242        res.getNote().add(parseAnnotation(xpp));
13243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
13244        res.getDosageInstruction().add(parseDosage(xpp));
13245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
13246        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
13247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
13248        res.getDetectedIssue().add(parseReference(xpp));
13249      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "statusReason")) {
13250        res.setStatusReason(parseType("statusReason", xpp));
13251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
13252        res.getEventHistory().add(parseReference(xpp));
13253      } else if (!parseDomainResourceContent(eventType, xpp, res))
13254        return false;
13255    return true;
13256  }
13257
13258  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispenseMedicationDispensePerformerComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
13259    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
13260    parseBackboneAttributes(xpp, res);
13261    next(xpp);
13262    int eventType = nextNoWhitespace(xpp);
13263    while (eventType != XmlPullParser.END_TAG) {
13264  if (!parseMedicationDispenseMedicationDispensePerformerComponentContent(eventType, xpp, owner, res))
13265        unknownContent(xpp);
13266      eventType = nextNoWhitespace(xpp);
13267    }
13268    next(xpp);
13269    parseElementClose(res);
13270    return res;
13271  }
13272
13273  protected boolean parseMedicationDispenseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13274      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13275        res.setFunction(parseCodeableConcept(xpp));
13276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13277        res.setActor(parseReference(xpp));
13278      } else if (!parseBackboneElementContent(eventType, xpp, res))
13279        return false;
13280    return true;
13281  }
13282
13283  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
13284    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
13285    parseBackboneAttributes(xpp, res);
13286    next(xpp);
13287    int eventType = nextNoWhitespace(xpp);
13288    while (eventType != XmlPullParser.END_TAG) {
13289  if (!parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(eventType, xpp, owner, res))
13290        unknownContent(xpp);
13291      eventType = nextNoWhitespace(xpp);
13292    }
13293    next(xpp);
13294    parseElementClose(res);
13295    return res;
13296  }
13297
13298  protected boolean parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13299      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
13300        res.setWasSubstitutedElement(parseBoolean(xpp));
13301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13302        res.setType(parseCodeableConcept(xpp));
13303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13304        res.getReason().add(parseCodeableConcept(xpp));
13305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
13306        res.getResponsibleParty().add(parseReference(xpp));
13307      } else if (!parseBackboneElementContent(eventType, xpp, res))
13308        return false;
13309    return true;
13310  }
13311
13312  protected MedicationKnowledge parseMedicationKnowledge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13313    MedicationKnowledge res = new MedicationKnowledge();
13314    parseDomainResourceAttributes(xpp, res);
13315    next(xpp);
13316    int eventType = nextNoWhitespace(xpp);
13317    while (eventType != XmlPullParser.END_TAG) {
13318  if (!parseMedicationKnowledgeContent(eventType, xpp, res))
13319        unknownContent(xpp);
13320      eventType = nextNoWhitespace(xpp);
13321    }
13322    next(xpp);
13323    parseElementClose(res);
13324    return res;
13325  }
13326
13327  protected boolean parseMedicationKnowledgeContent(int eventType, XmlPullParser xpp, MedicationKnowledge res) throws XmlPullParserException, IOException, FHIRFormatError {
13328      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13329        res.setCode(parseCodeableConcept(xpp));
13330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13331        res.setStatusElement(parseEnumeration(xpp, MedicationKnowledge.MedicationKnowledgeStatus.NULL, new MedicationKnowledge.MedicationKnowledgeStatusEnumFactory()));
13332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13333        res.setManufacturer(parseReference(xpp));
13334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseForm")) {
13335        res.setDoseForm(parseCodeableConcept(xpp));
13336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
13337        res.setAmount(parseQuantity(xpp));
13338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
13339        res.getSynonym().add(parseString(xpp));
13340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedMedicationKnowledge")) {
13341        res.getRelatedMedicationKnowledge().add(parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(xpp, res));
13342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("associatedMedication")) {
13343        res.getAssociatedMedication().add(parseReference(xpp));
13344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productType")) {
13345        res.getProductType().add(parseCodeableConcept(xpp));
13346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monograph")) {
13347        res.getMonograph().add(parseMedicationKnowledgeMedicationKnowledgeMonographComponent(xpp, res));
13348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13349        res.getIngredient().add(parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(xpp, res));
13350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparationInstruction")) {
13351        res.setPreparationInstructionElement(parseMarkdown(xpp));
13352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedRoute")) {
13353        res.getIntendedRoute().add(parseCodeableConcept(xpp));
13354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
13355        res.getCost().add(parseMedicationKnowledgeMedicationKnowledgeCostComponent(xpp, res));
13356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monitoringProgram")) {
13357        res.getMonitoringProgram().add(parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(xpp, res));
13358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationGuidelines")) {
13359        res.getAdministrationGuidelines().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(xpp, res));
13360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medicineClassification")) {
13361        res.getMedicineClassification().add(parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(xpp, res));
13362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
13363        res.setPackaging(parseMedicationKnowledgeMedicationKnowledgePackagingComponent(xpp, res));
13364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("drugCharacteristic")) {
13365        res.getDrugCharacteristic().add(parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(xpp, res));
13366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
13367        res.getContraindication().add(parseReference(xpp));
13368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatory")) {
13369        res.getRegulatory().add(parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(xpp, res));
13370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kinetics")) {
13371        res.getKinetics().add(parseMedicationKnowledgeMedicationKnowledgeKineticsComponent(xpp, res));
13372      } else if (!parseDomainResourceContent(eventType, xpp, res))
13373        return false;
13374    return true;
13375  }
13376
13377  protected MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13378    MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res = new MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent();
13379    parseBackboneAttributes(xpp, res);
13380    next(xpp);
13381    int eventType = nextNoWhitespace(xpp);
13382    while (eventType != XmlPullParser.END_TAG) {
13383  if (!parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(eventType, xpp, owner, res))
13384        unknownContent(xpp);
13385      eventType = nextNoWhitespace(xpp);
13386    }
13387    next(xpp);
13388    parseElementClose(res);
13389    return res;
13390  }
13391
13392  protected boolean parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13393      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13394        res.setType(parseCodeableConcept(xpp));
13395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13396        res.getReference().add(parseReference(xpp));
13397      } else if (!parseBackboneElementContent(eventType, xpp, res))
13398        return false;
13399    return true;
13400  }
13401
13402  protected MedicationKnowledge.MedicationKnowledgeMonographComponent parseMedicationKnowledgeMedicationKnowledgeMonographComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13403    MedicationKnowledge.MedicationKnowledgeMonographComponent res = new MedicationKnowledge.MedicationKnowledgeMonographComponent();
13404    parseBackboneAttributes(xpp, res);
13405    next(xpp);
13406    int eventType = nextNoWhitespace(xpp);
13407    while (eventType != XmlPullParser.END_TAG) {
13408  if (!parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(eventType, xpp, owner, res))
13409        unknownContent(xpp);
13410      eventType = nextNoWhitespace(xpp);
13411    }
13412    next(xpp);
13413    parseElementClose(res);
13414    return res;
13415  }
13416
13417  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonographComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13418      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13419        res.setType(parseCodeableConcept(xpp));
13420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13421        res.setSource(parseReference(xpp));
13422      } else if (!parseBackboneElementContent(eventType, xpp, res))
13423        return false;
13424    return true;
13425  }
13426
13427  protected MedicationKnowledge.MedicationKnowledgeIngredientComponent parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13428    MedicationKnowledge.MedicationKnowledgeIngredientComponent res = new MedicationKnowledge.MedicationKnowledgeIngredientComponent();
13429    parseBackboneAttributes(xpp, res);
13430    next(xpp);
13431    int eventType = nextNoWhitespace(xpp);
13432    while (eventType != XmlPullParser.END_TAG) {
13433  if (!parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(eventType, xpp, owner, res))
13434        unknownContent(xpp);
13435      eventType = nextNoWhitespace(xpp);
13436    }
13437    next(xpp);
13438    parseElementClose(res);
13439    return res;
13440  }
13441
13442  protected boolean parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13443      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
13444        res.setItem(parseType("item", xpp));
13445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
13446        res.setIsActiveElement(parseBoolean(xpp));
13447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13448        res.setStrength(parseRatio(xpp));
13449      } else if (!parseBackboneElementContent(eventType, xpp, res))
13450        return false;
13451    return true;
13452  }
13453
13454  protected MedicationKnowledge.MedicationKnowledgeCostComponent parseMedicationKnowledgeMedicationKnowledgeCostComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13455    MedicationKnowledge.MedicationKnowledgeCostComponent res = new MedicationKnowledge.MedicationKnowledgeCostComponent();
13456    parseBackboneAttributes(xpp, res);
13457    next(xpp);
13458    int eventType = nextNoWhitespace(xpp);
13459    while (eventType != XmlPullParser.END_TAG) {
13460  if (!parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(eventType, xpp, owner, res))
13461        unknownContent(xpp);
13462      eventType = nextNoWhitespace(xpp);
13463    }
13464    next(xpp);
13465    parseElementClose(res);
13466    return res;
13467  }
13468
13469  protected boolean parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13470      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13471        res.setType(parseCodeableConcept(xpp));
13472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13473        res.setSourceElement(parseString(xpp));
13474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
13475        res.setCost(parseMoney(xpp));
13476      } else if (!parseBackboneElementContent(eventType, xpp, res))
13477        return false;
13478    return true;
13479  }
13480
13481  protected MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13482    MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res = new MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent();
13483    parseBackboneAttributes(xpp, res);
13484    next(xpp);
13485    int eventType = nextNoWhitespace(xpp);
13486    while (eventType != XmlPullParser.END_TAG) {
13487  if (!parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(eventType, xpp, owner, res))
13488        unknownContent(xpp);
13489      eventType = nextNoWhitespace(xpp);
13490    }
13491    next(xpp);
13492    parseElementClose(res);
13493    return res;
13494  }
13495
13496  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13497      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13498        res.setType(parseCodeableConcept(xpp));
13499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13500        res.setNameElement(parseString(xpp));
13501      } else if (!parseBackboneElementContent(eventType, xpp, res))
13502        return false;
13503    return true;
13504  }
13505
13506  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13507    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent();
13508    parseBackboneAttributes(xpp, res);
13509    next(xpp);
13510    int eventType = nextNoWhitespace(xpp);
13511    while (eventType != XmlPullParser.END_TAG) {
13512  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(eventType, xpp, owner, res))
13513        unknownContent(xpp);
13514      eventType = nextNoWhitespace(xpp);
13515    }
13516    next(xpp);
13517    parseElementClose(res);
13518    return res;
13519  }
13520
13521  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13522      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
13523        res.getDosage().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(xpp, owner));
13524      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "indication")) {
13525        res.setIndication(parseType("indication", xpp));
13526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientCharacteristics")) {
13527        res.getPatientCharacteristics().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(xpp, owner));
13528      } else if (!parseBackboneElementContent(eventType, xpp, res))
13529        return false;
13530    return true;
13531  }
13532
13533  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13534    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent();
13535    parseBackboneAttributes(xpp, res);
13536    next(xpp);
13537    int eventType = nextNoWhitespace(xpp);
13538    while (eventType != XmlPullParser.END_TAG) {
13539  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(eventType, xpp, owner, res))
13540        unknownContent(xpp);
13541      eventType = nextNoWhitespace(xpp);
13542    }
13543    next(xpp);
13544    parseElementClose(res);
13545    return res;
13546  }
13547
13548  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13550        res.setType(parseCodeableConcept(xpp));
13551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
13552        res.getDosage().add(parseDosage(xpp));
13553      } else if (!parseBackboneElementContent(eventType, xpp, res))
13554        return false;
13555    return true;
13556  }
13557
13558  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13559    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent();
13560    parseBackboneAttributes(xpp, res);
13561    next(xpp);
13562    int eventType = nextNoWhitespace(xpp);
13563    while (eventType != XmlPullParser.END_TAG) {
13564  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(eventType, xpp, owner, res))
13565        unknownContent(xpp);
13566      eventType = nextNoWhitespace(xpp);
13567    }
13568    next(xpp);
13569    parseElementClose(res);
13570    return res;
13571  }
13572
13573  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13574      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "characteristic")) {
13575        res.setCharacteristic(parseType("characteristic", xpp));
13576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13577        res.getValue().add(parseString(xpp));
13578      } else if (!parseBackboneElementContent(eventType, xpp, res))
13579        return false;
13580    return true;
13581  }
13582
13583  protected MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13584    MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res = new MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent();
13585    parseBackboneAttributes(xpp, res);
13586    next(xpp);
13587    int eventType = nextNoWhitespace(xpp);
13588    while (eventType != XmlPullParser.END_TAG) {
13589  if (!parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(eventType, xpp, owner, res))
13590        unknownContent(xpp);
13591      eventType = nextNoWhitespace(xpp);
13592    }
13593    next(xpp);
13594    parseElementClose(res);
13595    return res;
13596  }
13597
13598  protected boolean parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13599      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13600        res.setType(parseCodeableConcept(xpp));
13601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
13602        res.getClassification().add(parseCodeableConcept(xpp));
13603      } else if (!parseBackboneElementContent(eventType, xpp, res))
13604        return false;
13605    return true;
13606  }
13607
13608  protected MedicationKnowledge.MedicationKnowledgePackagingComponent parseMedicationKnowledgeMedicationKnowledgePackagingComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13609    MedicationKnowledge.MedicationKnowledgePackagingComponent res = new MedicationKnowledge.MedicationKnowledgePackagingComponent();
13610    parseBackboneAttributes(xpp, res);
13611    next(xpp);
13612    int eventType = nextNoWhitespace(xpp);
13613    while (eventType != XmlPullParser.END_TAG) {
13614  if (!parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(eventType, xpp, owner, res))
13615        unknownContent(xpp);
13616      eventType = nextNoWhitespace(xpp);
13617    }
13618    next(xpp);
13619    parseElementClose(res);
13620    return res;
13621  }
13622
13623  protected boolean parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgePackagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13624      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13625        res.setType(parseCodeableConcept(xpp));
13626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13627        res.setQuantity(parseQuantity(xpp));
13628      } else if (!parseBackboneElementContent(eventType, xpp, res))
13629        return false;
13630    return true;
13631  }
13632
13633  protected MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13634    MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res = new MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent();
13635    parseBackboneAttributes(xpp, res);
13636    next(xpp);
13637    int eventType = nextNoWhitespace(xpp);
13638    while (eventType != XmlPullParser.END_TAG) {
13639  if (!parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(eventType, xpp, owner, res))
13640        unknownContent(xpp);
13641      eventType = nextNoWhitespace(xpp);
13642    }
13643    next(xpp);
13644    parseElementClose(res);
13645    return res;
13646  }
13647
13648  protected boolean parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13649      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13650        res.setType(parseCodeableConcept(xpp));
13651      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
13652        res.setValue(parseType("value", xpp));
13653      } else if (!parseBackboneElementContent(eventType, xpp, res))
13654        return false;
13655    return true;
13656  }
13657
13658  protected MedicationKnowledge.MedicationKnowledgeRegulatoryComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13659    MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryComponent();
13660    parseBackboneAttributes(xpp, res);
13661    next(xpp);
13662    int eventType = nextNoWhitespace(xpp);
13663    while (eventType != XmlPullParser.END_TAG) {
13664  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponentContent(eventType, xpp, owner, res))
13665        unknownContent(xpp);
13666      eventType = nextNoWhitespace(xpp);
13667    }
13668    next(xpp);
13669    parseElementClose(res);
13670    return res;
13671  }
13672
13673  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13674      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatoryAuthority")) {
13675        res.setRegulatoryAuthority(parseReference(xpp));
13676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
13677        res.getSubstitution().add(parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(xpp, owner));
13678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
13679        res.getSchedule().add(parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(xpp, owner));
13680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDispense")) {
13681        res.setMaxDispense(parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(xpp, owner));
13682      } else if (!parseBackboneElementContent(eventType, xpp, res))
13683        return false;
13684    return true;
13685  }
13686
13687  protected MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13688    MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent();
13689    parseBackboneAttributes(xpp, res);
13690    next(xpp);
13691    int eventType = nextNoWhitespace(xpp);
13692    while (eventType != XmlPullParser.END_TAG) {
13693  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentContent(eventType, xpp, owner, res))
13694        unknownContent(xpp);
13695      eventType = nextNoWhitespace(xpp);
13696    }
13697    next(xpp);
13698    parseElementClose(res);
13699    return res;
13700  }
13701
13702  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13703      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13704        res.setType(parseCodeableConcept(xpp));
13705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
13706        res.setAllowedElement(parseBoolean(xpp));
13707      } else if (!parseBackboneElementContent(eventType, xpp, res))
13708        return false;
13709    return true;
13710  }
13711
13712  protected MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13713    MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent();
13714    parseBackboneAttributes(xpp, res);
13715    next(xpp);
13716    int eventType = nextNoWhitespace(xpp);
13717    while (eventType != XmlPullParser.END_TAG) {
13718  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentContent(eventType, xpp, owner, res))
13719        unknownContent(xpp);
13720      eventType = nextNoWhitespace(xpp);
13721    }
13722    next(xpp);
13723    parseElementClose(res);
13724    return res;
13725  }
13726
13727  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
13729        res.setSchedule(parseCodeableConcept(xpp));
13730      } else if (!parseBackboneElementContent(eventType, xpp, res))
13731        return false;
13732    return true;
13733  }
13734
13735  protected MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13736    MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent();
13737    parseBackboneAttributes(xpp, res);
13738    next(xpp);
13739    int eventType = nextNoWhitespace(xpp);
13740    while (eventType != XmlPullParser.END_TAG) {
13741  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentContent(eventType, xpp, owner, res))
13742        unknownContent(xpp);
13743      eventType = nextNoWhitespace(xpp);
13744    }
13745    next(xpp);
13746    parseElementClose(res);
13747    return res;
13748  }
13749
13750  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13752        res.setQuantity(parseQuantity(xpp));
13753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13754        res.setPeriod(parseDuration(xpp));
13755      } else if (!parseBackboneElementContent(eventType, xpp, res))
13756        return false;
13757    return true;
13758  }
13759
13760  protected MedicationKnowledge.MedicationKnowledgeKineticsComponent parseMedicationKnowledgeMedicationKnowledgeKineticsComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13761    MedicationKnowledge.MedicationKnowledgeKineticsComponent res = new MedicationKnowledge.MedicationKnowledgeKineticsComponent();
13762    parseBackboneAttributes(xpp, res);
13763    next(xpp);
13764    int eventType = nextNoWhitespace(xpp);
13765    while (eventType != XmlPullParser.END_TAG) {
13766  if (!parseMedicationKnowledgeMedicationKnowledgeKineticsComponentContent(eventType, xpp, owner, res))
13767        unknownContent(xpp);
13768      eventType = nextNoWhitespace(xpp);
13769    }
13770    next(xpp);
13771    parseElementClose(res);
13772    return res;
13773  }
13774
13775  protected boolean parseMedicationKnowledgeMedicationKnowledgeKineticsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeKineticsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13776      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("areaUnderCurve")) {
13777        res.getAreaUnderCurve().add(parseQuantity(xpp));
13778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lethalDose50")) {
13779        res.getLethalDose50().add(parseQuantity(xpp));
13780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("halfLifePeriod")) {
13781        res.setHalfLifePeriod(parseDuration(xpp));
13782      } else if (!parseBackboneElementContent(eventType, xpp, res))
13783        return false;
13784    return true;
13785  }
13786
13787  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13788    MedicationRequest res = new MedicationRequest();
13789    parseDomainResourceAttributes(xpp, res);
13790    next(xpp);
13791    int eventType = nextNoWhitespace(xpp);
13792    while (eventType != XmlPullParser.END_TAG) {
13793  if (!parseMedicationRequestContent(eventType, xpp, res))
13794        unknownContent(xpp);
13795      eventType = nextNoWhitespace(xpp);
13796    }
13797    next(xpp);
13798    parseElementClose(res);
13799    return res;
13800  }
13801
13802  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
13803      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13804        res.getIdentifier().add(parseIdentifier(xpp));
13805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13806        res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestStatus.NULL, new MedicationRequest.MedicationRequestStatusEnumFactory()));
13807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
13808        res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
13809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13810        res.getCategory().add(parseCodeableConcept(xpp));
13811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
13812        res.setPriorityElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestPriority.NULL, new MedicationRequest.MedicationRequestPriorityEnumFactory()));
13813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
13814        res.setDoNotPerformElement(parseBoolean(xpp));
13815      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13816        res.setMedication(parseType("medication", xpp));
13817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13818        res.setSubject(parseReference(xpp));
13819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13820        res.setContext(parseReference(xpp));
13821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
13822        res.getSupportingInformation().add(parseReference(xpp));
13823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
13824        res.setAuthoredOnElement(parseDateTime(xpp));
13825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
13826        res.setRequester(parseReference(xpp));
13827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13828        res.setPerformer(parseReference(xpp));
13829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
13830        res.setPerformerType(parseCodeableConcept(xpp));
13831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
13832        res.setRecorder(parseReference(xpp));
13833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13834        res.getReasonCode().add(parseCodeableConcept(xpp));
13835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13836        res.getReasonReference().add(parseReference(xpp));
13837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
13838        res.getInstantiates().add(parseUri(xpp));
13839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13840        res.getBasedOn().add(parseReference(xpp));
13841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
13842        res.setGroupIdentifier(parseIdentifier(xpp));
13843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
13844        res.setStatusReason(parseCodeableConcept(xpp));
13845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("courseOfTherapyType")) {
13846        res.setCourseOfTherapyType(parseCodeableConcept(xpp));
13847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
13848        res.getInsurance().add(parseReference(xpp));
13849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13850        res.getNote().add(parseAnnotation(xpp));
13851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
13852        res.getDosageInstruction().add(parseDosage(xpp));
13853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
13854        res.setDispenseRequest(parseMedicationRequestMedicationRequestDispenseRequestComponent(xpp, res));
13855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
13856        res.setSubstitution(parseMedicationRequestMedicationRequestSubstitutionComponent(xpp, res));
13857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
13858        res.setPriorPrescription(parseReference(xpp));
13859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
13860        res.getDetectedIssue().add(parseReference(xpp));
13861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
13862        res.getEventHistory().add(parseReference(xpp));
13863      } else if (!parseDomainResourceContent(eventType, xpp, res))
13864        return false;
13865    return true;
13866  }
13867
13868  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestMedicationRequestDispenseRequestComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
13869    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
13870    parseBackboneAttributes(xpp, res);
13871    next(xpp);
13872    int eventType = nextNoWhitespace(xpp);
13873    while (eventType != XmlPullParser.END_TAG) {
13874  if (!parseMedicationRequestMedicationRequestDispenseRequestComponentContent(eventType, xpp, owner, res))
13875        unknownContent(xpp);
13876      eventType = nextNoWhitespace(xpp);
13877    }
13878    next(xpp);
13879    parseElementClose(res);
13880    return res;
13881  }
13882
13883  protected boolean parseMedicationRequestMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13884      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialFill")) {
13885        res.setInitialFill(parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(xpp, owner));
13886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseInterval")) {
13887        res.setDispenseInterval(parseDuration(xpp));
13888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
13889        res.setValidityPeriod(parsePeriod(xpp));
13890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
13891        res.setNumberOfRepeatsAllowedElement(parseUnsignedInt(xpp));
13892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13893        res.setQuantity(parseQuantity(xpp));
13894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
13895        res.setExpectedSupplyDuration(parseDuration(xpp));
13896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13897        res.setPerformer(parseReference(xpp));
13898      } else if (!parseBackboneElementContent(eventType, xpp, res))
13899        return false;
13900    return true;
13901  }
13902
13903  protected MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
13904    MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res = new MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent();
13905    parseBackboneAttributes(xpp, res);
13906    next(xpp);
13907    int eventType = nextNoWhitespace(xpp);
13908    while (eventType != XmlPullParser.END_TAG) {
13909  if (!parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponentContent(eventType, xpp, owner, res))
13910        unknownContent(xpp);
13911      eventType = nextNoWhitespace(xpp);
13912    }
13913    next(xpp);
13914    parseElementClose(res);
13915    return res;
13916  }
13917
13918  protected boolean parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13919      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13920        res.setQuantity(parseQuantity(xpp));
13921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
13922        res.setDuration(parseDuration(xpp));
13923      } else if (!parseBackboneElementContent(eventType, xpp, res))
13924        return false;
13925    return true;
13926  }
13927
13928  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestMedicationRequestSubstitutionComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
13929    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
13930    parseBackboneAttributes(xpp, res);
13931    next(xpp);
13932    int eventType = nextNoWhitespace(xpp);
13933    while (eventType != XmlPullParser.END_TAG) {
13934  if (!parseMedicationRequestMedicationRequestSubstitutionComponentContent(eventType, xpp, owner, res))
13935        unknownContent(xpp);
13936      eventType = nextNoWhitespace(xpp);
13937    }
13938    next(xpp);
13939    parseElementClose(res);
13940    return res;
13941  }
13942
13943  protected boolean parseMedicationRequestMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13944      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
13945        res.setAllowedElement(parseBoolean(xpp));
13946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13947        res.setReason(parseCodeableConcept(xpp));
13948      } else if (!parseBackboneElementContent(eventType, xpp, res))
13949        return false;
13950    return true;
13951  }
13952
13953  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13954    MedicationStatement res = new MedicationStatement();
13955    parseDomainResourceAttributes(xpp, res);
13956    next(xpp);
13957    int eventType = nextNoWhitespace(xpp);
13958    while (eventType != XmlPullParser.END_TAG) {
13959  if (!parseMedicationStatementContent(eventType, xpp, res))
13960        unknownContent(xpp);
13961      eventType = nextNoWhitespace(xpp);
13962    }
13963    next(xpp);
13964    parseElementClose(res);
13965    return res;
13966  }
13967
13968  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
13969      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13970        res.getIdentifier().add(parseIdentifier(xpp));
13971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13972        res.getBasedOn().add(parseReference(xpp));
13973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13974        res.getPartOf().add(parseReference(xpp));
13975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13976        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
13977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
13978        res.getStatusReason().add(parseCodeableConcept(xpp));
13979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13980        res.setCategory(parseCodeableConcept(xpp));
13981      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13982        res.setMedication(parseType("medication", xpp));
13983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13984        res.setSubject(parseReference(xpp));
13985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13986        res.setContext(parseReference(xpp));
13987      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
13988        res.setEffective(parseType("effective", xpp));
13989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
13990        res.setDateAssertedElement(parseDateTime(xpp));
13991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
13992        res.setInformationSource(parseReference(xpp));
13993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
13994        res.getDerivedFrom().add(parseReference(xpp));
13995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13996        res.getReasonCode().add(parseCodeableConcept(xpp));
13997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13998        res.getReasonReference().add(parseReference(xpp));
13999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14000        res.getNote().add(parseAnnotation(xpp));
14001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14002        res.getDosage().add(parseDosage(xpp));
14003      } else if (!parseDomainResourceContent(eventType, xpp, res))
14004        return false;
14005    return true;
14006  }
14007
14008  protected MedicinalProduct parseMedicinalProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14009    MedicinalProduct res = new MedicinalProduct();
14010    parseDomainResourceAttributes(xpp, res);
14011    next(xpp);
14012    int eventType = nextNoWhitespace(xpp);
14013    while (eventType != XmlPullParser.END_TAG) {
14014  if (!parseMedicinalProductContent(eventType, xpp, res))
14015        unknownContent(xpp);
14016      eventType = nextNoWhitespace(xpp);
14017    }
14018    next(xpp);
14019    parseElementClose(res);
14020    return res;
14021  }
14022
14023  protected boolean parseMedicinalProductContent(int eventType, XmlPullParser xpp, MedicinalProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
14024      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14025        res.getIdentifier().add(parseIdentifier(xpp));
14026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14027        res.setType(parseCodeableConcept(xpp));
14028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
14029        res.setDomain(parseCoding(xpp));
14030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combinedPharmaceuticalDoseForm")) {
14031        res.setCombinedPharmaceuticalDoseForm(parseCodeableConcept(xpp));
14032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMonitoringIndicator")) {
14033        res.setAdditionalMonitoringIndicator(parseCodeableConcept(xpp));
14034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialMeasures")) {
14035        res.getSpecialMeasures().add(parseString(xpp));
14036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paediatricUseIndicator")) {
14037        res.setPaediatricUseIndicator(parseCodeableConcept(xpp));
14038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productClassification")) {
14039        res.getProductClassification().add(parseCodeableConcept(xpp));
14040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
14041        res.getMarketingStatus().add(parseMarketingStatus(xpp));
14042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingAuthorization")) {
14043        res.setMarketingAuthorization(parseReference(xpp));
14044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packagedMedicinalProduct")) {
14045        res.getPackagedMedicinalProduct().add(parseReference(xpp));
14046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pharmaceuticalProduct")) {
14047        res.getPharmaceuticalProduct().add(parseReference(xpp));
14048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
14049        res.getContraindication().add(parseReference(xpp));
14050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
14051        res.getInteraction().add(parseReference(xpp));
14052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapeuticIndication")) {
14053        res.getTherapeuticIndication().add(parseReference(xpp));
14054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffect")) {
14055        res.getUndesirableEffect().add(parseReference(xpp));
14056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachedDocument")) {
14057        res.getAttachedDocument().add(parseReference(xpp));
14058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterFile")) {
14059        res.getMasterFile().add(parseReference(xpp));
14060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14061        res.getContact().add(parseReference(xpp));
14062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalTrial")) {
14063        res.getClinicalTrial().add(parseReference(xpp));
14064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14065        res.getName().add(parseMedicinalProductMedicinalProductNameComponent(xpp, res));
14066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("crossReference")) {
14067        res.getCrossReference().add(parseIdentifier(xpp));
14068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturingBusinessOperation")) {
14069        res.getManufacturingBusinessOperation().add(parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(xpp, res));
14070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialDesignation")) {
14071        res.getSpecialDesignation().add(parseMedicinalProductMedicinalProductSpecialDesignationComponent(xpp, res));
14072      } else if (!parseDomainResourceContent(eventType, xpp, res))
14073        return false;
14074    return true;
14075  }
14076
14077  protected MedicinalProduct.MedicinalProductNameComponent parseMedicinalProductMedicinalProductNameComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14078    MedicinalProduct.MedicinalProductNameComponent res = new MedicinalProduct.MedicinalProductNameComponent();
14079    parseBackboneAttributes(xpp, res);
14080    next(xpp);
14081    int eventType = nextNoWhitespace(xpp);
14082    while (eventType != XmlPullParser.END_TAG) {
14083  if (!parseMedicinalProductMedicinalProductNameComponentContent(eventType, xpp, owner, res))
14084        unknownContent(xpp);
14085      eventType = nextNoWhitespace(xpp);
14086    }
14087    next(xpp);
14088    parseElementClose(res);
14089    return res;
14090  }
14091
14092  protected boolean parseMedicinalProductMedicinalProductNameComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14093      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
14094        res.setProductNameElement(parseString(xpp));
14095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("namePart")) {
14096        res.getNamePart().add(parseMedicinalProductMedicinalProductNameNamePartComponent(xpp, owner));
14097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryLanguage")) {
14098        res.getCountryLanguage().add(parseMedicinalProductMedicinalProductNameCountryLanguageComponent(xpp, owner));
14099      } else if (!parseBackboneElementContent(eventType, xpp, res))
14100        return false;
14101    return true;
14102  }
14103
14104  protected MedicinalProduct.MedicinalProductNameNamePartComponent parseMedicinalProductMedicinalProductNameNamePartComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14105    MedicinalProduct.MedicinalProductNameNamePartComponent res = new MedicinalProduct.MedicinalProductNameNamePartComponent();
14106    parseBackboneAttributes(xpp, res);
14107    next(xpp);
14108    int eventType = nextNoWhitespace(xpp);
14109    while (eventType != XmlPullParser.END_TAG) {
14110  if (!parseMedicinalProductMedicinalProductNameNamePartComponentContent(eventType, xpp, owner, res))
14111        unknownContent(xpp);
14112      eventType = nextNoWhitespace(xpp);
14113    }
14114    next(xpp);
14115    parseElementClose(res);
14116    return res;
14117  }
14118
14119  protected boolean parseMedicinalProductMedicinalProductNameNamePartComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameNamePartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14120      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
14121        res.setPartElement(parseString(xpp));
14122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14123        res.setType(parseCoding(xpp));
14124      } else if (!parseBackboneElementContent(eventType, xpp, res))
14125        return false;
14126    return true;
14127  }
14128
14129  protected MedicinalProduct.MedicinalProductNameCountryLanguageComponent parseMedicinalProductMedicinalProductNameCountryLanguageComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14130    MedicinalProduct.MedicinalProductNameCountryLanguageComponent res = new MedicinalProduct.MedicinalProductNameCountryLanguageComponent();
14131    parseBackboneAttributes(xpp, res);
14132    next(xpp);
14133    int eventType = nextNoWhitespace(xpp);
14134    while (eventType != XmlPullParser.END_TAG) {
14135  if (!parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(eventType, xpp, owner, res))
14136        unknownContent(xpp);
14137      eventType = nextNoWhitespace(xpp);
14138    }
14139    next(xpp);
14140    parseElementClose(res);
14141    return res;
14142  }
14143
14144  protected boolean parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameCountryLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14145      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14146        res.setCountry(parseCodeableConcept(xpp));
14147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14148        res.setJurisdiction(parseCodeableConcept(xpp));
14149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
14150        res.setLanguage(parseCodeableConcept(xpp));
14151      } else if (!parseBackboneElementContent(eventType, xpp, res))
14152        return false;
14153    return true;
14154  }
14155
14156  protected MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14157    MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res = new MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent();
14158    parseBackboneAttributes(xpp, res);
14159    next(xpp);
14160    int eventType = nextNoWhitespace(xpp);
14161    while (eventType != XmlPullParser.END_TAG) {
14162  if (!parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(eventType, xpp, owner, res))
14163        unknownContent(xpp);
14164      eventType = nextNoWhitespace(xpp);
14165    }
14166    next(xpp);
14167    parseElementClose(res);
14168    return res;
14169  }
14170
14171  protected boolean parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14172      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationType")) {
14173        res.setOperationType(parseCodeableConcept(xpp));
14174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorisationReferenceNumber")) {
14175        res.setAuthorisationReferenceNumber(parseIdentifier(xpp));
14176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveDate")) {
14177        res.setEffectiveDateElement(parseDateTime(xpp));
14178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentialityIndicator")) {
14179        res.setConfidentialityIndicator(parseCodeableConcept(xpp));
14180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
14181        res.getManufacturer().add(parseReference(xpp));
14182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
14183        res.setRegulator(parseReference(xpp));
14184      } else if (!parseBackboneElementContent(eventType, xpp, res))
14185        return false;
14186    return true;
14187  }
14188
14189  protected MedicinalProduct.MedicinalProductSpecialDesignationComponent parseMedicinalProductMedicinalProductSpecialDesignationComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14190    MedicinalProduct.MedicinalProductSpecialDesignationComponent res = new MedicinalProduct.MedicinalProductSpecialDesignationComponent();
14191    parseBackboneAttributes(xpp, res);
14192    next(xpp);
14193    int eventType = nextNoWhitespace(xpp);
14194    while (eventType != XmlPullParser.END_TAG) {
14195  if (!parseMedicinalProductMedicinalProductSpecialDesignationComponentContent(eventType, xpp, owner, res))
14196        unknownContent(xpp);
14197      eventType = nextNoWhitespace(xpp);
14198    }
14199    next(xpp);
14200    parseElementClose(res);
14201    return res;
14202  }
14203
14204  protected boolean parseMedicinalProductMedicinalProductSpecialDesignationComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductSpecialDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14205      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14206        res.getIdentifier().add(parseIdentifier(xpp));
14207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedUse")) {
14208        res.setIntendedUse(parseCodeableConcept(xpp));
14209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
14210        res.setIndication(parseCodeableConcept(xpp));
14211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14212        res.setStatus(parseCodeableConcept(xpp));
14213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14214        res.setDateElement(parseDateTime(xpp));
14215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
14216        res.setSpecies(parseCodeableConcept(xpp));
14217      } else if (!parseBackboneElementContent(eventType, xpp, res))
14218        return false;
14219    return true;
14220  }
14221
14222  protected MedicinalProductAuthorization parseMedicinalProductAuthorization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14223    MedicinalProductAuthorization res = new MedicinalProductAuthorization();
14224    parseDomainResourceAttributes(xpp, res);
14225    next(xpp);
14226    int eventType = nextNoWhitespace(xpp);
14227    while (eventType != XmlPullParser.END_TAG) {
14228  if (!parseMedicinalProductAuthorizationContent(eventType, xpp, res))
14229        unknownContent(xpp);
14230      eventType = nextNoWhitespace(xpp);
14231    }
14232    next(xpp);
14233    parseElementClose(res);
14234    return res;
14235  }
14236
14237  protected boolean parseMedicinalProductAuthorizationContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization res) throws XmlPullParserException, IOException, FHIRFormatError {
14238      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14239        res.getIdentifier().add(parseIdentifier(xpp));
14240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14241        res.setSubject(parseReference(xpp));
14242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14243        res.getCountry().add(parseCodeableConcept(xpp));
14244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14245        res.getJurisdiction().add(parseCodeableConcept(xpp));
14246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
14247        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
14248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14249        res.setStatus(parseCodeableConcept(xpp));
14250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
14251        res.setStatusDateElement(parseDateTime(xpp));
14252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
14253        res.setRestoreDateElement(parseDateTime(xpp));
14254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14255        res.setValidityPeriod(parsePeriod(xpp));
14256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataExclusivityPeriod")) {
14257        res.setDataExclusivityPeriod(parsePeriod(xpp));
14258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateOfFirstAuthorization")) {
14259        res.setDateOfFirstAuthorizationElement(parseDateTime(xpp));
14260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("internationalBirthDate")) {
14261        res.setInternationalBirthDateElement(parseDateTime(xpp));
14262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalBasis")) {
14263        res.setLegalBasis(parseCodeableConcept(xpp));
14264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdictionalAuthorization")) {
14265        res.getJurisdictionalAuthorization().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(xpp, res));
14266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("holder")) {
14267        res.setHolder(parseReference(xpp));
14268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
14269        res.setRegulator(parseReference(xpp));
14270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
14271        res.setProcedure(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(xpp, res));
14272      } else if (!parseDomainResourceContent(eventType, xpp, res))
14273        return false;
14274    return true;
14275  }
14276
14277  protected MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
14278    MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent();
14279    parseBackboneAttributes(xpp, res);
14280    next(xpp);
14281    int eventType = nextNoWhitespace(xpp);
14282    while (eventType != XmlPullParser.END_TAG) {
14283  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(eventType, xpp, owner, res))
14284        unknownContent(xpp);
14285      eventType = nextNoWhitespace(xpp);
14286    }
14287    next(xpp);
14288    parseElementClose(res);
14289    return res;
14290  }
14291
14292  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14293      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14294        res.getIdentifier().add(parseIdentifier(xpp));
14295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14296        res.setCountry(parseCodeableConcept(xpp));
14297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14298        res.getJurisdiction().add(parseCodeableConcept(xpp));
14299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
14300        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
14301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14302        res.setValidityPeriod(parsePeriod(xpp));
14303      } else if (!parseBackboneElementContent(eventType, xpp, res))
14304        return false;
14305    return true;
14306  }
14307
14308  protected MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
14309    MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent();
14310    parseBackboneAttributes(xpp, res);
14311    next(xpp);
14312    int eventType = nextNoWhitespace(xpp);
14313    while (eventType != XmlPullParser.END_TAG) {
14314  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(eventType, xpp, owner, res))
14315        unknownContent(xpp);
14316      eventType = nextNoWhitespace(xpp);
14317    }
14318    next(xpp);
14319    parseElementClose(res);
14320    return res;
14321  }
14322
14323  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14325        res.setIdentifier(parseIdentifier(xpp));
14326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14327        res.setType(parseCodeableConcept(xpp));
14328      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "date")) {
14329        res.setDate(parseType("date", xpp));
14330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("application")) {
14331        res.getApplication().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(xpp, owner));
14332      } else if (!parseBackboneElementContent(eventType, xpp, res))
14333        return false;
14334    return true;
14335  }
14336
14337  protected MedicinalProductClinicals parseMedicinalProductClinicals(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14338    MedicinalProductClinicals res = new MedicinalProductClinicals();
14339    parseDomainResourceAttributes(xpp, res);
14340    next(xpp);
14341    int eventType = nextNoWhitespace(xpp);
14342    while (eventType != XmlPullParser.END_TAG) {
14343  if (!parseMedicinalProductClinicalsContent(eventType, xpp, res))
14344        unknownContent(xpp);
14345      eventType = nextNoWhitespace(xpp);
14346    }
14347    next(xpp);
14348    parseElementClose(res);
14349    return res;
14350  }
14351
14352  protected boolean parseMedicinalProductClinicalsContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals res) throws XmlPullParserException, IOException, FHIRFormatError {
14353      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffects")) {
14354        res.getUndesirableEffects().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(xpp, res));
14355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapeuticIndication")) {
14356        res.getTherapeuticIndication().add(parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(xpp, res));
14357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
14358        res.getContraindication().add(parseMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(xpp, res));
14359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactions")) {
14360        res.getInteractions().add(parseMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(xpp, res));
14361      } else if (!parseDomainResourceContent(eventType, xpp, res))
14362        return false;
14363    return true;
14364  }
14365
14366  protected MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
14367    MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent();
14368    parseBackboneAttributes(xpp, res);
14369    next(xpp);
14370    int eventType = nextNoWhitespace(xpp);
14371    while (eventType != XmlPullParser.END_TAG) {
14372  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponentContent(eventType, xpp, owner, res))
14373        unknownContent(xpp);
14374      eventType = nextNoWhitespace(xpp);
14375    }
14376    next(xpp);
14377    parseElementClose(res);
14378    return res;
14379  }
14380
14381  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14382      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("symptomConditionEffect")) {
14383        res.setSymptomConditionEffect(parseCodeableConcept(xpp));
14384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
14385        res.setClassification(parseCodeableConcept(xpp));
14386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyOfOccurrence")) {
14387        res.setFrequencyOfOccurrence(parseCodeableConcept(xpp));
14388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14389        res.getPopulation().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(xpp, owner));
14390      } else if (!parseBackboneElementContent(eventType, xpp, res))
14391        return false;
14392    return true;
14393  }
14394
14395  protected MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
14396    MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent();
14397    parseBackboneAttributes(xpp, res);
14398    next(xpp);
14399    int eventType = nextNoWhitespace(xpp);
14400    while (eventType != XmlPullParser.END_TAG) {
14401  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponentContent(eventType, xpp, owner, res))
14402        unknownContent(xpp);
14403      eventType = nextNoWhitespace(xpp);
14404    }
14405    next(xpp);
14406    parseElementClose(res);
14407    return res;
14408  }
14409
14410  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14411      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
14412        res.setAge(parseType("age", xpp));
14413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
14414        res.setGender(parseCodeableConcept(xpp));
14415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("race")) {
14416        res.setRace(parseCodeableConcept(xpp));
14417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physiologicalCondition")) {
14418        res.setPhysiologicalCondition(parseCodeableConcept(xpp));
14419      } else if (!parseBackboneElementContent(eventType, xpp, res))
14420        return false;
14421    return true;
14422  }
14423
14424  protected MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
14425    MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent();
14426    parseBackboneAttributes(xpp, res);
14427    next(xpp);
14428    int eventType = nextNoWhitespace(xpp);
14429    while (eventType != XmlPullParser.END_TAG) {
14430  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponentContent(eventType, xpp, owner, res))
14431        unknownContent(xpp);
14432      eventType = nextNoWhitespace(xpp);
14433    }
14434    next(xpp);
14435    parseElementClose(res);
14436    return res;
14437  }
14438
14439  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14440      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
14441        res.setDiseaseSymptomProcedure(parseCodeableConcept(xpp));
14442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14443        res.setDiseaseStatus(parseCodeableConcept(xpp));
14444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14445        res.getComorbidity().add(parseCodeableConcept(xpp));
14446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedEffect")) {
14447        res.setIntendedEffect(parseCodeableConcept(xpp));
14448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
14449        res.setDuration(parseQuantity(xpp));
14450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffects")) {
14451        res.getUndesirableEffects().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(xpp, owner));
14452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14453        res.getOtherTherapy().add(parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(xpp, owner));
14454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14455        res.getPopulation().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(xpp, owner));
14456      } else if (!parseBackboneElementContent(eventType, xpp, res))
14457        return false;
14458    return true;
14459  }
14460
14461  protected MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
14462    MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent();
14463    parseBackboneAttributes(xpp, res);
14464    next(xpp);
14465    int eventType = nextNoWhitespace(xpp);
14466    while (eventType != XmlPullParser.END_TAG) {
14467  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponentContent(eventType, xpp, owner, res))
14468        unknownContent(xpp);
14469      eventType = nextNoWhitespace(xpp);
14470    }
14471    next(xpp);
14472    parseElementClose(res);
14473    return res;
14474  }
14475
14476  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
14478        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
14479      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14480        res.setMedication(parseType("medication", xpp));
14481      } else if (!parseBackboneElementContent(eventType, xpp, res))
14482        return false;
14483    return true;
14484  }
14485
14486  protected MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent parseMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
14487    MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent();
14488    parseBackboneAttributes(xpp, res);
14489    next(xpp);
14490    int eventType = nextNoWhitespace(xpp);
14491    while (eventType != XmlPullParser.END_TAG) {
14492  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponentContent(eventType, xpp, owner, res))
14493        unknownContent(xpp);
14494      eventType = nextNoWhitespace(xpp);
14495    }
14496    next(xpp);
14497    parseElementClose(res);
14498    return res;
14499  }
14500
14501  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14502      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disease")) {
14503        res.setDisease(parseCodeableConcept(xpp));
14504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14505        res.setDiseaseStatus(parseCodeableConcept(xpp));
14506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14507        res.getComorbidity().add(parseCodeableConcept(xpp));
14508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapeuticIndication")) {
14509        res.getTherapeuticIndication().add(parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(xpp, owner));
14510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14511        res.getOtherTherapy().add(parseMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(xpp, owner));
14512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14513        res.getPopulation().add(parseMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(xpp, owner));
14514      } else if (!parseBackboneElementContent(eventType, xpp, res))
14515        return false;
14516    return true;
14517  }
14518
14519  protected MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent parseMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(XmlPullParser xpp, MedicinalProductClinicals owner) throws XmlPullParserException, IOException, FHIRFormatError {
14520    MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent res = new MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent();
14521    parseBackboneAttributes(xpp, res);
14522    next(xpp);
14523    int eventType = nextNoWhitespace(xpp);
14524    while (eventType != XmlPullParser.END_TAG) {
14525  if (!parseMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponentContent(eventType, xpp, owner, res))
14526        unknownContent(xpp);
14527      eventType = nextNoWhitespace(xpp);
14528    }
14529    next(xpp);
14530    parseElementClose(res);
14531    return res;
14532  }
14533
14534  protected boolean parseMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponentContent(int eventType, XmlPullParser xpp, MedicinalProductClinicals owner, MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14535      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
14536        res.setInteractionElement(parseString(xpp));
14537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactant")) {
14538        res.getInteractant().add(parseCodeableConcept(xpp));
14539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14540        res.setType(parseCodeableConcept(xpp));
14541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effect")) {
14542        res.setEffect(parseCodeableConcept(xpp));
14543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incidence")) {
14544        res.setIncidence(parseCodeableConcept(xpp));
14545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("management")) {
14546        res.setManagement(parseCodeableConcept(xpp));
14547      } else if (!parseBackboneElementContent(eventType, xpp, res))
14548        return false;
14549    return true;
14550  }
14551
14552  protected MedicinalProductContraindication parseMedicinalProductContraindication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14553    MedicinalProductContraindication res = new MedicinalProductContraindication();
14554    parseDomainResourceAttributes(xpp, res);
14555    next(xpp);
14556    int eventType = nextNoWhitespace(xpp);
14557    while (eventType != XmlPullParser.END_TAG) {
14558  if (!parseMedicinalProductContraindicationContent(eventType, xpp, res))
14559        unknownContent(xpp);
14560      eventType = nextNoWhitespace(xpp);
14561    }
14562    next(xpp);
14563    parseElementClose(res);
14564    return res;
14565  }
14566
14567  protected boolean parseMedicinalProductContraindicationContent(int eventType, XmlPullParser xpp, MedicinalProductContraindication res) throws XmlPullParserException, IOException, FHIRFormatError {
14568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14569        res.getSubject().add(parseReference(xpp));
14570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disease")) {
14571        res.setDisease(parseCodeableConcept(xpp));
14572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14573        res.setDiseaseStatus(parseCodeableConcept(xpp));
14574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14575        res.getComorbidity().add(parseCodeableConcept(xpp));
14576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapeuticIndication")) {
14577        res.getTherapeuticIndication().add(parseReference(xpp));
14578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14579        res.getOtherTherapy().add(parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(xpp, res));
14580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14581        res.getPopulation().add(parseMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponent(xpp, res));
14582      } else if (!parseDomainResourceContent(eventType, xpp, res))
14583        return false;
14584    return true;
14585  }
14586
14587  protected MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductContraindication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14588    MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent res = new MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent();
14589    parseBackboneAttributes(xpp, res);
14590    next(xpp);
14591    int eventType = nextNoWhitespace(xpp);
14592    while (eventType != XmlPullParser.END_TAG) {
14593  if (!parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentContent(eventType, xpp, owner, res))
14594        unknownContent(xpp);
14595      eventType = nextNoWhitespace(xpp);
14596    }
14597    next(xpp);
14598    parseElementClose(res);
14599    return res;
14600  }
14601
14602  protected boolean parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductContraindication owner, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14603      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
14604        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
14605      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14606        res.setMedication(parseType("medication", xpp));
14607      } else if (!parseBackboneElementContent(eventType, xpp, res))
14608        return false;
14609    return true;
14610  }
14611
14612  protected MedicinalProductContraindication.MedicinalProductContraindicationPopulationComponent parseMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponent(XmlPullParser xpp, MedicinalProductContraindication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14613    MedicinalProductContraindication.MedicinalProductContraindicationPopulationComponent res = new MedicinalProductContraindication.MedicinalProductContraindicationPopulationComponent();
14614    parseBackboneAttributes(xpp, res);
14615    next(xpp);
14616    int eventType = nextNoWhitespace(xpp);
14617    while (eventType != XmlPullParser.END_TAG) {
14618  if (!parseMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponentContent(eventType, xpp, owner, res))
14619        unknownContent(xpp);
14620      eventType = nextNoWhitespace(xpp);
14621    }
14622    next(xpp);
14623    parseElementClose(res);
14624    return res;
14625  }
14626
14627  protected boolean parseMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductContraindication owner, MedicinalProductContraindication.MedicinalProductContraindicationPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14628      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
14629        res.setAge(parseType("age", xpp));
14630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
14631        res.setGender(parseCodeableConcept(xpp));
14632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("race")) {
14633        res.setRace(parseCodeableConcept(xpp));
14634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physiologicalCondition")) {
14635        res.setPhysiologicalCondition(parseCodeableConcept(xpp));
14636      } else if (!parseBackboneElementContent(eventType, xpp, res))
14637        return false;
14638    return true;
14639  }
14640
14641  protected MedicinalProductDeviceSpec parseMedicinalProductDeviceSpec(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14642    MedicinalProductDeviceSpec res = new MedicinalProductDeviceSpec();
14643    parseDomainResourceAttributes(xpp, res);
14644    next(xpp);
14645    int eventType = nextNoWhitespace(xpp);
14646    while (eventType != XmlPullParser.END_TAG) {
14647  if (!parseMedicinalProductDeviceSpecContent(eventType, xpp, res))
14648        unknownContent(xpp);
14649      eventType = nextNoWhitespace(xpp);
14650    }
14651    next(xpp);
14652    parseElementClose(res);
14653    return res;
14654  }
14655
14656  protected boolean parseMedicinalProductDeviceSpecContent(int eventType, XmlPullParser xpp, MedicinalProductDeviceSpec res) throws XmlPullParserException, IOException, FHIRFormatError {
14657      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14658        res.setIdentifier(parseIdentifier(xpp));
14659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14660        res.setType(parseCodeableConcept(xpp));
14661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tradeName")) {
14662        res.setTradeNameElement(parseString(xpp));
14663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14664        res.setQuantity(parseQuantity(xpp));
14665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listingNumber")) {
14666        res.setListingNumberElement(parseString(xpp));
14667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
14668        res.setModelNumberElement(parseString(xpp));
14669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sterilityIndicator")) {
14670        res.setSterilityIndicator(parseCodeableConcept(xpp));
14671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sterilisationRequirement")) {
14672        res.setSterilisationRequirement(parseCodeableConcept(xpp));
14673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
14674        res.setUsage(parseCodeableConcept(xpp));
14675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nomenclature")) {
14676        res.getNomenclature().add(parseCodeableConcept(xpp));
14677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
14678        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
14679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
14680        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
14681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
14682        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
14683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batchIdentifier")) {
14684        res.getBatchIdentifier().add(parseIdentifier(xpp));
14685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
14686        res.getManufacturer().add(parseReference(xpp));
14687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
14688        res.getMaterial().add(parseMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(xpp, res));
14689      } else if (!parseDomainResourceContent(eventType, xpp, res))
14690        return false;
14691    return true;
14692  }
14693
14694  protected MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent parseMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(XmlPullParser xpp, MedicinalProductDeviceSpec owner) throws XmlPullParserException, IOException, FHIRFormatError {
14695    MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent res = new MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent();
14696    parseBackboneAttributes(xpp, res);
14697    next(xpp);
14698    int eventType = nextNoWhitespace(xpp);
14699    while (eventType != XmlPullParser.END_TAG) {
14700  if (!parseMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponentContent(eventType, xpp, owner, res))
14701        unknownContent(xpp);
14702      eventType = nextNoWhitespace(xpp);
14703    }
14704    next(xpp);
14705    parseElementClose(res);
14706    return res;
14707  }
14708
14709  protected boolean parseMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDeviceSpec owner, MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14710      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
14711        res.setSubstance(parseCodeableConcept(xpp));
14712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternate")) {
14713        res.setAlternateElement(parseBoolean(xpp));
14714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
14715        res.setAllergenicIndicatorElement(parseBoolean(xpp));
14716      } else if (!parseBackboneElementContent(eventType, xpp, res))
14717        return false;
14718    return true;
14719  }
14720
14721  protected MedicinalProductIndication parseMedicinalProductIndication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14722    MedicinalProductIndication res = new MedicinalProductIndication();
14723    parseDomainResourceAttributes(xpp, res);
14724    next(xpp);
14725    int eventType = nextNoWhitespace(xpp);
14726    while (eventType != XmlPullParser.END_TAG) {
14727  if (!parseMedicinalProductIndicationContent(eventType, xpp, res))
14728        unknownContent(xpp);
14729      eventType = nextNoWhitespace(xpp);
14730    }
14731    next(xpp);
14732    parseElementClose(res);
14733    return res;
14734  }
14735
14736  protected boolean parseMedicinalProductIndicationContent(int eventType, XmlPullParser xpp, MedicinalProductIndication res) throws XmlPullParserException, IOException, FHIRFormatError {
14737      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14738        res.getSubject().add(parseReference(xpp));
14739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
14740        res.setDiseaseSymptomProcedure(parseCodeableConcept(xpp));
14741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14742        res.setDiseaseStatus(parseCodeableConcept(xpp));
14743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14744        res.getComorbidity().add(parseCodeableConcept(xpp));
14745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedEffect")) {
14746        res.setIntendedEffect(parseCodeableConcept(xpp));
14747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
14748        res.setDuration(parseQuantity(xpp));
14749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14750        res.getOtherTherapy().add(parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(xpp, res));
14751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffect")) {
14752        res.getUndesirableEffect().add(parseReference(xpp));
14753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14754        res.getPopulation().add(parseMedicinalProductIndicationMedicinalProductIndicationPopulationComponent(xpp, res));
14755      } else if (!parseDomainResourceContent(eventType, xpp, res))
14756        return false;
14757    return true;
14758  }
14759
14760  protected MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductIndication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14761    MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent res = new MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent();
14762    parseBackboneAttributes(xpp, res);
14763    next(xpp);
14764    int eventType = nextNoWhitespace(xpp);
14765    while (eventType != XmlPullParser.END_TAG) {
14766  if (!parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentContent(eventType, xpp, owner, res))
14767        unknownContent(xpp);
14768      eventType = nextNoWhitespace(xpp);
14769    }
14770    next(xpp);
14771    parseElementClose(res);
14772    return res;
14773  }
14774
14775  protected boolean parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIndication owner, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14776      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
14777        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
14778      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14779        res.setMedication(parseType("medication", xpp));
14780      } else if (!parseBackboneElementContent(eventType, xpp, res))
14781        return false;
14782    return true;
14783  }
14784
14785  protected MedicinalProductIndication.MedicinalProductIndicationPopulationComponent parseMedicinalProductIndicationMedicinalProductIndicationPopulationComponent(XmlPullParser xpp, MedicinalProductIndication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14786    MedicinalProductIndication.MedicinalProductIndicationPopulationComponent res = new MedicinalProductIndication.MedicinalProductIndicationPopulationComponent();
14787    parseBackboneAttributes(xpp, res);
14788    next(xpp);
14789    int eventType = nextNoWhitespace(xpp);
14790    while (eventType != XmlPullParser.END_TAG) {
14791  if (!parseMedicinalProductIndicationMedicinalProductIndicationPopulationComponentContent(eventType, xpp, owner, res))
14792        unknownContent(xpp);
14793      eventType = nextNoWhitespace(xpp);
14794    }
14795    next(xpp);
14796    parseElementClose(res);
14797    return res;
14798  }
14799
14800  protected boolean parseMedicinalProductIndicationMedicinalProductIndicationPopulationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIndication owner, MedicinalProductIndication.MedicinalProductIndicationPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14801      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
14802        res.setAge(parseType("age", xpp));
14803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
14804        res.setGender(parseCodeableConcept(xpp));
14805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("race")) {
14806        res.setRace(parseCodeableConcept(xpp));
14807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physiologicalCondition")) {
14808        res.setPhysiologicalCondition(parseCodeableConcept(xpp));
14809      } else if (!parseBackboneElementContent(eventType, xpp, res))
14810        return false;
14811    return true;
14812  }
14813
14814  protected MedicinalProductIngredient parseMedicinalProductIngredient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14815    MedicinalProductIngredient res = new MedicinalProductIngredient();
14816    parseDomainResourceAttributes(xpp, res);
14817    next(xpp);
14818    int eventType = nextNoWhitespace(xpp);
14819    while (eventType != XmlPullParser.END_TAG) {
14820  if (!parseMedicinalProductIngredientContent(eventType, xpp, res))
14821        unknownContent(xpp);
14822      eventType = nextNoWhitespace(xpp);
14823    }
14824    next(xpp);
14825    parseElementClose(res);
14826    return res;
14827  }
14828
14829  protected boolean parseMedicinalProductIngredientContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient res) throws XmlPullParserException, IOException, FHIRFormatError {
14830      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14831        res.setIdentifier(parseIdentifier(xpp));
14832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
14833        res.setRole(parseCodeableConcept(xpp));
14834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
14835        res.setAllergenicIndicatorElement(parseBoolean(xpp));
14836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
14837        res.getManufacturer().add(parseReference(xpp));
14838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specifiedSubstance")) {
14839        res.getSpecifiedSubstance().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(xpp, res));
14840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
14841        res.setSubstance(parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(xpp, res));
14842      } else if (!parseDomainResourceContent(eventType, xpp, res))
14843        return false;
14844    return true;
14845  }
14846
14847  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
14848    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent();
14849    parseBackboneAttributes(xpp, res);
14850    next(xpp);
14851    int eventType = nextNoWhitespace(xpp);
14852    while (eventType != XmlPullParser.END_TAG) {
14853  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(eventType, xpp, owner, res))
14854        unknownContent(xpp);
14855      eventType = nextNoWhitespace(xpp);
14856    }
14857    next(xpp);
14858    parseElementClose(res);
14859    return res;
14860  }
14861
14862  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14863      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14864        res.setCode(parseCodeableConcept(xpp));
14865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
14866        res.setGroup(parseCodeableConcept(xpp));
14867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
14868        res.setConfidentiality(parseCodeableConcept(xpp));
14869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
14870        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
14871      } else if (!parseBackboneElementContent(eventType, xpp, res))
14872        return false;
14873    return true;
14874  }
14875
14876  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
14877    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent();
14878    parseBackboneAttributes(xpp, res);
14879    next(xpp);
14880    int eventType = nextNoWhitespace(xpp);
14881    while (eventType != XmlPullParser.END_TAG) {
14882  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(eventType, xpp, owner, res))
14883        unknownContent(xpp);
14884      eventType = nextNoWhitespace(xpp);
14885    }
14886    next(xpp);
14887    parseElementClose(res);
14888    return res;
14889  }
14890
14891  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14892      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentation")) {
14893        res.setPresentation(parseRatio(xpp));
14894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationLowLimit")) {
14895        res.setPresentationLowLimit(parseRatio(xpp));
14896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentration")) {
14897        res.setConcentration(parseRatio(xpp));
14898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentrationLowLimit")) {
14899        res.setConcentrationLowLimit(parseRatio(xpp));
14900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
14901        res.setMeasurementPointElement(parseString(xpp));
14902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14903        res.getCountry().add(parseCodeableConcept(xpp));
14904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceStrength")) {
14905        res.getReferenceStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(xpp, owner));
14906      } else if (!parseBackboneElementContent(eventType, xpp, res))
14907        return false;
14908    return true;
14909  }
14910
14911  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
14912    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent();
14913    parseBackboneAttributes(xpp, res);
14914    next(xpp);
14915    int eventType = nextNoWhitespace(xpp);
14916    while (eventType != XmlPullParser.END_TAG) {
14917  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(eventType, xpp, owner, res))
14918        unknownContent(xpp);
14919      eventType = nextNoWhitespace(xpp);
14920    }
14921    next(xpp);
14922    parseElementClose(res);
14923    return res;
14924  }
14925
14926  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14927      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
14928        res.setSubstance(parseCodeableConcept(xpp));
14929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
14930        res.setStrength(parseRatio(xpp));
14931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
14932        res.setMeasurementPointElement(parseString(xpp));
14933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14934        res.getCountry().add(parseCodeableConcept(xpp));
14935      } else if (!parseBackboneElementContent(eventType, xpp, res))
14936        return false;
14937    return true;
14938  }
14939
14940  protected MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
14941    MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent();
14942    parseBackboneAttributes(xpp, res);
14943    next(xpp);
14944    int eventType = nextNoWhitespace(xpp);
14945    while (eventType != XmlPullParser.END_TAG) {
14946  if (!parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(eventType, xpp, owner, res))
14947        unknownContent(xpp);
14948      eventType = nextNoWhitespace(xpp);
14949    }
14950    next(xpp);
14951    parseElementClose(res);
14952    return res;
14953  }
14954
14955  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14956      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14957        res.setCode(parseCodeableConcept(xpp));
14958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
14959        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
14960      } else if (!parseBackboneElementContent(eventType, xpp, res))
14961        return false;
14962    return true;
14963  }
14964
14965  protected MedicinalProductInteraction parseMedicinalProductInteraction(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14966    MedicinalProductInteraction res = new MedicinalProductInteraction();
14967    parseDomainResourceAttributes(xpp, res);
14968    next(xpp);
14969    int eventType = nextNoWhitespace(xpp);
14970    while (eventType != XmlPullParser.END_TAG) {
14971  if (!parseMedicinalProductInteractionContent(eventType, xpp, res))
14972        unknownContent(xpp);
14973      eventType = nextNoWhitespace(xpp);
14974    }
14975    next(xpp);
14976    parseElementClose(res);
14977    return res;
14978  }
14979
14980  protected boolean parseMedicinalProductInteractionContent(int eventType, XmlPullParser xpp, MedicinalProductInteraction res) throws XmlPullParserException, IOException, FHIRFormatError {
14981      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14982        res.getSubject().add(parseReference(xpp));
14983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
14984        res.setInteractionElement(parseString(xpp));
14985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactant")) {
14986        res.getInteractant().add(parseCodeableConcept(xpp));
14987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14988        res.setType(parseCodeableConcept(xpp));
14989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effect")) {
14990        res.setEffect(parseCodeableConcept(xpp));
14991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incidence")) {
14992        res.setIncidence(parseCodeableConcept(xpp));
14993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("management")) {
14994        res.setManagement(parseCodeableConcept(xpp));
14995      } else if (!parseDomainResourceContent(eventType, xpp, res))
14996        return false;
14997    return true;
14998  }
14999
15000  protected MedicinalProductManufactured parseMedicinalProductManufactured(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15001    MedicinalProductManufactured res = new MedicinalProductManufactured();
15002    parseDomainResourceAttributes(xpp, res);
15003    next(xpp);
15004    int eventType = nextNoWhitespace(xpp);
15005    while (eventType != XmlPullParser.END_TAG) {
15006  if (!parseMedicinalProductManufacturedContent(eventType, xpp, res))
15007        unknownContent(xpp);
15008      eventType = nextNoWhitespace(xpp);
15009    }
15010    next(xpp);
15011    parseElementClose(res);
15012    return res;
15013  }
15014
15015  protected boolean parseMedicinalProductManufacturedContent(int eventType, XmlPullParser xpp, MedicinalProductManufactured res) throws XmlPullParserException, IOException, FHIRFormatError {
15016      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedDoseForm")) {
15017        res.setManufacturedDoseForm(parseCodeableConcept(xpp));
15018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
15019        res.setUnitOfPresentation(parseCodeableConcept(xpp));
15020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15021        res.setQuantity(parseQuantity(xpp));
15022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15023        res.getManufacturer().add(parseReference(xpp));
15024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15025        res.getIngredient().add(parseReference(xpp));
15026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
15027        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
15028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
15029        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
15030      } else if (!parseDomainResourceContent(eventType, xpp, res))
15031        return false;
15032    return true;
15033  }
15034
15035  protected MedicinalProductPackaged parseMedicinalProductPackaged(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15036    MedicinalProductPackaged res = new MedicinalProductPackaged();
15037    parseDomainResourceAttributes(xpp, res);
15038    next(xpp);
15039    int eventType = nextNoWhitespace(xpp);
15040    while (eventType != XmlPullParser.END_TAG) {
15041  if (!parseMedicinalProductPackagedContent(eventType, xpp, res))
15042        unknownContent(xpp);
15043      eventType = nextNoWhitespace(xpp);
15044    }
15045    next(xpp);
15046    parseElementClose(res);
15047    return res;
15048  }
15049
15050  protected boolean parseMedicinalProductPackagedContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged res) throws XmlPullParserException, IOException, FHIRFormatError {
15051      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15052        res.setIdentifier(parseIdentifier(xpp));
15053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15054        res.setDescriptionElement(parseString(xpp));
15055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
15056        res.getMarketingStatus().add(parseMarketingStatus(xpp));
15057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingAuthorization")) {
15058        res.setMarketingAuthorization(parseReference(xpp));
15059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15060        res.getManufacturer().add(parseReference(xpp));
15061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batchIdentifier")) {
15062        res.getBatchIdentifier().add(parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(xpp, res));
15063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
15064        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, res));
15065      } else if (!parseDomainResourceContent(eventType, xpp, res))
15066        return false;
15067    return true;
15068  }
15069
15070  protected MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
15071    MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res = new MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent();
15072    parseBackboneAttributes(xpp, res);
15073    next(xpp);
15074    int eventType = nextNoWhitespace(xpp);
15075    while (eventType != XmlPullParser.END_TAG) {
15076  if (!parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(eventType, xpp, owner, res))
15077        unknownContent(xpp);
15078      eventType = nextNoWhitespace(xpp);
15079    }
15080    next(xpp);
15081    parseElementClose(res);
15082    return res;
15083  }
15084
15085  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15086      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outerPackaging")) {
15087        res.setOuterPackaging(parseIdentifier(xpp));
15088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immediatePackaging")) {
15089        res.setImmediatePackaging(parseIdentifier(xpp));
15090      } else if (!parseBackboneElementContent(eventType, xpp, res))
15091        return false;
15092    return true;
15093  }
15094
15095  protected MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
15096    MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res = new MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent();
15097    parseBackboneAttributes(xpp, res);
15098    next(xpp);
15099    int eventType = nextNoWhitespace(xpp);
15100    while (eventType != XmlPullParser.END_TAG) {
15101  if (!parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(eventType, xpp, owner, res))
15102        unknownContent(xpp);
15103      eventType = nextNoWhitespace(xpp);
15104    }
15105    next(xpp);
15106    parseElementClose(res);
15107    return res;
15108  }
15109
15110  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15111      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15112        res.getIdentifier().add(parseIdentifier(xpp));
15113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15114        res.setType(parseCodeableConcept(xpp));
15115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15116        res.setQuantity(parseQuantity(xpp));
15117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
15118        res.getMaterial().add(parseCodeableConcept(xpp));
15119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternateMaterial")) {
15120        res.getAlternateMaterial().add(parseCodeableConcept(xpp));
15121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15122        res.getDevice().add(parseReference(xpp));
15123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedItem")) {
15124        res.getManufacturedItem().add(parseReference(xpp));
15125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
15126        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, owner));
15127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
15128        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
15129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
15130        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
15131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
15132        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
15133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15134        res.getManufacturer().add(parseReference(xpp));
15135      } else if (!parseBackboneElementContent(eventType, xpp, res))
15136        return false;
15137    return true;
15138  }
15139
15140  protected MedicinalProductPharmaceutical parseMedicinalProductPharmaceutical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15141    MedicinalProductPharmaceutical res = new MedicinalProductPharmaceutical();
15142    parseDomainResourceAttributes(xpp, res);
15143    next(xpp);
15144    int eventType = nextNoWhitespace(xpp);
15145    while (eventType != XmlPullParser.END_TAG) {
15146  if (!parseMedicinalProductPharmaceuticalContent(eventType, xpp, res))
15147        unknownContent(xpp);
15148      eventType = nextNoWhitespace(xpp);
15149    }
15150    next(xpp);
15151    parseElementClose(res);
15152    return res;
15153  }
15154
15155  protected boolean parseMedicinalProductPharmaceuticalContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical res) throws XmlPullParserException, IOException, FHIRFormatError {
15156      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15157        res.getIdentifier().add(parseIdentifier(xpp));
15158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrableDoseForm")) {
15159        res.setAdministrableDoseForm(parseCodeableConcept(xpp));
15160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
15161        res.setUnitOfPresentation(parseCodeableConcept(xpp));
15162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15163        res.getIngredient().add(parseReference(xpp));
15164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15165        res.getDevice().add(parseReference(xpp));
15166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristics")) {
15167        res.getCharacteristics().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(xpp, res));
15168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeOfAdministration")) {
15169        res.getRouteOfAdministration().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(xpp, res));
15170      } else if (!parseDomainResourceContent(eventType, xpp, res))
15171        return false;
15172    return true;
15173  }
15174
15175  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15176    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent();
15177    parseBackboneAttributes(xpp, res);
15178    next(xpp);
15179    int eventType = nextNoWhitespace(xpp);
15180    while (eventType != XmlPullParser.END_TAG) {
15181  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(eventType, xpp, owner, res))
15182        unknownContent(xpp);
15183      eventType = nextNoWhitespace(xpp);
15184    }
15185    next(xpp);
15186    parseElementClose(res);
15187    return res;
15188  }
15189
15190  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15191      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15192        res.setCode(parseCodeableConcept(xpp));
15193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15194        res.setStatus(parseCodeableConcept(xpp));
15195      } else if (!parseBackboneElementContent(eventType, xpp, res))
15196        return false;
15197    return true;
15198  }
15199
15200  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15201    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent();
15202    parseBackboneAttributes(xpp, res);
15203    next(xpp);
15204    int eventType = nextNoWhitespace(xpp);
15205    while (eventType != XmlPullParser.END_TAG) {
15206  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentContent(eventType, xpp, owner, res))
15207        unknownContent(xpp);
15208      eventType = nextNoWhitespace(xpp);
15209    }
15210    next(xpp);
15211    parseElementClose(res);
15212    return res;
15213  }
15214
15215  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15217        res.setCode(parseCodeableConcept(xpp));
15218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("firstDose")) {
15219        res.setFirstDose(parseQuantity(xpp));
15220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxSingleDose")) {
15221        res.setMaxSingleDose(parseQuantity(xpp));
15222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerDay")) {
15223        res.setMaxDosePerDay(parseQuantity(xpp));
15224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerTreatmentPeriod")) {
15225        res.setMaxDosePerTreatmentPeriod(parseRatio(xpp));
15226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxTreatmentPeriod")) {
15227        res.setMaxTreatmentPeriod(parseDuration(xpp));
15228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetSpecies")) {
15229        res.getTargetSpecies().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(xpp, owner));
15230      } else if (!parseBackboneElementContent(eventType, xpp, res))
15231        return false;
15232    return true;
15233  }
15234
15235  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15236    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent();
15237    parseBackboneAttributes(xpp, res);
15238    next(xpp);
15239    int eventType = nextNoWhitespace(xpp);
15240    while (eventType != XmlPullParser.END_TAG) {
15241  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentContent(eventType, xpp, owner, res))
15242        unknownContent(xpp);
15243      eventType = nextNoWhitespace(xpp);
15244    }
15245    next(xpp);
15246    parseElementClose(res);
15247    return res;
15248  }
15249
15250  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15252        res.setCode(parseCodeableConcept(xpp));
15253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("withdrawalPeriod")) {
15254        res.getWithdrawalPeriod().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(xpp, owner));
15255      } else if (!parseBackboneElementContent(eventType, xpp, res))
15256        return false;
15257    return true;
15258  }
15259
15260  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15261    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent();
15262    parseBackboneAttributes(xpp, res);
15263    next(xpp);
15264    int eventType = nextNoWhitespace(xpp);
15265    while (eventType != XmlPullParser.END_TAG) {
15266  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(eventType, xpp, owner, res))
15267        unknownContent(xpp);
15268      eventType = nextNoWhitespace(xpp);
15269    }
15270    next(xpp);
15271    parseElementClose(res);
15272    return res;
15273  }
15274
15275  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15276      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tissue")) {
15277        res.setTissue(parseCodeableConcept(xpp));
15278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
15279        res.setValue(parseQuantity(xpp));
15280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
15281        res.setSupportingInformationElement(parseString(xpp));
15282      } else if (!parseBackboneElementContent(eventType, xpp, res))
15283        return false;
15284    return true;
15285  }
15286
15287  protected MedicinalProductUndesirableEffect parseMedicinalProductUndesirableEffect(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15288    MedicinalProductUndesirableEffect res = new MedicinalProductUndesirableEffect();
15289    parseDomainResourceAttributes(xpp, res);
15290    next(xpp);
15291    int eventType = nextNoWhitespace(xpp);
15292    while (eventType != XmlPullParser.END_TAG) {
15293  if (!parseMedicinalProductUndesirableEffectContent(eventType, xpp, res))
15294        unknownContent(xpp);
15295      eventType = nextNoWhitespace(xpp);
15296    }
15297    next(xpp);
15298    parseElementClose(res);
15299    return res;
15300  }
15301
15302  protected boolean parseMedicinalProductUndesirableEffectContent(int eventType, XmlPullParser xpp, MedicinalProductUndesirableEffect res) throws XmlPullParserException, IOException, FHIRFormatError {
15303      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15304        res.getSubject().add(parseReference(xpp));
15305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("symptomConditionEffect")) {
15306        res.setSymptomConditionEffect(parseCodeableConcept(xpp));
15307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
15308        res.setClassification(parseCodeableConcept(xpp));
15309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyOfOccurrence")) {
15310        res.setFrequencyOfOccurrence(parseCodeableConcept(xpp));
15311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
15312        res.getPopulation().add(parseMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponent(xpp, res));
15313      } else if (!parseDomainResourceContent(eventType, xpp, res))
15314        return false;
15315    return true;
15316  }
15317
15318  protected MedicinalProductUndesirableEffect.MedicinalProductUndesirableEffectPopulationComponent parseMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponent(XmlPullParser xpp, MedicinalProductUndesirableEffect owner) throws XmlPullParserException, IOException, FHIRFormatError {
15319    MedicinalProductUndesirableEffect.MedicinalProductUndesirableEffectPopulationComponent res = new MedicinalProductUndesirableEffect.MedicinalProductUndesirableEffectPopulationComponent();
15320    parseBackboneAttributes(xpp, res);
15321    next(xpp);
15322    int eventType = nextNoWhitespace(xpp);
15323    while (eventType != XmlPullParser.END_TAG) {
15324  if (!parseMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponentContent(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 parseMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductUndesirableEffect owner, MedicinalProductUndesirableEffect.MedicinalProductUndesirableEffectPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15334      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
15335        res.setAge(parseType("age", xpp));
15336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
15337        res.setGender(parseCodeableConcept(xpp));
15338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("race")) {
15339        res.setRace(parseCodeableConcept(xpp));
15340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physiologicalCondition")) {
15341        res.setPhysiologicalCondition(parseCodeableConcept(xpp));
15342      } else if (!parseBackboneElementContent(eventType, xpp, res))
15343        return false;
15344    return true;
15345  }
15346
15347  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15348    MessageDefinition res = new MessageDefinition();
15349    parseDomainResourceAttributes(xpp, res);
15350    next(xpp);
15351    int eventType = nextNoWhitespace(xpp);
15352    while (eventType != XmlPullParser.END_TAG) {
15353  if (!parseMessageDefinitionContent(eventType, xpp, res))
15354        unknownContent(xpp);
15355      eventType = nextNoWhitespace(xpp);
15356    }
15357    next(xpp);
15358    parseElementClose(res);
15359    return res;
15360  }
15361
15362  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
15363      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15364        res.setUrlElement(parseUri(xpp));
15365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15366        res.getIdentifier().add(parseIdentifier(xpp));
15367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15368        res.setVersionElement(parseString(xpp));
15369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15370        res.setNameElement(parseString(xpp));
15371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15372        res.setTitleElement(parseString(xpp));
15373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
15374        res.getReplaces().add(parseCanonical(xpp));
15375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15376        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15378        res.setExperimentalElement(parseBoolean(xpp));
15379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15380        res.setDateElement(parseDateTime(xpp));
15381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15382        res.setPublisherElement(parseString(xpp));
15383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15384        res.getContact().add(parseContactDetail(xpp));
15385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15386        res.setDescriptionElement(parseMarkdown(xpp));
15387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15388        res.getUseContext().add(parseUsageContext(xpp));
15389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15390        res.getJurisdiction().add(parseCodeableConcept(xpp));
15391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15392        res.setPurposeElement(parseMarkdown(xpp));
15393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15394        res.setCopyrightElement(parseMarkdown(xpp));
15395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
15396        res.setBaseElement(parseCanonical(xpp));
15397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
15398        res.getParent().add(parseCanonical(xpp));
15399      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
15400        res.setEvent(parseType("event", xpp));
15401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15402        res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
15403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15404        res.getFocus().add(parseMessageDefinitionMessageDefinitionFocusComponent(xpp, res));
15405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
15406        res.setResponseRequiredElement(parseEnumeration(xpp, MessageDefinition.MessageheaderResponseRequest.NULL, new MessageDefinition.MessageheaderResponseRequestEnumFactory()));
15407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
15408        res.getAllowedResponse().add(parseMessageDefinitionMessageDefinitionAllowedResponseComponent(xpp, res));
15409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("graph")) {
15410        res.getGraph().add(parseCanonical(xpp));
15411      } else if (!parseDomainResourceContent(eventType, xpp, res))
15412        return false;
15413    return true;
15414  }
15415
15416  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionMessageDefinitionFocusComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15417    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
15418    parseBackboneAttributes(xpp, res);
15419    next(xpp);
15420    int eventType = nextNoWhitespace(xpp);
15421    while (eventType != XmlPullParser.END_TAG) {
15422  if (!parseMessageDefinitionMessageDefinitionFocusComponentContent(eventType, xpp, owner, res))
15423        unknownContent(xpp);
15424      eventType = nextNoWhitespace(xpp);
15425    }
15426    next(xpp);
15427    parseElementClose(res);
15428    return res;
15429  }
15430
15431  protected boolean parseMessageDefinitionMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15432      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15433        res.setCodeElement(parseCode(xpp));
15434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
15435        res.setProfileElement(parseCanonical(xpp));
15436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
15437        res.setMinElement(parseUnsignedInt(xpp));
15438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
15439        res.setMaxElement(parseString(xpp));
15440      } else if (!parseBackboneElementContent(eventType, xpp, res))
15441        return false;
15442    return true;
15443  }
15444
15445  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionMessageDefinitionAllowedResponseComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15446    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
15447    parseBackboneAttributes(xpp, res);
15448    next(xpp);
15449    int eventType = nextNoWhitespace(xpp);
15450    while (eventType != XmlPullParser.END_TAG) {
15451  if (!parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(eventType, xpp, owner, res))
15452        unknownContent(xpp);
15453      eventType = nextNoWhitespace(xpp);
15454    }
15455    next(xpp);
15456    parseElementClose(res);
15457    return res;
15458  }
15459
15460  protected boolean parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15461      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
15462        res.setMessageElement(parseCanonical(xpp));
15463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
15464        res.setSituationElement(parseMarkdown(xpp));
15465      } else if (!parseBackboneElementContent(eventType, xpp, res))
15466        return false;
15467    return true;
15468  }
15469
15470  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15471    MessageHeader res = new MessageHeader();
15472    parseDomainResourceAttributes(xpp, res);
15473    next(xpp);
15474    int eventType = nextNoWhitespace(xpp);
15475    while (eventType != XmlPullParser.END_TAG) {
15476  if (!parseMessageHeaderContent(eventType, xpp, res))
15477        unknownContent(xpp);
15478      eventType = nextNoWhitespace(xpp);
15479    }
15480    next(xpp);
15481    parseElementClose(res);
15482    return res;
15483  }
15484
15485  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
15486      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
15487        res.setEvent(parseType("event", xpp));
15488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
15489        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
15490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
15491        res.setSender(parseReference(xpp));
15492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
15493        res.setEnterer(parseReference(xpp));
15494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
15495        res.setAuthor(parseReference(xpp));
15496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15497        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
15498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
15499        res.setResponsible(parseReference(xpp));
15500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15501        res.setReason(parseCodeableConcept(xpp));
15502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
15503        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
15504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15505        res.getFocus().add(parseReference(xpp));
15506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
15507        res.setDefinitionElement(parseCanonical(xpp));
15508      } else if (!parseDomainResourceContent(eventType, xpp, res))
15509        return false;
15510    return true;
15511  }
15512
15513  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15514    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
15515    parseBackboneAttributes(xpp, res);
15516    next(xpp);
15517    int eventType = nextNoWhitespace(xpp);
15518    while (eventType != XmlPullParser.END_TAG) {
15519  if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, owner, res))
15520        unknownContent(xpp);
15521      eventType = nextNoWhitespace(xpp);
15522    }
15523    next(xpp);
15524    parseElementClose(res);
15525    return res;
15526  }
15527
15528  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15529      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15530        res.setNameElement(parseString(xpp));
15531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15532        res.setTarget(parseReference(xpp));
15533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15534        res.setEndpointElement(parseUrl(xpp));
15535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
15536        res.setReceiver(parseReference(xpp));
15537      } else if (!parseBackboneElementContent(eventType, xpp, res))
15538        return false;
15539    return true;
15540  }
15541
15542  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15543    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
15544    parseBackboneAttributes(xpp, res);
15545    next(xpp);
15546    int eventType = nextNoWhitespace(xpp);
15547    while (eventType != XmlPullParser.END_TAG) {
15548  if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, owner, res))
15549        unknownContent(xpp);
15550      eventType = nextNoWhitespace(xpp);
15551    }
15552    next(xpp);
15553    parseElementClose(res);
15554    return res;
15555  }
15556
15557  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15559        res.setNameElement(parseString(xpp));
15560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
15561        res.setSoftwareElement(parseString(xpp));
15562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15563        res.setVersionElement(parseString(xpp));
15564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15565        res.setContact(parseContactPoint(xpp));
15566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15567        res.setEndpointElement(parseUrl(xpp));
15568      } else if (!parseBackboneElementContent(eventType, xpp, res))
15569        return false;
15570    return true;
15571  }
15572
15573  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15574    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
15575    parseBackboneAttributes(xpp, res);
15576    next(xpp);
15577    int eventType = nextNoWhitespace(xpp);
15578    while (eventType != XmlPullParser.END_TAG) {
15579  if (!parseMessageHeaderMessageHeaderResponseComponentContent(eventType, xpp, owner, res))
15580        unknownContent(xpp);
15581      eventType = nextNoWhitespace(xpp);
15582    }
15583    next(xpp);
15584    parseElementClose(res);
15585    return res;
15586  }
15587
15588  protected boolean parseMessageHeaderMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15589      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15590        res.setIdentifierElement(parseId(xpp));
15591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15592        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
15593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
15594        res.setDetails(parseReference(xpp));
15595      } else if (!parseBackboneElementContent(eventType, xpp, res))
15596        return false;
15597    return true;
15598  }
15599
15600  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15601    NamingSystem res = new NamingSystem();
15602    parseDomainResourceAttributes(xpp, res);
15603    next(xpp);
15604    int eventType = nextNoWhitespace(xpp);
15605    while (eventType != XmlPullParser.END_TAG) {
15606  if (!parseNamingSystemContent(eventType, xpp, res))
15607        unknownContent(xpp);
15608      eventType = nextNoWhitespace(xpp);
15609    }
15610    next(xpp);
15611    parseElementClose(res);
15612    return res;
15613  }
15614
15615  protected boolean parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
15616      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15617        res.setNameElement(parseString(xpp));
15618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15619        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
15621        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
15622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15623        res.setDateElement(parseDateTime(xpp));
15624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15625        res.setPublisherElement(parseString(xpp));
15626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15627        res.getContact().add(parseContactDetail(xpp));
15628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
15629        res.setResponsibleElement(parseString(xpp));
15630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15631        res.setType(parseCodeableConcept(xpp));
15632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15633        res.setDescriptionElement(parseMarkdown(xpp));
15634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15635        res.getUseContext().add(parseUsageContext(xpp));
15636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15637        res.getJurisdiction().add(parseCodeableConcept(xpp));
15638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
15639        res.setUsageElement(parseString(xpp));
15640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
15641        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
15642      } else if (!parseDomainResourceContent(eventType, xpp, res))
15643        return false;
15644    return true;
15645  }
15646
15647  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
15648    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
15649    parseBackboneAttributes(xpp, res);
15650    next(xpp);
15651    int eventType = nextNoWhitespace(xpp);
15652    while (eventType != XmlPullParser.END_TAG) {
15653  if (!parseNamingSystemNamingSystemUniqueIdComponentContent(eventType, xpp, owner, res))
15654        unknownContent(xpp);
15655      eventType = nextNoWhitespace(xpp);
15656    }
15657    next(xpp);
15658    parseElementClose(res);
15659    return res;
15660  }
15661
15662  protected boolean parseNamingSystemNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem owner, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15663      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15664        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
15665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
15666        res.setValueElement(parseString(xpp));
15667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
15668        res.setPreferredElement(parseBoolean(xpp));
15669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
15670        res.setCommentElement(parseString(xpp));
15671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15672        res.setPeriod(parsePeriod(xpp));
15673      } else if (!parseBackboneElementContent(eventType, xpp, res))
15674        return false;
15675    return true;
15676  }
15677
15678  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15679    NutritionOrder res = new NutritionOrder();
15680    parseDomainResourceAttributes(xpp, res);
15681    next(xpp);
15682    int eventType = nextNoWhitespace(xpp);
15683    while (eventType != XmlPullParser.END_TAG) {
15684  if (!parseNutritionOrderContent(eventType, xpp, res))
15685        unknownContent(xpp);
15686      eventType = nextNoWhitespace(xpp);
15687    }
15688    next(xpp);
15689    parseElementClose(res);
15690    return res;
15691  }
15692
15693  protected boolean parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
15694      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15695        res.getIdentifier().add(parseIdentifier(xpp));
15696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
15697        res.getInstantiatesCanonical().add(parseCanonical(xpp));
15698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
15699        res.getInstantiatesUri().add(parseUri(xpp));
15700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
15701        res.getInstantiates().add(parseUri(xpp));
15702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15703        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
15704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
15705        res.setIntentElement(parseEnumeration(xpp, NutritionOrder.NutritiionOrderIntent.NULL, new NutritionOrder.NutritiionOrderIntentEnumFactory()));
15706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
15707        res.setPatient(parseReference(xpp));
15708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15709        res.setContext(parseReference(xpp));
15710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
15711        res.setDateTimeElement(parseDateTime(xpp));
15712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
15713        res.setOrderer(parseReference(xpp));
15714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
15715        res.getAllergyIntolerance().add(parseReference(xpp));
15716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
15717        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
15718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
15719        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
15720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
15721        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
15722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
15723        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
15724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
15725        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
15726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15727        res.getNote().add(parseAnnotation(xpp));
15728      } else if (!parseDomainResourceContent(eventType, xpp, res))
15729        return false;
15730    return true;
15731  }
15732
15733  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
15734    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
15735    parseBackboneAttributes(xpp, res);
15736    next(xpp);
15737    int eventType = nextNoWhitespace(xpp);
15738    while (eventType != XmlPullParser.END_TAG) {
15739  if (!parseNutritionOrderNutritionOrderOralDietComponentContent(eventType, xpp, owner, res))
15740        unknownContent(xpp);
15741      eventType = nextNoWhitespace(xpp);
15742    }
15743    next(xpp);
15744    parseElementClose(res);
15745    return res;
15746  }
15747
15748  protected boolean parseNutritionOrderNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15749      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15750        res.getType().add(parseCodeableConcept(xpp));
15751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
15752        res.getSchedule().add(parseTiming(xpp));
15753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
15754        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
15755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
15756        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
15757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
15758        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
15759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
15760        res.setInstructionElement(parseString(xpp));
15761      } else if (!parseBackboneElementContent(eventType, xpp, res))
15762        return false;
15763    return true;
15764  }
15765
15766  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
15767    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
15768    parseBackboneAttributes(xpp, res);
15769    next(xpp);
15770    int eventType = nextNoWhitespace(xpp);
15771    while (eventType != XmlPullParser.END_TAG) {
15772  if (!parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(eventType, xpp, owner, res))
15773        unknownContent(xpp);
15774      eventType = nextNoWhitespace(xpp);
15775    }
15776    next(xpp);
15777    parseElementClose(res);
15778    return res;
15779  }
15780
15781  protected boolean parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15782      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
15783        res.setModifier(parseCodeableConcept(xpp));
15784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
15785        res.setAmount(parseQuantity(xpp));
15786      } else if (!parseBackboneElementContent(eventType, xpp, res))
15787        return false;
15788    return true;
15789  }
15790
15791  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
15792    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
15793    parseBackboneAttributes(xpp, res);
15794    next(xpp);
15795    int eventType = nextNoWhitespace(xpp);
15796    while (eventType != XmlPullParser.END_TAG) {
15797  if (!parseNutritionOrderNutritionOrderOralDietTextureComponentContent(eventType, xpp, owner, res))
15798        unknownContent(xpp);
15799      eventType = nextNoWhitespace(xpp);
15800    }
15801    next(xpp);
15802    parseElementClose(res);
15803    return res;
15804  }
15805
15806  protected boolean parseNutritionOrderNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
15808        res.setModifier(parseCodeableConcept(xpp));
15809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
15810        res.setFoodType(parseCodeableConcept(xpp));
15811      } else if (!parseBackboneElementContent(eventType, xpp, res))
15812        return false;
15813    return true;
15814  }
15815
15816  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
15817    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
15818    parseBackboneAttributes(xpp, res);
15819    next(xpp);
15820    int eventType = nextNoWhitespace(xpp);
15821    while (eventType != XmlPullParser.END_TAG) {
15822  if (!parseNutritionOrderNutritionOrderSupplementComponentContent(eventType, xpp, owner, res))
15823        unknownContent(xpp);
15824      eventType = nextNoWhitespace(xpp);
15825    }
15826    next(xpp);
15827    parseElementClose(res);
15828    return res;
15829  }
15830
15831  protected boolean parseNutritionOrderNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15832      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15833        res.setType(parseCodeableConcept(xpp));
15834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
15835        res.setProductNameElement(parseString(xpp));
15836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
15837        res.getSchedule().add(parseTiming(xpp));
15838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15839        res.setQuantity(parseQuantity(xpp));
15840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
15841        res.setInstructionElement(parseString(xpp));
15842      } else if (!parseBackboneElementContent(eventType, xpp, res))
15843        return false;
15844    return true;
15845  }
15846
15847  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
15848    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
15849    parseBackboneAttributes(xpp, res);
15850    next(xpp);
15851    int eventType = nextNoWhitespace(xpp);
15852    while (eventType != XmlPullParser.END_TAG) {
15853  if (!parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(eventType, xpp, owner, res))
15854        unknownContent(xpp);
15855      eventType = nextNoWhitespace(xpp);
15856    }
15857    next(xpp);
15858    parseElementClose(res);
15859    return res;
15860  }
15861
15862  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15863      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
15864        res.setBaseFormulaType(parseCodeableConcept(xpp));
15865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
15866        res.setBaseFormulaProductNameElement(parseString(xpp));
15867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
15868        res.setAdditiveType(parseCodeableConcept(xpp));
15869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
15870        res.setAdditiveProductNameElement(parseString(xpp));
15871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
15872        res.setCaloricDensity(parseQuantity(xpp));
15873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
15874        res.setRouteofAdministration(parseCodeableConcept(xpp));
15875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
15876        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
15877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
15878        res.setMaxVolumeToDeliver(parseQuantity(xpp));
15879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
15880        res.setAdministrationInstructionElement(parseString(xpp));
15881      } else if (!parseBackboneElementContent(eventType, xpp, res))
15882        return false;
15883    return true;
15884  }
15885
15886  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
15887    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
15888    parseBackboneAttributes(xpp, res);
15889    next(xpp);
15890    int eventType = nextNoWhitespace(xpp);
15891    while (eventType != XmlPullParser.END_TAG) {
15892  if (!parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, owner, res))
15893        unknownContent(xpp);
15894      eventType = nextNoWhitespace(xpp);
15895    }
15896    next(xpp);
15897    parseElementClose(res);
15898    return res;
15899  }
15900
15901  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15902      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
15903        res.setSchedule(parseTiming(xpp));
15904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15905        res.setQuantity(parseQuantity(xpp));
15906      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
15907        res.setRate(parseType("rate", xpp));
15908      } else if (!parseBackboneElementContent(eventType, xpp, res))
15909        return false;
15910    return true;
15911  }
15912
15913  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15914    Observation res = new Observation();
15915    parseDomainResourceAttributes(xpp, res);
15916    next(xpp);
15917    int eventType = nextNoWhitespace(xpp);
15918    while (eventType != XmlPullParser.END_TAG) {
15919  if (!parseObservationContent(eventType, xpp, res))
15920        unknownContent(xpp);
15921      eventType = nextNoWhitespace(xpp);
15922    }
15923    next(xpp);
15924    parseElementClose(res);
15925    return res;
15926  }
15927
15928  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
15929      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15930        res.getIdentifier().add(parseIdentifier(xpp));
15931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15932        res.getBasedOn().add(parseReference(xpp));
15933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15934        res.getPartOf().add(parseReference(xpp));
15935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15936        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
15937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15938        res.getCategory().add(parseCodeableConcept(xpp));
15939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15940        res.setCode(parseCodeableConcept(xpp));
15941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15942        res.setSubject(parseReference(xpp));
15943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15944        res.getFocus().add(parseReference(xpp));
15945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
15946        res.setEncounter(parseReference(xpp));
15947      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
15948        res.setEffective(parseType("effective", xpp));
15949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
15950        res.setIssuedElement(parseInstant(xpp));
15951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15952        res.getPerformer().add(parseReference(xpp));
15953      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
15954        res.setValue(parseType("value", xpp));
15955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
15956        res.setDataAbsentReason(parseCodeableConcept(xpp));
15957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
15958        res.getInterpretation().add(parseCodeableConcept(xpp));
15959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
15960        res.setCommentElement(parseString(xpp));
15961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
15962        res.setBodySite(parseCodeableConcept(xpp));
15963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
15964        res.setMethod(parseCodeableConcept(xpp));
15965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
15966        res.setSpecimen(parseReference(xpp));
15967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15968        res.setDevice(parseReference(xpp));
15969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
15970        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
15971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasMember")) {
15972        res.getHasMember().add(parseReference(xpp));
15973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
15974        res.getDerivedFrom().add(parseReference(xpp));
15975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
15976        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
15977      } else if (!parseDomainResourceContent(eventType, xpp, res))
15978        return false;
15979    return true;
15980  }
15981
15982  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
15983    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
15984    parseBackboneAttributes(xpp, res);
15985    next(xpp);
15986    int eventType = nextNoWhitespace(xpp);
15987    while (eventType != XmlPullParser.END_TAG) {
15988  if (!parseObservationObservationReferenceRangeComponentContent(eventType, xpp, owner, res))
15989        unknownContent(xpp);
15990      eventType = nextNoWhitespace(xpp);
15991    }
15992    next(xpp);
15993    parseElementClose(res);
15994    return res;
15995  }
15996
15997  protected boolean parseObservationObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15998      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
15999        res.setLow(parseQuantity(xpp));
16000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
16001        res.setHigh(parseQuantity(xpp));
16002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16003        res.setType(parseCodeableConcept(xpp));
16004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
16005        res.getAppliesTo().add(parseCodeableConcept(xpp));
16006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
16007        res.setAge(parseRange(xpp));
16008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
16009        res.setTextElement(parseString(xpp));
16010      } else if (!parseBackboneElementContent(eventType, xpp, res))
16011        return false;
16012    return true;
16013  }
16014
16015  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
16016    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
16017    parseBackboneAttributes(xpp, res);
16018    next(xpp);
16019    int eventType = nextNoWhitespace(xpp);
16020    while (eventType != XmlPullParser.END_TAG) {
16021  if (!parseObservationObservationComponentComponentContent(eventType, xpp, owner, res))
16022        unknownContent(xpp);
16023      eventType = nextNoWhitespace(xpp);
16024    }
16025    next(xpp);
16026    parseElementClose(res);
16027    return res;
16028  }
16029
16030  protected boolean parseObservationObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16031      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16032        res.setCode(parseCodeableConcept(xpp));
16033      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16034        res.setValue(parseType("value", xpp));
16035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
16036        res.setDataAbsentReason(parseCodeableConcept(xpp));
16037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
16038        res.getInterpretation().add(parseCodeableConcept(xpp));
16039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
16040        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
16041      } else if (!parseBackboneElementContent(eventType, xpp, res))
16042        return false;
16043    return true;
16044  }
16045
16046  protected ObservationDefinition parseObservationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16047    ObservationDefinition res = new ObservationDefinition();
16048    parseDomainResourceAttributes(xpp, res);
16049    next(xpp);
16050    int eventType = nextNoWhitespace(xpp);
16051    while (eventType != XmlPullParser.END_TAG) {
16052  if (!parseObservationDefinitionContent(eventType, xpp, res))
16053        unknownContent(xpp);
16054      eventType = nextNoWhitespace(xpp);
16055    }
16056    next(xpp);
16057    parseElementClose(res);
16058    return res;
16059  }
16060
16061  protected boolean parseObservationDefinitionContent(int eventType, XmlPullParser xpp, ObservationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16062      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16063        res.setCategory(parseCodeableConcept(xpp));
16064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16065        res.setCode(parseCodeableConcept(xpp));
16066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16067        res.getIdentifier().add(parseIdentifier(xpp));
16068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedDataType")) {
16069        res.getPermittedDataType().add(parseCoding(xpp));
16070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleResultsAllowed")) {
16071        res.setMultipleResultsAllowedElement(parseBoolean(xpp));
16072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
16073        res.setMethod(parseCodeableConcept(xpp));
16074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferredReportName")) {
16075        res.setPreferredReportNameElement(parseString(xpp));
16076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantitativeDetails")) {
16077        res.setQuantitativeDetails(parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(xpp, res));
16078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiedInterval")) {
16079        res.getQualifiedInterval().add(parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(xpp, res));
16080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validCodedValueSet")) {
16081        res.setValidCodedValueSetElement(parseUri(xpp));
16082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("normalCodedValueSet")) {
16083        res.setNormalCodedValueSetElement(parseUri(xpp));
16084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abnormalCodedValueSet")) {
16085        res.setAbnormalCodedValueSetElement(parseUri(xpp));
16086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticalCodedValueSet")) {
16087        res.setCriticalCodedValueSetElement(parseUri(xpp));
16088      } else if (!parseDomainResourceContent(eventType, xpp, res))
16089        return false;
16090    return true;
16091  }
16092
16093  protected ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16094    ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res = new ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent();
16095    parseBackboneAttributes(xpp, res);
16096    next(xpp);
16097    int eventType = nextNoWhitespace(xpp);
16098    while (eventType != XmlPullParser.END_TAG) {
16099  if (!parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(eventType, xpp, owner, res))
16100        unknownContent(xpp);
16101      eventType = nextNoWhitespace(xpp);
16102    }
16103    next(xpp);
16104    parseElementClose(res);
16105    return res;
16106  }
16107
16108  protected boolean parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16109      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("customaryUnit")) {
16110        res.setCustomaryUnit(parseCoding(xpp));
16111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
16112        res.setUnit(parseCoding(xpp));
16113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conversionFactor")) {
16114        res.setConversionFactorElement(parseDecimal(xpp));
16115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decimalPrecision")) {
16116        res.setDecimalPrecisionElement(parseInteger(xpp));
16117      } else if (!parseBackboneElementContent(eventType, xpp, res))
16118        return false;
16119    return true;
16120  }
16121
16122  protected ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16123    ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res = new ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent();
16124    parseBackboneAttributes(xpp, res);
16125    next(xpp);
16126    int eventType = nextNoWhitespace(xpp);
16127    while (eventType != XmlPullParser.END_TAG) {
16128  if (!parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(eventType, xpp, owner, res))
16129        unknownContent(xpp);
16130      eventType = nextNoWhitespace(xpp);
16131    }
16132    next(xpp);
16133    parseElementClose(res);
16134    return res;
16135  }
16136
16137  protected boolean parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16138      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16139        res.setCategory(parseCodeableConcept(xpp));
16140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
16141        res.setRange(parseRange(xpp));
16142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16143        res.setType(parseCodeableConcept(xpp));
16144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
16145        res.getAppliesTo().add(parseCodeableConcept(xpp));
16146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
16147        res.setAge(parseRange(xpp));
16148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gestationalAge")) {
16149        res.setGestationalAge(parseRange(xpp));
16150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
16151        res.setConditionElement(parseString(xpp));
16152      } else if (!parseBackboneElementContent(eventType, xpp, res))
16153        return false;
16154    return true;
16155  }
16156
16157  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16158    OperationDefinition res = new OperationDefinition();
16159    parseDomainResourceAttributes(xpp, res);
16160    next(xpp);
16161    int eventType = nextNoWhitespace(xpp);
16162    while (eventType != XmlPullParser.END_TAG) {
16163  if (!parseOperationDefinitionContent(eventType, xpp, res))
16164        unknownContent(xpp);
16165      eventType = nextNoWhitespace(xpp);
16166    }
16167    next(xpp);
16168    parseElementClose(res);
16169    return res;
16170  }
16171
16172  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16174        res.setUrlElement(parseUri(xpp));
16175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16176        res.setVersionElement(parseString(xpp));
16177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16178        res.setNameElement(parseString(xpp));
16179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16180        res.setTitleElement(parseString(xpp));
16181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16182        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
16184        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
16185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16186        res.setExperimentalElement(parseBoolean(xpp));
16187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16188        res.setDateElement(parseDateTime(xpp));
16189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16190        res.setPublisherElement(parseString(xpp));
16191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16192        res.getContact().add(parseContactDetail(xpp));
16193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16194        res.setDescriptionElement(parseMarkdown(xpp));
16195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16196        res.getUseContext().add(parseUsageContext(xpp));
16197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16198        res.getJurisdiction().add(parseCodeableConcept(xpp));
16199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16200        res.setPurposeElement(parseMarkdown(xpp));
16201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affectsState")) {
16202        res.setAffectsStateElement(parseBoolean(xpp));
16203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16204        res.setCodeElement(parseCode(xpp));
16205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16206        res.setCommentElement(parseMarkdown(xpp));
16207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
16208        res.setBaseElement(parseCanonical(xpp));
16209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16210        res.getResource().add(parseCode(xpp));
16211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
16212        res.setSystemElement(parseBoolean(xpp));
16213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16214        res.setTypeElement(parseBoolean(xpp));
16215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
16216        res.setInstanceElement(parseBoolean(xpp));
16217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inputProfile")) {
16218        res.setInputProfileElement(parseCanonical(xpp));
16219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputProfile")) {
16220        res.setOutputProfileElement(parseCanonical(xpp));
16221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
16222        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
16223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
16224        res.getOverload().add(parseOperationDefinitionOperationDefinitionOverloadComponent(xpp, res));
16225      } else if (!parseDomainResourceContent(eventType, xpp, res))
16226        return false;
16227    return true;
16228  }
16229
16230  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16231    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
16232    parseBackboneAttributes(xpp, res);
16233    next(xpp);
16234    int eventType = nextNoWhitespace(xpp);
16235    while (eventType != XmlPullParser.END_TAG) {
16236  if (!parseOperationDefinitionOperationDefinitionParameterComponentContent(eventType, xpp, owner, res))
16237        unknownContent(xpp);
16238      eventType = nextNoWhitespace(xpp);
16239    }
16240    next(xpp);
16241    parseElementClose(res);
16242    return res;
16243  }
16244
16245  protected boolean parseOperationDefinitionOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16247        res.setNameElement(parseCode(xpp));
16248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
16249        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
16250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
16251        res.setMinElement(parseInteger(xpp));
16252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
16253        res.setMaxElement(parseString(xpp));
16254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
16255        res.setDocumentationElement(parseString(xpp));
16256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16257        res.setTypeElement(parseCode(xpp));
16258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
16259        res.getTargetProfile().add(parseCanonical(xpp));
16260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
16261        res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
16262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
16263        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
16264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedFrom")) {
16265        res.getReferencedFrom().add(parseOperationDefinitionOperationDefinitionParameterReferencedFromComponent(xpp, owner));
16266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
16267        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
16268      } else if (!parseBackboneElementContent(eventType, xpp, res))
16269        return false;
16270    return true;
16271  }
16272
16273  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16274    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
16275    parseBackboneAttributes(xpp, res);
16276    next(xpp);
16277    int eventType = nextNoWhitespace(xpp);
16278    while (eventType != XmlPullParser.END_TAG) {
16279  if (!parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(eventType, xpp, owner, res))
16280        unknownContent(xpp);
16281      eventType = nextNoWhitespace(xpp);
16282    }
16283    next(xpp);
16284    parseElementClose(res);
16285    return res;
16286  }
16287
16288  protected boolean parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16289      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
16290        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
16291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
16292        res.setValueSetElement(parseCanonical(xpp));
16293      } else if (!parseBackboneElementContent(eventType, xpp, res))
16294        return false;
16295    return true;
16296  }
16297
16298  protected OperationDefinition.OperationDefinitionParameterReferencedFromComponent parseOperationDefinitionOperationDefinitionParameterReferencedFromComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16299    OperationDefinition.OperationDefinitionParameterReferencedFromComponent res = new OperationDefinition.OperationDefinitionParameterReferencedFromComponent();
16300    parseBackboneAttributes(xpp, res);
16301    next(xpp);
16302    int eventType = nextNoWhitespace(xpp);
16303    while (eventType != XmlPullParser.END_TAG) {
16304  if (!parseOperationDefinitionOperationDefinitionParameterReferencedFromComponentContent(eventType, xpp, owner, res))
16305        unknownContent(xpp);
16306      eventType = nextNoWhitespace(xpp);
16307    }
16308    next(xpp);
16309    parseElementClose(res);
16310    return res;
16311  }
16312
16313  protected boolean parseOperationDefinitionOperationDefinitionParameterReferencedFromComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterReferencedFromComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16314      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
16315        res.setSourceElement(parseString(xpp));
16316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16317        res.setSourceIdElement(parseString(xpp));
16318      } else if (!parseBackboneElementContent(eventType, xpp, res))
16319        return false;
16320    return true;
16321  }
16322
16323  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOperationDefinitionOverloadComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16324    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
16325    parseBackboneAttributes(xpp, res);
16326    next(xpp);
16327    int eventType = nextNoWhitespace(xpp);
16328    while (eventType != XmlPullParser.END_TAG) {
16329  if (!parseOperationDefinitionOperationDefinitionOverloadComponentContent(eventType, xpp, owner, res))
16330        unknownContent(xpp);
16331      eventType = nextNoWhitespace(xpp);
16332    }
16333    next(xpp);
16334    parseElementClose(res);
16335    return res;
16336  }
16337
16338  protected boolean parseOperationDefinitionOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
16340        res.getParameterName().add(parseString(xpp));
16341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16342        res.setCommentElement(parseString(xpp));
16343      } else if (!parseBackboneElementContent(eventType, xpp, res))
16344        return false;
16345    return true;
16346  }
16347
16348  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16349    OperationOutcome res = new OperationOutcome();
16350    parseDomainResourceAttributes(xpp, res);
16351    next(xpp);
16352    int eventType = nextNoWhitespace(xpp);
16353    while (eventType != XmlPullParser.END_TAG) {
16354  if (!parseOperationOutcomeContent(eventType, xpp, res))
16355        unknownContent(xpp);
16356      eventType = nextNoWhitespace(xpp);
16357    }
16358    next(xpp);
16359    parseElementClose(res);
16360    return res;
16361  }
16362
16363  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
16364      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
16365        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
16366      } else if (!parseDomainResourceContent(eventType, xpp, res))
16367        return false;
16368    return true;
16369  }
16370
16371  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
16372    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
16373    parseBackboneAttributes(xpp, res);
16374    next(xpp);
16375    int eventType = nextNoWhitespace(xpp);
16376    while (eventType != XmlPullParser.END_TAG) {
16377  if (!parseOperationOutcomeOperationOutcomeIssueComponentContent(eventType, xpp, owner, res))
16378        unknownContent(xpp);
16379      eventType = nextNoWhitespace(xpp);
16380    }
16381    next(xpp);
16382    parseElementClose(res);
16383    return res;
16384  }
16385
16386  protected boolean parseOperationOutcomeOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome owner, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16387      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
16388        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
16389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16390        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
16391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
16392        res.setDetails(parseCodeableConcept(xpp));
16393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
16394        res.setDiagnosticsElement(parseString(xpp));
16395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
16396        res.getLocation().add(parseString(xpp));
16397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16398        res.getExpression().add(parseString(xpp));
16399      } else if (!parseBackboneElementContent(eventType, xpp, res))
16400        return false;
16401    return true;
16402  }
16403
16404  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16405    Organization res = new Organization();
16406    parseDomainResourceAttributes(xpp, res);
16407    next(xpp);
16408    int eventType = nextNoWhitespace(xpp);
16409    while (eventType != XmlPullParser.END_TAG) {
16410  if (!parseOrganizationContent(eventType, xpp, res))
16411        unknownContent(xpp);
16412      eventType = nextNoWhitespace(xpp);
16413    }
16414    next(xpp);
16415    parseElementClose(res);
16416    return res;
16417  }
16418
16419  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
16420      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16421        res.getIdentifier().add(parseIdentifier(xpp));
16422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
16423        res.setActiveElement(parseBoolean(xpp));
16424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16425        res.getType().add(parseCodeableConcept(xpp));
16426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16427        res.setNameElement(parseString(xpp));
16428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
16429        res.getAlias().add(parseString(xpp));
16430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16431        res.getTelecom().add(parseContactPoint(xpp));
16432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16433        res.getAddress().add(parseAddress(xpp));
16434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
16435        res.setPartOf(parseReference(xpp));
16436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16437        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
16438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
16439        res.getEndpoint().add(parseReference(xpp));
16440      } else if (!parseDomainResourceContent(eventType, xpp, res))
16441        return false;
16442    return true;
16443  }
16444
16445  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
16446    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
16447    parseBackboneAttributes(xpp, res);
16448    next(xpp);
16449    int eventType = nextNoWhitespace(xpp);
16450    while (eventType != XmlPullParser.END_TAG) {
16451  if (!parseOrganizationOrganizationContactComponentContent(eventType, xpp, owner, res))
16452        unknownContent(xpp);
16453      eventType = nextNoWhitespace(xpp);
16454    }
16455    next(xpp);
16456    parseElementClose(res);
16457    return res;
16458  }
16459
16460  protected boolean parseOrganizationOrganizationContactComponentContent(int eventType, XmlPullParser xpp, Organization owner, Organization.OrganizationContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16461      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16462        res.setPurpose(parseCodeableConcept(xpp));
16463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16464        res.setName(parseHumanName(xpp));
16465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16466        res.getTelecom().add(parseContactPoint(xpp));
16467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16468        res.setAddress(parseAddress(xpp));
16469      } else if (!parseBackboneElementContent(eventType, xpp, res))
16470        return false;
16471    return true;
16472  }
16473
16474  protected OrganizationAffiliation parseOrganizationAffiliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16475    OrganizationAffiliation res = new OrganizationAffiliation();
16476    parseDomainResourceAttributes(xpp, res);
16477    next(xpp);
16478    int eventType = nextNoWhitespace(xpp);
16479    while (eventType != XmlPullParser.END_TAG) {
16480  if (!parseOrganizationAffiliationContent(eventType, xpp, res))
16481        unknownContent(xpp);
16482      eventType = nextNoWhitespace(xpp);
16483    }
16484    next(xpp);
16485    parseElementClose(res);
16486    return res;
16487  }
16488
16489  protected boolean parseOrganizationAffiliationContent(int eventType, XmlPullParser xpp, OrganizationAffiliation res) throws XmlPullParserException, IOException, FHIRFormatError {
16490      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16491        res.getIdentifier().add(parseIdentifier(xpp));
16492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
16493        res.setActiveElement(parseBoolean(xpp));
16494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16495        res.setPeriod(parsePeriod(xpp));
16496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
16497        res.setOrganization(parseReference(xpp));
16498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participatingOrganization")) {
16499        res.setParticipatingOrganization(parseReference(xpp));
16500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
16501        res.getNetwork().add(parseReference(xpp));
16502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16503        res.getCode().add(parseCodeableConcept(xpp));
16504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
16505        res.getSpecialty().add(parseCodeableConcept(xpp));
16506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
16507        res.getLocation().add(parseReference(xpp));
16508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
16509        res.getHealthcareService().add(parseReference(xpp));
16510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16511        res.getTelecom().add(parseContactPoint(xpp));
16512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
16513        res.getEndpoint().add(parseReference(xpp));
16514      } else if (!parseDomainResourceContent(eventType, xpp, res))
16515        return false;
16516    return true;
16517  }
16518
16519  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16520    Patient res = new Patient();
16521    parseDomainResourceAttributes(xpp, res);
16522    next(xpp);
16523    int eventType = nextNoWhitespace(xpp);
16524    while (eventType != XmlPullParser.END_TAG) {
16525  if (!parsePatientContent(eventType, xpp, res))
16526        unknownContent(xpp);
16527      eventType = nextNoWhitespace(xpp);
16528    }
16529    next(xpp);
16530    parseElementClose(res);
16531    return res;
16532  }
16533
16534  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
16535      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16536        res.getIdentifier().add(parseIdentifier(xpp));
16537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
16538        res.setActiveElement(parseBoolean(xpp));
16539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16540        res.getName().add(parseHumanName(xpp));
16541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16542        res.getTelecom().add(parseContactPoint(xpp));
16543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
16544        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
16545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
16546        res.setBirthDateElement(parseDate(xpp));
16547      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
16548        res.setDeceased(parseType("deceased", xpp));
16549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16550        res.getAddress().add(parseAddress(xpp));
16551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
16552        res.setMaritalStatus(parseCodeableConcept(xpp));
16553      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
16554        res.setMultipleBirth(parseType("multipleBirth", xpp));
16555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
16556        res.getPhoto().add(parseAttachment(xpp));
16557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16558        res.getContact().add(parsePatientContactComponent(xpp, res));
16559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
16560        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
16561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
16562        res.getGeneralPractitioner().add(parseReference(xpp));
16563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
16564        res.setManagingOrganization(parseReference(xpp));
16565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
16566        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
16567      } else if (!parseDomainResourceContent(eventType, xpp, res))
16568        return false;
16569    return true;
16570  }
16571
16572  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
16573    Patient.ContactComponent res = new Patient.ContactComponent();
16574    parseBackboneAttributes(xpp, res);
16575    next(xpp);
16576    int eventType = nextNoWhitespace(xpp);
16577    while (eventType != XmlPullParser.END_TAG) {
16578  if (!parsePatientContactComponentContent(eventType, xpp, owner, res))
16579        unknownContent(xpp);
16580      eventType = nextNoWhitespace(xpp);
16581    }
16582    next(xpp);
16583    parseElementClose(res);
16584    return res;
16585  }
16586
16587  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16588      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
16589        res.getRelationship().add(parseCodeableConcept(xpp));
16590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16591        res.setName(parseHumanName(xpp));
16592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16593        res.getTelecom().add(parseContactPoint(xpp));
16594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16595        res.setAddress(parseAddress(xpp));
16596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
16597        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
16598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
16599        res.setOrganization(parseReference(xpp));
16600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16601        res.setPeriod(parsePeriod(xpp));
16602      } else if (!parseBackboneElementContent(eventType, xpp, res))
16603        return false;
16604    return true;
16605  }
16606
16607  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
16608    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
16609    parseBackboneAttributes(xpp, res);
16610    next(xpp);
16611    int eventType = nextNoWhitespace(xpp);
16612    while (eventType != XmlPullParser.END_TAG) {
16613  if (!parsePatientPatientCommunicationComponentContent(eventType, xpp, owner, res))
16614        unknownContent(xpp);
16615      eventType = nextNoWhitespace(xpp);
16616    }
16617    next(xpp);
16618    parseElementClose(res);
16619    return res;
16620  }
16621
16622  protected boolean parsePatientPatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16623      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
16624        res.setLanguage(parseCodeableConcept(xpp));
16625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
16626        res.setPreferredElement(parseBoolean(xpp));
16627      } else if (!parseBackboneElementContent(eventType, xpp, res))
16628        return false;
16629    return true;
16630  }
16631
16632  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
16633    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
16634    parseBackboneAttributes(xpp, res);
16635    next(xpp);
16636    int eventType = nextNoWhitespace(xpp);
16637    while (eventType != XmlPullParser.END_TAG) {
16638  if (!parsePatientPatientLinkComponentContent(eventType, xpp, owner, res))
16639        unknownContent(xpp);
16640      eventType = nextNoWhitespace(xpp);
16641    }
16642    next(xpp);
16643    parseElementClose(res);
16644    return res;
16645  }
16646
16647  protected boolean parsePatientPatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16648      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
16649        res.setOther(parseReference(xpp));
16650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16651        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
16652      } else if (!parseBackboneElementContent(eventType, xpp, res))
16653        return false;
16654    return true;
16655  }
16656
16657  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16658    PaymentNotice res = new PaymentNotice();
16659    parseDomainResourceAttributes(xpp, res);
16660    next(xpp);
16661    int eventType = nextNoWhitespace(xpp);
16662    while (eventType != XmlPullParser.END_TAG) {
16663  if (!parsePaymentNoticeContent(eventType, xpp, res))
16664        unknownContent(xpp);
16665      eventType = nextNoWhitespace(xpp);
16666    }
16667    next(xpp);
16668    parseElementClose(res);
16669    return res;
16670  }
16671
16672  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
16673      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16674        res.getIdentifier().add(parseIdentifier(xpp));
16675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16676        res.setStatusElement(parseEnumeration(xpp, PaymentNotice.PaymentNoticeStatus.NULL, new PaymentNotice.PaymentNoticeStatusEnumFactory()));
16677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
16678        res.setRequest(parseReference(xpp));
16679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
16680        res.setResponse(parseReference(xpp));
16681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
16682        res.setStatusDateElement(parseDate(xpp));
16683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
16684        res.setCreatedElement(parseDateTime(xpp));
16685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
16686        res.setTarget(parseReference(xpp));
16687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
16688        res.setProvider(parseReference(xpp));
16689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
16690        res.setPaymentStatus(parseCodeableConcept(xpp));
16691      } else if (!parseDomainResourceContent(eventType, xpp, res))
16692        return false;
16693    return true;
16694  }
16695
16696  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16697    PaymentReconciliation res = new PaymentReconciliation();
16698    parseDomainResourceAttributes(xpp, res);
16699    next(xpp);
16700    int eventType = nextNoWhitespace(xpp);
16701    while (eventType != XmlPullParser.END_TAG) {
16702  if (!parsePaymentReconciliationContent(eventType, xpp, res))
16703        unknownContent(xpp);
16704      eventType = nextNoWhitespace(xpp);
16705    }
16706    next(xpp);
16707    parseElementClose(res);
16708    return res;
16709  }
16710
16711  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
16712      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16713        res.getIdentifier().add(parseIdentifier(xpp));
16714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16715        res.setStatusElement(parseEnumeration(xpp, PaymentReconciliation.PaymentReconciliationStatus.NULL, new PaymentReconciliation.PaymentReconciliationStatusEnumFactory()));
16716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16717        res.setPeriod(parsePeriod(xpp));
16718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
16719        res.setCreatedElement(parseDateTime(xpp));
16720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
16721        res.setOrganization(parseReference(xpp));
16722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
16723        res.setRequest(parseReference(xpp));
16724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
16725        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
16726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
16727        res.setDispositionElement(parseString(xpp));
16728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
16729        res.setRequestProvider(parseReference(xpp));
16730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
16731        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
16732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
16733        res.setForm(parseCodeableConcept(xpp));
16734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
16735        res.setTotal(parseMoney(xpp));
16736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
16737        res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
16738      } else if (!parseDomainResourceContent(eventType, xpp, res))
16739        return false;
16740    return true;
16741  }
16742
16743  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
16744    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
16745    parseBackboneAttributes(xpp, res);
16746    next(xpp);
16747    int eventType = nextNoWhitespace(xpp);
16748    while (eventType != XmlPullParser.END_TAG) {
16749  if (!parsePaymentReconciliationDetailsComponentContent(eventType, xpp, owner, res))
16750        unknownContent(xpp);
16751      eventType = nextNoWhitespace(xpp);
16752    }
16753    next(xpp);
16754    parseElementClose(res);
16755    return res;
16756  }
16757
16758  protected boolean parsePaymentReconciliationDetailsComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16759      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16760        res.setType(parseCodeableConcept(xpp));
16761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
16762        res.setRequest(parseReference(xpp));
16763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
16764        res.setResponse(parseReference(xpp));
16765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
16766        res.setSubmitter(parseReference(xpp));
16767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
16768        res.setPayee(parseReference(xpp));
16769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16770        res.setDateElement(parseDate(xpp));
16771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
16772        res.setAmount(parseMoney(xpp));
16773      } else if (!parseBackboneElementContent(eventType, xpp, res))
16774        return false;
16775    return true;
16776  }
16777
16778  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
16779    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
16780    parseBackboneAttributes(xpp, res);
16781    next(xpp);
16782    int eventType = nextNoWhitespace(xpp);
16783    while (eventType != XmlPullParser.END_TAG) {
16784  if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, owner, res))
16785        unknownContent(xpp);
16786      eventType = nextNoWhitespace(xpp);
16787    }
16788    next(xpp);
16789    parseElementClose(res);
16790    return res;
16791  }
16792
16793  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16794      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16795        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
16796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
16797        res.setTextElement(parseString(xpp));
16798      } else if (!parseBackboneElementContent(eventType, xpp, res))
16799        return false;
16800    return true;
16801  }
16802
16803  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16804    Person res = new Person();
16805    parseDomainResourceAttributes(xpp, res);
16806    next(xpp);
16807    int eventType = nextNoWhitespace(xpp);
16808    while (eventType != XmlPullParser.END_TAG) {
16809  if (!parsePersonContent(eventType, xpp, res))
16810        unknownContent(xpp);
16811      eventType = nextNoWhitespace(xpp);
16812    }
16813    next(xpp);
16814    parseElementClose(res);
16815    return res;
16816  }
16817
16818  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
16819      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16820        res.getIdentifier().add(parseIdentifier(xpp));
16821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16822        res.getName().add(parseHumanName(xpp));
16823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16824        res.getTelecom().add(parseContactPoint(xpp));
16825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
16826        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
16827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
16828        res.setBirthDateElement(parseDate(xpp));
16829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16830        res.getAddress().add(parseAddress(xpp));
16831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
16832        res.setPhoto(parseAttachment(xpp));
16833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
16834        res.setManagingOrganization(parseReference(xpp));
16835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
16836        res.setActiveElement(parseBoolean(xpp));
16837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
16838        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
16839      } else if (!parseDomainResourceContent(eventType, xpp, res))
16840        return false;
16841    return true;
16842  }
16843
16844  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
16845    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
16846    parseBackboneAttributes(xpp, res);
16847    next(xpp);
16848    int eventType = nextNoWhitespace(xpp);
16849    while (eventType != XmlPullParser.END_TAG) {
16850  if (!parsePersonPersonLinkComponentContent(eventType, xpp, owner, res))
16851        unknownContent(xpp);
16852      eventType = nextNoWhitespace(xpp);
16853    }
16854    next(xpp);
16855    parseElementClose(res);
16856    return res;
16857  }
16858
16859  protected boolean parsePersonPersonLinkComponentContent(int eventType, XmlPullParser xpp, Person owner, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16860      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
16861        res.setTarget(parseReference(xpp));
16862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
16863        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
16864      } else if (!parseBackboneElementContent(eventType, xpp, res))
16865        return false;
16866    return true;
16867  }
16868
16869  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16870    PlanDefinition res = new PlanDefinition();
16871    parseDomainResourceAttributes(xpp, res);
16872    next(xpp);
16873    int eventType = nextNoWhitespace(xpp);
16874    while (eventType != XmlPullParser.END_TAG) {
16875  if (!parsePlanDefinitionContent(eventType, xpp, res))
16876        unknownContent(xpp);
16877      eventType = nextNoWhitespace(xpp);
16878    }
16879    next(xpp);
16880    parseElementClose(res);
16881    return res;
16882  }
16883
16884  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16885      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16886        res.setUrlElement(parseUri(xpp));
16887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16888        res.getIdentifier().add(parseIdentifier(xpp));
16889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16890        res.setVersionElement(parseString(xpp));
16891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16892        res.setNameElement(parseString(xpp));
16893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16894        res.setTitleElement(parseString(xpp));
16895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
16896        res.setSubtitleElement(parseString(xpp));
16897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16898        res.setType(parseCodeableConcept(xpp));
16899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16900        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16902        res.setExperimentalElement(parseBoolean(xpp));
16903      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
16904        res.setSubject(parseType("subject", xpp));
16905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16906        res.setDateElement(parseDateTime(xpp));
16907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16908        res.setPublisherElement(parseString(xpp));
16909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16910        res.getContact().add(parseContactDetail(xpp));
16911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16912        res.setDescriptionElement(parseMarkdown(xpp));
16913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16914        res.getUseContext().add(parseUsageContext(xpp));
16915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16916        res.getJurisdiction().add(parseCodeableConcept(xpp));
16917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16918        res.setPurposeElement(parseMarkdown(xpp));
16919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
16920        res.setUsageElement(parseString(xpp));
16921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
16922        res.setCopyrightElement(parseMarkdown(xpp));
16923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
16924        res.setApprovalDateElement(parseDate(xpp));
16925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
16926        res.setLastReviewDateElement(parseDate(xpp));
16927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
16928        res.setEffectivePeriod(parsePeriod(xpp));
16929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
16930        res.getTopic().add(parseCodeableConcept(xpp));
16931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
16932        res.getAuthor().add(parseContactDetail(xpp));
16933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
16934        res.getEditor().add(parseContactDetail(xpp));
16935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
16936        res.getReviewer().add(parseContactDetail(xpp));
16937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
16938        res.getEndorser().add(parseContactDetail(xpp));
16939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
16940        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
16941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
16942        res.getLibrary().add(parseCanonical(xpp));
16943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
16944        res.getGoal().add(parsePlanDefinitionPlanDefinitionGoalComponent(xpp, res));
16945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16946        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, res));
16947      } else if (!parseDomainResourceContent(eventType, xpp, res))
16948        return false;
16949    return true;
16950  }
16951
16952  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionPlanDefinitionGoalComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16953    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
16954    parseBackboneAttributes(xpp, res);
16955    next(xpp);
16956    int eventType = nextNoWhitespace(xpp);
16957    while (eventType != XmlPullParser.END_TAG) {
16958  if (!parsePlanDefinitionPlanDefinitionGoalComponentContent(eventType, xpp, owner, res))
16959        unknownContent(xpp);
16960      eventType = nextNoWhitespace(xpp);
16961    }
16962    next(xpp);
16963    parseElementClose(res);
16964    return res;
16965  }
16966
16967  protected boolean parsePlanDefinitionPlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16968      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16969        res.setCategory(parseCodeableConcept(xpp));
16970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16971        res.setDescription(parseCodeableConcept(xpp));
16972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
16973        res.setPriority(parseCodeableConcept(xpp));
16974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
16975        res.setStart(parseCodeableConcept(xpp));
16976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
16977        res.getAddresses().add(parseCodeableConcept(xpp));
16978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
16979        res.getDocumentation().add(parseRelatedArtifact(xpp));
16980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
16981        res.getTarget().add(parsePlanDefinitionPlanDefinitionGoalTargetComponent(xpp, owner));
16982      } else if (!parseBackboneElementContent(eventType, xpp, res))
16983        return false;
16984    return true;
16985  }
16986
16987  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionPlanDefinitionGoalTargetComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16988    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
16989    parseBackboneAttributes(xpp, res);
16990    next(xpp);
16991    int eventType = nextNoWhitespace(xpp);
16992    while (eventType != XmlPullParser.END_TAG) {
16993  if (!parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(eventType, xpp, owner, res))
16994        unknownContent(xpp);
16995      eventType = nextNoWhitespace(xpp);
16996    }
16997    next(xpp);
16998    parseElementClose(res);
16999    return res;
17000  }
17001
17002  protected boolean parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17003      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
17004        res.setMeasure(parseCodeableConcept(xpp));
17005      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
17006        res.setDetail(parseType("detail", xpp));
17007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
17008        res.setDue(parseDuration(xpp));
17009      } else if (!parseBackboneElementContent(eventType, xpp, res))
17010        return false;
17011    return true;
17012  }
17013
17014  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionPlanDefinitionActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17015    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
17016    parseBackboneAttributes(xpp, res);
17017    next(xpp);
17018    int eventType = nextNoWhitespace(xpp);
17019    while (eventType != XmlPullParser.END_TAG) {
17020  if (!parsePlanDefinitionPlanDefinitionActionComponentContent(eventType, xpp, owner, res))
17021        unknownContent(xpp);
17022      eventType = nextNoWhitespace(xpp);
17023    }
17024    next(xpp);
17025    parseElementClose(res);
17026    return res;
17027  }
17028
17029  protected boolean parsePlanDefinitionPlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17030      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
17031        res.setPrefixElement(parseString(xpp));
17032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17033        res.setTitleElement(parseString(xpp));
17034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17035        res.setDescriptionElement(parseString(xpp));
17036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
17037        res.setTextEquivalentElement(parseString(xpp));
17038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
17039        res.setPriorityElement(parseEnumeration(xpp, PlanDefinition.RequestPriority.NULL, new PlanDefinition.RequestPriorityEnumFactory()));
17040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17041        res.getCode().add(parseCodeableConcept(xpp));
17042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
17043        res.getReason().add(parseCodeableConcept(xpp));
17044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
17045        res.getDocumentation().add(parseRelatedArtifact(xpp));
17046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
17047        res.getGoalId().add(parseId(xpp));
17048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
17049        res.getTrigger().add(parseTriggerDefinition(xpp));
17050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
17051        res.getCondition().add(parsePlanDefinitionPlanDefinitionActionConditionComponent(xpp, owner));
17052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
17053        res.getInput().add(parseDataRequirement(xpp));
17054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
17055        res.getOutput().add(parseDataRequirement(xpp));
17056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
17057        res.getRelatedAction().add(parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(xpp, owner));
17058      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
17059        res.setTiming(parseType("timing", xpp));
17060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
17061        res.getParticipant().add(parsePlanDefinitionPlanDefinitionActionParticipantComponent(xpp, owner));
17062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17063        res.setType(parseCodeableConcept(xpp));
17064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
17065        res.setGroupingBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionGroupingBehavior.NULL, new PlanDefinition.ActionGroupingBehaviorEnumFactory()));
17066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
17067        res.setSelectionBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionSelectionBehavior.NULL, new PlanDefinition.ActionSelectionBehaviorEnumFactory()));
17068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
17069        res.setRequiredBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionRequiredBehavior.NULL, new PlanDefinition.ActionRequiredBehaviorEnumFactory()));
17070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
17071        res.setPrecheckBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionPrecheckBehavior.NULL, new PlanDefinition.ActionPrecheckBehaviorEnumFactory()));
17072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
17073        res.setCardinalityBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionCardinalityBehavior.NULL, new PlanDefinition.ActionCardinalityBehaviorEnumFactory()));
17074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
17075        res.setDefinitionElement(parseCanonical(xpp));
17076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
17077        res.setTransformElement(parseCanonical(xpp));
17078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
17079        res.getDynamicValue().add(parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(xpp, owner));
17080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17081        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, owner));
17082      } else if (!parseBackboneElementContent(eventType, xpp, res))
17083        return false;
17084    return true;
17085  }
17086
17087  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionPlanDefinitionActionConditionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17088    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
17089    parseBackboneAttributes(xpp, res);
17090    next(xpp);
17091    int eventType = nextNoWhitespace(xpp);
17092    while (eventType != XmlPullParser.END_TAG) {
17093  if (!parsePlanDefinitionPlanDefinitionActionConditionComponentContent(eventType, xpp, owner, res))
17094        unknownContent(xpp);
17095      eventType = nextNoWhitespace(xpp);
17096    }
17097    next(xpp);
17098    parseElementClose(res);
17099    return res;
17100  }
17101
17102  protected boolean parsePlanDefinitionPlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17103      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
17104        res.setKindElement(parseEnumeration(xpp, PlanDefinition.ActionConditionKind.NULL, new PlanDefinition.ActionConditionKindEnumFactory()));
17105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17106        res.setExpression(parseExpression(xpp));
17107      } else if (!parseBackboneElementContent(eventType, xpp, res))
17108        return false;
17109    return true;
17110  }
17111
17112  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17113    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
17114    parseBackboneAttributes(xpp, res);
17115    next(xpp);
17116    int eventType = nextNoWhitespace(xpp);
17117    while (eventType != XmlPullParser.END_TAG) {
17118  if (!parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(eventType, xpp, owner, res))
17119        unknownContent(xpp);
17120      eventType = nextNoWhitespace(xpp);
17121    }
17122    next(xpp);
17123    parseElementClose(res);
17124    return res;
17125  }
17126
17127  protected boolean parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17128      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
17129        res.setActionIdElement(parseId(xpp));
17130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
17131        res.setRelationshipElement(parseEnumeration(xpp, PlanDefinition.ActionRelationshipType.NULL, new PlanDefinition.ActionRelationshipTypeEnumFactory()));
17132      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
17133        res.setOffset(parseType("offset", xpp));
17134      } else if (!parseBackboneElementContent(eventType, xpp, res))
17135        return false;
17136    return true;
17137  }
17138
17139  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionPlanDefinitionActionParticipantComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17140    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
17141    parseBackboneAttributes(xpp, res);
17142    next(xpp);
17143    int eventType = nextNoWhitespace(xpp);
17144    while (eventType != XmlPullParser.END_TAG) {
17145  if (!parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(eventType, xpp, owner, res))
17146        unknownContent(xpp);
17147      eventType = nextNoWhitespace(xpp);
17148    }
17149    next(xpp);
17150    parseElementClose(res);
17151    return res;
17152  }
17153
17154  protected boolean parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17155      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17156        res.setTypeElement(parseEnumeration(xpp, PlanDefinition.ActionParticipantType.NULL, new PlanDefinition.ActionParticipantTypeEnumFactory()));
17157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
17158        res.setRole(parseCodeableConcept(xpp));
17159      } else if (!parseBackboneElementContent(eventType, xpp, res))
17160        return false;
17161    return true;
17162  }
17163
17164  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17165    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
17166    parseBackboneAttributes(xpp, res);
17167    next(xpp);
17168    int eventType = nextNoWhitespace(xpp);
17169    while (eventType != XmlPullParser.END_TAG) {
17170  if (!parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(eventType, xpp, owner, res))
17171        unknownContent(xpp);
17172      eventType = nextNoWhitespace(xpp);
17173    }
17174    next(xpp);
17175    parseElementClose(res);
17176    return res;
17177  }
17178
17179  protected boolean parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17180      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
17181        res.setPathElement(parseString(xpp));
17182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17183        res.setExpression(parseExpression(xpp));
17184      } else if (!parseBackboneElementContent(eventType, xpp, res))
17185        return false;
17186    return true;
17187  }
17188
17189  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17190    Practitioner res = new Practitioner();
17191    parseDomainResourceAttributes(xpp, res);
17192    next(xpp);
17193    int eventType = nextNoWhitespace(xpp);
17194    while (eventType != XmlPullParser.END_TAG) {
17195  if (!parsePractitionerContent(eventType, xpp, res))
17196        unknownContent(xpp);
17197      eventType = nextNoWhitespace(xpp);
17198    }
17199    next(xpp);
17200    parseElementClose(res);
17201    return res;
17202  }
17203
17204  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
17205      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17206        res.getIdentifier().add(parseIdentifier(xpp));
17207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17208        res.setActiveElement(parseBoolean(xpp));
17209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17210        res.getName().add(parseHumanName(xpp));
17211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17212        res.getTelecom().add(parseContactPoint(xpp));
17213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17214        res.getAddress().add(parseAddress(xpp));
17215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17216        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17218        res.setBirthDateElement(parseDate(xpp));
17219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17220        res.getPhoto().add(parseAttachment(xpp));
17221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
17222        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
17223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
17224        res.getCommunication().add(parseCodeableConcept(xpp));
17225      } else if (!parseDomainResourceContent(eventType, xpp, res))
17226        return false;
17227    return true;
17228  }
17229
17230  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
17231    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
17232    parseBackboneAttributes(xpp, res);
17233    next(xpp);
17234    int eventType = nextNoWhitespace(xpp);
17235    while (eventType != XmlPullParser.END_TAG) {
17236  if (!parsePractitionerPractitionerQualificationComponentContent(eventType, xpp, owner, res))
17237        unknownContent(xpp);
17238      eventType = nextNoWhitespace(xpp);
17239    }
17240    next(xpp);
17241    parseElementClose(res);
17242    return res;
17243  }
17244
17245  protected boolean parsePractitionerPractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner owner, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17247        res.getIdentifier().add(parseIdentifier(xpp));
17248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17249        res.setCode(parseCodeableConcept(xpp));
17250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17251        res.setPeriod(parsePeriod(xpp));
17252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
17253        res.setIssuer(parseReference(xpp));
17254      } else if (!parseBackboneElementContent(eventType, xpp, res))
17255        return false;
17256    return true;
17257  }
17258
17259  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17260    PractitionerRole res = new PractitionerRole();
17261    parseDomainResourceAttributes(xpp, res);
17262    next(xpp);
17263    int eventType = nextNoWhitespace(xpp);
17264    while (eventType != XmlPullParser.END_TAG) {
17265  if (!parsePractitionerRoleContent(eventType, xpp, res))
17266        unknownContent(xpp);
17267      eventType = nextNoWhitespace(xpp);
17268    }
17269    next(xpp);
17270    parseElementClose(res);
17271    return res;
17272  }
17273
17274  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
17275      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17276        res.getIdentifier().add(parseIdentifier(xpp));
17277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17278        res.setActiveElement(parseBoolean(xpp));
17279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17280        res.setPeriod(parsePeriod(xpp));
17281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
17282        res.setPractitioner(parseReference(xpp));
17283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17284        res.setOrganization(parseReference(xpp));
17285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17286        res.getCode().add(parseCodeableConcept(xpp));
17287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
17288        res.getSpecialty().add(parseCodeableConcept(xpp));
17289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17290        res.getLocation().add(parseReference(xpp));
17291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
17292        res.getHealthcareService().add(parseReference(xpp));
17293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17294        res.getTelecom().add(parseContactPoint(xpp));
17295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
17296        res.getAvailableTime().add(parsePractitionerRolePractitionerRoleAvailableTimeComponent(xpp, res));
17297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
17298        res.getNotAvailable().add(parsePractitionerRolePractitionerRoleNotAvailableComponent(xpp, res));
17299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
17300        res.setAvailabilityExceptionsElement(parseString(xpp));
17301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
17302        res.getEndpoint().add(parseReference(xpp));
17303      } else if (!parseDomainResourceContent(eventType, xpp, res))
17304        return false;
17305    return true;
17306  }
17307
17308  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRolePractitionerRoleAvailableTimeComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
17309    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
17310    parseBackboneAttributes(xpp, res);
17311    next(xpp);
17312    int eventType = nextNoWhitespace(xpp);
17313    while (eventType != XmlPullParser.END_TAG) {
17314  if (!parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(eventType, xpp, owner, res))
17315        unknownContent(xpp);
17316      eventType = nextNoWhitespace(xpp);
17317    }
17318    next(xpp);
17319    parseElementClose(res);
17320    return res;
17321  }
17322
17323  protected boolean parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
17325        res.getDaysOfWeek().add(parseEnumeration(xpp, PractitionerRole.DaysOfWeek.NULL, new PractitionerRole.DaysOfWeekEnumFactory()));
17326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
17327        res.setAllDayElement(parseBoolean(xpp));
17328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
17329        res.setAvailableStartTimeElement(parseTime(xpp));
17330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
17331        res.setAvailableEndTimeElement(parseTime(xpp));
17332      } else if (!parseBackboneElementContent(eventType, xpp, res))
17333        return false;
17334    return true;
17335  }
17336
17337  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRolePractitionerRoleNotAvailableComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
17338    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
17339    parseBackboneAttributes(xpp, res);
17340    next(xpp);
17341    int eventType = nextNoWhitespace(xpp);
17342    while (eventType != XmlPullParser.END_TAG) {
17343  if (!parsePractitionerRolePractitionerRoleNotAvailableComponentContent(eventType, xpp, owner, res))
17344        unknownContent(xpp);
17345      eventType = nextNoWhitespace(xpp);
17346    }
17347    next(xpp);
17348    parseElementClose(res);
17349    return res;
17350  }
17351
17352  protected boolean parsePractitionerRolePractitionerRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17353      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17354        res.setDescriptionElement(parseString(xpp));
17355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
17356        res.setDuring(parsePeriod(xpp));
17357      } else if (!parseBackboneElementContent(eventType, xpp, res))
17358        return false;
17359    return true;
17360  }
17361
17362  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17363    Procedure res = new Procedure();
17364    parseDomainResourceAttributes(xpp, res);
17365    next(xpp);
17366    int eventType = nextNoWhitespace(xpp);
17367    while (eventType != XmlPullParser.END_TAG) {
17368  if (!parseProcedureContent(eventType, xpp, res))
17369        unknownContent(xpp);
17370      eventType = nextNoWhitespace(xpp);
17371    }
17372    next(xpp);
17373    parseElementClose(res);
17374    return res;
17375  }
17376
17377  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
17378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17379        res.getIdentifier().add(parseIdentifier(xpp));
17380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
17381        res.getInstantiatesCanonical().add(parseCanonical(xpp));
17382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
17383        res.getInstantiatesUri().add(parseUri(xpp));
17384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
17385        res.getBasedOn().add(parseReference(xpp));
17386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
17387        res.getPartOf().add(parseReference(xpp));
17388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17389        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
17390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
17391        res.setStatusReason(parseCodeableConcept(xpp));
17392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17393        res.setCategory(parseCodeableConcept(xpp));
17394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17395        res.setCode(parseCodeableConcept(xpp));
17396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17397        res.setSubject(parseReference(xpp));
17398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
17399        res.setContext(parseReference(xpp));
17400      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
17401        res.setPerformed(parseType("performed", xpp));
17402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
17403        res.setRecorder(parseReference(xpp));
17404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
17405        res.setAsserter(parseReference(xpp));
17406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
17407        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
17408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17409        res.setLocation(parseReference(xpp));
17410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
17411        res.getReasonCode().add(parseCodeableConcept(xpp));
17412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
17413        res.getReasonReference().add(parseReference(xpp));
17414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
17415        res.getBodySite().add(parseCodeableConcept(xpp));
17416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
17417        res.setOutcome(parseCodeableConcept(xpp));
17418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
17419        res.getReport().add(parseReference(xpp));
17420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
17421        res.getComplication().add(parseCodeableConcept(xpp));
17422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complicationDetail")) {
17423        res.getComplicationDetail().add(parseReference(xpp));
17424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
17425        res.getFollowUp().add(parseCodeableConcept(xpp));
17426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17427        res.getNote().add(parseAnnotation(xpp));
17428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
17429        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
17430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedReference")) {
17431        res.getUsedReference().add(parseReference(xpp));
17432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedCode")) {
17433        res.getUsedCode().add(parseCodeableConcept(xpp));
17434      } else if (!parseDomainResourceContent(eventType, xpp, res))
17435        return false;
17436    return true;
17437  }
17438
17439  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
17440    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
17441    parseBackboneAttributes(xpp, res);
17442    next(xpp);
17443    int eventType = nextNoWhitespace(xpp);
17444    while (eventType != XmlPullParser.END_TAG) {
17445  if (!parseProcedureProcedurePerformerComponentContent(eventType, xpp, owner, res))
17446        unknownContent(xpp);
17447      eventType = nextNoWhitespace(xpp);
17448    }
17449    next(xpp);
17450    parseElementClose(res);
17451    return res;
17452  }
17453
17454  protected boolean parseProcedureProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
17456        res.setFunction(parseCodeableConcept(xpp));
17457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
17458        res.setActor(parseReference(xpp));
17459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
17460        res.setOnBehalfOf(parseReference(xpp));
17461      } else if (!parseBackboneElementContent(eventType, xpp, res))
17462        return false;
17463    return true;
17464  }
17465
17466  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
17467    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
17468    parseBackboneAttributes(xpp, res);
17469    next(xpp);
17470    int eventType = nextNoWhitespace(xpp);
17471    while (eventType != XmlPullParser.END_TAG) {
17472  if (!parseProcedureProcedureFocalDeviceComponentContent(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 parseProcedureProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17482      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17483        res.setAction(parseCodeableConcept(xpp));
17484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
17485        res.setManipulated(parseReference(xpp));
17486      } else if (!parseBackboneElementContent(eventType, xpp, res))
17487        return false;
17488    return true;
17489  }
17490
17491  protected ProcessRequest parseProcessRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17492    ProcessRequest res = new ProcessRequest();
17493    parseDomainResourceAttributes(xpp, res);
17494    next(xpp);
17495    int eventType = nextNoWhitespace(xpp);
17496    while (eventType != XmlPullParser.END_TAG) {
17497  if (!parseProcessRequestContent(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 parseProcessRequestContent(int eventType, XmlPullParser xpp, ProcessRequest 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("status")) {
17510        res.setStatusElement(parseEnumeration(xpp, ProcessRequest.ProcessRequestStatus.NULL, new ProcessRequest.ProcessRequestStatusEnumFactory()));
17511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17512        res.setActionElement(parseEnumeration(xpp, ProcessRequest.ActionList.NULL, new ProcessRequest.ActionListEnumFactory()));
17513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
17514        res.setTarget(parseReference(xpp));
17515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
17516        res.setCreatedElement(parseDateTime(xpp));
17517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
17518        res.setProvider(parseReference(xpp));
17519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17520        res.setRequest(parseReference(xpp));
17521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
17522        res.setResponse(parseReference(xpp));
17523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nullify")) {
17524        res.setNullifyElement(parseBoolean(xpp));
17525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
17526        res.setReferenceElement(parseString(xpp));
17527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17528        res.getItem().add(parseProcessRequestItemsComponent(xpp, res));
17529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
17530        res.getInclude().add(parseString(xpp));
17531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
17532        res.getExclude().add(parseString(xpp));
17533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17534        res.setPeriod(parsePeriod(xpp));
17535      } else if (!parseDomainResourceContent(eventType, xpp, res))
17536        return false;
17537    return true;
17538  }
17539
17540  protected ProcessRequest.ItemsComponent parseProcessRequestItemsComponent(XmlPullParser xpp, ProcessRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
17541    ProcessRequest.ItemsComponent res = new ProcessRequest.ItemsComponent();
17542    parseBackboneAttributes(xpp, res);
17543    next(xpp);
17544    int eventType = nextNoWhitespace(xpp);
17545    while (eventType != XmlPullParser.END_TAG) {
17546  if (!parseProcessRequestItemsComponentContent(eventType, xpp, owner, res))
17547        unknownContent(xpp);
17548      eventType = nextNoWhitespace(xpp);
17549    }
17550    next(xpp);
17551    parseElementClose(res);
17552    return res;
17553  }
17554
17555  protected boolean parseProcessRequestItemsComponentContent(int eventType, XmlPullParser xpp, ProcessRequest owner, ProcessRequest.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17556      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
17557        res.setSequenceLinkIdElement(parseInteger(xpp));
17558      } else if (!parseBackboneElementContent(eventType, xpp, res))
17559        return false;
17560    return true;
17561  }
17562
17563  protected ProcessResponse parseProcessResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17564    ProcessResponse res = new ProcessResponse();
17565    parseDomainResourceAttributes(xpp, res);
17566    next(xpp);
17567    int eventType = nextNoWhitespace(xpp);
17568    while (eventType != XmlPullParser.END_TAG) {
17569  if (!parseProcessResponseContent(eventType, xpp, res))
17570        unknownContent(xpp);
17571      eventType = nextNoWhitespace(xpp);
17572    }
17573    next(xpp);
17574    parseElementClose(res);
17575    return res;
17576  }
17577
17578  protected boolean parseProcessResponseContent(int eventType, XmlPullParser xpp, ProcessResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
17579      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17580        res.getIdentifier().add(parseIdentifier(xpp));
17581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17582        res.setStatusElement(parseEnumeration(xpp, ProcessResponse.ProcessResponseStatus.NULL, new ProcessResponse.ProcessResponseStatusEnumFactory()));
17583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
17584        res.setCreatedElement(parseDateTime(xpp));
17585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17586        res.setOrganization(parseReference(xpp));
17587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17588        res.setRequest(parseReference(xpp));
17589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
17590        res.setOutcomeElement(parseEnumeration(xpp, ProcessResponse.ProcessingOutcome.NULL, new ProcessResponse.ProcessingOutcomeEnumFactory()));
17591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
17592        res.setDispositionElement(parseString(xpp));
17593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
17594        res.setRequestProvider(parseReference(xpp));
17595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
17596        res.setForm(parseCodeableConcept(xpp));
17597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
17598        res.getProcessNote().add(parseProcessResponseProcessResponseProcessNoteComponent(xpp, res));
17599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
17600        res.getError().add(parseCodeableConcept(xpp));
17601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
17602        res.getCommunicationRequest().add(parseReference(xpp));
17603      } else if (!parseDomainResourceContent(eventType, xpp, res))
17604        return false;
17605    return true;
17606  }
17607
17608  protected ProcessResponse.ProcessResponseProcessNoteComponent parseProcessResponseProcessResponseProcessNoteComponent(XmlPullParser xpp, ProcessResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
17609    ProcessResponse.ProcessResponseProcessNoteComponent res = new ProcessResponse.ProcessResponseProcessNoteComponent();
17610    parseBackboneAttributes(xpp, res);
17611    next(xpp);
17612    int eventType = nextNoWhitespace(xpp);
17613    while (eventType != XmlPullParser.END_TAG) {
17614  if (!parseProcessResponseProcessResponseProcessNoteComponentContent(eventType, xpp, owner, res))
17615        unknownContent(xpp);
17616      eventType = nextNoWhitespace(xpp);
17617    }
17618    next(xpp);
17619    parseElementClose(res);
17620    return res;
17621  }
17622
17623  protected boolean parseProcessResponseProcessResponseProcessNoteComponentContent(int eventType, XmlPullParser xpp, ProcessResponse owner, ProcessResponse.ProcessResponseProcessNoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17624      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17625        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
17626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
17627        res.setTextElement(parseString(xpp));
17628      } else if (!parseBackboneElementContent(eventType, xpp, res))
17629        return false;
17630    return true;
17631  }
17632
17633  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17634    Provenance res = new Provenance();
17635    parseDomainResourceAttributes(xpp, res);
17636    next(xpp);
17637    int eventType = nextNoWhitespace(xpp);
17638    while (eventType != XmlPullParser.END_TAG) {
17639  if (!parseProvenanceContent(eventType, xpp, res))
17640        unknownContent(xpp);
17641      eventType = nextNoWhitespace(xpp);
17642    }
17643    next(xpp);
17644    parseElementClose(res);
17645    return res;
17646  }
17647
17648  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
17649      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
17650        res.getTarget().add(parseReference(xpp));
17651      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurred")) {
17652        res.setOccurred(parseType("occurred", xpp));
17653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
17654        res.setRecordedElement(parseInstant(xpp));
17655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
17656        res.getPolicy().add(parseUri(xpp));
17657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17658        res.setLocation(parseReference(xpp));
17659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
17660        res.getReason().add(parseCodeableConcept(xpp));
17661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
17662        res.setActivity(parseCodeableConcept(xpp));
17663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
17664        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
17665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
17666        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
17667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
17668        res.getSignature().add(parseSignature(xpp));
17669      } else if (!parseDomainResourceContent(eventType, xpp, res))
17670        return false;
17671    return true;
17672  }
17673
17674  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
17675    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
17676    parseBackboneAttributes(xpp, res);
17677    next(xpp);
17678    int eventType = nextNoWhitespace(xpp);
17679    while (eventType != XmlPullParser.END_TAG) {
17680  if (!parseProvenanceProvenanceAgentComponentContent(eventType, xpp, owner, res))
17681        unknownContent(xpp);
17682      eventType = nextNoWhitespace(xpp);
17683    }
17684    next(xpp);
17685    parseElementClose(res);
17686    return res;
17687  }
17688
17689  protected boolean parseProvenanceProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17690      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17691        res.setType(parseCodeableConcept(xpp));
17692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
17693        res.getRole().add(parseCodeableConcept(xpp));
17694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
17695        res.setWho(parseReference(xpp));
17696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
17697        res.setOnBehalfOf(parseReference(xpp));
17698      } else if (!parseBackboneElementContent(eventType, xpp, res))
17699        return false;
17700    return true;
17701  }
17702
17703  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
17704    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
17705    parseBackboneAttributes(xpp, res);
17706    next(xpp);
17707    int eventType = nextNoWhitespace(xpp);
17708    while (eventType != XmlPullParser.END_TAG) {
17709  if (!parseProvenanceProvenanceEntityComponentContent(eventType, xpp, owner, res))
17710        unknownContent(xpp);
17711      eventType = nextNoWhitespace(xpp);
17712    }
17713    next(xpp);
17714    parseElementClose(res);
17715    return res;
17716  }
17717
17718  protected boolean parseProvenanceProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17719      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
17720        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
17721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
17722        res.setWhat(parseReference(xpp));
17723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
17724        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, owner));
17725      } else if (!parseBackboneElementContent(eventType, xpp, res))
17726        return false;
17727    return true;
17728  }
17729
17730  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17731    Questionnaire res = new Questionnaire();
17732    parseDomainResourceAttributes(xpp, res);
17733    next(xpp);
17734    int eventType = nextNoWhitespace(xpp);
17735    while (eventType != XmlPullParser.END_TAG) {
17736  if (!parseQuestionnaireContent(eventType, xpp, res))
17737        unknownContent(xpp);
17738      eventType = nextNoWhitespace(xpp);
17739    }
17740    next(xpp);
17741    parseElementClose(res);
17742    return res;
17743  }
17744
17745  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
17746      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17747        res.setUrlElement(parseUri(xpp));
17748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17749        res.getIdentifier().add(parseIdentifier(xpp));
17750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17751        res.setVersionElement(parseString(xpp));
17752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17753        res.setNameElement(parseString(xpp));
17754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17755        res.setTitleElement(parseString(xpp));
17756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
17757        res.getDerivedFrom().add(parseCanonical(xpp));
17758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17759        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17761        res.setExperimentalElement(parseBoolean(xpp));
17762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
17763        res.getSubjectType().add(parseCode(xpp));
17764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17765        res.setDateElement(parseDateTime(xpp));
17766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17767        res.setPublisherElement(parseString(xpp));
17768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17769        res.getContact().add(parseContactDetail(xpp));
17770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17771        res.setDescriptionElement(parseMarkdown(xpp));
17772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17773        res.getUseContext().add(parseUsageContext(xpp));
17774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17775        res.getJurisdiction().add(parseCodeableConcept(xpp));
17776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17777        res.setPurposeElement(parseMarkdown(xpp));
17778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
17779        res.setCopyrightElement(parseMarkdown(xpp));
17780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
17781        res.setApprovalDateElement(parseDate(xpp));
17782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
17783        res.setLastReviewDateElement(parseDate(xpp));
17784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
17785        res.setEffectivePeriod(parsePeriod(xpp));
17786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17787        res.getCode().add(parseCoding(xpp));
17788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17789        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, res));
17790      } else if (!parseDomainResourceContent(eventType, xpp, res))
17791        return false;
17792    return true;
17793  }
17794
17795  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireQuestionnaireItemComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
17796    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
17797    parseBackboneAttributes(xpp, res);
17798    next(xpp);
17799    int eventType = nextNoWhitespace(xpp);
17800    while (eventType != XmlPullParser.END_TAG) {
17801  if (!parseQuestionnaireQuestionnaireItemComponentContent(eventType, xpp, owner, res))
17802        unknownContent(xpp);
17803      eventType = nextNoWhitespace(xpp);
17804    }
17805    next(xpp);
17806    parseElementClose(res);
17807    return res;
17808  }
17809
17810  protected boolean parseQuestionnaireQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17811      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
17812        res.setLinkIdElement(parseString(xpp));
17813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
17814        res.setDefinitionElement(parseUri(xpp));
17815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17816        res.getCode().add(parseCoding(xpp));
17817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
17818        res.setPrefixElement(parseString(xpp));
17819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
17820        res.setTextElement(parseString(xpp));
17821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17822        res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
17823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
17824        res.getEnableWhen().add(parseQuestionnaireQuestionnaireItemEnableWhenComponent(xpp, owner));
17825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableBehavior")) {
17826        res.setEnableBehaviorElement(parseEnumeration(xpp, Questionnaire.EnableWhenBehavior.NULL, new Questionnaire.EnableWhenBehaviorEnumFactory()));
17827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
17828        res.setRequiredElement(parseBoolean(xpp));
17829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
17830        res.setRepeatsElement(parseBoolean(xpp));
17831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
17832        res.setReadOnlyElement(parseBoolean(xpp));
17833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
17834        res.setMaxLengthElement(parseInteger(xpp));
17835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerValueSet")) {
17836        res.setAnswerValueSetElement(parseCanonical(xpp));
17837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerOption")) {
17838        res.getAnswerOption().add(parseQuestionnaireQuestionnaireItemAnswerOptionComponent(xpp, owner));
17839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
17840        res.getInitial().add(parseQuestionnaireQuestionnaireItemInitialComponent(xpp, owner));
17841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17842        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, owner));
17843      } else if (!parseBackboneElementContent(eventType, xpp, res))
17844        return false;
17845    return true;
17846  }
17847
17848  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireQuestionnaireItemEnableWhenComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
17849    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
17850    parseBackboneAttributes(xpp, res);
17851    next(xpp);
17852    int eventType = nextNoWhitespace(xpp);
17853    while (eventType != XmlPullParser.END_TAG) {
17854  if (!parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(eventType, xpp, owner, res))
17855        unknownContent(xpp);
17856      eventType = nextNoWhitespace(xpp);
17857    }
17858    next(xpp);
17859    parseElementClose(res);
17860    return res;
17861  }
17862
17863  protected boolean parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17864      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
17865        res.setQuestionElement(parseString(xpp));
17866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
17867        res.setOperatorElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemOperator.NULL, new Questionnaire.QuestionnaireItemOperatorEnumFactory()));
17868      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
17869        res.setAnswer(parseType("answer", xpp));
17870      } else if (!parseBackboneElementContent(eventType, xpp, res))
17871        return false;
17872    return true;
17873  }
17874
17875  protected Questionnaire.QuestionnaireItemAnswerOptionComponent parseQuestionnaireQuestionnaireItemAnswerOptionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
17876    Questionnaire.QuestionnaireItemAnswerOptionComponent res = new Questionnaire.QuestionnaireItemAnswerOptionComponent();
17877    parseBackboneAttributes(xpp, res);
17878    next(xpp);
17879    int eventType = nextNoWhitespace(xpp);
17880    while (eventType != XmlPullParser.END_TAG) {
17881  if (!parseQuestionnaireQuestionnaireItemAnswerOptionComponentContent(eventType, xpp, owner, res))
17882        unknownContent(xpp);
17883      eventType = nextNoWhitespace(xpp);
17884    }
17885    next(xpp);
17886    parseElementClose(res);
17887    return res;
17888  }
17889
17890  protected boolean parseQuestionnaireQuestionnaireItemAnswerOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemAnswerOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17891      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17892        res.setValue(parseType("value", xpp));
17893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialSelected")) {
17894        res.setInitialSelectedElement(parseBoolean(xpp));
17895      } else if (!parseBackboneElementContent(eventType, xpp, res))
17896        return false;
17897    return true;
17898  }
17899
17900  protected Questionnaire.QuestionnaireItemInitialComponent parseQuestionnaireQuestionnaireItemInitialComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
17901    Questionnaire.QuestionnaireItemInitialComponent res = new Questionnaire.QuestionnaireItemInitialComponent();
17902    parseBackboneAttributes(xpp, res);
17903    next(xpp);
17904    int eventType = nextNoWhitespace(xpp);
17905    while (eventType != XmlPullParser.END_TAG) {
17906  if (!parseQuestionnaireQuestionnaireItemInitialComponentContent(eventType, xpp, owner, res))
17907        unknownContent(xpp);
17908      eventType = nextNoWhitespace(xpp);
17909    }
17910    next(xpp);
17911    parseElementClose(res);
17912    return res;
17913  }
17914
17915  protected boolean parseQuestionnaireQuestionnaireItemInitialComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemInitialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17916      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17917        res.setValue(parseType("value", xpp));
17918      } else if (!parseBackboneElementContent(eventType, xpp, res))
17919        return false;
17920    return true;
17921  }
17922
17923  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17924    QuestionnaireResponse res = new QuestionnaireResponse();
17925    parseDomainResourceAttributes(xpp, res);
17926    next(xpp);
17927    int eventType = nextNoWhitespace(xpp);
17928    while (eventType != XmlPullParser.END_TAG) {
17929  if (!parseQuestionnaireResponseContent(eventType, xpp, res))
17930        unknownContent(xpp);
17931      eventType = nextNoWhitespace(xpp);
17932    }
17933    next(xpp);
17934    parseElementClose(res);
17935    return res;
17936  }
17937
17938  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
17939      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17940        res.setIdentifier(parseIdentifier(xpp));
17941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
17942        res.getBasedOn().add(parseReference(xpp));
17943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
17944        res.getPartOf().add(parseReference(xpp));
17945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
17946        res.setQuestionnaireElement(parseCanonical(xpp));
17947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17948        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
17949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17950        res.setSubject(parseReference(xpp));
17951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
17952        res.setContext(parseReference(xpp));
17953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
17954        res.setAuthoredElement(parseDateTime(xpp));
17955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
17956        res.setAuthor(parseReference(xpp));
17957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
17958        res.setSource(parseReference(xpp));
17959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17960        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, res));
17961      } else if (!parseDomainResourceContent(eventType, xpp, res))
17962        return false;
17963    return true;
17964  }
17965
17966  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseQuestionnaireResponseItemComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
17967    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
17968    parseBackboneAttributes(xpp, res);
17969    next(xpp);
17970    int eventType = nextNoWhitespace(xpp);
17971    while (eventType != XmlPullParser.END_TAG) {
17972  if (!parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(eventType, xpp, owner, res))
17973        unknownContent(xpp);
17974      eventType = nextNoWhitespace(xpp);
17975    }
17976    next(xpp);
17977    parseElementClose(res);
17978    return res;
17979  }
17980
17981  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17982      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
17983        res.setLinkIdElement(parseString(xpp));
17984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
17985        res.setDefinitionElement(parseUri(xpp));
17986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
17987        res.setTextElement(parseString(xpp));
17988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
17989        res.getAnswer().add(parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(xpp, owner));
17990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17991        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
17992      } else if (!parseBackboneElementContent(eventType, xpp, res))
17993        return false;
17994    return true;
17995  }
17996
17997  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
17998    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
17999    parseBackboneAttributes(xpp, res);
18000    next(xpp);
18001    int eventType = nextNoWhitespace(xpp);
18002    while (eventType != XmlPullParser.END_TAG) {
18003  if (!parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, owner, res))
18004        unknownContent(xpp);
18005      eventType = nextNoWhitespace(xpp);
18006    }
18007    next(xpp);
18008    parseElementClose(res);
18009    return res;
18010  }
18011
18012  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18013      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18014        res.setValue(parseType("value", xpp));
18015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18016        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
18017      } else if (!parseBackboneElementContent(eventType, xpp, res))
18018        return false;
18019    return true;
18020  }
18021
18022  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18023    RelatedPerson res = new RelatedPerson();
18024    parseDomainResourceAttributes(xpp, res);
18025    next(xpp);
18026    int eventType = nextNoWhitespace(xpp);
18027    while (eventType != XmlPullParser.END_TAG) {
18028  if (!parseRelatedPersonContent(eventType, xpp, res))
18029        unknownContent(xpp);
18030      eventType = nextNoWhitespace(xpp);
18031    }
18032    next(xpp);
18033    parseElementClose(res);
18034    return res;
18035  }
18036
18037  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
18038      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18039        res.getIdentifier().add(parseIdentifier(xpp));
18040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
18041        res.setActiveElement(parseBoolean(xpp));
18042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
18043        res.setPatient(parseReference(xpp));
18044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
18045        res.getRelationship().add(parseCodeableConcept(xpp));
18046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18047        res.getName().add(parseHumanName(xpp));
18048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18049        res.getTelecom().add(parseContactPoint(xpp));
18050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
18051        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
18052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
18053        res.setBirthDateElement(parseDate(xpp));
18054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
18055        res.getAddress().add(parseAddress(xpp));
18056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
18057        res.getPhoto().add(parseAttachment(xpp));
18058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18059        res.setPeriod(parsePeriod(xpp));
18060      } else if (!parseDomainResourceContent(eventType, xpp, res))
18061        return false;
18062    return true;
18063  }
18064
18065  protected RequestGroup parseRequestGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18066    RequestGroup res = new RequestGroup();
18067    parseDomainResourceAttributes(xpp, res);
18068    next(xpp);
18069    int eventType = nextNoWhitespace(xpp);
18070    while (eventType != XmlPullParser.END_TAG) {
18071  if (!parseRequestGroupContent(eventType, xpp, res))
18072        unknownContent(xpp);
18073      eventType = nextNoWhitespace(xpp);
18074    }
18075    next(xpp);
18076    parseElementClose(res);
18077    return res;
18078  }
18079
18080  protected boolean parseRequestGroupContent(int eventType, XmlPullParser xpp, RequestGroup res) throws XmlPullParserException, IOException, FHIRFormatError {
18081      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18082        res.getIdentifier().add(parseIdentifier(xpp));
18083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
18084        res.getInstantiatesCanonical().add(parseCanonical(xpp));
18085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
18086        res.getInstantiatesUri().add(parseUri(xpp));
18087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18088        res.getBasedOn().add(parseReference(xpp));
18089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
18090        res.getReplaces().add(parseReference(xpp));
18091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
18092        res.setGroupIdentifier(parseIdentifier(xpp));
18093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18094        res.setStatusElement(parseEnumeration(xpp, RequestGroup.RequestStatus.NULL, new RequestGroup.RequestStatusEnumFactory()));
18095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
18096        res.setIntentElement(parseEnumeration(xpp, RequestGroup.RequestIntent.NULL, new RequestGroup.RequestIntentEnumFactory()));
18097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
18098        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
18099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18100        res.setCode(parseCodeableConcept(xpp));
18101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18102        res.setSubject(parseReference(xpp));
18103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
18104        res.setContext(parseReference(xpp));
18105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
18106        res.setAuthoredOnElement(parseDateTime(xpp));
18107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18108        res.setAuthor(parseReference(xpp));
18109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
18110        res.getReasonCode().add(parseCodeableConcept(xpp));
18111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
18112        res.getReasonReference().add(parseReference(xpp));
18113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18114        res.getNote().add(parseAnnotation(xpp));
18115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18116        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, res));
18117      } else if (!parseDomainResourceContent(eventType, xpp, res))
18118        return false;
18119    return true;
18120  }
18121
18122  protected RequestGroup.RequestGroupActionComponent parseRequestGroupRequestGroupActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18123    RequestGroup.RequestGroupActionComponent res = new RequestGroup.RequestGroupActionComponent();
18124    parseBackboneAttributes(xpp, res);
18125    next(xpp);
18126    int eventType = nextNoWhitespace(xpp);
18127    while (eventType != XmlPullParser.END_TAG) {
18128  if (!parseRequestGroupRequestGroupActionComponentContent(eventType, xpp, owner, res))
18129        unknownContent(xpp);
18130      eventType = nextNoWhitespace(xpp);
18131    }
18132    next(xpp);
18133    parseElementClose(res);
18134    return res;
18135  }
18136
18137  protected boolean parseRequestGroupRequestGroupActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18138      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
18139        res.setPrefixElement(parseString(xpp));
18140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18141        res.setTitleElement(parseString(xpp));
18142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18143        res.setDescriptionElement(parseString(xpp));
18144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
18145        res.setTextEquivalentElement(parseString(xpp));
18146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
18147        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
18148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18149        res.getCode().add(parseCodeableConcept(xpp));
18150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
18151        res.getDocumentation().add(parseRelatedArtifact(xpp));
18152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18153        res.getCondition().add(parseRequestGroupRequestGroupActionConditionComponent(xpp, owner));
18154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
18155        res.getRelatedAction().add(parseRequestGroupRequestGroupActionRelatedActionComponent(xpp, owner));
18156      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
18157        res.setTiming(parseType("timing", xpp));
18158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
18159        res.getParticipant().add(parseReference(xpp));
18160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18161        res.setType(parseCodeableConcept(xpp));
18162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
18163        res.setGroupingBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionGroupingBehavior.NULL, new RequestGroup.ActionGroupingBehaviorEnumFactory()));
18164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
18165        res.setSelectionBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionSelectionBehavior.NULL, new RequestGroup.ActionSelectionBehaviorEnumFactory()));
18166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
18167        res.setRequiredBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionRequiredBehavior.NULL, new RequestGroup.ActionRequiredBehaviorEnumFactory()));
18168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
18169        res.setPrecheckBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionPrecheckBehavior.NULL, new RequestGroup.ActionPrecheckBehaviorEnumFactory()));
18170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
18171        res.setCardinalityBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionCardinalityBehavior.NULL, new RequestGroup.ActionCardinalityBehaviorEnumFactory()));
18172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
18173        res.setResource(parseReference(xpp));
18174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18175        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, owner));
18176      } else if (!parseBackboneElementContent(eventType, xpp, res))
18177        return false;
18178    return true;
18179  }
18180
18181  protected RequestGroup.RequestGroupActionConditionComponent parseRequestGroupRequestGroupActionConditionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18182    RequestGroup.RequestGroupActionConditionComponent res = new RequestGroup.RequestGroupActionConditionComponent();
18183    parseBackboneAttributes(xpp, res);
18184    next(xpp);
18185    int eventType = nextNoWhitespace(xpp);
18186    while (eventType != XmlPullParser.END_TAG) {
18187  if (!parseRequestGroupRequestGroupActionConditionComponentContent(eventType, xpp, owner, res))
18188        unknownContent(xpp);
18189      eventType = nextNoWhitespace(xpp);
18190    }
18191    next(xpp);
18192    parseElementClose(res);
18193    return res;
18194  }
18195
18196  protected boolean parseRequestGroupRequestGroupActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18197      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
18198        res.setKindElement(parseEnumeration(xpp, RequestGroup.ActionConditionKind.NULL, new RequestGroup.ActionConditionKindEnumFactory()));
18199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18200        res.setDescriptionElement(parseString(xpp));
18201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
18202        res.setLanguageElement(parseString(xpp));
18203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
18204        res.setExpressionElement(parseString(xpp));
18205      } else if (!parseBackboneElementContent(eventType, xpp, res))
18206        return false;
18207    return true;
18208  }
18209
18210  protected RequestGroup.RequestGroupActionRelatedActionComponent parseRequestGroupRequestGroupActionRelatedActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18211    RequestGroup.RequestGroupActionRelatedActionComponent res = new RequestGroup.RequestGroupActionRelatedActionComponent();
18212    parseBackboneAttributes(xpp, res);
18213    next(xpp);
18214    int eventType = nextNoWhitespace(xpp);
18215    while (eventType != XmlPullParser.END_TAG) {
18216  if (!parseRequestGroupRequestGroupActionRelatedActionComponentContent(eventType, xpp, owner, res))
18217        unknownContent(xpp);
18218      eventType = nextNoWhitespace(xpp);
18219    }
18220    next(xpp);
18221    parseElementClose(res);
18222    return res;
18223  }
18224
18225  protected boolean parseRequestGroupRequestGroupActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18226      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
18227        res.setActionIdElement(parseId(xpp));
18228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
18229        res.setRelationshipElement(parseEnumeration(xpp, RequestGroup.ActionRelationshipType.NULL, new RequestGroup.ActionRelationshipTypeEnumFactory()));
18230      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
18231        res.setOffset(parseType("offset", xpp));
18232      } else if (!parseBackboneElementContent(eventType, xpp, res))
18233        return false;
18234    return true;
18235  }
18236
18237  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18238    ResearchStudy res = new ResearchStudy();
18239    parseDomainResourceAttributes(xpp, res);
18240    next(xpp);
18241    int eventType = nextNoWhitespace(xpp);
18242    while (eventType != XmlPullParser.END_TAG) {
18243  if (!parseResearchStudyContent(eventType, xpp, res))
18244        unknownContent(xpp);
18245      eventType = nextNoWhitespace(xpp);
18246    }
18247    next(xpp);
18248    parseElementClose(res);
18249    return res;
18250  }
18251
18252  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
18253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18254        res.getIdentifier().add(parseIdentifier(xpp));
18255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18256        res.setTitleElement(parseString(xpp));
18257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
18258        res.getProtocol().add(parseReference(xpp));
18259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18260        res.getPartOf().add(parseReference(xpp));
18261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18262        res.setStatusElement(parseEnumeration(xpp, ResearchStudy.ResearchStudyStatus.NULL, new ResearchStudy.ResearchStudyStatusEnumFactory()));
18263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primaryPurposeType")) {
18264        res.setPrimaryPurposeType(parseCodeableConcept(xpp));
18265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phase")) {
18266        res.setPhase(parseCodeableConcept(xpp));
18267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
18268        res.getCategory().add(parseCodeableConcept(xpp));
18269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
18270        res.getFocus().add(parseCodeableConcept(xpp));
18271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18272        res.getCondition().add(parseCodeableConcept(xpp));
18273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18274        res.getContact().add(parseContactDetail(xpp));
18275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18276        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
18278        res.getKeyword().add(parseCodeableConcept(xpp));
18279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18280        res.getLocation().add(parseCodeableConcept(xpp));
18281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18282        res.setDescriptionElement(parseMarkdown(xpp));
18283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enrollment")) {
18284        res.getEnrollment().add(parseReference(xpp));
18285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18286        res.setPeriod(parsePeriod(xpp));
18287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sponsor")) {
18288        res.setSponsor(parseReference(xpp));
18289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("principalInvestigator")) {
18290        res.setPrincipalInvestigator(parseReference(xpp));
18291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
18292        res.getSite().add(parseReference(xpp));
18293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonStopped")) {
18294        res.setReasonStopped(parseCodeableConcept(xpp));
18295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18296        res.getNote().add(parseAnnotation(xpp));
18297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("arm")) {
18298        res.getArm().add(parseResearchStudyResearchStudyArmComponent(xpp, res));
18299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("objective")) {
18300        res.getObjective().add(parseResearchStudyResearchStudyObjectiveComponent(xpp, res));
18301      } else if (!parseDomainResourceContent(eventType, xpp, res))
18302        return false;
18303    return true;
18304  }
18305
18306  protected ResearchStudy.ResearchStudyArmComponent parseResearchStudyResearchStudyArmComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
18307    ResearchStudy.ResearchStudyArmComponent res = new ResearchStudy.ResearchStudyArmComponent();
18308    parseBackboneAttributes(xpp, res);
18309    next(xpp);
18310    int eventType = nextNoWhitespace(xpp);
18311    while (eventType != XmlPullParser.END_TAG) {
18312  if (!parseResearchStudyResearchStudyArmComponentContent(eventType, xpp, owner, res))
18313        unknownContent(xpp);
18314      eventType = nextNoWhitespace(xpp);
18315    }
18316    next(xpp);
18317    parseElementClose(res);
18318    return res;
18319  }
18320
18321  protected boolean parseResearchStudyResearchStudyArmComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyArmComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18322      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18323        res.setNameElement(parseString(xpp));
18324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18325        res.setType(parseCodeableConcept(xpp));
18326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18327        res.setDescriptionElement(parseString(xpp));
18328      } else if (!parseBackboneElementContent(eventType, xpp, res))
18329        return false;
18330    return true;
18331  }
18332
18333  protected ResearchStudy.ResearchStudyObjectiveComponent parseResearchStudyResearchStudyObjectiveComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
18334    ResearchStudy.ResearchStudyObjectiveComponent res = new ResearchStudy.ResearchStudyObjectiveComponent();
18335    parseBackboneAttributes(xpp, res);
18336    next(xpp);
18337    int eventType = nextNoWhitespace(xpp);
18338    while (eventType != XmlPullParser.END_TAG) {
18339  if (!parseResearchStudyResearchStudyObjectiveComponentContent(eventType, xpp, owner, res))
18340        unknownContent(xpp);
18341      eventType = nextNoWhitespace(xpp);
18342    }
18343    next(xpp);
18344    parseElementClose(res);
18345    return res;
18346  }
18347
18348  protected boolean parseResearchStudyResearchStudyObjectiveComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyObjectiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18349      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18350        res.setNameElement(parseString(xpp));
18351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18352        res.setType(parseCodeableConcept(xpp));
18353      } else if (!parseBackboneElementContent(eventType, xpp, res))
18354        return false;
18355    return true;
18356  }
18357
18358  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18359    ResearchSubject res = new ResearchSubject();
18360    parseDomainResourceAttributes(xpp, res);
18361    next(xpp);
18362    int eventType = nextNoWhitespace(xpp);
18363    while (eventType != XmlPullParser.END_TAG) {
18364  if (!parseResearchSubjectContent(eventType, xpp, res))
18365        unknownContent(xpp);
18366      eventType = nextNoWhitespace(xpp);
18367    }
18368    next(xpp);
18369    parseElementClose(res);
18370    return res;
18371  }
18372
18373  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
18374      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18375        res.getIdentifier().add(parseIdentifier(xpp));
18376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18377        res.setStatusElement(parseEnumeration(xpp, ResearchSubject.ResearchSubjectStatus.NULL, new ResearchSubject.ResearchSubjectStatusEnumFactory()));
18378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18379        res.setPeriod(parsePeriod(xpp));
18380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
18381        res.setStudy(parseReference(xpp));
18382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
18383        res.setIndividual(parseReference(xpp));
18384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedArm")) {
18385        res.setAssignedArmElement(parseString(xpp));
18386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualArm")) {
18387        res.setActualArmElement(parseString(xpp));
18388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
18389        res.setConsent(parseReference(xpp));
18390      } else if (!parseDomainResourceContent(eventType, xpp, res))
18391        return false;
18392    return true;
18393  }
18394
18395  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18396    RiskAssessment res = new RiskAssessment();
18397    parseDomainResourceAttributes(xpp, res);
18398    next(xpp);
18399    int eventType = nextNoWhitespace(xpp);
18400    while (eventType != XmlPullParser.END_TAG) {
18401  if (!parseRiskAssessmentContent(eventType, xpp, res))
18402        unknownContent(xpp);
18403      eventType = nextNoWhitespace(xpp);
18404    }
18405    next(xpp);
18406    parseElementClose(res);
18407    return res;
18408  }
18409
18410  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
18411      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18412        res.getIdentifier().add(parseIdentifier(xpp));
18413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18414        res.setBasedOn(parseReference(xpp));
18415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
18416        res.setParent(parseReference(xpp));
18417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18418        res.setStatusElement(parseEnumeration(xpp, RiskAssessment.RiskAssessmentStatus.NULL, new RiskAssessment.RiskAssessmentStatusEnumFactory()));
18419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
18420        res.setMethod(parseCodeableConcept(xpp));
18421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18422        res.setCode(parseCodeableConcept(xpp));
18423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18424        res.setSubject(parseReference(xpp));
18425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
18426        res.setContext(parseReference(xpp));
18427      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
18428        res.setOccurrence(parseType("occurrence", xpp));
18429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18430        res.setCondition(parseReference(xpp));
18431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
18432        res.setPerformer(parseReference(xpp));
18433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
18434        res.getReasonCode().add(parseCodeableConcept(xpp));
18435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
18436        res.getReasonReference().add(parseReference(xpp));
18437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
18438        res.getBasis().add(parseReference(xpp));
18439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
18440        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
18441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
18442        res.setMitigationElement(parseString(xpp));
18443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18444        res.getNote().add(parseAnnotation(xpp));
18445      } else if (!parseDomainResourceContent(eventType, xpp, res))
18446        return false;
18447    return true;
18448  }
18449
18450  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
18451    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
18452    parseBackboneAttributes(xpp, res);
18453    next(xpp);
18454    int eventType = nextNoWhitespace(xpp);
18455    while (eventType != XmlPullParser.END_TAG) {
18456  if (!parseRiskAssessmentRiskAssessmentPredictionComponentContent(eventType, xpp, owner, res))
18457        unknownContent(xpp);
18458      eventType = nextNoWhitespace(xpp);
18459    }
18460    next(xpp);
18461    parseElementClose(res);
18462    return res;
18463  }
18464
18465  protected boolean parseRiskAssessmentRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment owner, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18466      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
18467        res.setOutcome(parseCodeableConcept(xpp));
18468      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
18469        res.setProbability(parseType("probability", xpp));
18470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
18471        res.setQualitativeRisk(parseCodeableConcept(xpp));
18472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
18473        res.setRelativeRiskElement(parseDecimal(xpp));
18474      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
18475        res.setWhen(parseType("when", xpp));
18476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
18477        res.setRationaleElement(parseString(xpp));
18478      } else if (!parseBackboneElementContent(eventType, xpp, res))
18479        return false;
18480    return true;
18481  }
18482
18483  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18484    Schedule res = new Schedule();
18485    parseDomainResourceAttributes(xpp, res);
18486    next(xpp);
18487    int eventType = nextNoWhitespace(xpp);
18488    while (eventType != XmlPullParser.END_TAG) {
18489  if (!parseScheduleContent(eventType, xpp, res))
18490        unknownContent(xpp);
18491      eventType = nextNoWhitespace(xpp);
18492    }
18493    next(xpp);
18494    parseElementClose(res);
18495    return res;
18496  }
18497
18498  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
18499      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18500        res.getIdentifier().add(parseIdentifier(xpp));
18501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
18502        res.setActiveElement(parseBoolean(xpp));
18503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
18504        res.getServiceCategory().add(parseCodeableConcept(xpp));
18505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
18506        res.getServiceType().add(parseCodeableConcept(xpp));
18507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
18508        res.getSpecialty().add(parseCodeableConcept(xpp));
18509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
18510        res.getActor().add(parseReference(xpp));
18511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
18512        res.setPlanningHorizon(parsePeriod(xpp));
18513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18514        res.setCommentElement(parseString(xpp));
18515      } else if (!parseDomainResourceContent(eventType, xpp, res))
18516        return false;
18517    return true;
18518  }
18519
18520  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18521    SearchParameter res = new SearchParameter();
18522    parseDomainResourceAttributes(xpp, res);
18523    next(xpp);
18524    int eventType = nextNoWhitespace(xpp);
18525    while (eventType != XmlPullParser.END_TAG) {
18526  if (!parseSearchParameterContent(eventType, xpp, res))
18527        unknownContent(xpp);
18528      eventType = nextNoWhitespace(xpp);
18529    }
18530    next(xpp);
18531    parseElementClose(res);
18532    return res;
18533  }
18534
18535  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
18536      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18537        res.setUrlElement(parseUri(xpp));
18538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18539        res.setVersionElement(parseString(xpp));
18540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18541        res.setNameElement(parseString(xpp));
18542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
18543        res.setDerivedFromElement(parseCanonical(xpp));
18544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18545        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18547        res.setExperimentalElement(parseBoolean(xpp));
18548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18549        res.setDateElement(parseDateTime(xpp));
18550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18551        res.setPublisherElement(parseString(xpp));
18552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18553        res.getContact().add(parseContactDetail(xpp));
18554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18555        res.setDescriptionElement(parseMarkdown(xpp));
18556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18557        res.getUseContext().add(parseUsageContext(xpp));
18558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18559        res.getJurisdiction().add(parseCodeableConcept(xpp));
18560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18561        res.setPurposeElement(parseMarkdown(xpp));
18562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18563        res.setCodeElement(parseCode(xpp));
18564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
18565        res.getBase().add(parseCode(xpp));
18566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18567        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
18568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
18569        res.setExpressionElement(parseString(xpp));
18570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
18571        res.setXpathElement(parseString(xpp));
18572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
18573        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
18574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
18575        res.getTarget().add(parseCode(xpp));
18576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleOr")) {
18577        res.setMultipleOrElement(parseBoolean(xpp));
18578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleAnd")) {
18579        res.setMultipleAndElement(parseBoolean(xpp));
18580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
18581        res.getComparator().add(parseEnumeration(xpp, SearchParameter.SearchComparator.NULL, new SearchParameter.SearchComparatorEnumFactory()));
18582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
18583        res.getModifier().add(parseEnumeration(xpp, SearchParameter.SearchModifierCode.NULL, new SearchParameter.SearchModifierCodeEnumFactory()));
18584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
18585        res.getChain().add(parseString(xpp));
18586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
18587        res.getComponent().add(parseSearchParameterSearchParameterComponentComponent(xpp, res));
18588      } else if (!parseDomainResourceContent(eventType, xpp, res))
18589        return false;
18590    return true;
18591  }
18592
18593  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterSearchParameterComponentComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
18594    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
18595    parseBackboneAttributes(xpp, res);
18596    next(xpp);
18597    int eventType = nextNoWhitespace(xpp);
18598    while (eventType != XmlPullParser.END_TAG) {
18599  if (!parseSearchParameterSearchParameterComponentComponentContent(eventType, xpp, owner, res))
18600        unknownContent(xpp);
18601      eventType = nextNoWhitespace(xpp);
18602    }
18603    next(xpp);
18604    parseElementClose(res);
18605    return res;
18606  }
18607
18608  protected boolean parseSearchParameterSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter owner, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
18610        res.setDefinitionElement(parseCanonical(xpp));
18611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
18612        res.setExpressionElement(parseString(xpp));
18613      } else if (!parseBackboneElementContent(eventType, xpp, res))
18614        return false;
18615    return true;
18616  }
18617
18618  protected Sequence parseSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18619    Sequence res = new Sequence();
18620    parseDomainResourceAttributes(xpp, res);
18621    next(xpp);
18622    int eventType = nextNoWhitespace(xpp);
18623    while (eventType != XmlPullParser.END_TAG) {
18624  if (!parseSequenceContent(eventType, xpp, res))
18625        unknownContent(xpp);
18626      eventType = nextNoWhitespace(xpp);
18627    }
18628    next(xpp);
18629    parseElementClose(res);
18630    return res;
18631  }
18632
18633  protected boolean parseSequenceContent(int eventType, XmlPullParser xpp, Sequence res) throws XmlPullParserException, IOException, FHIRFormatError {
18634      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18635        res.getIdentifier().add(parseIdentifier(xpp));
18636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18637        res.setTypeElement(parseEnumeration(xpp, Sequence.SequenceType.NULL, new Sequence.SequenceTypeEnumFactory()));
18638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
18639        res.setCoordinateSystemElement(parseInteger(xpp));
18640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
18641        res.setPatient(parseReference(xpp));
18642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
18643        res.setSpecimen(parseReference(xpp));
18644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
18645        res.setDevice(parseReference(xpp));
18646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
18647        res.setPerformer(parseReference(xpp));
18648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
18649        res.setQuantity(parseQuantity(xpp));
18650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
18651        res.setReferenceSeq(parseSequenceSequenceReferenceSeqComponent(xpp, res));
18652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variant")) {
18653        res.getVariant().add(parseSequenceSequenceVariantComponent(xpp, res));
18654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
18655        res.setObservedSeqElement(parseString(xpp));
18656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
18657        res.getQuality().add(parseSequenceSequenceQualityComponent(xpp, res));
18658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
18659        res.setReadCoverageElement(parseInteger(xpp));
18660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
18661        res.getRepository().add(parseSequenceSequenceRepositoryComponent(xpp, res));
18662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
18663        res.getPointer().add(parseReference(xpp));
18664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structureVariant")) {
18665        res.getStructureVariant().add(parseSequenceSequenceStructureVariantComponent(xpp, res));
18666      } else if (!parseDomainResourceContent(eventType, xpp, res))
18667        return false;
18668    return true;
18669  }
18670
18671  protected Sequence.SequenceReferenceSeqComponent parseSequenceSequenceReferenceSeqComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
18672    Sequence.SequenceReferenceSeqComponent res = new Sequence.SequenceReferenceSeqComponent();
18673    parseBackboneAttributes(xpp, res);
18674    next(xpp);
18675    int eventType = nextNoWhitespace(xpp);
18676    while (eventType != XmlPullParser.END_TAG) {
18677  if (!parseSequenceSequenceReferenceSeqComponentContent(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 parseSequenceSequenceReferenceSeqComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceReferenceSeqComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18687      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
18688        res.setChromosome(parseCodeableConcept(xpp));
18689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
18690        res.setGenomeBuildElement(parseString(xpp));
18691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientation")) {
18692        res.setOrientationElement(parseEnumeration(xpp, Sequence.OrientationType.NULL, new Sequence.OrientationTypeEnumFactory()));
18693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
18694        res.setReferenceSeqId(parseCodeableConcept(xpp));
18695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
18696        res.setReferenceSeqPointer(parseReference(xpp));
18697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
18698        res.setReferenceSeqStringElement(parseString(xpp));
18699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
18700        res.setStrandElement(parseEnumeration(xpp, Sequence.StrandType.NULL, new Sequence.StrandTypeEnumFactory()));
18701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
18702        res.setWindowStartElement(parseInteger(xpp));
18703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
18704        res.setWindowEndElement(parseInteger(xpp));
18705      } else if (!parseBackboneElementContent(eventType, xpp, res))
18706        return false;
18707    return true;
18708  }
18709
18710  protected Sequence.SequenceVariantComponent parseSequenceSequenceVariantComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
18711    Sequence.SequenceVariantComponent res = new Sequence.SequenceVariantComponent();
18712    parseBackboneAttributes(xpp, res);
18713    next(xpp);
18714    int eventType = nextNoWhitespace(xpp);
18715    while (eventType != XmlPullParser.END_TAG) {
18716  if (!parseSequenceSequenceVariantComponentContent(eventType, xpp, owner, res))
18717        unknownContent(xpp);
18718      eventType = nextNoWhitespace(xpp);
18719    }
18720    next(xpp);
18721    parseElementClose(res);
18722    return res;
18723  }
18724
18725  protected boolean parseSequenceSequenceVariantComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18726      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
18727        res.setStartElement(parseInteger(xpp));
18728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
18729        res.setEndElement(parseInteger(xpp));
18730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
18731        res.setObservedAlleleElement(parseString(xpp));
18732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
18733        res.setReferenceAlleleElement(parseString(xpp));
18734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
18735        res.setCigarElement(parseString(xpp));
18736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantPointer")) {
18737        res.setVariantPointer(parseReference(xpp));
18738      } else if (!parseBackboneElementContent(eventType, xpp, res))
18739        return false;
18740    return true;
18741  }
18742
18743  protected Sequence.SequenceQualityComponent parseSequenceSequenceQualityComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
18744    Sequence.SequenceQualityComponent res = new Sequence.SequenceQualityComponent();
18745    parseBackboneAttributes(xpp, res);
18746    next(xpp);
18747    int eventType = nextNoWhitespace(xpp);
18748    while (eventType != XmlPullParser.END_TAG) {
18749  if (!parseSequenceSequenceQualityComponentContent(eventType, xpp, owner, res))
18750        unknownContent(xpp);
18751      eventType = nextNoWhitespace(xpp);
18752    }
18753    next(xpp);
18754    parseElementClose(res);
18755    return res;
18756  }
18757
18758  protected boolean parseSequenceSequenceQualityComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceQualityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18759      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18760        res.setTypeElement(parseEnumeration(xpp, Sequence.QualityType.NULL, new Sequence.QualityTypeEnumFactory()));
18761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("standardSequence")) {
18762        res.setStandardSequence(parseCodeableConcept(xpp));
18763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
18764        res.setStartElement(parseInteger(xpp));
18765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
18766        res.setEndElement(parseInteger(xpp));
18767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
18768        res.setScore(parseQuantity(xpp));
18769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
18770        res.setMethod(parseCodeableConcept(xpp));
18771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthTP")) {
18772        res.setTruthTPElement(parseDecimal(xpp));
18773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryTP")) {
18774        res.setQueryTPElement(parseDecimal(xpp));
18775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthFN")) {
18776        res.setTruthFNElement(parseDecimal(xpp));
18777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryFP")) {
18778        res.setQueryFPElement(parseDecimal(xpp));
18779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gtFP")) {
18780        res.setGtFPElement(parseDecimal(xpp));
18781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
18782        res.setPrecisionElement(parseDecimal(xpp));
18783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
18784        res.setRecallElement(parseDecimal(xpp));
18785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fScore")) {
18786        res.setFScoreElement(parseDecimal(xpp));
18787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("roc")) {
18788        res.setRoc(parseSequenceSequenceQualityRocComponent(xpp, owner));
18789      } else if (!parseBackboneElementContent(eventType, xpp, res))
18790        return false;
18791    return true;
18792  }
18793
18794  protected Sequence.SequenceQualityRocComponent parseSequenceSequenceQualityRocComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
18795    Sequence.SequenceQualityRocComponent res = new Sequence.SequenceQualityRocComponent();
18796    parseBackboneAttributes(xpp, res);
18797    next(xpp);
18798    int eventType = nextNoWhitespace(xpp);
18799    while (eventType != XmlPullParser.END_TAG) {
18800  if (!parseSequenceSequenceQualityRocComponentContent(eventType, xpp, owner, res))
18801        unknownContent(xpp);
18802      eventType = nextNoWhitespace(xpp);
18803    }
18804    next(xpp);
18805    parseElementClose(res);
18806    return res;
18807  }
18808
18809  protected boolean parseSequenceSequenceQualityRocComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceQualityRocComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18810      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
18811        res.getScore().add(parseInteger(xpp));
18812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numTP")) {
18813        res.getNumTP().add(parseInteger(xpp));
18814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFP")) {
18815        res.getNumFP().add(parseInteger(xpp));
18816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFN")) {
18817        res.getNumFN().add(parseInteger(xpp));
18818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
18819        res.getPrecision().add(parseDecimal(xpp));
18820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sensitivity")) {
18821        res.getSensitivity().add(parseDecimal(xpp));
18822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fMeasure")) {
18823        res.getFMeasure().add(parseDecimal(xpp));
18824      } else if (!parseBackboneElementContent(eventType, xpp, res))
18825        return false;
18826    return true;
18827  }
18828
18829  protected Sequence.SequenceRepositoryComponent parseSequenceSequenceRepositoryComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
18830    Sequence.SequenceRepositoryComponent res = new Sequence.SequenceRepositoryComponent();
18831    parseBackboneAttributes(xpp, res);
18832    next(xpp);
18833    int eventType = nextNoWhitespace(xpp);
18834    while (eventType != XmlPullParser.END_TAG) {
18835  if (!parseSequenceSequenceRepositoryComponentContent(eventType, xpp, owner, res))
18836        unknownContent(xpp);
18837      eventType = nextNoWhitespace(xpp);
18838    }
18839    next(xpp);
18840    parseElementClose(res);
18841    return res;
18842  }
18843
18844  protected boolean parseSequenceSequenceRepositoryComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceRepositoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18845      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18846        res.setTypeElement(parseEnumeration(xpp, Sequence.RepositoryType.NULL, new Sequence.RepositoryTypeEnumFactory()));
18847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18848        res.setUrlElement(parseUri(xpp));
18849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18850        res.setNameElement(parseString(xpp));
18851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("datasetId")) {
18852        res.setDatasetIdElement(parseString(xpp));
18853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantsetId")) {
18854        res.setVariantsetIdElement(parseString(xpp));
18855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readsetId")) {
18856        res.setReadsetIdElement(parseString(xpp));
18857      } else if (!parseBackboneElementContent(eventType, xpp, res))
18858        return false;
18859    return true;
18860  }
18861
18862  protected Sequence.SequenceStructureVariantComponent parseSequenceSequenceStructureVariantComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
18863    Sequence.SequenceStructureVariantComponent res = new Sequence.SequenceStructureVariantComponent();
18864    parseBackboneAttributes(xpp, res);
18865    next(xpp);
18866    int eventType = nextNoWhitespace(xpp);
18867    while (eventType != XmlPullParser.END_TAG) {
18868  if (!parseSequenceSequenceStructureVariantComponentContent(eventType, xpp, owner, res))
18869        unknownContent(xpp);
18870      eventType = nextNoWhitespace(xpp);
18871    }
18872    next(xpp);
18873    parseElementClose(res);
18874    return res;
18875  }
18876
18877  protected boolean parseSequenceSequenceStructureVariantComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceStructureVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
18879        res.setPrecisionElement(parseString(xpp));
18880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportedaCGHRatio")) {
18881        res.setReportedaCGHRatioElement(parseDecimal(xpp));
18882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
18883        res.setLengthElement(parseInteger(xpp));
18884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outer")) {
18885        res.setOuter(parseSequenceSequenceStructureVariantOuterComponent(xpp, owner));
18886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inner")) {
18887        res.setInner(parseSequenceSequenceStructureVariantInnerComponent(xpp, owner));
18888      } else if (!parseBackboneElementContent(eventType, xpp, res))
18889        return false;
18890    return true;
18891  }
18892
18893  protected Sequence.SequenceStructureVariantOuterComponent parseSequenceSequenceStructureVariantOuterComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
18894    Sequence.SequenceStructureVariantOuterComponent res = new Sequence.SequenceStructureVariantOuterComponent();
18895    parseBackboneAttributes(xpp, res);
18896    next(xpp);
18897    int eventType = nextNoWhitespace(xpp);
18898    while (eventType != XmlPullParser.END_TAG) {
18899  if (!parseSequenceSequenceStructureVariantOuterComponentContent(eventType, xpp, owner, res))
18900        unknownContent(xpp);
18901      eventType = nextNoWhitespace(xpp);
18902    }
18903    next(xpp);
18904    parseElementClose(res);
18905    return res;
18906  }
18907
18908  protected boolean parseSequenceSequenceStructureVariantOuterComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceStructureVariantOuterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18909      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
18910        res.setStartElement(parseInteger(xpp));
18911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
18912        res.setEndElement(parseInteger(xpp));
18913      } else if (!parseBackboneElementContent(eventType, xpp, res))
18914        return false;
18915    return true;
18916  }
18917
18918  protected Sequence.SequenceStructureVariantInnerComponent parseSequenceSequenceStructureVariantInnerComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
18919    Sequence.SequenceStructureVariantInnerComponent res = new Sequence.SequenceStructureVariantInnerComponent();
18920    parseBackboneAttributes(xpp, res);
18921    next(xpp);
18922    int eventType = nextNoWhitespace(xpp);
18923    while (eventType != XmlPullParser.END_TAG) {
18924  if (!parseSequenceSequenceStructureVariantInnerComponentContent(eventType, xpp, owner, res))
18925        unknownContent(xpp);
18926      eventType = nextNoWhitespace(xpp);
18927    }
18928    next(xpp);
18929    parseElementClose(res);
18930    return res;
18931  }
18932
18933  protected boolean parseSequenceSequenceStructureVariantInnerComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceStructureVariantInnerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18934      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
18935        res.setStartElement(parseInteger(xpp));
18936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
18937        res.setEndElement(parseInteger(xpp));
18938      } else if (!parseBackboneElementContent(eventType, xpp, res))
18939        return false;
18940    return true;
18941  }
18942
18943  protected ServiceRequest parseServiceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18944    ServiceRequest res = new ServiceRequest();
18945    parseDomainResourceAttributes(xpp, res);
18946    next(xpp);
18947    int eventType = nextNoWhitespace(xpp);
18948    while (eventType != XmlPullParser.END_TAG) {
18949  if (!parseServiceRequestContent(eventType, xpp, res))
18950        unknownContent(xpp);
18951      eventType = nextNoWhitespace(xpp);
18952    }
18953    next(xpp);
18954    parseElementClose(res);
18955    return res;
18956  }
18957
18958  protected boolean parseServiceRequestContent(int eventType, XmlPullParser xpp, ServiceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
18959      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18960        res.getIdentifier().add(parseIdentifier(xpp));
18961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
18962        res.getInstantiatesCanonical().add(parseCanonical(xpp));
18963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
18964        res.getInstantiatesUri().add(parseUri(xpp));
18965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18966        res.getBasedOn().add(parseReference(xpp));
18967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
18968        res.getReplaces().add(parseReference(xpp));
18969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
18970        res.setRequisition(parseIdentifier(xpp));
18971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18972        res.setStatusElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestStatus.NULL, new ServiceRequest.ServiceRequestStatusEnumFactory()));
18973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
18974        res.setIntentElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestIntent.NULL, new ServiceRequest.ServiceRequestIntentEnumFactory()));
18975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
18976        res.getCategory().add(parseCodeableConcept(xpp));
18977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
18978        res.setPriorityElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestPriority.NULL, new ServiceRequest.ServiceRequestPriorityEnumFactory()));
18979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
18980        res.setDoNotPerformElement(parseBoolean(xpp));
18981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18982        res.setCode(parseCodeableConcept(xpp));
18983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderDetail")) {
18984        res.getOrderDetail().add(parseCodeableConcept(xpp));
18985      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "quantity")) {
18986        res.setQuantity(parseType("quantity", xpp));
18987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18988        res.setSubject(parseReference(xpp));
18989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
18990        res.setContext(parseReference(xpp));
18991      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
18992        res.setOccurrence(parseType("occurrence", xpp));
18993      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
18994        res.setAsNeeded(parseType("asNeeded", xpp));
18995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
18996        res.setAuthoredOnElement(parseDateTime(xpp));
18997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
18998        res.setRequester(parseReference(xpp));
18999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
19000        res.setPerformerType(parseCodeableConcept(xpp));
19001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
19002        res.getPerformer().add(parseReference(xpp));
19003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationCode")) {
19004        res.getLocationCode().add(parseCodeableConcept(xpp));
19005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationReference")) {
19006        res.getLocationReference().add(parseReference(xpp));
19007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19008        res.getReasonCode().add(parseCodeableConcept(xpp));
19009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19010        res.getReasonReference().add(parseReference(xpp));
19011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
19012        res.getInsurance().add(parseReference(xpp));
19013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
19014        res.getSupportingInfo().add(parseReference(xpp));
19015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
19016        res.getSpecimen().add(parseReference(xpp));
19017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
19018        res.getBodySite().add(parseCodeableConcept(xpp));
19019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19020        res.getNote().add(parseAnnotation(xpp));
19021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
19022        res.setPatientInstructionElement(parseString(xpp));
19023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
19024        res.getRelevantHistory().add(parseReference(xpp));
19025      } else if (!parseDomainResourceContent(eventType, xpp, res))
19026        return false;
19027    return true;
19028  }
19029
19030  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19031    Slot res = new Slot();
19032    parseDomainResourceAttributes(xpp, res);
19033    next(xpp);
19034    int eventType = nextNoWhitespace(xpp);
19035    while (eventType != XmlPullParser.END_TAG) {
19036  if (!parseSlotContent(eventType, xpp, res))
19037        unknownContent(xpp);
19038      eventType = nextNoWhitespace(xpp);
19039    }
19040    next(xpp);
19041    parseElementClose(res);
19042    return res;
19043  }
19044
19045  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
19046      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19047        res.getIdentifier().add(parseIdentifier(xpp));
19048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
19049        res.getServiceCategory().add(parseCodeableConcept(xpp));
19050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
19051        res.getServiceType().add(parseCodeableConcept(xpp));
19052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
19053        res.getSpecialty().add(parseCodeableConcept(xpp));
19054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
19055        res.setAppointmentType(parseCodeableConcept(xpp));
19056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
19057        res.setSchedule(parseReference(xpp));
19058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19059        res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
19060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
19061        res.setStartElement(parseInstant(xpp));
19062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
19063        res.setEndElement(parseInstant(xpp));
19064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
19065        res.setOverbookedElement(parseBoolean(xpp));
19066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19067        res.setCommentElement(parseString(xpp));
19068      } else if (!parseDomainResourceContent(eventType, xpp, res))
19069        return false;
19070    return true;
19071  }
19072
19073  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19074    Specimen res = new Specimen();
19075    parseDomainResourceAttributes(xpp, res);
19076    next(xpp);
19077    int eventType = nextNoWhitespace(xpp);
19078    while (eventType != XmlPullParser.END_TAG) {
19079  if (!parseSpecimenContent(eventType, xpp, res))
19080        unknownContent(xpp);
19081      eventType = nextNoWhitespace(xpp);
19082    }
19083    next(xpp);
19084    parseElementClose(res);
19085    return res;
19086  }
19087
19088  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
19089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19090        res.getIdentifier().add(parseIdentifier(xpp));
19091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
19092        res.setAccessionIdentifier(parseIdentifier(xpp));
19093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19094        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
19095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19096        res.setType(parseCodeableConcept(xpp));
19097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19098        res.setSubject(parseReference(xpp));
19099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
19100        res.setReceivedTimeElement(parseDateTime(xpp));
19101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
19102        res.getParent().add(parseReference(xpp));
19103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
19104        res.getRequest().add(parseReference(xpp));
19105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
19106        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
19107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
19108        res.getProcessing().add(parseSpecimenSpecimenProcessingComponent(xpp, res));
19109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
19110        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
19111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
19112        res.getCondition().add(parseCodeableConcept(xpp));
19113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19114        res.getNote().add(parseAnnotation(xpp));
19115      } else if (!parseDomainResourceContent(eventType, xpp, res))
19116        return false;
19117    return true;
19118  }
19119
19120  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19121    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
19122    parseBackboneAttributes(xpp, res);
19123    next(xpp);
19124    int eventType = nextNoWhitespace(xpp);
19125    while (eventType != XmlPullParser.END_TAG) {
19126  if (!parseSpecimenSpecimenCollectionComponentContent(eventType, xpp, owner, res))
19127        unknownContent(xpp);
19128      eventType = nextNoWhitespace(xpp);
19129    }
19130    next(xpp);
19131    parseElementClose(res);
19132    return res;
19133  }
19134
19135  protected boolean parseSpecimenSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
19137        res.setCollector(parseReference(xpp));
19138      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
19139        res.setCollected(parseType("collected", xpp));
19140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
19141        res.setDuration(parseDuration(xpp));
19142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19143        res.setQuantity(parseQuantity(xpp));
19144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
19145        res.setMethod(parseCodeableConcept(xpp));
19146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
19147        res.setBodySite(parseCodeableConcept(xpp));
19148      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fastingStatus")) {
19149        res.setFastingStatus(parseType("fastingStatus", xpp));
19150      } else if (!parseBackboneElementContent(eventType, xpp, res))
19151        return false;
19152    return true;
19153  }
19154
19155  protected Specimen.SpecimenProcessingComponent parseSpecimenSpecimenProcessingComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19156    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
19157    parseBackboneAttributes(xpp, res);
19158    next(xpp);
19159    int eventType = nextNoWhitespace(xpp);
19160    while (eventType != XmlPullParser.END_TAG) {
19161  if (!parseSpecimenSpecimenProcessingComponentContent(eventType, xpp, owner, res))
19162        unknownContent(xpp);
19163      eventType = nextNoWhitespace(xpp);
19164    }
19165    next(xpp);
19166    parseElementClose(res);
19167    return res;
19168  }
19169
19170  protected boolean parseSpecimenSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19171      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19172        res.setDescriptionElement(parseString(xpp));
19173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
19174        res.setProcedure(parseCodeableConcept(xpp));
19175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
19176        res.getAdditive().add(parseReference(xpp));
19177      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
19178        res.setTime(parseType("time", xpp));
19179      } else if (!parseBackboneElementContent(eventType, xpp, res))
19180        return false;
19181    return true;
19182  }
19183
19184  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19185    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
19186    parseBackboneAttributes(xpp, res);
19187    next(xpp);
19188    int eventType = nextNoWhitespace(xpp);
19189    while (eventType != XmlPullParser.END_TAG) {
19190  if (!parseSpecimenSpecimenContainerComponentContent(eventType, xpp, owner, res))
19191        unknownContent(xpp);
19192      eventType = nextNoWhitespace(xpp);
19193    }
19194    next(xpp);
19195    parseElementClose(res);
19196    return res;
19197  }
19198
19199  protected boolean parseSpecimenSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19200      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19201        res.getIdentifier().add(parseIdentifier(xpp));
19202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19203        res.setDescriptionElement(parseString(xpp));
19204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19205        res.setType(parseCodeableConcept(xpp));
19206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
19207        res.setCapacity(parseQuantity(xpp));
19208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
19209        res.setSpecimenQuantity(parseQuantity(xpp));
19210      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
19211        res.setAdditive(parseType("additive", xpp));
19212      } else if (!parseBackboneElementContent(eventType, xpp, res))
19213        return false;
19214    return true;
19215  }
19216
19217  protected SpecimenDefinition parseSpecimenDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19218    SpecimenDefinition res = new SpecimenDefinition();
19219    parseDomainResourceAttributes(xpp, res);
19220    next(xpp);
19221    int eventType = nextNoWhitespace(xpp);
19222    while (eventType != XmlPullParser.END_TAG) {
19223  if (!parseSpecimenDefinitionContent(eventType, xpp, res))
19224        unknownContent(xpp);
19225      eventType = nextNoWhitespace(xpp);
19226    }
19227    next(xpp);
19228    parseElementClose(res);
19229    return res;
19230  }
19231
19232  protected boolean parseSpecimenDefinitionContent(int eventType, XmlPullParser xpp, SpecimenDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19233      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19234        res.setIdentifier(parseIdentifier(xpp));
19235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCollected")) {
19236        res.setTypeCollected(parseCodeableConcept(xpp));
19237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPreparation")) {
19238        res.setPatientPreparationElement(parseString(xpp));
19239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeAspect")) {
19240        res.setTimeAspectElement(parseString(xpp));
19241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
19242        res.getCollection().add(parseCodeableConcept(xpp));
19243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeTested")) {
19244        res.getTypeTested().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(xpp, res));
19245      } else if (!parseDomainResourceContent(eventType, xpp, res))
19246        return false;
19247    return true;
19248  }
19249
19250  protected SpecimenDefinition.SpecimenDefinitionTypeTestedComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19251    SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedComponent();
19252    parseBackboneAttributes(xpp, res);
19253    next(xpp);
19254    int eventType = nextNoWhitespace(xpp);
19255    while (eventType != XmlPullParser.END_TAG) {
19256  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponentContent(eventType, xpp, owner, res))
19257        unknownContent(xpp);
19258      eventType = nextNoWhitespace(xpp);
19259    }
19260    next(xpp);
19261    parseElementClose(res);
19262    return res;
19263  }
19264
19265  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19266      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDerived")) {
19267        res.setIsDerivedElement(parseBoolean(xpp));
19268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19269        res.setType(parseCodeableConcept(xpp));
19270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preference")) {
19271        res.setPreferenceElement(parseEnumeration(xpp, SpecimenDefinition.SpecimenContainedPreference.NULL, new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory()));
19272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
19273        res.setContainer(parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(xpp, owner));
19274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
19275        res.setRequirementElement(parseString(xpp));
19276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("retentionTime")) {
19277        res.setRetentionTime(parseDuration(xpp));
19278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rejectionCriterion")) {
19279        res.getRejectionCriterion().add(parseCodeableConcept(xpp));
19280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
19281        res.getHandling().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(xpp, owner));
19282      } else if (!parseBackboneElementContent(eventType, xpp, res))
19283        return false;
19284    return true;
19285  }
19286
19287  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19288    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent();
19289    parseBackboneAttributes(xpp, res);
19290    next(xpp);
19291    int eventType = nextNoWhitespace(xpp);
19292    while (eventType != XmlPullParser.END_TAG) {
19293  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentContent(eventType, xpp, owner, res))
19294        unknownContent(xpp);
19295      eventType = nextNoWhitespace(xpp);
19296    }
19297    next(xpp);
19298    parseElementClose(res);
19299    return res;
19300  }
19301
19302  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19303      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
19304        res.setMaterial(parseCodeableConcept(xpp));
19305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19306        res.setType(parseCodeableConcept(xpp));
19307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cap")) {
19308        res.setCap(parseCodeableConcept(xpp));
19309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19310        res.setDescriptionElement(parseString(xpp));
19311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
19312        res.setCapacity(parseQuantity(xpp));
19313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumVolume")) {
19314        res.setMinimumVolume(parseQuantity(xpp));
19315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
19316        res.getAdditive().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(xpp, owner));
19317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparation")) {
19318        res.setPreparationElement(parseString(xpp));
19319      } else if (!parseBackboneElementContent(eventType, xpp, res))
19320        return false;
19321    return true;
19322  }
19323
19324  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19325    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent();
19326    parseBackboneAttributes(xpp, res);
19327    next(xpp);
19328    int eventType = nextNoWhitespace(xpp);
19329    while (eventType != XmlPullParser.END_TAG) {
19330  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(eventType, xpp, owner, res))
19331        unknownContent(xpp);
19332      eventType = nextNoWhitespace(xpp);
19333    }
19334    next(xpp);
19335    parseElementClose(res);
19336    return res;
19337  }
19338
19339  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19340      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
19341        res.setAdditive(parseType("additive", xpp));
19342      } else if (!parseBackboneElementContent(eventType, xpp, res))
19343        return false;
19344    return true;
19345  }
19346
19347  protected SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19348    SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent();
19349    parseBackboneAttributes(xpp, res);
19350    next(xpp);
19351    int eventType = nextNoWhitespace(xpp);
19352    while (eventType != XmlPullParser.END_TAG) {
19353  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentContent(eventType, xpp, owner, res))
19354        unknownContent(xpp);
19355      eventType = nextNoWhitespace(xpp);
19356    }
19357    next(xpp);
19358    parseElementClose(res);
19359    return res;
19360  }
19361
19362  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19363      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureQualifier")) {
19364        res.setTemperatureQualifier(parseCodeableConcept(xpp));
19365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureRange")) {
19366        res.setTemperatureRange(parseRange(xpp));
19367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDuration")) {
19368        res.setMaxDuration(parseDuration(xpp));
19369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
19370        res.setInstructionElement(parseString(xpp));
19371      } else if (!parseBackboneElementContent(eventType, xpp, res))
19372        return false;
19373    return true;
19374  }
19375
19376  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19377    StructureDefinition res = new StructureDefinition();
19378    parseDomainResourceAttributes(xpp, res);
19379    next(xpp);
19380    int eventType = nextNoWhitespace(xpp);
19381    while (eventType != XmlPullParser.END_TAG) {
19382  if (!parseStructureDefinitionContent(eventType, xpp, res))
19383        unknownContent(xpp);
19384      eventType = nextNoWhitespace(xpp);
19385    }
19386    next(xpp);
19387    parseElementClose(res);
19388    return res;
19389  }
19390
19391  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19392      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19393        res.setUrlElement(parseUri(xpp));
19394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19395        res.getIdentifier().add(parseIdentifier(xpp));
19396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19397        res.setVersionElement(parseString(xpp));
19398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19399        res.setNameElement(parseString(xpp));
19400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19401        res.setTitleElement(parseString(xpp));
19402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19403        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19405        res.setExperimentalElement(parseBoolean(xpp));
19406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19407        res.setDateElement(parseDateTime(xpp));
19408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19409        res.setPublisherElement(parseString(xpp));
19410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19411        res.getContact().add(parseContactDetail(xpp));
19412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19413        res.setDescriptionElement(parseMarkdown(xpp));
19414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19415        res.getUseContext().add(parseUsageContext(xpp));
19416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19417        res.getJurisdiction().add(parseCodeableConcept(xpp));
19418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19419        res.setPurposeElement(parseMarkdown(xpp));
19420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19421        res.setCopyrightElement(parseMarkdown(xpp));
19422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
19423        res.getKeyword().add(parseCoding(xpp));
19424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
19425        res.setFhirVersionElement(parseId(xpp));
19426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
19427        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
19428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
19429        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
19430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
19431        res.setAbstractElement(parseBoolean(xpp));
19432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
19433        res.getContext().add(parseStructureDefinitionStructureDefinitionContextComponent(xpp, res));
19434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
19435        res.getContextInvariant().add(parseString(xpp));
19436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19437        res.setTypeElement(parseUri(xpp));
19438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
19439        res.setBaseDefinitionElement(parseCanonical(xpp));
19440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
19441        res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
19442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
19443        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
19444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
19445        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
19446      } else if (!parseDomainResourceContent(eventType, xpp, res))
19447        return false;
19448    return true;
19449  }
19450
19451  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19452    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
19453    parseBackboneAttributes(xpp, res);
19454    next(xpp);
19455    int eventType = nextNoWhitespace(xpp);
19456    while (eventType != XmlPullParser.END_TAG) {
19457  if (!parseStructureDefinitionStructureDefinitionMappingComponentContent(eventType, xpp, owner, res))
19458        unknownContent(xpp);
19459      eventType = nextNoWhitespace(xpp);
19460    }
19461    next(xpp);
19462    parseElementClose(res);
19463    return res;
19464  }
19465
19466  protected boolean parseStructureDefinitionStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
19468        res.setIdentityElement(parseId(xpp));
19469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
19470        res.setUriElement(parseUri(xpp));
19471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19472        res.setNameElement(parseString(xpp));
19473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19474        res.setCommentElement(parseString(xpp));
19475      } else if (!parseBackboneElementContent(eventType, xpp, res))
19476        return false;
19477    return true;
19478  }
19479
19480  protected StructureDefinition.StructureDefinitionContextComponent parseStructureDefinitionStructureDefinitionContextComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19481    StructureDefinition.StructureDefinitionContextComponent res = new StructureDefinition.StructureDefinitionContextComponent();
19482    parseBackboneAttributes(xpp, res);
19483    next(xpp);
19484    int eventType = nextNoWhitespace(xpp);
19485    while (eventType != XmlPullParser.END_TAG) {
19486  if (!parseStructureDefinitionStructureDefinitionContextComponentContent(eventType, xpp, owner, res))
19487        unknownContent(xpp);
19488      eventType = nextNoWhitespace(xpp);
19489    }
19490    next(xpp);
19491    parseElementClose(res);
19492    return res;
19493  }
19494
19495  protected boolean parseStructureDefinitionStructureDefinitionContextComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19496      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19497        res.setTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContextType.NULL, new StructureDefinition.ExtensionContextTypeEnumFactory()));
19498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
19499        res.setExpressionElement(parseString(xpp));
19500      } else if (!parseBackboneElementContent(eventType, xpp, res))
19501        return false;
19502    return true;
19503  }
19504
19505  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19506    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
19507    parseBackboneAttributes(xpp, res);
19508    next(xpp);
19509    int eventType = nextNoWhitespace(xpp);
19510    while (eventType != XmlPullParser.END_TAG) {
19511  if (!parseStructureDefinitionStructureDefinitionSnapshotComponentContent(eventType, xpp, owner, res))
19512        unknownContent(xpp);
19513      eventType = nextNoWhitespace(xpp);
19514    }
19515    next(xpp);
19516    parseElementClose(res);
19517    return res;
19518  }
19519
19520  protected boolean parseStructureDefinitionStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19521      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
19522        res.getElement().add(parseElementDefinition(xpp));
19523      } else if (!parseBackboneElementContent(eventType, xpp, res))
19524        return false;
19525    return true;
19526  }
19527
19528  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19529    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
19530    parseBackboneAttributes(xpp, res);
19531    next(xpp);
19532    int eventType = nextNoWhitespace(xpp);
19533    while (eventType != XmlPullParser.END_TAG) {
19534  if (!parseStructureDefinitionStructureDefinitionDifferentialComponentContent(eventType, xpp, owner, res))
19535        unknownContent(xpp);
19536      eventType = nextNoWhitespace(xpp);
19537    }
19538    next(xpp);
19539    parseElementClose(res);
19540    return res;
19541  }
19542
19543  protected boolean parseStructureDefinitionStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19544      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
19545        res.getElement().add(parseElementDefinition(xpp));
19546      } else if (!parseBackboneElementContent(eventType, xpp, res))
19547        return false;
19548    return true;
19549  }
19550
19551  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19552    StructureMap res = new StructureMap();
19553    parseDomainResourceAttributes(xpp, res);
19554    next(xpp);
19555    int eventType = nextNoWhitespace(xpp);
19556    while (eventType != XmlPullParser.END_TAG) {
19557  if (!parseStructureMapContent(eventType, xpp, res))
19558        unknownContent(xpp);
19559      eventType = nextNoWhitespace(xpp);
19560    }
19561    next(xpp);
19562    parseElementClose(res);
19563    return res;
19564  }
19565
19566  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
19567      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19568        res.setUrlElement(parseUri(xpp));
19569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19570        res.getIdentifier().add(parseIdentifier(xpp));
19571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19572        res.setVersionElement(parseString(xpp));
19573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19574        res.setNameElement(parseString(xpp));
19575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19576        res.setTitleElement(parseString(xpp));
19577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19578        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19580        res.setExperimentalElement(parseBoolean(xpp));
19581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19582        res.setDateElement(parseDateTime(xpp));
19583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19584        res.setPublisherElement(parseString(xpp));
19585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19586        res.getContact().add(parseContactDetail(xpp));
19587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19588        res.setDescriptionElement(parseMarkdown(xpp));
19589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19590        res.getUseContext().add(parseUsageContext(xpp));
19591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19592        res.getJurisdiction().add(parseCodeableConcept(xpp));
19593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19594        res.setPurposeElement(parseMarkdown(xpp));
19595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19596        res.setCopyrightElement(parseMarkdown(xpp));
19597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
19598        res.getStructure().add(parseStructureMapStructureMapStructureComponent(xpp, res));
19599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
19600        res.getImport().add(parseCanonical(xpp));
19601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
19602        res.getGroup().add(parseStructureMapStructureMapGroupComponent(xpp, res));
19603      } else if (!parseDomainResourceContent(eventType, xpp, res))
19604        return false;
19605    return true;
19606  }
19607
19608  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureMapStructureComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
19609    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
19610    parseBackboneAttributes(xpp, res);
19611    next(xpp);
19612    int eventType = nextNoWhitespace(xpp);
19613    while (eventType != XmlPullParser.END_TAG) {
19614  if (!parseStructureMapStructureMapStructureComponentContent(eventType, xpp, owner, res))
19615        unknownContent(xpp);
19616      eventType = nextNoWhitespace(xpp);
19617    }
19618    next(xpp);
19619    parseElementClose(res);
19620    return res;
19621  }
19622
19623  protected boolean parseStructureMapStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19624      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19625        res.setUrlElement(parseCanonical(xpp));
19626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
19627        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
19628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
19629        res.setAliasElement(parseString(xpp));
19630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
19631        res.setDocumentationElement(parseString(xpp));
19632      } else if (!parseBackboneElementContent(eventType, xpp, res))
19633        return false;
19634    return true;
19635  }
19636
19637  protected StructureMap.StructureMapGroupComponent parseStructureMapStructureMapGroupComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
19638    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
19639    parseBackboneAttributes(xpp, res);
19640    next(xpp);
19641    int eventType = nextNoWhitespace(xpp);
19642    while (eventType != XmlPullParser.END_TAG) {
19643  if (!parseStructureMapStructureMapGroupComponentContent(eventType, xpp, owner, res))
19644        unknownContent(xpp);
19645      eventType = nextNoWhitespace(xpp);
19646    }
19647    next(xpp);
19648    parseElementClose(res);
19649    return res;
19650  }
19651
19652  protected boolean parseStructureMapStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19653      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19654        res.setNameElement(parseId(xpp));
19655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
19656        res.setExtendsElement(parseId(xpp));
19657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
19658        res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
19659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
19660        res.setDocumentationElement(parseString(xpp));
19661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
19662        res.getInput().add(parseStructureMapStructureMapGroupInputComponent(xpp, owner));
19663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
19664        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
19665      } else if (!parseBackboneElementContent(eventType, xpp, res))
19666        return false;
19667    return true;
19668  }
19669
19670  protected StructureMap.StructureMapGroupInputComponent parseStructureMapStructureMapGroupInputComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
19671    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
19672    parseBackboneAttributes(xpp, res);
19673    next(xpp);
19674    int eventType = nextNoWhitespace(xpp);
19675    while (eventType != XmlPullParser.END_TAG) {
19676  if (!parseStructureMapStructureMapGroupInputComponentContent(eventType, xpp, owner, res))
19677        unknownContent(xpp);
19678      eventType = nextNoWhitespace(xpp);
19679    }
19680    next(xpp);
19681    parseElementClose(res);
19682    return res;
19683  }
19684
19685  protected boolean parseStructureMapStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19686      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19687        res.setNameElement(parseId(xpp));
19688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19689        res.setTypeElement(parseString(xpp));
19690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
19691        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
19692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
19693        res.setDocumentationElement(parseString(xpp));
19694      } else if (!parseBackboneElementContent(eventType, xpp, res))
19695        return false;
19696    return true;
19697  }
19698
19699  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapStructureMapGroupRuleComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
19700    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
19701    parseBackboneAttributes(xpp, res);
19702    next(xpp);
19703    int eventType = nextNoWhitespace(xpp);
19704    while (eventType != XmlPullParser.END_TAG) {
19705  if (!parseStructureMapStructureMapGroupRuleComponentContent(eventType, xpp, owner, res))
19706        unknownContent(xpp);
19707      eventType = nextNoWhitespace(xpp);
19708    }
19709    next(xpp);
19710    parseElementClose(res);
19711    return res;
19712  }
19713
19714  protected boolean parseStructureMapStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19715      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19716        res.setNameElement(parseId(xpp));
19717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
19718        res.getSource().add(parseStructureMapStructureMapGroupRuleSourceComponent(xpp, owner));
19719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
19720        res.getTarget().add(parseStructureMapStructureMapGroupRuleTargetComponent(xpp, owner));
19721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
19722        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
19723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
19724        res.getDependent().add(parseStructureMapStructureMapGroupRuleDependentComponent(xpp, owner));
19725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
19726        res.setDocumentationElement(parseString(xpp));
19727      } else if (!parseBackboneElementContent(eventType, xpp, res))
19728        return false;
19729    return true;
19730  }
19731
19732  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapStructureMapGroupRuleSourceComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
19733    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
19734    parseBackboneAttributes(xpp, res);
19735    next(xpp);
19736    int eventType = nextNoWhitespace(xpp);
19737    while (eventType != XmlPullParser.END_TAG) {
19738  if (!parseStructureMapStructureMapGroupRuleSourceComponentContent(eventType, xpp, owner, res))
19739        unknownContent(xpp);
19740      eventType = nextNoWhitespace(xpp);
19741    }
19742    next(xpp);
19743    parseElementClose(res);
19744    return res;
19745  }
19746
19747  protected boolean parseStructureMapStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19748      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
19749        res.setContextElement(parseId(xpp));
19750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
19751        res.setMinElement(parseInteger(xpp));
19752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
19753        res.setMaxElement(parseString(xpp));
19754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19755        res.setTypeElement(parseString(xpp));
19756      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
19757        res.setDefaultValue(parseType("defaultValue", xpp));
19758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
19759        res.setElementElement(parseString(xpp));
19760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
19761        res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
19762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
19763        res.setVariableElement(parseId(xpp));
19764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
19765        res.setConditionElement(parseString(xpp));
19766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
19767        res.setCheckElement(parseString(xpp));
19768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("logMessage")) {
19769        res.setLogMessageElement(parseString(xpp));
19770      } else if (!parseBackboneElementContent(eventType, xpp, res))
19771        return false;
19772    return true;
19773  }
19774
19775  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapStructureMapGroupRuleTargetComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
19776    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
19777    parseBackboneAttributes(xpp, res);
19778    next(xpp);
19779    int eventType = nextNoWhitespace(xpp);
19780    while (eventType != XmlPullParser.END_TAG) {
19781  if (!parseStructureMapStructureMapGroupRuleTargetComponentContent(eventType, xpp, owner, res))
19782        unknownContent(xpp);
19783      eventType = nextNoWhitespace(xpp);
19784    }
19785    next(xpp);
19786    parseElementClose(res);
19787    return res;
19788  }
19789
19790  protected boolean parseStructureMapStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19791      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
19792        res.setContextElement(parseId(xpp));
19793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
19794        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
19795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
19796        res.setElementElement(parseString(xpp));
19797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
19798        res.setVariableElement(parseId(xpp));
19799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
19800        res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
19801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
19802        res.setListRuleIdElement(parseId(xpp));
19803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
19804        res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
19805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
19806        res.getParameter().add(parseStructureMapStructureMapGroupRuleTargetParameterComponent(xpp, owner));
19807      } else if (!parseBackboneElementContent(eventType, xpp, res))
19808        return false;
19809    return true;
19810  }
19811
19812  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
19813    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
19814    parseBackboneAttributes(xpp, res);
19815    next(xpp);
19816    int eventType = nextNoWhitespace(xpp);
19817    while (eventType != XmlPullParser.END_TAG) {
19818  if (!parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, owner, res))
19819        unknownContent(xpp);
19820      eventType = nextNoWhitespace(xpp);
19821    }
19822    next(xpp);
19823    parseElementClose(res);
19824    return res;
19825  }
19826
19827  protected boolean parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19828      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19829        res.setValue(parseType("value", xpp));
19830      } else if (!parseBackboneElementContent(eventType, xpp, res))
19831        return false;
19832    return true;
19833  }
19834
19835  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapStructureMapGroupRuleDependentComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
19836    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
19837    parseBackboneAttributes(xpp, res);
19838    next(xpp);
19839    int eventType = nextNoWhitespace(xpp);
19840    while (eventType != XmlPullParser.END_TAG) {
19841  if (!parseStructureMapStructureMapGroupRuleDependentComponentContent(eventType, xpp, owner, res))
19842        unknownContent(xpp);
19843      eventType = nextNoWhitespace(xpp);
19844    }
19845    next(xpp);
19846    parseElementClose(res);
19847    return res;
19848  }
19849
19850  protected boolean parseStructureMapStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19851      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19852        res.setNameElement(parseId(xpp));
19853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
19854        res.getVariable().add(parseString(xpp));
19855      } else if (!parseBackboneElementContent(eventType, xpp, res))
19856        return false;
19857    return true;
19858  }
19859
19860  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19861    Subscription res = new Subscription();
19862    parseDomainResourceAttributes(xpp, res);
19863    next(xpp);
19864    int eventType = nextNoWhitespace(xpp);
19865    while (eventType != XmlPullParser.END_TAG) {
19866  if (!parseSubscriptionContent(eventType, xpp, res))
19867        unknownContent(xpp);
19868      eventType = nextNoWhitespace(xpp);
19869    }
19870    next(xpp);
19871    parseElementClose(res);
19872    return res;
19873  }
19874
19875  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
19876      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19877        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
19878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19879        res.getContact().add(parseContactPoint(xpp));
19880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
19881        res.setEndElement(parseInstant(xpp));
19882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
19883        res.setReasonElement(parseString(xpp));
19884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
19885        res.setCriteriaElement(parseString(xpp));
19886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
19887        res.setErrorElement(parseString(xpp));
19888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
19889        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
19890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
19891        res.getTag().add(parseCoding(xpp));
19892      } else if (!parseDomainResourceContent(eventType, xpp, res))
19893        return false;
19894    return true;
19895  }
19896
19897  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
19898    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
19899    parseBackboneAttributes(xpp, res);
19900    next(xpp);
19901    int eventType = nextNoWhitespace(xpp);
19902    while (eventType != XmlPullParser.END_TAG) {
19903  if (!parseSubscriptionSubscriptionChannelComponentContent(eventType, xpp, owner, res))
19904        unknownContent(xpp);
19905      eventType = nextNoWhitespace(xpp);
19906    }
19907    next(xpp);
19908    parseElementClose(res);
19909    return res;
19910  }
19911
19912  protected boolean parseSubscriptionSubscriptionChannelComponentContent(int eventType, XmlPullParser xpp, Subscription owner, Subscription.SubscriptionChannelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19913      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19914        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
19915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
19916        res.setEndpointElement(parseUrl(xpp));
19917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
19918        res.setPayloadElement(parseString(xpp));
19919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
19920        res.getHeader().add(parseString(xpp));
19921      } else if (!parseBackboneElementContent(eventType, xpp, res))
19922        return false;
19923    return true;
19924  }
19925
19926  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19927    Substance res = new Substance();
19928    parseDomainResourceAttributes(xpp, res);
19929    next(xpp);
19930    int eventType = nextNoWhitespace(xpp);
19931    while (eventType != XmlPullParser.END_TAG) {
19932  if (!parseSubstanceContent(eventType, xpp, res))
19933        unknownContent(xpp);
19934      eventType = nextNoWhitespace(xpp);
19935    }
19936    next(xpp);
19937    parseElementClose(res);
19938    return res;
19939  }
19940
19941  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
19942      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19943        res.getIdentifier().add(parseIdentifier(xpp));
19944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19945        res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
19946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19947        res.getCategory().add(parseCodeableConcept(xpp));
19948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19949        res.setCode(parseCodeableConcept(xpp));
19950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19951        res.setDescriptionElement(parseString(xpp));
19952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
19953        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
19954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
19955        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
19956      } else if (!parseDomainResourceContent(eventType, xpp, res))
19957        return false;
19958    return true;
19959  }
19960
19961  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
19962    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
19963    parseBackboneAttributes(xpp, res);
19964    next(xpp);
19965    int eventType = nextNoWhitespace(xpp);
19966    while (eventType != XmlPullParser.END_TAG) {
19967  if (!parseSubstanceSubstanceInstanceComponentContent(eventType, xpp, owner, res))
19968        unknownContent(xpp);
19969      eventType = nextNoWhitespace(xpp);
19970    }
19971    next(xpp);
19972    parseElementClose(res);
19973    return res;
19974  }
19975
19976  protected boolean parseSubstanceSubstanceInstanceComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19978        res.setIdentifier(parseIdentifier(xpp));
19979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
19980        res.setExpiryElement(parseDateTime(xpp));
19981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19982        res.setQuantity(parseQuantity(xpp));
19983      } else if (!parseBackboneElementContent(eventType, xpp, res))
19984        return false;
19985    return true;
19986  }
19987
19988  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
19989    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
19990    parseBackboneAttributes(xpp, res);
19991    next(xpp);
19992    int eventType = nextNoWhitespace(xpp);
19993    while (eventType != XmlPullParser.END_TAG) {
19994  if (!parseSubstanceSubstanceIngredientComponentContent(eventType, xpp, owner, res))
19995        unknownContent(xpp);
19996      eventType = nextNoWhitespace(xpp);
19997    }
19998    next(xpp);
19999    parseElementClose(res);
20000    return res;
20001  }
20002
20003  protected boolean parseSubstanceSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20004      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20005        res.setQuantity(parseRatio(xpp));
20006      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
20007        res.setSubstance(parseType("substance", xpp));
20008      } else if (!parseBackboneElementContent(eventType, xpp, res))
20009        return false;
20010    return true;
20011  }
20012
20013  protected SubstancePolymer parseSubstancePolymer(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20014    SubstancePolymer res = new SubstancePolymer();
20015    parseDomainResourceAttributes(xpp, res);
20016    next(xpp);
20017    int eventType = nextNoWhitespace(xpp);
20018    while (eventType != XmlPullParser.END_TAG) {
20019  if (!parseSubstancePolymerContent(eventType, xpp, res))
20020        unknownContent(xpp);
20021      eventType = nextNoWhitespace(xpp);
20022    }
20023    next(xpp);
20024    parseElementClose(res);
20025    return res;
20026  }
20027
20028  protected boolean parseSubstancePolymerContent(int eventType, XmlPullParser xpp, SubstancePolymer res) throws XmlPullParserException, IOException, FHIRFormatError {
20029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
20030        res.setClass_(parseCodeableConcept(xpp));
20031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geometry")) {
20032        res.setGeometry(parseCodeableConcept(xpp));
20033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copolymerConnectivity")) {
20034        res.getCopolymerConnectivity().add(parseCodeableConcept(xpp));
20035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modification")) {
20036        res.getModification().add(parseString(xpp));
20037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monomerSet")) {
20038        res.getMonomerSet().add(parseSubstancePolymerSubstancePolymerMonomerSetComponent(xpp, res));
20039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
20040        res.getRepeat().add(parseSubstancePolymerSubstancePolymerRepeatComponent(xpp, res));
20041      } else if (!parseDomainResourceContent(eventType, xpp, res))
20042        return false;
20043    return true;
20044  }
20045
20046  protected SubstancePolymer.SubstancePolymerMonomerSetComponent parseSubstancePolymerSubstancePolymerMonomerSetComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20047    SubstancePolymer.SubstancePolymerMonomerSetComponent res = new SubstancePolymer.SubstancePolymerMonomerSetComponent();
20048    parseBackboneAttributes(xpp, res);
20049    next(xpp);
20050    int eventType = nextNoWhitespace(xpp);
20051    while (eventType != XmlPullParser.END_TAG) {
20052  if (!parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(eventType, xpp, owner, res))
20053        unknownContent(xpp);
20054      eventType = nextNoWhitespace(xpp);
20055    }
20056    next(xpp);
20057    parseElementClose(res);
20058    return res;
20059  }
20060
20061  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20062      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ratioType")) {
20063        res.setRatioType(parseCodeableConcept(xpp));
20064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startingMaterial")) {
20065        res.getStartingMaterial().add(parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(xpp, owner));
20066      } else if (!parseBackboneElementContent(eventType, xpp, res))
20067        return false;
20068    return true;
20069  }
20070
20071  protected SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20072    SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res = new SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent();
20073    parseBackboneAttributes(xpp, res);
20074    next(xpp);
20075    int eventType = nextNoWhitespace(xpp);
20076    while (eventType != XmlPullParser.END_TAG) {
20077  if (!parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(eventType, xpp, owner, res))
20078        unknownContent(xpp);
20079      eventType = nextNoWhitespace(xpp);
20080    }
20081    next(xpp);
20082    parseElementClose(res);
20083    return res;
20084  }
20085
20086  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20087      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
20088        res.setMaterial(parseCodeableConcept(xpp));
20089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20090        res.setType(parseCodeableConcept(xpp));
20091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
20092        res.setIsDefiningElement(parseBoolean(xpp));
20093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20094        res.setAmount(parseSubstanceAmount(xpp));
20095      } else if (!parseBackboneElementContent(eventType, xpp, res))
20096        return false;
20097    return true;
20098  }
20099
20100  protected SubstancePolymer.SubstancePolymerRepeatComponent parseSubstancePolymerSubstancePolymerRepeatComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20101    SubstancePolymer.SubstancePolymerRepeatComponent res = new SubstancePolymer.SubstancePolymerRepeatComponent();
20102    parseBackboneAttributes(xpp, res);
20103    next(xpp);
20104    int eventType = nextNoWhitespace(xpp);
20105    while (eventType != XmlPullParser.END_TAG) {
20106  if (!parseSubstancePolymerSubstancePolymerRepeatComponentContent(eventType, xpp, owner, res))
20107        unknownContent(xpp);
20108      eventType = nextNoWhitespace(xpp);
20109    }
20110    next(xpp);
20111    parseElementClose(res);
20112    return res;
20113  }
20114
20115  protected boolean parseSubstancePolymerSubstancePolymerRepeatComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20116      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfUnits")) {
20117        res.setNumberOfUnitsElement(parseInteger(xpp));
20118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("averageMolecularFormula")) {
20119        res.setAverageMolecularFormulaElement(parseString(xpp));
20120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnitAmountType")) {
20121        res.setRepeatUnitAmountType(parseCodeableConcept(xpp));
20122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
20123        res.getRepeatUnit().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(xpp, owner));
20124      } else if (!parseBackboneElementContent(eventType, xpp, res))
20125        return false;
20126    return true;
20127  }
20128
20129  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20130    SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent();
20131    parseBackboneAttributes(xpp, res);
20132    next(xpp);
20133    int eventType = nextNoWhitespace(xpp);
20134    while (eventType != XmlPullParser.END_TAG) {
20135  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(eventType, xpp, owner, res))
20136        unknownContent(xpp);
20137      eventType = nextNoWhitespace(xpp);
20138    }
20139    next(xpp);
20140    parseElementClose(res);
20141    return res;
20142  }
20143
20144  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20145      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientationOfPolymerisation")) {
20146        res.setOrientationOfPolymerisation(parseCodeableConcept(xpp));
20147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
20148        res.setRepeatUnitElement(parseString(xpp));
20149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20150        res.setAmount(parseSubstanceAmount(xpp));
20151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degreeOfPolymerisation")) {
20152        res.getDegreeOfPolymerisation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(xpp, owner));
20153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structuralRepresentation")) {
20154        res.getStructuralRepresentation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(xpp, owner));
20155      } else if (!parseBackboneElementContent(eventType, xpp, res))
20156        return false;
20157    return true;
20158  }
20159
20160  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20161    SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent();
20162    parseBackboneAttributes(xpp, res);
20163    next(xpp);
20164    int eventType = nextNoWhitespace(xpp);
20165    while (eventType != XmlPullParser.END_TAG) {
20166  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(eventType, xpp, owner, res))
20167        unknownContent(xpp);
20168      eventType = nextNoWhitespace(xpp);
20169    }
20170    next(xpp);
20171    parseElementClose(res);
20172    return res;
20173  }
20174
20175  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20176      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degree")) {
20177        res.setDegree(parseCodeableConcept(xpp));
20178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20179        res.setAmount(parseSubstanceAmount(xpp));
20180      } else if (!parseBackboneElementContent(eventType, xpp, res))
20181        return false;
20182    return true;
20183  }
20184
20185  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20186    SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent();
20187    parseBackboneAttributes(xpp, res);
20188    next(xpp);
20189    int eventType = nextNoWhitespace(xpp);
20190    while (eventType != XmlPullParser.END_TAG) {
20191  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(eventType, xpp, owner, res))
20192        unknownContent(xpp);
20193      eventType = nextNoWhitespace(xpp);
20194    }
20195    next(xpp);
20196    parseElementClose(res);
20197    return res;
20198  }
20199
20200  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20201      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20202        res.setType(parseCodeableConcept(xpp));
20203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
20204        res.setRepresentationElement(parseString(xpp));
20205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
20206        res.setAttachment(parseAttachment(xpp));
20207      } else if (!parseBackboneElementContent(eventType, xpp, res))
20208        return false;
20209    return true;
20210  }
20211
20212  protected SubstanceReferenceInformation parseSubstanceReferenceInformation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20213    SubstanceReferenceInformation res = new SubstanceReferenceInformation();
20214    parseDomainResourceAttributes(xpp, res);
20215    next(xpp);
20216    int eventType = nextNoWhitespace(xpp);
20217    while (eventType != XmlPullParser.END_TAG) {
20218  if (!parseSubstanceReferenceInformationContent(eventType, xpp, res))
20219        unknownContent(xpp);
20220      eventType = nextNoWhitespace(xpp);
20221    }
20222    next(xpp);
20223    parseElementClose(res);
20224    return res;
20225  }
20226
20227  protected boolean parseSubstanceReferenceInformationContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation res) throws XmlPullParserException, IOException, FHIRFormatError {
20228      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20229        res.setCommentElement(parseString(xpp));
20230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
20231        res.getGene().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(xpp, res));
20232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneElement")) {
20233        res.getGeneElement().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(xpp, res));
20234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
20235        res.getClassification().add(parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(xpp, res));
20236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
20237        res.getRelationship().add(parseSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(xpp, res));
20238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20239        res.getTarget().add(parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(xpp, res));
20240      } else if (!parseDomainResourceContent(eventType, xpp, res))
20241        return false;
20242    return true;
20243  }
20244
20245  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20246    SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent();
20247    parseBackboneAttributes(xpp, res);
20248    next(xpp);
20249    int eventType = nextNoWhitespace(xpp);
20250    while (eventType != XmlPullParser.END_TAG) {
20251  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(eventType, xpp, owner, res))
20252        unknownContent(xpp);
20253      eventType = nextNoWhitespace(xpp);
20254    }
20255    next(xpp);
20256    parseElementClose(res);
20257    return res;
20258  }
20259
20260  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20261      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneSequenceOrigin")) {
20262        res.setGeneSequenceOrigin(parseCodeableConcept(xpp));
20263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
20264        res.setGene(parseCodeableConcept(xpp));
20265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20266        res.getSource().add(parseReference(xpp));
20267      } else if (!parseBackboneElementContent(eventType, xpp, res))
20268        return false;
20269    return true;
20270  }
20271
20272  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20273    SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent();
20274    parseBackboneAttributes(xpp, res);
20275    next(xpp);
20276    int eventType = nextNoWhitespace(xpp);
20277    while (eventType != XmlPullParser.END_TAG) {
20278  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(eventType, xpp, owner, res))
20279        unknownContent(xpp);
20280      eventType = nextNoWhitespace(xpp);
20281    }
20282    next(xpp);
20283    parseElementClose(res);
20284    return res;
20285  }
20286
20287  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20288      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20289        res.setType(parseCodeableConcept(xpp));
20290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20291        res.setElement(parseIdentifier(xpp));
20292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20293        res.getSource().add(parseReference(xpp));
20294      } else if (!parseBackboneElementContent(eventType, xpp, res))
20295        return false;
20296    return true;
20297  }
20298
20299  protected SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20300    SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent();
20301    parseBackboneAttributes(xpp, res);
20302    next(xpp);
20303    int eventType = nextNoWhitespace(xpp);
20304    while (eventType != XmlPullParser.END_TAG) {
20305  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(eventType, xpp, owner, res))
20306        unknownContent(xpp);
20307      eventType = nextNoWhitespace(xpp);
20308    }
20309    next(xpp);
20310    parseElementClose(res);
20311    return res;
20312  }
20313
20314  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
20316        res.setDomain(parseCodeableConcept(xpp));
20317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
20318        res.setClassification(parseCodeableConcept(xpp));
20319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
20320        res.getSubtype().add(parseCodeableConcept(xpp));
20321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20322        res.getSource().add(parseReference(xpp));
20323      } else if (!parseBackboneElementContent(eventType, xpp, res))
20324        return false;
20325    return true;
20326  }
20327
20328  protected SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent parseSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20329    SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent();
20330    parseBackboneAttributes(xpp, res);
20331    next(xpp);
20332    int eventType = nextNoWhitespace(xpp);
20333    while (eventType != XmlPullParser.END_TAG) {
20334  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponentContent(eventType, xpp, owner, res))
20335        unknownContent(xpp);
20336      eventType = nextNoWhitespace(xpp);
20337    }
20338    next(xpp);
20339    parseElementClose(res);
20340    return res;
20341  }
20342
20343  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20344      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
20345        res.setSubstance(parseType("substance", xpp));
20346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
20347        res.setRelationship(parseCodeableConcept(xpp));
20348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
20349        res.setInteraction(parseCodeableConcept(xpp));
20350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
20351        res.setIsDefiningElement(parseBoolean(xpp));
20352      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
20353        res.setAmount(parseType("amount", xpp));
20354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
20355        res.setAmountType(parseCodeableConcept(xpp));
20356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountText")) {
20357        res.setAmountTextElement(parseString(xpp));
20358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20359        res.getSource().add(parseReference(xpp));
20360      } else if (!parseBackboneElementContent(eventType, xpp, res))
20361        return false;
20362    return true;
20363  }
20364
20365  protected SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20366    SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent();
20367    parseBackboneAttributes(xpp, res);
20368    next(xpp);
20369    int eventType = nextNoWhitespace(xpp);
20370    while (eventType != XmlPullParser.END_TAG) {
20371  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(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 parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20381      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20382        res.setTarget(parseIdentifier(xpp));
20383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20384        res.setType(parseCodeableConcept(xpp));
20385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
20386        res.setInteraction(parseCodeableConcept(xpp));
20387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
20388        res.setOrganism(parseCodeableConcept(xpp));
20389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismType")) {
20390        res.setOrganismType(parseCodeableConcept(xpp));
20391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20392        res.getSource().add(parseReference(xpp));
20393      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
20394        res.setAmount(parseType("amount", xpp));
20395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
20396        res.setAmountType(parseCodeableConcept(xpp));
20397      } else if (!parseBackboneElementContent(eventType, xpp, res))
20398        return false;
20399    return true;
20400  }
20401
20402  protected SubstanceSpecification parseSubstanceSpecification(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20403    SubstanceSpecification res = new SubstanceSpecification();
20404    parseDomainResourceAttributes(xpp, res);
20405    next(xpp);
20406    int eventType = nextNoWhitespace(xpp);
20407    while (eventType != XmlPullParser.END_TAG) {
20408  if (!parseSubstanceSpecificationContent(eventType, xpp, res))
20409        unknownContent(xpp);
20410      eventType = nextNoWhitespace(xpp);
20411    }
20412    next(xpp);
20413    parseElementClose(res);
20414    return res;
20415  }
20416
20417  protected boolean parseSubstanceSpecificationContent(int eventType, XmlPullParser xpp, SubstanceSpecification res) throws XmlPullParserException, IOException, FHIRFormatError {
20418      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20419        res.setCommentElement(parseString(xpp));
20420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stoichiometric")) {
20421        res.setStoichiometricElement(parseBoolean(xpp));
20422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20423        res.setIdentifier(parseIdentifier(xpp));
20424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20425        res.setType(parseCodeableConcept(xpp));
20426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSource")) {
20427        res.getReferenceSource().add(parseString(xpp));
20428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moiety")) {
20429        res.getMoiety().add(parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(xpp, res));
20430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
20431        res.getProperty().add(parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(xpp, res));
20432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceInformation")) {
20433        res.setReferenceInformation(parseReference(xpp));
20434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
20435        res.setStructure(parseSubstanceSpecificationSubstanceSpecificationStructureComponent(xpp, res));
20436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substanceCode")) {
20437        res.getSubstanceCode().add(parseSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(xpp, res));
20438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substanceName")) {
20439        res.getSubstanceName().add(parseSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(xpp, res));
20440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
20441        res.getMolecularWeight().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, res));
20442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("polymer")) {
20443        res.setPolymer(parseReference(xpp));
20444      } else if (!parseDomainResourceContent(eventType, xpp, res))
20445        return false;
20446    return true;
20447  }
20448
20449  protected SubstanceSpecification.SubstanceSpecificationMoietyComponent parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
20450    SubstanceSpecification.SubstanceSpecificationMoietyComponent res = new SubstanceSpecification.SubstanceSpecificationMoietyComponent();
20451    parseBackboneAttributes(xpp, res);
20452    next(xpp);
20453    int eventType = nextNoWhitespace(xpp);
20454    while (eventType != XmlPullParser.END_TAG) {
20455  if (!parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(eventType, xpp, owner, res))
20456        unknownContent(xpp);
20457      eventType = nextNoWhitespace(xpp);
20458    }
20459    next(xpp);
20460    parseElementClose(res);
20461    return res;
20462  }
20463
20464  protected boolean parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationMoietyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20465      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
20466        res.setRole(parseCodeableConcept(xpp));
20467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20468        res.setIdentifier(parseIdentifier(xpp));
20469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20470        res.setNameElement(parseString(xpp));
20471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
20472        res.setStereochemistry(parseCodeableConcept(xpp));
20473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
20474        res.setOpticalActivity(parseCodeableConcept(xpp));
20475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
20476        res.setMolecularFormulaElement(parseString(xpp));
20477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20478        res.setAmountElement(parseString(xpp));
20479      } else if (!parseBackboneElementContent(eventType, xpp, res))
20480        return false;
20481    return true;
20482  }
20483
20484  protected SubstanceSpecification.SubstanceSpecificationPropertyComponent parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
20485    SubstanceSpecification.SubstanceSpecificationPropertyComponent res = new SubstanceSpecification.SubstanceSpecificationPropertyComponent();
20486    parseBackboneAttributes(xpp, res);
20487    next(xpp);
20488    int eventType = nextNoWhitespace(xpp);
20489    while (eventType != XmlPullParser.END_TAG) {
20490  if (!parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(eventType, xpp, owner, res))
20491        unknownContent(xpp);
20492      eventType = nextNoWhitespace(xpp);
20493    }
20494    next(xpp);
20495    parseElementClose(res);
20496    return res;
20497  }
20498
20499  protected boolean parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20500      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20501        res.setType(parseCodeableConcept(xpp));
20502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20503        res.setName(parseCodeableConcept(xpp));
20504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameters")) {
20505        res.setParametersElement(parseString(xpp));
20506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substanceId")) {
20507        res.setSubstanceId(parseIdentifier(xpp));
20508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substanceName")) {
20509        res.setSubstanceNameElement(parseString(xpp));
20510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20511        res.setAmountElement(parseString(xpp));
20512      } else if (!parseBackboneElementContent(eventType, xpp, res))
20513        return false;
20514    return true;
20515  }
20516
20517  protected SubstanceSpecification.SubstanceSpecificationStructureComponent parseSubstanceSpecificationSubstanceSpecificationStructureComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
20518    SubstanceSpecification.SubstanceSpecificationStructureComponent res = new SubstanceSpecification.SubstanceSpecificationStructureComponent();
20519    parseBackboneAttributes(xpp, res);
20520    next(xpp);
20521    int eventType = nextNoWhitespace(xpp);
20522    while (eventType != XmlPullParser.END_TAG) {
20523  if (!parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(eventType, xpp, owner, res))
20524        unknownContent(xpp);
20525      eventType = nextNoWhitespace(xpp);
20526    }
20527    next(xpp);
20528    parseElementClose(res);
20529    return res;
20530  }
20531
20532  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20533      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
20534        res.setStereochemistry(parseCodeableConcept(xpp));
20535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
20536        res.setOpticalActivity(parseCodeableConcept(xpp));
20537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
20538        res.setMolecularFormulaElement(parseString(xpp));
20539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormulaByMoiety")) {
20540        res.setMolecularFormulaByMoietyElement(parseString(xpp));
20541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isotope")) {
20542        res.getIsotope().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(xpp, owner));
20543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
20544        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
20545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSource")) {
20546        res.getReferenceSource().add(parseReference(xpp));
20547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structuralRepresentation")) {
20548        res.getStructuralRepresentation().add(parseSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(xpp, owner));
20549      } else if (!parseBackboneElementContent(eventType, xpp, res))
20550        return false;
20551    return true;
20552  }
20553
20554  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
20555    SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent();
20556    parseBackboneAttributes(xpp, res);
20557    next(xpp);
20558    int eventType = nextNoWhitespace(xpp);
20559    while (eventType != XmlPullParser.END_TAG) {
20560  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(eventType, xpp, owner, res))
20561        unknownContent(xpp);
20562      eventType = nextNoWhitespace(xpp);
20563    }
20564    next(xpp);
20565    parseElementClose(res);
20566    return res;
20567  }
20568
20569  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20570      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nuclideId")) {
20571        res.setNuclideId(parseIdentifier(xpp));
20572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nuclideName")) {
20573        res.setNuclideName(parseCodeableConcept(xpp));
20574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitutionType")) {
20575        res.setSubstitutionType(parseCodeableConcept(xpp));
20576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nuclideHalfLife")) {
20577        res.setNuclideHalfLife(parseQuantity(xpp));
20578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20579        res.setAmountElement(parseString(xpp));
20580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
20581        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
20582      } else if (!parseBackboneElementContent(eventType, xpp, res))
20583        return false;
20584    return true;
20585  }
20586
20587  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
20588    SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent();
20589    parseBackboneAttributes(xpp, res);
20590    next(xpp);
20591    int eventType = nextNoWhitespace(xpp);
20592    while (eventType != XmlPullParser.END_TAG) {
20593  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(eventType, xpp, owner, res))
20594        unknownContent(xpp);
20595      eventType = nextNoWhitespace(xpp);
20596    }
20597    next(xpp);
20598    parseElementClose(res);
20599    return res;
20600  }
20601
20602  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20603      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
20604        res.setMethod(parseCodeableConcept(xpp));
20605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20606        res.setType(parseCodeableConcept(xpp));
20607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20608        res.setAmountElement(parseString(xpp));
20609      } else if (!parseBackboneElementContent(eventType, xpp, res))
20610        return false;
20611    return true;
20612  }
20613
20614  protected SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent parseSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
20615    SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent res = new SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent();
20616    parseBackboneAttributes(xpp, res);
20617    next(xpp);
20618    int eventType = nextNoWhitespace(xpp);
20619    while (eventType != XmlPullParser.END_TAG) {
20620  if (!parseSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponentContent(eventType, xpp, owner, res))
20621        unknownContent(xpp);
20622      eventType = nextNoWhitespace(xpp);
20623    }
20624    next(xpp);
20625    parseElementClose(res);
20626    return res;
20627  }
20628
20629  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20630      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20631        res.setType(parseCodeableConcept(xpp));
20632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
20633        res.setRepresentationElement(parseString(xpp));
20634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
20635        res.setAttachment(parseAttachment(xpp));
20636      } else if (!parseBackboneElementContent(eventType, xpp, res))
20637        return false;
20638    return true;
20639  }
20640
20641  protected SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent parseSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
20642    SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent res = new SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent();
20643    parseBackboneAttributes(xpp, res);
20644    next(xpp);
20645    int eventType = nextNoWhitespace(xpp);
20646    while (eventType != XmlPullParser.END_TAG) {
20647  if (!parseSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponentContent(eventType, xpp, owner, res))
20648        unknownContent(xpp);
20649      eventType = nextNoWhitespace(xpp);
20650    }
20651    next(xpp);
20652    parseElementClose(res);
20653    return res;
20654  }
20655
20656  protected boolean parseSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20657      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20658        res.setCode(parseCodeableConcept(xpp));
20659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20660        res.setStatus(parseCodeableConcept(xpp));
20661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
20662        res.setStatusDateElement(parseDateTime(xpp));
20663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20664        res.setCommentElement(parseString(xpp));
20665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSource")) {
20666        res.getReferenceSource().add(parseString(xpp));
20667      } else if (!parseBackboneElementContent(eventType, xpp, res))
20668        return false;
20669    return true;
20670  }
20671
20672  protected SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent parseSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
20673    SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent res = new SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent();
20674    parseBackboneAttributes(xpp, res);
20675    next(xpp);
20676    int eventType = nextNoWhitespace(xpp);
20677    while (eventType != XmlPullParser.END_TAG) {
20678  if (!parseSubstanceSpecificationSubstanceSpecificationSubstanceNameComponentContent(eventType, xpp, owner, res))
20679        unknownContent(xpp);
20680      eventType = nextNoWhitespace(xpp);
20681    }
20682    next(xpp);
20683    parseElementClose(res);
20684    return res;
20685  }
20686
20687  protected boolean parseSubstanceSpecificationSubstanceSpecificationSubstanceNameComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20688      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20689        res.setNameElement(parseString(xpp));
20690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20691        res.setType(parseCodeableConcept(xpp));
20692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
20693        res.getLanguage().add(parseCodeableConcept(xpp));
20694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
20695        res.getDomain().add(parseCodeableConcept(xpp));
20696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
20697        res.getJurisdiction().add(parseCodeableConcept(xpp));
20698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("officialName")) {
20699        res.getOfficialName().add(parseSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(xpp, owner));
20700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSource")) {
20701        res.getReferenceSource().add(parseString(xpp));
20702      } else if (!parseBackboneElementContent(eventType, xpp, res))
20703        return false;
20704    return true;
20705  }
20706
20707  protected SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent parseSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
20708    SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent res = new SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent();
20709    parseBackboneAttributes(xpp, res);
20710    next(xpp);
20711    int eventType = nextNoWhitespace(xpp);
20712    while (eventType != XmlPullParser.END_TAG) {
20713  if (!parseSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponentContent(eventType, xpp, owner, res))
20714        unknownContent(xpp);
20715      eventType = nextNoWhitespace(xpp);
20716    }
20717    next(xpp);
20718    parseElementClose(res);
20719    return res;
20720  }
20721
20722  protected boolean parseSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20723      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
20724        res.setAuthority(parseCodeableConcept(xpp));
20725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20726        res.setStatus(parseCodeableConcept(xpp));
20727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
20728        res.setDateElement(parseDateTime(xpp));
20729      } else if (!parseBackboneElementContent(eventType, xpp, res))
20730        return false;
20731    return true;
20732  }
20733
20734  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20735    SupplyDelivery res = new SupplyDelivery();
20736    parseDomainResourceAttributes(xpp, res);
20737    next(xpp);
20738    int eventType = nextNoWhitespace(xpp);
20739    while (eventType != XmlPullParser.END_TAG) {
20740  if (!parseSupplyDeliveryContent(eventType, xpp, res))
20741        unknownContent(xpp);
20742      eventType = nextNoWhitespace(xpp);
20743    }
20744    next(xpp);
20745    parseElementClose(res);
20746    return res;
20747  }
20748
20749  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
20750      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20751        res.getIdentifier().add(parseIdentifier(xpp));
20752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
20753        res.getBasedOn().add(parseReference(xpp));
20754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
20755        res.getPartOf().add(parseReference(xpp));
20756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20757        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
20758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
20759        res.setPatient(parseReference(xpp));
20760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20761        res.setType(parseCodeableConcept(xpp));
20762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
20763        res.setSuppliedItem(parseSupplyDeliverySupplyDeliverySuppliedItemComponent(xpp, res));
20764      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
20765        res.setOccurrence(parseType("occurrence", xpp));
20766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
20767        res.setSupplier(parseReference(xpp));
20768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
20769        res.setDestination(parseReference(xpp));
20770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
20771        res.getReceiver().add(parseReference(xpp));
20772      } else if (!parseDomainResourceContent(eventType, xpp, res))
20773        return false;
20774    return true;
20775  }
20776
20777  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySupplyDeliverySuppliedItemComponent(XmlPullParser xpp, SupplyDelivery owner) throws XmlPullParserException, IOException, FHIRFormatError {
20778    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
20779    parseBackboneAttributes(xpp, res);
20780    next(xpp);
20781    int eventType = nextNoWhitespace(xpp);
20782    while (eventType != XmlPullParser.END_TAG) {
20783  if (!parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(eventType, xpp, owner, res))
20784        unknownContent(xpp);
20785      eventType = nextNoWhitespace(xpp);
20786    }
20787    next(xpp);
20788    parseElementClose(res);
20789    return res;
20790  }
20791
20792  protected boolean parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery owner, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20793      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20794        res.setQuantity(parseQuantity(xpp));
20795      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
20796        res.setItem(parseType("item", xpp));
20797      } else if (!parseBackboneElementContent(eventType, xpp, res))
20798        return false;
20799    return true;
20800  }
20801
20802  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20803    SupplyRequest res = new SupplyRequest();
20804    parseDomainResourceAttributes(xpp, res);
20805    next(xpp);
20806    int eventType = nextNoWhitespace(xpp);
20807    while (eventType != XmlPullParser.END_TAG) {
20808  if (!parseSupplyRequestContent(eventType, xpp, res))
20809        unknownContent(xpp);
20810      eventType = nextNoWhitespace(xpp);
20811    }
20812    next(xpp);
20813    parseElementClose(res);
20814    return res;
20815  }
20816
20817  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
20818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20819        res.setIdentifier(parseIdentifier(xpp));
20820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20821        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
20822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
20823        res.setCategory(parseCodeableConcept(xpp));
20824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
20825        res.setPriorityElement(parseEnumeration(xpp, SupplyRequest.RequestPriority.NULL, new SupplyRequest.RequestPriorityEnumFactory()));
20826      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
20827        res.setItem(parseType("item", xpp));
20828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20829        res.setQuantity(parseQuantity(xpp));
20830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
20831        res.getParameter().add(parseSupplyRequestSupplyRequestParameterComponent(xpp, res));
20832      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
20833        res.setOccurrence(parseType("occurrence", xpp));
20834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
20835        res.setAuthoredOnElement(parseDateTime(xpp));
20836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
20837        res.setRequester(parseReference(xpp));
20838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
20839        res.getSupplier().add(parseReference(xpp));
20840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
20841        res.getReasonCode().add(parseCodeableConcept(xpp));
20842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
20843        res.getReasonReference().add(parseReference(xpp));
20844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
20845        res.setDeliverFrom(parseReference(xpp));
20846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
20847        res.setDeliverTo(parseReference(xpp));
20848      } else if (!parseDomainResourceContent(eventType, xpp, res))
20849        return false;
20850    return true;
20851  }
20852
20853  protected SupplyRequest.SupplyRequestParameterComponent parseSupplyRequestSupplyRequestParameterComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
20854    SupplyRequest.SupplyRequestParameterComponent res = new SupplyRequest.SupplyRequestParameterComponent();
20855    parseBackboneAttributes(xpp, res);
20856    next(xpp);
20857    int eventType = nextNoWhitespace(xpp);
20858    while (eventType != XmlPullParser.END_TAG) {
20859  if (!parseSupplyRequestSupplyRequestParameterComponentContent(eventType, xpp, owner, res))
20860        unknownContent(xpp);
20861      eventType = nextNoWhitespace(xpp);
20862    }
20863    next(xpp);
20864    parseElementClose(res);
20865    return res;
20866  }
20867
20868  protected boolean parseSupplyRequestSupplyRequestParameterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20869      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20870        res.setCode(parseCodeableConcept(xpp));
20871      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
20872        res.setValue(parseType("value", xpp));
20873      } else if (!parseBackboneElementContent(eventType, xpp, res))
20874        return false;
20875    return true;
20876  }
20877
20878  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20879    Task res = new Task();
20880    parseDomainResourceAttributes(xpp, res);
20881    next(xpp);
20882    int eventType = nextNoWhitespace(xpp);
20883    while (eventType != XmlPullParser.END_TAG) {
20884  if (!parseTaskContent(eventType, xpp, res))
20885        unknownContent(xpp);
20886      eventType = nextNoWhitespace(xpp);
20887    }
20888    next(xpp);
20889    parseElementClose(res);
20890    return res;
20891  }
20892
20893  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
20894      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20895        res.getIdentifier().add(parseIdentifier(xpp));
20896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
20897        res.setInstantiatesCanonicalElement(parseCanonical(xpp));
20898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
20899        res.setInstantiatesUriElement(parseUri(xpp));
20900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
20901        res.getBasedOn().add(parseReference(xpp));
20902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
20903        res.setGroupIdentifier(parseIdentifier(xpp));
20904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
20905        res.getPartOf().add(parseReference(xpp));
20906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20907        res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
20908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
20909        res.setStatusReason(parseCodeableConcept(xpp));
20910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
20911        res.setBusinessStatus(parseCodeableConcept(xpp));
20912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
20913        res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
20914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
20915        res.setPriorityElement(parseEnumeration(xpp, Task.TaskPriority.NULL, new Task.TaskPriorityEnumFactory()));
20916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20917        res.setCode(parseCodeableConcept(xpp));
20918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20919        res.setDescriptionElement(parseString(xpp));
20920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
20921        res.setFocus(parseReference(xpp));
20922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
20923        res.setFor(parseReference(xpp));
20924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
20925        res.setContext(parseReference(xpp));
20926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
20927        res.setExecutionPeriod(parsePeriod(xpp));
20928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
20929        res.setAuthoredOnElement(parseDateTime(xpp));
20930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
20931        res.setLastModifiedElement(parseDateTime(xpp));
20932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
20933        res.setRequester(parseReference(xpp));
20934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
20935        res.getPerformerType().add(parseCodeableConcept(xpp));
20936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
20937        res.setOwner(parseReference(xpp));
20938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
20939        res.setLocation(parseReference(xpp));
20940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
20941        res.setReasonCode(parseCodeableConcept(xpp));
20942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
20943        res.setReasonReference(parseReference(xpp));
20944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
20945        res.getInsurance().add(parseReference(xpp));
20946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
20947        res.getNote().add(parseAnnotation(xpp));
20948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
20949        res.getRelevantHistory().add(parseReference(xpp));
20950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
20951        res.setRestriction(parseTaskTaskRestrictionComponent(xpp, res));
20952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
20953        res.getInput().add(parseTaskParameterComponent(xpp, res));
20954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
20955        res.getOutput().add(parseTaskTaskOutputComponent(xpp, res));
20956      } else if (!parseDomainResourceContent(eventType, xpp, res))
20957        return false;
20958    return true;
20959  }
20960
20961  protected Task.TaskRestrictionComponent parseTaskTaskRestrictionComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
20962    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
20963    parseBackboneAttributes(xpp, res);
20964    next(xpp);
20965    int eventType = nextNoWhitespace(xpp);
20966    while (eventType != XmlPullParser.END_TAG) {
20967  if (!parseTaskTaskRestrictionComponentContent(eventType, xpp, owner, res))
20968        unknownContent(xpp);
20969      eventType = nextNoWhitespace(xpp);
20970    }
20971    next(xpp);
20972    parseElementClose(res);
20973    return res;
20974  }
20975
20976  protected boolean parseTaskTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
20978        res.setRepetitionsElement(parsePositiveInt(xpp));
20979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
20980        res.setPeriod(parsePeriod(xpp));
20981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
20982        res.getRecipient().add(parseReference(xpp));
20983      } else if (!parseBackboneElementContent(eventType, xpp, res))
20984        return false;
20985    return true;
20986  }
20987
20988  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
20989    Task.ParameterComponent res = new Task.ParameterComponent();
20990    parseBackboneAttributes(xpp, res);
20991    next(xpp);
20992    int eventType = nextNoWhitespace(xpp);
20993    while (eventType != XmlPullParser.END_TAG) {
20994  if (!parseTaskParameterComponentContent(eventType, xpp, owner, res))
20995        unknownContent(xpp);
20996      eventType = nextNoWhitespace(xpp);
20997    }
20998    next(xpp);
20999    parseElementClose(res);
21000    return res;
21001  }
21002
21003  protected boolean parseTaskParameterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21004      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21005        res.setType(parseCodeableConcept(xpp));
21006      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21007        res.setValue(parseType("value", xpp));
21008      } else if (!parseBackboneElementContent(eventType, xpp, res))
21009        return false;
21010    return true;
21011  }
21012
21013  protected Task.TaskOutputComponent parseTaskTaskOutputComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21014    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
21015    parseBackboneAttributes(xpp, res);
21016    next(xpp);
21017    int eventType = nextNoWhitespace(xpp);
21018    while (eventType != XmlPullParser.END_TAG) {
21019  if (!parseTaskTaskOutputComponentContent(eventType, xpp, owner, res))
21020        unknownContent(xpp);
21021      eventType = nextNoWhitespace(xpp);
21022    }
21023    next(xpp);
21024    parseElementClose(res);
21025    return res;
21026  }
21027
21028  protected boolean parseTaskTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21030        res.setType(parseCodeableConcept(xpp));
21031      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21032        res.setValue(parseType("value", xpp));
21033      } else if (!parseBackboneElementContent(eventType, xpp, res))
21034        return false;
21035    return true;
21036  }
21037
21038  protected TerminologyCapabilities parseTerminologyCapabilities(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21039    TerminologyCapabilities res = new TerminologyCapabilities();
21040    parseDomainResourceAttributes(xpp, res);
21041    next(xpp);
21042    int eventType = nextNoWhitespace(xpp);
21043    while (eventType != XmlPullParser.END_TAG) {
21044  if (!parseTerminologyCapabilitiesContent(eventType, xpp, res))
21045        unknownContent(xpp);
21046      eventType = nextNoWhitespace(xpp);
21047    }
21048    next(xpp);
21049    parseElementClose(res);
21050    return res;
21051  }
21052
21053  protected boolean parseTerminologyCapabilitiesContent(int eventType, XmlPullParser xpp, TerminologyCapabilities res) throws XmlPullParserException, IOException, FHIRFormatError {
21054      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21055        res.setUrlElement(parseUri(xpp));
21056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21057        res.setVersionElement(parseString(xpp));
21058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21059        res.setNameElement(parseString(xpp));
21060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
21061        res.setTitleElement(parseString(xpp));
21062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21063        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
21064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
21065        res.setExperimentalElement(parseBoolean(xpp));
21066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21067        res.setDateElement(parseDateTime(xpp));
21068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
21069        res.setPublisherElement(parseString(xpp));
21070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21071        res.getContact().add(parseContactDetail(xpp));
21072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21073        res.setDescriptionElement(parseMarkdown(xpp));
21074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
21075        res.getUseContext().add(parseUsageContext(xpp));
21076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21077        res.getJurisdiction().add(parseCodeableConcept(xpp));
21078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
21079        res.setPurposeElement(parseMarkdown(xpp));
21080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
21081        res.setCopyrightElement(parseMarkdown(xpp));
21082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
21083        res.setKindElement(parseEnumeration(xpp, TerminologyCapabilities.CapabilityStatementKind.NULL, new TerminologyCapabilities.CapabilityStatementKindEnumFactory()));
21084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
21085        res.setSoftware(parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(xpp, res));
21086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
21087        res.setImplementation(parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(xpp, res));
21088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
21089        res.setLockedDateElement(parseBoolean(xpp));
21090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
21091        res.getCodeSystem().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(xpp, res));
21092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
21093        res.setExpansion(parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(xpp, res));
21094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSearch")) {
21095        res.setCodeSearchElement(parseEnumeration(xpp, TerminologyCapabilities.CodeSearchSupport.NULL, new TerminologyCapabilities.CodeSearchSupportEnumFactory()));
21096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateCode")) {
21097        res.setValidateCode(parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(xpp, res));
21098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
21099        res.setTranslation(parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(xpp, res));
21100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closure")) {
21101        res.setClosure(parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(xpp, res));
21102      } else if (!parseDomainResourceContent(eventType, xpp, res))
21103        return false;
21104    return true;
21105  }
21106
21107  protected TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21108    TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res = new TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent();
21109    parseBackboneAttributes(xpp, res);
21110    next(xpp);
21111    int eventType = nextNoWhitespace(xpp);
21112    while (eventType != XmlPullParser.END_TAG) {
21113  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentContent(eventType, xpp, owner, res))
21114        unknownContent(xpp);
21115      eventType = nextNoWhitespace(xpp);
21116    }
21117    next(xpp);
21118    parseElementClose(res);
21119    return res;
21120  }
21121
21122  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21123      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21124        res.setNameElement(parseString(xpp));
21125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21126        res.setVersionElement(parseString(xpp));
21127      } else if (!parseBackboneElementContent(eventType, xpp, res))
21128        return false;
21129    return true;
21130  }
21131
21132  protected TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21133    TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent();
21134    parseBackboneAttributes(xpp, res);
21135    next(xpp);
21136    int eventType = nextNoWhitespace(xpp);
21137    while (eventType != XmlPullParser.END_TAG) {
21138  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentContent(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 parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21148      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21149        res.setDescriptionElement(parseString(xpp));
21150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21151        res.setUrlElement(parseUrl(xpp));
21152      } else if (!parseBackboneElementContent(eventType, xpp, res))
21153        return false;
21154    return true;
21155  }
21156
21157  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21158    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent();
21159    parseBackboneAttributes(xpp, res);
21160    next(xpp);
21161    int eventType = nextNoWhitespace(xpp);
21162    while (eventType != XmlPullParser.END_TAG) {
21163  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(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 parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
21174        res.setUriElement(parseCanonical(xpp));
21175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21176        res.getVersion().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(xpp, owner));
21177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subsumption")) {
21178        res.setSubsumptionElement(parseBoolean(xpp));
21179      } else if (!parseBackboneElementContent(eventType, xpp, res))
21180        return false;
21181    return true;
21182  }
21183
21184  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21185    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent();
21186    parseBackboneAttributes(xpp, res);
21187    next(xpp);
21188    int eventType = nextNoWhitespace(xpp);
21189    while (eventType != XmlPullParser.END_TAG) {
21190  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(eventType, xpp, owner, res))
21191        unknownContent(xpp);
21192      eventType = nextNoWhitespace(xpp);
21193    }
21194    next(xpp);
21195    parseElementClose(res);
21196    return res;
21197  }
21198
21199  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21200      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21201        res.setCodeElement(parseString(xpp));
21202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefault")) {
21203        res.setIsDefaultElement(parseBoolean(xpp));
21204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
21205        res.setCompositionalElement(parseBoolean(xpp));
21206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
21207        res.getLanguage().add(parseCode(xpp));
21208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
21209        res.getFilter().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(xpp, owner));
21210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
21211        res.getProperty().add(parseCode(xpp));
21212      } else if (!parseBackboneElementContent(eventType, xpp, res))
21213        return false;
21214    return true;
21215  }
21216
21217  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21218    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent();
21219    parseBackboneAttributes(xpp, res);
21220    next(xpp);
21221    int eventType = nextNoWhitespace(xpp);
21222    while (eventType != XmlPullParser.END_TAG) {
21223  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(eventType, xpp, owner, res))
21224        unknownContent(xpp);
21225      eventType = nextNoWhitespace(xpp);
21226    }
21227    next(xpp);
21228    parseElementClose(res);
21229    return res;
21230  }
21231
21232  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21233      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21234        res.setCodeElement(parseCode(xpp));
21235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
21236        res.getOp().add(parseCode(xpp));
21237      } else if (!parseBackboneElementContent(eventType, xpp, res))
21238        return false;
21239    return true;
21240  }
21241
21242  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21243    TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent();
21244    parseBackboneAttributes(xpp, res);
21245    next(xpp);
21246    int eventType = nextNoWhitespace(xpp);
21247    while (eventType != XmlPullParser.END_TAG) {
21248  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(eventType, xpp, owner, res))
21249        unknownContent(xpp);
21250      eventType = nextNoWhitespace(xpp);
21251    }
21252    next(xpp);
21253    parseElementClose(res);
21254    return res;
21255  }
21256
21257  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21258      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchical")) {
21259        res.setHierarchicalElement(parseBoolean(xpp));
21260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paging")) {
21261        res.setPagingElement(parseBoolean(xpp));
21262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomplete")) {
21263        res.setIncompleteElement(parseBoolean(xpp));
21264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
21265        res.getParameter().add(parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(xpp, owner));
21266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textFilter")) {
21267        res.setTextFilterElement(parseMarkdown(xpp));
21268      } else if (!parseBackboneElementContent(eventType, xpp, res))
21269        return false;
21270    return true;
21271  }
21272
21273  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21274    TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent();
21275    parseBackboneAttributes(xpp, res);
21276    next(xpp);
21277    int eventType = nextNoWhitespace(xpp);
21278    while (eventType != XmlPullParser.END_TAG) {
21279  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentContent(eventType, xpp, owner, res))
21280        unknownContent(xpp);
21281      eventType = nextNoWhitespace(xpp);
21282    }
21283    next(xpp);
21284    parseElementClose(res);
21285    return res;
21286  }
21287
21288  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21289      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21290        res.setNameElement(parseCode(xpp));
21291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
21292        res.setDocumentationElement(parseString(xpp));
21293      } else if (!parseBackboneElementContent(eventType, xpp, res))
21294        return false;
21295    return true;
21296  }
21297
21298  protected TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21299    TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res = new TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent();
21300    parseBackboneAttributes(xpp, res);
21301    next(xpp);
21302    int eventType = nextNoWhitespace(xpp);
21303    while (eventType != XmlPullParser.END_TAG) {
21304  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(eventType, xpp, owner, res))
21305        unknownContent(xpp);
21306      eventType = nextNoWhitespace(xpp);
21307    }
21308    next(xpp);
21309    parseElementClose(res);
21310    return res;
21311  }
21312
21313  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21314      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translations")) {
21315        res.setTranslationsElement(parseBoolean(xpp));
21316      } else if (!parseBackboneElementContent(eventType, xpp, res))
21317        return false;
21318    return true;
21319  }
21320
21321  protected TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21322    TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent();
21323    parseBackboneAttributes(xpp, res);
21324    next(xpp);
21325    int eventType = nextNoWhitespace(xpp);
21326    while (eventType != XmlPullParser.END_TAG) {
21327  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(eventType, xpp, owner, res))
21328        unknownContent(xpp);
21329      eventType = nextNoWhitespace(xpp);
21330    }
21331    next(xpp);
21332    parseElementClose(res);
21333    return res;
21334  }
21335
21336  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21337      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("needsMap")) {
21338        res.setNeedsMapElement(parseBoolean(xpp));
21339      } else if (!parseBackboneElementContent(eventType, xpp, res))
21340        return false;
21341    return true;
21342  }
21343
21344  protected TerminologyCapabilities.TerminologyCapabilitiesClosureComponent parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
21345    TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res = new TerminologyCapabilities.TerminologyCapabilitiesClosureComponent();
21346    parseBackboneAttributes(xpp, res);
21347    next(xpp);
21348    int eventType = nextNoWhitespace(xpp);
21349    while (eventType != XmlPullParser.END_TAG) {
21350  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(eventType, xpp, owner, res))
21351        unknownContent(xpp);
21352      eventType = nextNoWhitespace(xpp);
21353    }
21354    next(xpp);
21355    parseElementClose(res);
21356    return res;
21357  }
21358
21359  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21360      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
21361        res.setTranslationElement(parseBoolean(xpp));
21362      } else if (!parseBackboneElementContent(eventType, xpp, res))
21363        return false;
21364    return true;
21365  }
21366
21367  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21368    TestReport res = new TestReport();
21369    parseDomainResourceAttributes(xpp, res);
21370    next(xpp);
21371    int eventType = nextNoWhitespace(xpp);
21372    while (eventType != XmlPullParser.END_TAG) {
21373  if (!parseTestReportContent(eventType, xpp, res))
21374        unknownContent(xpp);
21375      eventType = nextNoWhitespace(xpp);
21376    }
21377    next(xpp);
21378    parseElementClose(res);
21379    return res;
21380  }
21381
21382  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
21383      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21384        res.setIdentifier(parseIdentifier(xpp));
21385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21386        res.setNameElement(parseString(xpp));
21387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21388        res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
21389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
21390        res.setTestScript(parseReference(xpp));
21391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
21392        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
21393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
21394        res.setScoreElement(parseDecimal(xpp));
21395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
21396        res.setTesterElement(parseString(xpp));
21397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
21398        res.setIssuedElement(parseDateTime(xpp));
21399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
21400        res.getParticipant().add(parseTestReportTestReportParticipantComponent(xpp, res));
21401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
21402        res.setSetup(parseTestReportTestReportSetupComponent(xpp, res));
21403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
21404        res.getTest().add(parseTestReportTestReportTestComponent(xpp, res));
21405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
21406        res.setTeardown(parseTestReportTestReportTeardownComponent(xpp, res));
21407      } else if (!parseDomainResourceContent(eventType, xpp, res))
21408        return false;
21409    return true;
21410  }
21411
21412  protected TestReport.TestReportParticipantComponent parseTestReportTestReportParticipantComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
21413    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
21414    parseBackboneAttributes(xpp, res);
21415    next(xpp);
21416    int eventType = nextNoWhitespace(xpp);
21417    while (eventType != XmlPullParser.END_TAG) {
21418  if (!parseTestReportTestReportParticipantComponentContent(eventType, xpp, owner, res))
21419        unknownContent(xpp);
21420      eventType = nextNoWhitespace(xpp);
21421    }
21422    next(xpp);
21423    parseElementClose(res);
21424    return res;
21425  }
21426
21427  protected boolean parseTestReportTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21429        res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
21430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
21431        res.setUriElement(parseUri(xpp));
21432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
21433        res.setDisplayElement(parseString(xpp));
21434      } else if (!parseBackboneElementContent(eventType, xpp, res))
21435        return false;
21436    return true;
21437  }
21438
21439  protected TestReport.TestReportSetupComponent parseTestReportTestReportSetupComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
21440    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
21441    parseBackboneAttributes(xpp, res);
21442    next(xpp);
21443    int eventType = nextNoWhitespace(xpp);
21444    while (eventType != XmlPullParser.END_TAG) {
21445  if (!parseTestReportTestReportSetupComponentContent(eventType, xpp, owner, res))
21446        unknownContent(xpp);
21447      eventType = nextNoWhitespace(xpp);
21448    }
21449    next(xpp);
21450    parseElementClose(res);
21451    return res;
21452  }
21453
21454  protected boolean parseTestReportTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
21456        res.getAction().add(parseTestReportSetupActionComponent(xpp, owner));
21457      } else if (!parseBackboneElementContent(eventType, xpp, res))
21458        return false;
21459    return true;
21460  }
21461
21462  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
21463    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
21464    parseBackboneAttributes(xpp, res);
21465    next(xpp);
21466    int eventType = nextNoWhitespace(xpp);
21467    while (eventType != XmlPullParser.END_TAG) {
21468  if (!parseTestReportSetupActionComponentContent(eventType, xpp, owner, res))
21469        unknownContent(xpp);
21470      eventType = nextNoWhitespace(xpp);
21471    }
21472    next(xpp);
21473    parseElementClose(res);
21474    return res;
21475  }
21476
21477  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21478      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
21479        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
21480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
21481        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
21482      } else if (!parseBackboneElementContent(eventType, xpp, res))
21483        return false;
21484    return true;
21485  }
21486
21487  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
21488    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
21489    parseBackboneAttributes(xpp, res);
21490    next(xpp);
21491    int eventType = nextNoWhitespace(xpp);
21492    while (eventType != XmlPullParser.END_TAG) {
21493  if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, owner, res))
21494        unknownContent(xpp);
21495      eventType = nextNoWhitespace(xpp);
21496    }
21497    next(xpp);
21498    parseElementClose(res);
21499    return res;
21500  }
21501
21502  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21503      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
21504        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
21505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
21506        res.setMessageElement(parseMarkdown(xpp));
21507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
21508        res.setDetailElement(parseUri(xpp));
21509      } else if (!parseBackboneElementContent(eventType, xpp, res))
21510        return false;
21511    return true;
21512  }
21513
21514  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
21515    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
21516    parseBackboneAttributes(xpp, res);
21517    next(xpp);
21518    int eventType = nextNoWhitespace(xpp);
21519    while (eventType != XmlPullParser.END_TAG) {
21520  if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, owner, res))
21521        unknownContent(xpp);
21522      eventType = nextNoWhitespace(xpp);
21523    }
21524    next(xpp);
21525    parseElementClose(res);
21526    return res;
21527  }
21528
21529  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21530      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
21531        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
21532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
21533        res.setMessageElement(parseMarkdown(xpp));
21534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
21535        res.setDetailElement(parseString(xpp));
21536      } else if (!parseBackboneElementContent(eventType, xpp, res))
21537        return false;
21538    return true;
21539  }
21540
21541  protected TestReport.TestReportTestComponent parseTestReportTestReportTestComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
21542    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
21543    parseBackboneAttributes(xpp, res);
21544    next(xpp);
21545    int eventType = nextNoWhitespace(xpp);
21546    while (eventType != XmlPullParser.END_TAG) {
21547  if (!parseTestReportTestReportTestComponentContent(eventType, xpp, owner, res))
21548        unknownContent(xpp);
21549      eventType = nextNoWhitespace(xpp);
21550    }
21551    next(xpp);
21552    parseElementClose(res);
21553    return res;
21554  }
21555
21556  protected boolean parseTestReportTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21558        res.setNameElement(parseString(xpp));
21559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21560        res.setDescriptionElement(parseString(xpp));
21561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
21562        res.getAction().add(parseTestReportTestActionComponent(xpp, owner));
21563      } else if (!parseBackboneElementContent(eventType, xpp, res))
21564        return false;
21565    return true;
21566  }
21567
21568  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
21569    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
21570    parseBackboneAttributes(xpp, res);
21571    next(xpp);
21572    int eventType = nextNoWhitespace(xpp);
21573    while (eventType != XmlPullParser.END_TAG) {
21574  if (!parseTestReportTestActionComponentContent(eventType, xpp, owner, res))
21575        unknownContent(xpp);
21576      eventType = nextNoWhitespace(xpp);
21577    }
21578    next(xpp);
21579    parseElementClose(res);
21580    return res;
21581  }
21582
21583  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21584      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
21585        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
21586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
21587        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
21588      } else if (!parseBackboneElementContent(eventType, xpp, res))
21589        return false;
21590    return true;
21591  }
21592
21593  protected TestReport.TestReportTeardownComponent parseTestReportTestReportTeardownComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
21594    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
21595    parseBackboneAttributes(xpp, res);
21596    next(xpp);
21597    int eventType = nextNoWhitespace(xpp);
21598    while (eventType != XmlPullParser.END_TAG) {
21599  if (!parseTestReportTestReportTeardownComponentContent(eventType, xpp, owner, res))
21600        unknownContent(xpp);
21601      eventType = nextNoWhitespace(xpp);
21602    }
21603    next(xpp);
21604    parseElementClose(res);
21605    return res;
21606  }
21607
21608  protected boolean parseTestReportTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
21610        res.getAction().add(parseTestReportTeardownActionComponent(xpp, owner));
21611      } else if (!parseBackboneElementContent(eventType, xpp, res))
21612        return false;
21613    return true;
21614  }
21615
21616  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
21617    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
21618    parseBackboneAttributes(xpp, res);
21619    next(xpp);
21620    int eventType = nextNoWhitespace(xpp);
21621    while (eventType != XmlPullParser.END_TAG) {
21622  if (!parseTestReportTeardownActionComponentContent(eventType, xpp, owner, res))
21623        unknownContent(xpp);
21624      eventType = nextNoWhitespace(xpp);
21625    }
21626    next(xpp);
21627    parseElementClose(res);
21628    return res;
21629  }
21630
21631  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21632      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
21633        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
21634      } else if (!parseBackboneElementContent(eventType, xpp, res))
21635        return false;
21636    return true;
21637  }
21638
21639  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21640    TestScript res = new TestScript();
21641    parseDomainResourceAttributes(xpp, res);
21642    next(xpp);
21643    int eventType = nextNoWhitespace(xpp);
21644    while (eventType != XmlPullParser.END_TAG) {
21645  if (!parseTestScriptContent(eventType, xpp, res))
21646        unknownContent(xpp);
21647      eventType = nextNoWhitespace(xpp);
21648    }
21649    next(xpp);
21650    parseElementClose(res);
21651    return res;
21652  }
21653
21654  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
21655      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21656        res.setUrlElement(parseUri(xpp));
21657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21658        res.setIdentifier(parseIdentifier(xpp));
21659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21660        res.setVersionElement(parseString(xpp));
21661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21662        res.setNameElement(parseString(xpp));
21663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
21664        res.setTitleElement(parseString(xpp));
21665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21666        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
21667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
21668        res.setExperimentalElement(parseBoolean(xpp));
21669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21670        res.setDateElement(parseDateTime(xpp));
21671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
21672        res.setPublisherElement(parseString(xpp));
21673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21674        res.getContact().add(parseContactDetail(xpp));
21675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21676        res.setDescriptionElement(parseMarkdown(xpp));
21677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
21678        res.getUseContext().add(parseUsageContext(xpp));
21679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21680        res.getJurisdiction().add(parseCodeableConcept(xpp));
21681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
21682        res.setPurposeElement(parseMarkdown(xpp));
21683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
21684        res.setCopyrightElement(parseMarkdown(xpp));
21685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
21686        res.getOrigin().add(parseTestScriptTestScriptOriginComponent(xpp, res));
21687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
21688        res.getDestination().add(parseTestScriptTestScriptDestinationComponent(xpp, res));
21689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
21690        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
21691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
21692        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
21693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
21694        res.getProfile().add(parseReference(xpp));
21695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
21696        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
21697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
21698        res.getRule().add(parseTestScriptTestScriptRuleComponent(xpp, res));
21699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
21700        res.getRuleset().add(parseTestScriptTestScriptRulesetComponent(xpp, res));
21701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
21702        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
21703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
21704        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
21705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
21706        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
21707      } else if (!parseDomainResourceContent(eventType, xpp, res))
21708        return false;
21709    return true;
21710  }
21711
21712  protected TestScript.TestScriptOriginComponent parseTestScriptTestScriptOriginComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21713    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
21714    parseBackboneAttributes(xpp, res);
21715    next(xpp);
21716    int eventType = nextNoWhitespace(xpp);
21717    while (eventType != XmlPullParser.END_TAG) {
21718  if (!parseTestScriptTestScriptOriginComponentContent(eventType, xpp, owner, res))
21719        unknownContent(xpp);
21720      eventType = nextNoWhitespace(xpp);
21721    }
21722    next(xpp);
21723    parseElementClose(res);
21724    return res;
21725  }
21726
21727  protected boolean parseTestScriptTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
21729        res.setIndexElement(parseInteger(xpp));
21730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
21731        res.setProfile(parseCoding(xpp));
21732      } else if (!parseBackboneElementContent(eventType, xpp, res))
21733        return false;
21734    return true;
21735  }
21736
21737  protected TestScript.TestScriptDestinationComponent parseTestScriptTestScriptDestinationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21738    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
21739    parseBackboneAttributes(xpp, res);
21740    next(xpp);
21741    int eventType = nextNoWhitespace(xpp);
21742    while (eventType != XmlPullParser.END_TAG) {
21743  if (!parseTestScriptTestScriptDestinationComponentContent(eventType, xpp, owner, res))
21744        unknownContent(xpp);
21745      eventType = nextNoWhitespace(xpp);
21746    }
21747    next(xpp);
21748    parseElementClose(res);
21749    return res;
21750  }
21751
21752  protected boolean parseTestScriptTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21753      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
21754        res.setIndexElement(parseInteger(xpp));
21755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
21756        res.setProfile(parseCoding(xpp));
21757      } else if (!parseBackboneElementContent(eventType, xpp, res))
21758        return false;
21759    return true;
21760  }
21761
21762  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21763    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
21764    parseBackboneAttributes(xpp, res);
21765    next(xpp);
21766    int eventType = nextNoWhitespace(xpp);
21767    while (eventType != XmlPullParser.END_TAG) {
21768  if (!parseTestScriptTestScriptMetadataComponentContent(eventType, xpp, owner, res))
21769        unknownContent(xpp);
21770      eventType = nextNoWhitespace(xpp);
21771    }
21772    next(xpp);
21773    parseElementClose(res);
21774    return res;
21775  }
21776
21777  protected boolean parseTestScriptTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21778      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
21779        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
21780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
21781        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
21782      } else if (!parseBackboneElementContent(eventType, xpp, res))
21783        return false;
21784    return true;
21785  }
21786
21787  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21788    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
21789    parseBackboneAttributes(xpp, res);
21790    next(xpp);
21791    int eventType = nextNoWhitespace(xpp);
21792    while (eventType != XmlPullParser.END_TAG) {
21793  if (!parseTestScriptTestScriptMetadataLinkComponentContent(eventType, xpp, owner, res))
21794        unknownContent(xpp);
21795      eventType = nextNoWhitespace(xpp);
21796    }
21797    next(xpp);
21798    parseElementClose(res);
21799    return res;
21800  }
21801
21802  protected boolean parseTestScriptTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21803      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21804        res.setUrlElement(parseUri(xpp));
21805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21806        res.setDescriptionElement(parseString(xpp));
21807      } else if (!parseBackboneElementContent(eventType, xpp, res))
21808        return false;
21809    return true;
21810  }
21811
21812  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21813    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
21814    parseBackboneAttributes(xpp, res);
21815    next(xpp);
21816    int eventType = nextNoWhitespace(xpp);
21817    while (eventType != XmlPullParser.END_TAG) {
21818  if (!parseTestScriptTestScriptMetadataCapabilityComponentContent(eventType, xpp, owner, res))
21819        unknownContent(xpp);
21820      eventType = nextNoWhitespace(xpp);
21821    }
21822    next(xpp);
21823    parseElementClose(res);
21824    return res;
21825  }
21826
21827  protected boolean parseTestScriptTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21828      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
21829        res.setRequiredElement(parseBoolean(xpp));
21830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
21831        res.setValidatedElement(parseBoolean(xpp));
21832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21833        res.setDescriptionElement(parseString(xpp));
21834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
21835        res.getOrigin().add(parseInteger(xpp));
21836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
21837        res.setDestinationElement(parseInteger(xpp));
21838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
21839        res.getLink().add(parseUri(xpp));
21840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
21841        res.setCapabilitiesElement(parseCanonical(xpp));
21842      } else if (!parseBackboneElementContent(eventType, xpp, res))
21843        return false;
21844    return true;
21845  }
21846
21847  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21848    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
21849    parseBackboneAttributes(xpp, res);
21850    next(xpp);
21851    int eventType = nextNoWhitespace(xpp);
21852    while (eventType != XmlPullParser.END_TAG) {
21853  if (!parseTestScriptTestScriptFixtureComponentContent(eventType, xpp, owner, res))
21854        unknownContent(xpp);
21855      eventType = nextNoWhitespace(xpp);
21856    }
21857    next(xpp);
21858    parseElementClose(res);
21859    return res;
21860  }
21861
21862  protected boolean parseTestScriptTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21863      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
21864        res.setAutocreateElement(parseBoolean(xpp));
21865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
21866        res.setAutodeleteElement(parseBoolean(xpp));
21867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
21868        res.setResource(parseReference(xpp));
21869      } else if (!parseBackboneElementContent(eventType, xpp, res))
21870        return false;
21871    return true;
21872  }
21873
21874  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21875    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
21876    parseBackboneAttributes(xpp, res);
21877    next(xpp);
21878    int eventType = nextNoWhitespace(xpp);
21879    while (eventType != XmlPullParser.END_TAG) {
21880  if (!parseTestScriptTestScriptVariableComponentContent(eventType, xpp, owner, res))
21881        unknownContent(xpp);
21882      eventType = nextNoWhitespace(xpp);
21883    }
21884    next(xpp);
21885    parseElementClose(res);
21886    return res;
21887  }
21888
21889  protected boolean parseTestScriptTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21890      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21891        res.setNameElement(parseString(xpp));
21892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
21893        res.setDefaultValueElement(parseString(xpp));
21894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21895        res.setDescriptionElement(parseString(xpp));
21896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
21897        res.setExpressionElement(parseString(xpp));
21898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
21899        res.setHeaderFieldElement(parseString(xpp));
21900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
21901        res.setHintElement(parseString(xpp));
21902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
21903        res.setPathElement(parseString(xpp));
21904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
21905        res.setSourceIdElement(parseId(xpp));
21906      } else if (!parseBackboneElementContent(eventType, xpp, res))
21907        return false;
21908    return true;
21909  }
21910
21911  protected TestScript.TestScriptRuleComponent parseTestScriptTestScriptRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21912    TestScript.TestScriptRuleComponent res = new TestScript.TestScriptRuleComponent();
21913    parseBackboneAttributes(xpp, res);
21914    next(xpp);
21915    int eventType = nextNoWhitespace(xpp);
21916    while (eventType != XmlPullParser.END_TAG) {
21917  if (!parseTestScriptTestScriptRuleComponentContent(eventType, xpp, owner, res))
21918        unknownContent(xpp);
21919      eventType = nextNoWhitespace(xpp);
21920    }
21921    next(xpp);
21922    parseElementClose(res);
21923    return res;
21924  }
21925
21926  protected boolean parseTestScriptTestScriptRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21927      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
21928        res.setResource(parseReference(xpp));
21929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
21930        res.getParam().add(parseTestScriptRuleParamComponent(xpp, owner));
21931      } else if (!parseBackboneElementContent(eventType, xpp, res))
21932        return false;
21933    return true;
21934  }
21935
21936  protected TestScript.RuleParamComponent parseTestScriptRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21937    TestScript.RuleParamComponent res = new TestScript.RuleParamComponent();
21938    parseBackboneAttributes(xpp, res);
21939    next(xpp);
21940    int eventType = nextNoWhitespace(xpp);
21941    while (eventType != XmlPullParser.END_TAG) {
21942  if (!parseTestScriptRuleParamComponentContent(eventType, xpp, owner, res))
21943        unknownContent(xpp);
21944      eventType = nextNoWhitespace(xpp);
21945    }
21946    next(xpp);
21947    parseElementClose(res);
21948    return res;
21949  }
21950
21951  protected boolean parseTestScriptRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21952      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21953        res.setNameElement(parseString(xpp));
21954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
21955        res.setValueElement(parseString(xpp));
21956      } else if (!parseBackboneElementContent(eventType, xpp, res))
21957        return false;
21958    return true;
21959  }
21960
21961  protected TestScript.TestScriptRulesetComponent parseTestScriptTestScriptRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21962    TestScript.TestScriptRulesetComponent res = new TestScript.TestScriptRulesetComponent();
21963    parseBackboneAttributes(xpp, res);
21964    next(xpp);
21965    int eventType = nextNoWhitespace(xpp);
21966    while (eventType != XmlPullParser.END_TAG) {
21967  if (!parseTestScriptTestScriptRulesetComponentContent(eventType, xpp, owner, res))
21968        unknownContent(xpp);
21969      eventType = nextNoWhitespace(xpp);
21970    }
21971    next(xpp);
21972    parseElementClose(res);
21973    return res;
21974  }
21975
21976  protected boolean parseTestScriptTestScriptRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
21978        res.setResource(parseReference(xpp));
21979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
21980        res.getRule().add(parseTestScriptRulesetRuleComponent(xpp, owner));
21981      } else if (!parseBackboneElementContent(eventType, xpp, res))
21982        return false;
21983    return true;
21984  }
21985
21986  protected TestScript.RulesetRuleComponent parseTestScriptRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
21987    TestScript.RulesetRuleComponent res = new TestScript.RulesetRuleComponent();
21988    parseBackboneAttributes(xpp, res);
21989    next(xpp);
21990    int eventType = nextNoWhitespace(xpp);
21991    while (eventType != XmlPullParser.END_TAG) {
21992  if (!parseTestScriptRulesetRuleComponentContent(eventType, xpp, owner, res))
21993        unknownContent(xpp);
21994      eventType = nextNoWhitespace(xpp);
21995    }
21996    next(xpp);
21997    parseElementClose(res);
21998    return res;
21999  }
22000
22001  protected boolean parseTestScriptRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
22003        res.setRuleIdElement(parseId(xpp));
22004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
22005        res.getParam().add(parseTestScriptRulesetRuleParamComponent(xpp, owner));
22006      } else if (!parseBackboneElementContent(eventType, xpp, res))
22007        return false;
22008    return true;
22009  }
22010
22011  protected TestScript.RulesetRuleParamComponent parseTestScriptRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22012    TestScript.RulesetRuleParamComponent res = new TestScript.RulesetRuleParamComponent();
22013    parseBackboneAttributes(xpp, res);
22014    next(xpp);
22015    int eventType = nextNoWhitespace(xpp);
22016    while (eventType != XmlPullParser.END_TAG) {
22017  if (!parseTestScriptRulesetRuleParamComponentContent(eventType, xpp, owner, res))
22018        unknownContent(xpp);
22019      eventType = nextNoWhitespace(xpp);
22020    }
22021    next(xpp);
22022    parseElementClose(res);
22023    return res;
22024  }
22025
22026  protected boolean parseTestScriptRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22027      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22028        res.setNameElement(parseString(xpp));
22029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22030        res.setValueElement(parseString(xpp));
22031      } else if (!parseBackboneElementContent(eventType, xpp, res))
22032        return false;
22033    return true;
22034  }
22035
22036  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22037    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
22038    parseBackboneAttributes(xpp, res);
22039    next(xpp);
22040    int eventType = nextNoWhitespace(xpp);
22041    while (eventType != XmlPullParser.END_TAG) {
22042  if (!parseTestScriptTestScriptSetupComponentContent(eventType, xpp, owner, res))
22043        unknownContent(xpp);
22044      eventType = nextNoWhitespace(xpp);
22045    }
22046    next(xpp);
22047    parseElementClose(res);
22048    return res;
22049  }
22050
22051  protected boolean parseTestScriptTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22052      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22053        res.getAction().add(parseTestScriptSetupActionComponent(xpp, owner));
22054      } else if (!parseBackboneElementContent(eventType, xpp, res))
22055        return false;
22056    return true;
22057  }
22058
22059  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22060    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
22061    parseBackboneAttributes(xpp, res);
22062    next(xpp);
22063    int eventType = nextNoWhitespace(xpp);
22064    while (eventType != XmlPullParser.END_TAG) {
22065  if (!parseTestScriptSetupActionComponentContent(eventType, xpp, owner, res))
22066        unknownContent(xpp);
22067      eventType = nextNoWhitespace(xpp);
22068    }
22069    next(xpp);
22070    parseElementClose(res);
22071    return res;
22072  }
22073
22074  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22075      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22076        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
22077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22078        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
22079      } else if (!parseBackboneElementContent(eventType, xpp, res))
22080        return false;
22081    return true;
22082  }
22083
22084  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22085    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
22086    parseBackboneAttributes(xpp, res);
22087    next(xpp);
22088    int eventType = nextNoWhitespace(xpp);
22089    while (eventType != XmlPullParser.END_TAG) {
22090  if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, owner, res))
22091        unknownContent(xpp);
22092      eventType = nextNoWhitespace(xpp);
22093    }
22094    next(xpp);
22095    parseElementClose(res);
22096    return res;
22097  }
22098
22099  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22100      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22101        res.setType(parseCoding(xpp));
22102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22103        res.setResourceElement(parseCode(xpp));
22104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
22105        res.setLabelElement(parseString(xpp));
22106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22107        res.setDescriptionElement(parseString(xpp));
22108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
22109        res.setAcceptElement(parseCode(xpp));
22110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
22111        res.setContentTypeElement(parseCode(xpp));
22112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22113        res.setDestinationElement(parseInteger(xpp));
22114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
22115        res.setEncodeRequestUrlElement(parseBoolean(xpp));
22116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22117        res.setOriginElement(parseInteger(xpp));
22118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
22119        res.setParamsElement(parseString(xpp));
22120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
22121        res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
22122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
22123        res.setRequestIdElement(parseId(xpp));
22124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
22125        res.setResponseIdElement(parseId(xpp));
22126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
22127        res.setSourceIdElement(parseId(xpp));
22128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
22129        res.setTargetIdElement(parseId(xpp));
22130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22131        res.setUrlElement(parseString(xpp));
22132      } else if (!parseBackboneElementContent(eventType, xpp, res))
22133        return false;
22134    return true;
22135  }
22136
22137  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22138    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
22139    parseBackboneAttributes(xpp, res);
22140    next(xpp);
22141    int eventType = nextNoWhitespace(xpp);
22142    while (eventType != XmlPullParser.END_TAG) {
22143  if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, owner, res))
22144        unknownContent(xpp);
22145      eventType = nextNoWhitespace(xpp);
22146    }
22147    next(xpp);
22148    parseElementClose(res);
22149    return res;
22150  }
22151
22152  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22153      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
22154        res.setFieldElement(parseString(xpp));
22155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22156        res.setValueElement(parseString(xpp));
22157      } else if (!parseBackboneElementContent(eventType, xpp, res))
22158        return false;
22159    return true;
22160  }
22161
22162  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22163    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
22164    parseBackboneAttributes(xpp, res);
22165    next(xpp);
22166    int eventType = nextNoWhitespace(xpp);
22167    while (eventType != XmlPullParser.END_TAG) {
22168  if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, owner, res))
22169        unknownContent(xpp);
22170      eventType = nextNoWhitespace(xpp);
22171    }
22172    next(xpp);
22173    parseElementClose(res);
22174    return res;
22175  }
22176
22177  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22178      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
22179        res.setLabelElement(parseString(xpp));
22180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22181        res.setDescriptionElement(parseString(xpp));
22182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
22183        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
22184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
22185        res.setCompareToSourceIdElement(parseString(xpp));
22186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
22187        res.setCompareToSourceExpressionElement(parseString(xpp));
22188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
22189        res.setCompareToSourcePathElement(parseString(xpp));
22190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
22191        res.setContentTypeElement(parseCode(xpp));
22192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
22193        res.setExpressionElement(parseString(xpp));
22194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
22195        res.setHeaderFieldElement(parseString(xpp));
22196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
22197        res.setMinimumIdElement(parseString(xpp));
22198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
22199        res.setNavigationLinksElement(parseBoolean(xpp));
22200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
22201        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
22202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
22203        res.setPathElement(parseString(xpp));
22204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
22205        res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
22206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
22207        res.setRequestURLElement(parseString(xpp));
22208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22209        res.setResourceElement(parseCode(xpp));
22210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
22211        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
22212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
22213        res.setResponseCodeElement(parseString(xpp));
22214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
22215        res.setRule(parseTestScriptActionAssertRuleComponent(xpp, owner));
22216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
22217        res.setRuleset(parseTestScriptActionAssertRulesetComponent(xpp, owner));
22218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
22219        res.setSourceIdElement(parseId(xpp));
22220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
22221        res.setValidateProfileIdElement(parseId(xpp));
22222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22223        res.setValueElement(parseString(xpp));
22224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
22225        res.setWarningOnlyElement(parseBoolean(xpp));
22226      } else if (!parseBackboneElementContent(eventType, xpp, res))
22227        return false;
22228    return true;
22229  }
22230
22231  protected TestScript.ActionAssertRuleComponent parseTestScriptActionAssertRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22232    TestScript.ActionAssertRuleComponent res = new TestScript.ActionAssertRuleComponent();
22233    parseBackboneAttributes(xpp, res);
22234    next(xpp);
22235    int eventType = nextNoWhitespace(xpp);
22236    while (eventType != XmlPullParser.END_TAG) {
22237  if (!parseTestScriptActionAssertRuleComponentContent(eventType, xpp, owner, res))
22238        unknownContent(xpp);
22239      eventType = nextNoWhitespace(xpp);
22240    }
22241    next(xpp);
22242    parseElementClose(res);
22243    return res;
22244  }
22245
22246  protected boolean parseTestScriptActionAssertRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22247      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
22248        res.setRuleIdElement(parseId(xpp));
22249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
22250        res.getParam().add(parseTestScriptActionAssertRuleParamComponent(xpp, owner));
22251      } else if (!parseBackboneElementContent(eventType, xpp, res))
22252        return false;
22253    return true;
22254  }
22255
22256  protected TestScript.ActionAssertRuleParamComponent parseTestScriptActionAssertRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22257    TestScript.ActionAssertRuleParamComponent res = new TestScript.ActionAssertRuleParamComponent();
22258    parseBackboneAttributes(xpp, res);
22259    next(xpp);
22260    int eventType = nextNoWhitespace(xpp);
22261    while (eventType != XmlPullParser.END_TAG) {
22262  if (!parseTestScriptActionAssertRuleParamComponentContent(eventType, xpp, owner, res))
22263        unknownContent(xpp);
22264      eventType = nextNoWhitespace(xpp);
22265    }
22266    next(xpp);
22267    parseElementClose(res);
22268    return res;
22269  }
22270
22271  protected boolean parseTestScriptActionAssertRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22272      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22273        res.setNameElement(parseString(xpp));
22274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22275        res.setValueElement(parseString(xpp));
22276      } else if (!parseBackboneElementContent(eventType, xpp, res))
22277        return false;
22278    return true;
22279  }
22280
22281  protected TestScript.ActionAssertRulesetComponent parseTestScriptActionAssertRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22282    TestScript.ActionAssertRulesetComponent res = new TestScript.ActionAssertRulesetComponent();
22283    parseBackboneAttributes(xpp, res);
22284    next(xpp);
22285    int eventType = nextNoWhitespace(xpp);
22286    while (eventType != XmlPullParser.END_TAG) {
22287  if (!parseTestScriptActionAssertRulesetComponentContent(eventType, xpp, owner, res))
22288        unknownContent(xpp);
22289      eventType = nextNoWhitespace(xpp);
22290    }
22291    next(xpp);
22292    parseElementClose(res);
22293    return res;
22294  }
22295
22296  protected boolean parseTestScriptActionAssertRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rulesetId")) {
22298        res.setRulesetIdElement(parseId(xpp));
22299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
22300        res.getRule().add(parseTestScriptActionAssertRulesetRuleComponent(xpp, owner));
22301      } else if (!parseBackboneElementContent(eventType, xpp, res))
22302        return false;
22303    return true;
22304  }
22305
22306  protected TestScript.ActionAssertRulesetRuleComponent parseTestScriptActionAssertRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22307    TestScript.ActionAssertRulesetRuleComponent res = new TestScript.ActionAssertRulesetRuleComponent();
22308    parseBackboneAttributes(xpp, res);
22309    next(xpp);
22310    int eventType = nextNoWhitespace(xpp);
22311    while (eventType != XmlPullParser.END_TAG) {
22312  if (!parseTestScriptActionAssertRulesetRuleComponentContent(eventType, xpp, owner, res))
22313        unknownContent(xpp);
22314      eventType = nextNoWhitespace(xpp);
22315    }
22316    next(xpp);
22317    parseElementClose(res);
22318    return res;
22319  }
22320
22321  protected boolean parseTestScriptActionAssertRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22322      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
22323        res.setRuleIdElement(parseId(xpp));
22324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
22325        res.getParam().add(parseTestScriptActionAssertRulesetRuleParamComponent(xpp, owner));
22326      } else if (!parseBackboneElementContent(eventType, xpp, res))
22327        return false;
22328    return true;
22329  }
22330
22331  protected TestScript.ActionAssertRulesetRuleParamComponent parseTestScriptActionAssertRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22332    TestScript.ActionAssertRulesetRuleParamComponent res = new TestScript.ActionAssertRulesetRuleParamComponent();
22333    parseBackboneAttributes(xpp, res);
22334    next(xpp);
22335    int eventType = nextNoWhitespace(xpp);
22336    while (eventType != XmlPullParser.END_TAG) {
22337  if (!parseTestScriptActionAssertRulesetRuleParamComponentContent(eventType, xpp, owner, res))
22338        unknownContent(xpp);
22339      eventType = nextNoWhitespace(xpp);
22340    }
22341    next(xpp);
22342    parseElementClose(res);
22343    return res;
22344  }
22345
22346  protected boolean parseTestScriptActionAssertRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22347      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22348        res.setNameElement(parseString(xpp));
22349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22350        res.setValueElement(parseString(xpp));
22351      } else if (!parseBackboneElementContent(eventType, xpp, res))
22352        return false;
22353    return true;
22354  }
22355
22356  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22357    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
22358    parseBackboneAttributes(xpp, res);
22359    next(xpp);
22360    int eventType = nextNoWhitespace(xpp);
22361    while (eventType != XmlPullParser.END_TAG) {
22362  if (!parseTestScriptTestScriptTestComponentContent(eventType, xpp, owner, res))
22363        unknownContent(xpp);
22364      eventType = nextNoWhitespace(xpp);
22365    }
22366    next(xpp);
22367    parseElementClose(res);
22368    return res;
22369  }
22370
22371  protected boolean parseTestScriptTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22372      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22373        res.setNameElement(parseString(xpp));
22374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22375        res.setDescriptionElement(parseString(xpp));
22376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22377        res.getAction().add(parseTestScriptTestActionComponent(xpp, owner));
22378      } else if (!parseBackboneElementContent(eventType, xpp, res))
22379        return false;
22380    return true;
22381  }
22382
22383  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22384    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
22385    parseBackboneAttributes(xpp, res);
22386    next(xpp);
22387    int eventType = nextNoWhitespace(xpp);
22388    while (eventType != XmlPullParser.END_TAG) {
22389  if (!parseTestScriptTestActionComponentContent(eventType, xpp, owner, res))
22390        unknownContent(xpp);
22391      eventType = nextNoWhitespace(xpp);
22392    }
22393    next(xpp);
22394    parseElementClose(res);
22395    return res;
22396  }
22397
22398  protected boolean parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22399      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22400        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
22401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22402        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
22403      } else if (!parseBackboneElementContent(eventType, xpp, res))
22404        return false;
22405    return true;
22406  }
22407
22408  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22409    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
22410    parseBackboneAttributes(xpp, res);
22411    next(xpp);
22412    int eventType = nextNoWhitespace(xpp);
22413    while (eventType != XmlPullParser.END_TAG) {
22414  if (!parseTestScriptTestScriptTeardownComponentContent(eventType, xpp, owner, res))
22415        unknownContent(xpp);
22416      eventType = nextNoWhitespace(xpp);
22417    }
22418    next(xpp);
22419    parseElementClose(res);
22420    return res;
22421  }
22422
22423  protected boolean parseTestScriptTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22424      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22425        res.getAction().add(parseTestScriptTeardownActionComponent(xpp, owner));
22426      } else if (!parseBackboneElementContent(eventType, xpp, res))
22427        return false;
22428    return true;
22429  }
22430
22431  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22432    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
22433    parseBackboneAttributes(xpp, res);
22434    next(xpp);
22435    int eventType = nextNoWhitespace(xpp);
22436    while (eventType != XmlPullParser.END_TAG) {
22437  if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, owner, res))
22438        unknownContent(xpp);
22439      eventType = nextNoWhitespace(xpp);
22440    }
22441    next(xpp);
22442    parseElementClose(res);
22443    return res;
22444  }
22445
22446  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22447      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22448        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
22449      } else if (!parseBackboneElementContent(eventType, xpp, res))
22450        return false;
22451    return true;
22452  }
22453
22454  protected UserSession parseUserSession(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22455    UserSession res = new UserSession();
22456    parseDomainResourceAttributes(xpp, res);
22457    next(xpp);
22458    int eventType = nextNoWhitespace(xpp);
22459    while (eventType != XmlPullParser.END_TAG) {
22460  if (!parseUserSessionContent(eventType, xpp, res))
22461        unknownContent(xpp);
22462      eventType = nextNoWhitespace(xpp);
22463    }
22464    next(xpp);
22465    parseElementClose(res);
22466    return res;
22467  }
22468
22469  protected boolean parseUserSessionContent(int eventType, XmlPullParser xpp, UserSession res) throws XmlPullParserException, IOException, FHIRFormatError {
22470      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22471        res.setIdentifier(parseIdentifier(xpp));
22472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("user")) {
22473        res.setUser(parseReference(xpp));
22474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22475        res.setStatus(parseUserSessionUserSessionStatusComponent(xpp, res));
22476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workstation")) {
22477        res.setWorkstation(parseIdentifier(xpp));
22478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
22479        res.getFocus().add(parseReference(xpp));
22480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
22481        res.setCreatedElement(parseInstant(xpp));
22482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expires")) {
22483        res.setExpiresElement(parseInstant(xpp));
22484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
22485        res.getContext().add(parseUserSessionUserSessionContextComponent(xpp, res));
22486      } else if (!parseDomainResourceContent(eventType, xpp, res))
22487        return false;
22488    return true;
22489  }
22490
22491  protected UserSession.UserSessionStatusComponent parseUserSessionUserSessionStatusComponent(XmlPullParser xpp, UserSession owner) throws XmlPullParserException, IOException, FHIRFormatError {
22492    UserSession.UserSessionStatusComponent res = new UserSession.UserSessionStatusComponent();
22493    parseBackboneAttributes(xpp, res);
22494    next(xpp);
22495    int eventType = nextNoWhitespace(xpp);
22496    while (eventType != XmlPullParser.END_TAG) {
22497  if (!parseUserSessionUserSessionStatusComponentContent(eventType, xpp, owner, res))
22498        unknownContent(xpp);
22499      eventType = nextNoWhitespace(xpp);
22500    }
22501    next(xpp);
22502    parseElementClose(res);
22503    return res;
22504  }
22505
22506  protected boolean parseUserSessionUserSessionStatusComponentContent(int eventType, XmlPullParser xpp, UserSession owner, UserSession.UserSessionStatusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22507      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22508        res.setCodeElement(parseEnumeration(xpp, UserSession.UserSessionStatus.NULL, new UserSession.UserSessionStatusEnumFactory()));
22509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
22510        res.setSourceElement(parseEnumeration(xpp, UserSession.UserSessionStatusSource.NULL, new UserSession.UserSessionStatusSourceEnumFactory()));
22511      } else if (!parseBackboneElementContent(eventType, xpp, res))
22512        return false;
22513    return true;
22514  }
22515
22516  protected UserSession.UserSessionContextComponent parseUserSessionUserSessionContextComponent(XmlPullParser xpp, UserSession owner) throws XmlPullParserException, IOException, FHIRFormatError {
22517    UserSession.UserSessionContextComponent res = new UserSession.UserSessionContextComponent();
22518    parseBackboneAttributes(xpp, res);
22519    next(xpp);
22520    int eventType = nextNoWhitespace(xpp);
22521    while (eventType != XmlPullParser.END_TAG) {
22522  if (!parseUserSessionUserSessionContextComponentContent(eventType, xpp, owner, res))
22523        unknownContent(xpp);
22524      eventType = nextNoWhitespace(xpp);
22525    }
22526    next(xpp);
22527    parseElementClose(res);
22528    return res;
22529  }
22530
22531  protected boolean parseUserSessionUserSessionContextComponentContent(int eventType, XmlPullParser xpp, UserSession owner, UserSession.UserSessionContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22532      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22533        res.setTypeElement(parseString(xpp));
22534      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
22535        res.setValue(parseType("value", xpp));
22536      } else if (!parseBackboneElementContent(eventType, xpp, res))
22537        return false;
22538    return true;
22539  }
22540
22541  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22542    ValueSet res = new ValueSet();
22543    parseDomainResourceAttributes(xpp, res);
22544    next(xpp);
22545    int eventType = nextNoWhitespace(xpp);
22546    while (eventType != XmlPullParser.END_TAG) {
22547  if (!parseValueSetContent(eventType, xpp, res))
22548        unknownContent(xpp);
22549      eventType = nextNoWhitespace(xpp);
22550    }
22551    next(xpp);
22552    parseElementClose(res);
22553    return res;
22554  }
22555
22556  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
22557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22558        res.setUrlElement(parseUri(xpp));
22559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22560        res.getIdentifier().add(parseIdentifier(xpp));
22561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22562        res.setVersionElement(parseString(xpp));
22563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22564        res.setNameElement(parseString(xpp));
22565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22566        res.setTitleElement(parseString(xpp));
22567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22568        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
22569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
22570        res.setExperimentalElement(parseBoolean(xpp));
22571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22572        res.setDateElement(parseDateTime(xpp));
22573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
22574        res.setPublisherElement(parseString(xpp));
22575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22576        res.getContact().add(parseContactDetail(xpp));
22577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22578        res.setDescriptionElement(parseMarkdown(xpp));
22579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
22580        res.getUseContext().add(parseUsageContext(xpp));
22581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22582        res.getJurisdiction().add(parseCodeableConcept(xpp));
22583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
22584        res.setImmutableElement(parseBoolean(xpp));
22585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22586        res.setPurposeElement(parseMarkdown(xpp));
22587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
22588        res.setCopyrightElement(parseMarkdown(xpp));
22589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
22590        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
22591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
22592        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
22593      } else if (!parseDomainResourceContent(eventType, xpp, res))
22594        return false;
22595    return true;
22596  }
22597
22598  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
22599    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
22600    parseBackboneAttributes(xpp, res);
22601    next(xpp);
22602    int eventType = nextNoWhitespace(xpp);
22603    while (eventType != XmlPullParser.END_TAG) {
22604  if (!parseValueSetValueSetComposeComponentContent(eventType, xpp, owner, res))
22605        unknownContent(xpp);
22606      eventType = nextNoWhitespace(xpp);
22607    }
22608    next(xpp);
22609    parseElementClose(res);
22610    return res;
22611  }
22612
22613  protected boolean parseValueSetValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22614      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
22615        res.setLockedDateElement(parseDate(xpp));
22616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
22617        res.setInactiveElement(parseBoolean(xpp));
22618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
22619        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
22620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
22621        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
22622      } else if (!parseBackboneElementContent(eventType, xpp, res))
22623        return false;
22624    return true;
22625  }
22626
22627  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
22628    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
22629    parseBackboneAttributes(xpp, res);
22630    next(xpp);
22631    int eventType = nextNoWhitespace(xpp);
22632    while (eventType != XmlPullParser.END_TAG) {
22633  if (!parseValueSetConceptSetComponentContent(eventType, xpp, owner, res))
22634        unknownContent(xpp);
22635      eventType = nextNoWhitespace(xpp);
22636    }
22637    next(xpp);
22638    parseElementClose(res);
22639    return res;
22640  }
22641
22642  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22643      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
22644        res.setSystemElement(parseUri(xpp));
22645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22646        res.setVersionElement(parseString(xpp));
22647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
22648        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
22649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
22650        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
22651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
22652        res.getValueSet().add(parseCanonical(xpp));
22653      } else if (!parseBackboneElementContent(eventType, xpp, res))
22654        return false;
22655    return true;
22656  }
22657
22658  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
22659    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
22660    parseBackboneAttributes(xpp, res);
22661    next(xpp);
22662    int eventType = nextNoWhitespace(xpp);
22663    while (eventType != XmlPullParser.END_TAG) {
22664  if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, owner, res))
22665        unknownContent(xpp);
22666      eventType = nextNoWhitespace(xpp);
22667    }
22668    next(xpp);
22669    parseElementClose(res);
22670    return res;
22671  }
22672
22673  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22674      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22675        res.setCodeElement(parseCode(xpp));
22676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
22677        res.setDisplayElement(parseString(xpp));
22678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
22679        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
22680      } else if (!parseBackboneElementContent(eventType, xpp, res))
22681        return false;
22682    return true;
22683  }
22684
22685  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
22686    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
22687    parseBackboneAttributes(xpp, res);
22688    next(xpp);
22689    int eventType = nextNoWhitespace(xpp);
22690    while (eventType != XmlPullParser.END_TAG) {
22691  if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, owner, res))
22692        unknownContent(xpp);
22693      eventType = nextNoWhitespace(xpp);
22694    }
22695    next(xpp);
22696    parseElementClose(res);
22697    return res;
22698  }
22699
22700  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22701      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
22702        res.setLanguageElement(parseCode(xpp));
22703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
22704        res.setUse(parseCoding(xpp));
22705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22706        res.setValueElement(parseString(xpp));
22707      } else if (!parseBackboneElementContent(eventType, xpp, res))
22708        return false;
22709    return true;
22710  }
22711
22712  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
22713    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
22714    parseBackboneAttributes(xpp, res);
22715    next(xpp);
22716    int eventType = nextNoWhitespace(xpp);
22717    while (eventType != XmlPullParser.END_TAG) {
22718  if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, owner, res))
22719        unknownContent(xpp);
22720      eventType = nextNoWhitespace(xpp);
22721    }
22722    next(xpp);
22723    parseElementClose(res);
22724    return res;
22725  }
22726
22727  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
22729        res.setPropertyElement(parseCode(xpp));
22730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
22731        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
22732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22733        res.setValueElement(parseString(xpp));
22734      } else if (!parseBackboneElementContent(eventType, xpp, res))
22735        return false;
22736    return true;
22737  }
22738
22739  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
22740    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
22741    parseBackboneAttributes(xpp, res);
22742    next(xpp);
22743    int eventType = nextNoWhitespace(xpp);
22744    while (eventType != XmlPullParser.END_TAG) {
22745  if (!parseValueSetValueSetExpansionComponentContent(eventType, xpp, owner, res))
22746        unknownContent(xpp);
22747      eventType = nextNoWhitespace(xpp);
22748    }
22749    next(xpp);
22750    parseElementClose(res);
22751    return res;
22752  }
22753
22754  protected boolean parseValueSetValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22755      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22756        res.setIdentifierElement(parseUri(xpp));
22757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
22758        res.setTimestampElement(parseDateTime(xpp));
22759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
22760        res.setTotalElement(parseInteger(xpp));
22761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
22762        res.setOffsetElement(parseInteger(xpp));
22763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
22764        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
22765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
22766        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
22767      } else if (!parseBackboneElementContent(eventType, xpp, res))
22768        return false;
22769    return true;
22770  }
22771
22772  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
22773    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
22774    parseBackboneAttributes(xpp, res);
22775    next(xpp);
22776    int eventType = nextNoWhitespace(xpp);
22777    while (eventType != XmlPullParser.END_TAG) {
22778  if (!parseValueSetValueSetExpansionParameterComponentContent(eventType, xpp, owner, res))
22779        unknownContent(xpp);
22780      eventType = nextNoWhitespace(xpp);
22781    }
22782    next(xpp);
22783    parseElementClose(res);
22784    return res;
22785  }
22786
22787  protected boolean parseValueSetValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22788      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22789        res.setNameElement(parseString(xpp));
22790      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
22791        res.setValue(parseType("value", xpp));
22792      } else if (!parseBackboneElementContent(eventType, xpp, res))
22793        return false;
22794    return true;
22795  }
22796
22797  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
22798    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
22799    parseBackboneAttributes(xpp, res);
22800    next(xpp);
22801    int eventType = nextNoWhitespace(xpp);
22802    while (eventType != XmlPullParser.END_TAG) {
22803  if (!parseValueSetValueSetExpansionContainsComponentContent(eventType, xpp, owner, res))
22804        unknownContent(xpp);
22805      eventType = nextNoWhitespace(xpp);
22806    }
22807    next(xpp);
22808    parseElementClose(res);
22809    return res;
22810  }
22811
22812  protected boolean parseValueSetValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22813      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
22814        res.setSystemElement(parseUri(xpp));
22815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
22816        res.setAbstractElement(parseBoolean(xpp));
22817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
22818        res.setInactiveElement(parseBoolean(xpp));
22819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22820        res.setVersionElement(parseString(xpp));
22821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22822        res.setCodeElement(parseCode(xpp));
22823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
22824        res.setDisplayElement(parseString(xpp));
22825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
22826        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
22827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
22828        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
22829      } else if (!parseBackboneElementContent(eventType, xpp, res))
22830        return false;
22831    return true;
22832  }
22833
22834  protected VerificationResult parseVerificationResult(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22835    VerificationResult res = new VerificationResult();
22836    parseDomainResourceAttributes(xpp, res);
22837    next(xpp);
22838    int eventType = nextNoWhitespace(xpp);
22839    while (eventType != XmlPullParser.END_TAG) {
22840  if (!parseVerificationResultContent(eventType, xpp, res))
22841        unknownContent(xpp);
22842      eventType = nextNoWhitespace(xpp);
22843    }
22844    next(xpp);
22845    parseElementClose(res);
22846    return res;
22847  }
22848
22849  protected boolean parseVerificationResultContent(int eventType, XmlPullParser xpp, VerificationResult res) throws XmlPullParserException, IOException, FHIRFormatError {
22850      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
22851        res.getTarget().add(parseReference(xpp));
22852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetLocation")) {
22853        res.getTargetLocation().add(parseString(xpp));
22854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("need")) {
22855        res.setNeed(parseCodeableConcept(xpp));
22856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22857        res.setStatusElement(parseEnumeration(xpp, VerificationResult.Status.NULL, new VerificationResult.StatusEnumFactory()));
22858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
22859        res.setStatusDateElement(parseDateTime(xpp));
22860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationType")) {
22861        res.setValidationType(parseCodeableConcept(xpp));
22862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationProcess")) {
22863        res.getValidationProcess().add(parseCodeableConcept(xpp));
22864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
22865        res.setFrequency(parseTiming(xpp));
22866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastPerformed")) {
22867        res.setLastPerformedElement(parseDateTime(xpp));
22868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nextScheduled")) {
22869        res.setNextScheduledElement(parseDate(xpp));
22870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("failureAction")) {
22871        res.setFailureAction(parseCodeableConcept(xpp));
22872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
22873        res.getPrimarySource().add(parseVerificationResultVerificationResultPrimarySourceComponent(xpp, res));
22874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestation")) {
22875        res.setAttestation(parseVerificationResultVerificationResultAttestationComponent(xpp, res));
22876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validator")) {
22877        res.getValidator().add(parseVerificationResultVerificationResultValidatorComponent(xpp, res));
22878      } else if (!parseDomainResourceContent(eventType, xpp, res))
22879        return false;
22880    return true;
22881  }
22882
22883  protected VerificationResult.VerificationResultPrimarySourceComponent parseVerificationResultVerificationResultPrimarySourceComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
22884    VerificationResult.VerificationResultPrimarySourceComponent res = new VerificationResult.VerificationResultPrimarySourceComponent();
22885    parseBackboneAttributes(xpp, res);
22886    next(xpp);
22887    int eventType = nextNoWhitespace(xpp);
22888    while (eventType != XmlPullParser.END_TAG) {
22889  if (!parseVerificationResultVerificationResultPrimarySourceComponentContent(eventType, xpp, owner, res))
22890        unknownContent(xpp);
22891      eventType = nextNoWhitespace(xpp);
22892    }
22893    next(xpp);
22894    parseElementClose(res);
22895    return res;
22896  }
22897
22898  protected boolean parseVerificationResultVerificationResultPrimarySourceComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultPrimarySourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22899      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
22900        res.setOrganization(parseReference(xpp));
22901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22902        res.getType().add(parseCodeableConcept(xpp));
22903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationProcess")) {
22904        res.getValidationProcess().add(parseCodeableConcept(xpp));
22905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationStatus")) {
22906        res.setValidationStatus(parseCodeableConcept(xpp));
22907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationDate")) {
22908        res.setValidationDateElement(parseDateTime(xpp));
22909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("canPushUpdates")) {
22910        res.setCanPushUpdates(parseCodeableConcept(xpp));
22911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pushTypeAvailable")) {
22912        res.getPushTypeAvailable().add(parseCodeableConcept(xpp));
22913      } else if (!parseBackboneElementContent(eventType, xpp, res))
22914        return false;
22915    return true;
22916  }
22917
22918  protected VerificationResult.VerificationResultAttestationComponent parseVerificationResultVerificationResultAttestationComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
22919    VerificationResult.VerificationResultAttestationComponent res = new VerificationResult.VerificationResultAttestationComponent();
22920    parseBackboneAttributes(xpp, res);
22921    next(xpp);
22922    int eventType = nextNoWhitespace(xpp);
22923    while (eventType != XmlPullParser.END_TAG) {
22924  if (!parseVerificationResultVerificationResultAttestationComponentContent(eventType, xpp, owner, res))
22925        unknownContent(xpp);
22926      eventType = nextNoWhitespace(xpp);
22927    }
22928    next(xpp);
22929    parseElementClose(res);
22930    return res;
22931  }
22932
22933  protected boolean parseVerificationResultVerificationResultAttestationComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultAttestationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22934      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
22935        res.setSource(parseReference(xpp));
22936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
22937        res.setOrganization(parseReference(xpp));
22938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
22939        res.setMethod(parseCodeableConcept(xpp));
22940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22941        res.setDateElement(parseDate(xpp));
22942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceIdentityCertificate")) {
22943        res.setSourceIdentityCertificateElement(parseString(xpp));
22944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxyIdentityCertificate")) {
22945        res.setProxyIdentityCertificateElement(parseString(xpp));
22946      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "signedProxyRight")) {
22947        res.setSignedProxyRight(parseType("signedProxyRight", xpp));
22948      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "signedSourceAttestation")) {
22949        res.setSignedSourceAttestation(parseType("signedSourceAttestation", xpp));
22950      } else if (!parseBackboneElementContent(eventType, xpp, res))
22951        return false;
22952    return true;
22953  }
22954
22955  protected VerificationResult.VerificationResultValidatorComponent parseVerificationResultVerificationResultValidatorComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
22956    VerificationResult.VerificationResultValidatorComponent res = new VerificationResult.VerificationResultValidatorComponent();
22957    parseBackboneAttributes(xpp, res);
22958    next(xpp);
22959    int eventType = nextNoWhitespace(xpp);
22960    while (eventType != XmlPullParser.END_TAG) {
22961  if (!parseVerificationResultVerificationResultValidatorComponentContent(eventType, xpp, owner, res))
22962        unknownContent(xpp);
22963      eventType = nextNoWhitespace(xpp);
22964    }
22965    next(xpp);
22966    parseElementClose(res);
22967    return res;
22968  }
22969
22970  protected boolean parseVerificationResultVerificationResultValidatorComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultValidatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22971      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
22972        res.setOrganization(parseReference(xpp));
22973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identityCertificate")) {
22974        res.setIdentityCertificateElement(parseString(xpp));
22975      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "signedValidatorAttestation")) {
22976        res.setSignedValidatorAttestation(parseType("signedValidatorAttestation", xpp));
22977      } else if (!parseBackboneElementContent(eventType, xpp, res))
22978        return false;
22979    return true;
22980  }
22981
22982  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22983    VisionPrescription res = new VisionPrescription();
22984    parseDomainResourceAttributes(xpp, res);
22985    next(xpp);
22986    int eventType = nextNoWhitespace(xpp);
22987    while (eventType != XmlPullParser.END_TAG) {
22988  if (!parseVisionPrescriptionContent(eventType, xpp, res))
22989        unknownContent(xpp);
22990      eventType = nextNoWhitespace(xpp);
22991    }
22992    next(xpp);
22993    parseElementClose(res);
22994    return res;
22995  }
22996
22997  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
22998      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22999        res.getIdentifier().add(parseIdentifier(xpp));
23000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23001        res.setStatusElement(parseEnumeration(xpp, VisionPrescription.VisionStatus.NULL, new VisionPrescription.VisionStatusEnumFactory()));
23002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
23003        res.setPatient(parseReference(xpp));
23004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
23005        res.setEncounter(parseReference(xpp));
23006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
23007        res.setDateWrittenElement(parseDateTime(xpp));
23008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
23009        res.setPrescriber(parseReference(xpp));
23010      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
23011        res.setReason(parseType("reason", xpp));
23012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispense")) {
23013        res.getDispense().add(parseVisionPrescriptionVisionPrescriptionDispenseComponent(xpp, res));
23014      } else if (!parseDomainResourceContent(eventType, xpp, res))
23015        return false;
23016    return true;
23017  }
23018
23019  protected VisionPrescription.VisionPrescriptionDispenseComponent parseVisionPrescriptionVisionPrescriptionDispenseComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
23020    VisionPrescription.VisionPrescriptionDispenseComponent res = new VisionPrescription.VisionPrescriptionDispenseComponent();
23021    parseBackboneAttributes(xpp, res);
23022    next(xpp);
23023    int eventType = nextNoWhitespace(xpp);
23024    while (eventType != XmlPullParser.END_TAG) {
23025  if (!parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(eventType, xpp, owner, res))
23026        unknownContent(xpp);
23027      eventType = nextNoWhitespace(xpp);
23028    }
23029    next(xpp);
23030    parseElementClose(res);
23031    return res;
23032  }
23033
23034  protected boolean parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.VisionPrescriptionDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23035      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
23036        res.setProduct(parseCodeableConcept(xpp));
23037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
23038        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
23039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
23040        res.setSphereElement(parseDecimal(xpp));
23041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
23042        res.setCylinderElement(parseDecimal(xpp));
23043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
23044        res.setAxisElement(parseInteger(xpp));
23045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
23046        res.getPrism().add(parseVisionPrescriptionPrismComponent(xpp, owner));
23047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
23048        res.setAddElement(parseDecimal(xpp));
23049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
23050        res.setPowerElement(parseDecimal(xpp));
23051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
23052        res.setBackCurveElement(parseDecimal(xpp));
23053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
23054        res.setDiameterElement(parseDecimal(xpp));
23055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
23056        res.setDuration(parseQuantity(xpp));
23057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
23058        res.setColorElement(parseString(xpp));
23059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
23060        res.setBrandElement(parseString(xpp));
23061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
23062        res.getNote().add(parseAnnotation(xpp));
23063      } else if (!parseBackboneElementContent(eventType, xpp, res))
23064        return false;
23065    return true;
23066  }
23067
23068  protected VisionPrescription.PrismComponent parseVisionPrescriptionPrismComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
23069    VisionPrescription.PrismComponent res = new VisionPrescription.PrismComponent();
23070    parseBackboneAttributes(xpp, res);
23071    next(xpp);
23072    int eventType = nextNoWhitespace(xpp);
23073    while (eventType != XmlPullParser.END_TAG) {
23074  if (!parseVisionPrescriptionPrismComponentContent(eventType, xpp, owner, res))
23075        unknownContent(xpp);
23076      eventType = nextNoWhitespace(xpp);
23077    }
23078    next(xpp);
23079    parseElementClose(res);
23080    return res;
23081  }
23082
23083  protected boolean parseVisionPrescriptionPrismComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.PrismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23084      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
23085        res.setAmountElement(parseDecimal(xpp));
23086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
23087        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
23088      } else if (!parseBackboneElementContent(eventType, xpp, res))
23089        return false;
23090    return true;
23091  }
23092
23093  @Override
23094  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23095    if (xpp.getName().equals("Parameters"))
23096      return parseParameters(xpp);
23097    else if (xpp.getName().equals("Account"))
23098      return parseAccount(xpp);
23099    else if (xpp.getName().equals("ActivityDefinition"))
23100      return parseActivityDefinition(xpp);
23101    else if (xpp.getName().equals("AdverseEvent"))
23102      return parseAdverseEvent(xpp);
23103    else if (xpp.getName().equals("AllergyIntolerance"))
23104      return parseAllergyIntolerance(xpp);
23105    else if (xpp.getName().equals("Appointment"))
23106      return parseAppointment(xpp);
23107    else if (xpp.getName().equals("AppointmentResponse"))
23108      return parseAppointmentResponse(xpp);
23109    else if (xpp.getName().equals("AuditEvent"))
23110      return parseAuditEvent(xpp);
23111    else if (xpp.getName().equals("Basic"))
23112      return parseBasic(xpp);
23113    else if (xpp.getName().equals("Binary"))
23114      return parseBinary(xpp);
23115    else if (xpp.getName().equals("BiologicallyDerivedProduct"))
23116      return parseBiologicallyDerivedProduct(xpp);
23117    else if (xpp.getName().equals("BodyStructure"))
23118      return parseBodyStructure(xpp);
23119    else if (xpp.getName().equals("Bundle"))
23120      return parseBundle(xpp);
23121    else if (xpp.getName().equals("CapabilityStatement"))
23122      return parseCapabilityStatement(xpp);
23123    else if (xpp.getName().equals("CarePlan"))
23124      return parseCarePlan(xpp);
23125    else if (xpp.getName().equals("CareTeam"))
23126      return parseCareTeam(xpp);
23127    else if (xpp.getName().equals("CatalogEntry"))
23128      return parseCatalogEntry(xpp);
23129    else if (xpp.getName().equals("ChargeItem"))
23130      return parseChargeItem(xpp);
23131    else if (xpp.getName().equals("ChargeItemDefinition"))
23132      return parseChargeItemDefinition(xpp);
23133    else if (xpp.getName().equals("Claim"))
23134      return parseClaim(xpp);
23135    else if (xpp.getName().equals("ClaimResponse"))
23136      return parseClaimResponse(xpp);
23137    else if (xpp.getName().equals("ClinicalImpression"))
23138      return parseClinicalImpression(xpp);
23139    else if (xpp.getName().equals("CodeSystem"))
23140      return parseCodeSystem(xpp);
23141    else if (xpp.getName().equals("Communication"))
23142      return parseCommunication(xpp);
23143    else if (xpp.getName().equals("CommunicationRequest"))
23144      return parseCommunicationRequest(xpp);
23145    else if (xpp.getName().equals("CompartmentDefinition"))
23146      return parseCompartmentDefinition(xpp);
23147    else if (xpp.getName().equals("Composition"))
23148      return parseComposition(xpp);
23149    else if (xpp.getName().equals("ConceptMap"))
23150      return parseConceptMap(xpp);
23151    else if (xpp.getName().equals("Condition"))
23152      return parseCondition(xpp);
23153    else if (xpp.getName().equals("Consent"))
23154      return parseConsent(xpp);
23155    else if (xpp.getName().equals("Contract"))
23156      return parseContract(xpp);
23157    else if (xpp.getName().equals("Coverage"))
23158      return parseCoverage(xpp);
23159    else if (xpp.getName().equals("CoverageEligibilityRequest"))
23160      return parseCoverageEligibilityRequest(xpp);
23161    else if (xpp.getName().equals("CoverageEligibilityResponse"))
23162      return parseCoverageEligibilityResponse(xpp);
23163    else if (xpp.getName().equals("DetectedIssue"))
23164      return parseDetectedIssue(xpp);
23165    else if (xpp.getName().equals("Device"))
23166      return parseDevice(xpp);
23167    else if (xpp.getName().equals("DeviceDefinition"))
23168      return parseDeviceDefinition(xpp);
23169    else if (xpp.getName().equals("DeviceMetric"))
23170      return parseDeviceMetric(xpp);
23171    else if (xpp.getName().equals("DeviceRequest"))
23172      return parseDeviceRequest(xpp);
23173    else if (xpp.getName().equals("DeviceUseStatement"))
23174      return parseDeviceUseStatement(xpp);
23175    else if (xpp.getName().equals("DiagnosticReport"))
23176      return parseDiagnosticReport(xpp);
23177    else if (xpp.getName().equals("DocumentManifest"))
23178      return parseDocumentManifest(xpp);
23179    else if (xpp.getName().equals("DocumentReference"))
23180      return parseDocumentReference(xpp);
23181    else if (xpp.getName().equals("Encounter"))
23182      return parseEncounter(xpp);
23183    else if (xpp.getName().equals("Endpoint"))
23184      return parseEndpoint(xpp);
23185    else if (xpp.getName().equals("EnrollmentRequest"))
23186      return parseEnrollmentRequest(xpp);
23187    else if (xpp.getName().equals("EnrollmentResponse"))
23188      return parseEnrollmentResponse(xpp);
23189    else if (xpp.getName().equals("EpisodeOfCare"))
23190      return parseEpisodeOfCare(xpp);
23191    else if (xpp.getName().equals("EventDefinition"))
23192      return parseEventDefinition(xpp);
23193    else if (xpp.getName().equals("ExampleScenario"))
23194      return parseExampleScenario(xpp);
23195    else if (xpp.getName().equals("ExplanationOfBenefit"))
23196      return parseExplanationOfBenefit(xpp);
23197    else if (xpp.getName().equals("FamilyMemberHistory"))
23198      return parseFamilyMemberHistory(xpp);
23199    else if (xpp.getName().equals("Flag"))
23200      return parseFlag(xpp);
23201    else if (xpp.getName().equals("Goal"))
23202      return parseGoal(xpp);
23203    else if (xpp.getName().equals("GraphDefinition"))
23204      return parseGraphDefinition(xpp);
23205    else if (xpp.getName().equals("Group"))
23206      return parseGroup(xpp);
23207    else if (xpp.getName().equals("GuidanceResponse"))
23208      return parseGuidanceResponse(xpp);
23209    else if (xpp.getName().equals("HealthcareService"))
23210      return parseHealthcareService(xpp);
23211    else if (xpp.getName().equals("ImagingStudy"))
23212      return parseImagingStudy(xpp);
23213    else if (xpp.getName().equals("Immunization"))
23214      return parseImmunization(xpp);
23215    else if (xpp.getName().equals("ImmunizationEvaluation"))
23216      return parseImmunizationEvaluation(xpp);
23217    else if (xpp.getName().equals("ImmunizationRecommendation"))
23218      return parseImmunizationRecommendation(xpp);
23219    else if (xpp.getName().equals("ImplementationGuide"))
23220      return parseImplementationGuide(xpp);
23221    else if (xpp.getName().equals("InsurancePlan"))
23222      return parseInsurancePlan(xpp);
23223    else if (xpp.getName().equals("Invoice"))
23224      return parseInvoice(xpp);
23225    else if (xpp.getName().equals("ItemInstance"))
23226      return parseItemInstance(xpp);
23227    else if (xpp.getName().equals("Library"))
23228      return parseLibrary(xpp);
23229    else if (xpp.getName().equals("Linkage"))
23230      return parseLinkage(xpp);
23231    else if (xpp.getName().equals("List"))
23232      return parseListResource(xpp);
23233    else if (xpp.getName().equals("Location"))
23234      return parseLocation(xpp);
23235    else if (xpp.getName().equals("Measure"))
23236      return parseMeasure(xpp);
23237    else if (xpp.getName().equals("MeasureReport"))
23238      return parseMeasureReport(xpp);
23239    else if (xpp.getName().equals("Media"))
23240      return parseMedia(xpp);
23241    else if (xpp.getName().equals("Medication"))
23242      return parseMedication(xpp);
23243    else if (xpp.getName().equals("MedicationAdministration"))
23244      return parseMedicationAdministration(xpp);
23245    else if (xpp.getName().equals("MedicationDispense"))
23246      return parseMedicationDispense(xpp);
23247    else if (xpp.getName().equals("MedicationKnowledge"))
23248      return parseMedicationKnowledge(xpp);
23249    else if (xpp.getName().equals("MedicationRequest"))
23250      return parseMedicationRequest(xpp);
23251    else if (xpp.getName().equals("MedicationStatement"))
23252      return parseMedicationStatement(xpp);
23253    else if (xpp.getName().equals("MedicinalProduct"))
23254      return parseMedicinalProduct(xpp);
23255    else if (xpp.getName().equals("MedicinalProductAuthorization"))
23256      return parseMedicinalProductAuthorization(xpp);
23257    else if (xpp.getName().equals("MedicinalProductClinicals"))
23258      return parseMedicinalProductClinicals(xpp);
23259    else if (xpp.getName().equals("MedicinalProductContraindication"))
23260      return parseMedicinalProductContraindication(xpp);
23261    else if (xpp.getName().equals("MedicinalProductDeviceSpec"))
23262      return parseMedicinalProductDeviceSpec(xpp);
23263    else if (xpp.getName().equals("MedicinalProductIndication"))
23264      return parseMedicinalProductIndication(xpp);
23265    else if (xpp.getName().equals("MedicinalProductIngredient"))
23266      return parseMedicinalProductIngredient(xpp);
23267    else if (xpp.getName().equals("MedicinalProductInteraction"))
23268      return parseMedicinalProductInteraction(xpp);
23269    else if (xpp.getName().equals("MedicinalProductManufactured"))
23270      return parseMedicinalProductManufactured(xpp);
23271    else if (xpp.getName().equals("MedicinalProductPackaged"))
23272      return parseMedicinalProductPackaged(xpp);
23273    else if (xpp.getName().equals("MedicinalProductPharmaceutical"))
23274      return parseMedicinalProductPharmaceutical(xpp);
23275    else if (xpp.getName().equals("MedicinalProductUndesirableEffect"))
23276      return parseMedicinalProductUndesirableEffect(xpp);
23277    else if (xpp.getName().equals("MessageDefinition"))
23278      return parseMessageDefinition(xpp);
23279    else if (xpp.getName().equals("MessageHeader"))
23280      return parseMessageHeader(xpp);
23281    else if (xpp.getName().equals("NamingSystem"))
23282      return parseNamingSystem(xpp);
23283    else if (xpp.getName().equals("NutritionOrder"))
23284      return parseNutritionOrder(xpp);
23285    else if (xpp.getName().equals("Observation"))
23286      return parseObservation(xpp);
23287    else if (xpp.getName().equals("ObservationDefinition"))
23288      return parseObservationDefinition(xpp);
23289    else if (xpp.getName().equals("OperationDefinition"))
23290      return parseOperationDefinition(xpp);
23291    else if (xpp.getName().equals("OperationOutcome"))
23292      return parseOperationOutcome(xpp);
23293    else if (xpp.getName().equals("Organization"))
23294      return parseOrganization(xpp);
23295    else if (xpp.getName().equals("OrganizationAffiliation"))
23296      return parseOrganizationAffiliation(xpp);
23297    else if (xpp.getName().equals("Patient"))
23298      return parsePatient(xpp);
23299    else if (xpp.getName().equals("PaymentNotice"))
23300      return parsePaymentNotice(xpp);
23301    else if (xpp.getName().equals("PaymentReconciliation"))
23302      return parsePaymentReconciliation(xpp);
23303    else if (xpp.getName().equals("Person"))
23304      return parsePerson(xpp);
23305    else if (xpp.getName().equals("PlanDefinition"))
23306      return parsePlanDefinition(xpp);
23307    else if (xpp.getName().equals("Practitioner"))
23308      return parsePractitioner(xpp);
23309    else if (xpp.getName().equals("PractitionerRole"))
23310      return parsePractitionerRole(xpp);
23311    else if (xpp.getName().equals("Procedure"))
23312      return parseProcedure(xpp);
23313    else if (xpp.getName().equals("ProcessRequest"))
23314      return parseProcessRequest(xpp);
23315    else if (xpp.getName().equals("ProcessResponse"))
23316      return parseProcessResponse(xpp);
23317    else if (xpp.getName().equals("Provenance"))
23318      return parseProvenance(xpp);
23319    else if (xpp.getName().equals("Questionnaire"))
23320      return parseQuestionnaire(xpp);
23321    else if (xpp.getName().equals("QuestionnaireResponse"))
23322      return parseQuestionnaireResponse(xpp);
23323    else if (xpp.getName().equals("RelatedPerson"))
23324      return parseRelatedPerson(xpp);
23325    else if (xpp.getName().equals("RequestGroup"))
23326      return parseRequestGroup(xpp);
23327    else if (xpp.getName().equals("ResearchStudy"))
23328      return parseResearchStudy(xpp);
23329    else if (xpp.getName().equals("ResearchSubject"))
23330      return parseResearchSubject(xpp);
23331    else if (xpp.getName().equals("RiskAssessment"))
23332      return parseRiskAssessment(xpp);
23333    else if (xpp.getName().equals("Schedule"))
23334      return parseSchedule(xpp);
23335    else if (xpp.getName().equals("SearchParameter"))
23336      return parseSearchParameter(xpp);
23337    else if (xpp.getName().equals("Sequence"))
23338      return parseSequence(xpp);
23339    else if (xpp.getName().equals("ServiceRequest"))
23340      return parseServiceRequest(xpp);
23341    else if (xpp.getName().equals("Slot"))
23342      return parseSlot(xpp);
23343    else if (xpp.getName().equals("Specimen"))
23344      return parseSpecimen(xpp);
23345    else if (xpp.getName().equals("SpecimenDefinition"))
23346      return parseSpecimenDefinition(xpp);
23347    else if (xpp.getName().equals("StructureDefinition"))
23348      return parseStructureDefinition(xpp);
23349    else if (xpp.getName().equals("StructureMap"))
23350      return parseStructureMap(xpp);
23351    else if (xpp.getName().equals("Subscription"))
23352      return parseSubscription(xpp);
23353    else if (xpp.getName().equals("Substance"))
23354      return parseSubstance(xpp);
23355    else if (xpp.getName().equals("SubstancePolymer"))
23356      return parseSubstancePolymer(xpp);
23357    else if (xpp.getName().equals("SubstanceReferenceInformation"))
23358      return parseSubstanceReferenceInformation(xpp);
23359    else if (xpp.getName().equals("SubstanceSpecification"))
23360      return parseSubstanceSpecification(xpp);
23361    else if (xpp.getName().equals("SupplyDelivery"))
23362      return parseSupplyDelivery(xpp);
23363    else if (xpp.getName().equals("SupplyRequest"))
23364      return parseSupplyRequest(xpp);
23365    else if (xpp.getName().equals("Task"))
23366      return parseTask(xpp);
23367    else if (xpp.getName().equals("TerminologyCapabilities"))
23368      return parseTerminologyCapabilities(xpp);
23369    else if (xpp.getName().equals("TestReport"))
23370      return parseTestReport(xpp);
23371    else if (xpp.getName().equals("TestScript"))
23372      return parseTestScript(xpp);
23373    else if (xpp.getName().equals("UserSession"))
23374      return parseUserSession(xpp);
23375    else if (xpp.getName().equals("ValueSet"))
23376      return parseValueSet(xpp);
23377    else if (xpp.getName().equals("VerificationResult"))
23378      return parseVerificationResult(xpp);
23379    else if (xpp.getName().equals("VisionPrescription"))
23380      return parseVisionPrescription(xpp);
23381    else if (xpp.getName().equals("Binary"))
23382      return parseBinary(xpp);
23383    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
23384  }
23385
23386  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23387    if (xpp.getName().equals(prefix+"date"))
23388      return parseDate(xpp);
23389    else if (xpp.getName().equals(prefix+"dateTime"))
23390      return parseDateTime(xpp);
23391    else if (xpp.getName().equals(prefix+"code"))
23392      return parseCode(xpp);
23393    else if (xpp.getName().equals(prefix+"string"))
23394      return parseString(xpp);
23395    else if (xpp.getName().equals(prefix+"integer"))
23396      return parseInteger(xpp);
23397    else if (xpp.getName().equals(prefix+"oid"))
23398      return parseOid(xpp);
23399    else if (xpp.getName().equals(prefix+"canonical"))
23400      return parseCanonical(xpp);
23401    else if (xpp.getName().equals(prefix+"uri"))
23402      return parseUri(xpp);
23403    else if (xpp.getName().equals(prefix+"uuid"))
23404      return parseUuid(xpp);
23405    else if (xpp.getName().equals(prefix+"url"))
23406      return parseUrl(xpp);
23407    else if (xpp.getName().equals(prefix+"instant"))
23408      return parseInstant(xpp);
23409    else if (xpp.getName().equals(prefix+"boolean"))
23410      return parseBoolean(xpp);
23411    else if (xpp.getName().equals(prefix+"base64Binary"))
23412      return parseBase64Binary(xpp);
23413    else if (xpp.getName().equals(prefix+"unsignedInt"))
23414      return parseUnsignedInt(xpp);
23415    else if (xpp.getName().equals(prefix+"markdown"))
23416      return parseMarkdown(xpp);
23417    else if (xpp.getName().equals(prefix+"time"))
23418      return parseTime(xpp);
23419    else if (xpp.getName().equals(prefix+"id"))
23420      return parseId(xpp);
23421    else if (xpp.getName().equals(prefix+"positiveInt"))
23422      return parsePositiveInt(xpp);
23423    else if (xpp.getName().equals(prefix+"decimal"))
23424      return parseDecimal(xpp);
23425    else if (xpp.getName().equals(prefix+"Extension"))
23426      return parseExtension(xpp);
23427    else if (xpp.getName().equals(prefix+"Narrative"))
23428      return parseNarrative(xpp);
23429    else if (xpp.getName().equals(prefix+"Meta"))
23430      return parseMeta(xpp);
23431    else if (xpp.getName().equals(prefix+"Address"))
23432      return parseAddress(xpp);
23433    else if (xpp.getName().equals(prefix+"Contributor"))
23434      return parseContributor(xpp);
23435    else if (xpp.getName().equals(prefix+"Attachment"))
23436      return parseAttachment(xpp);
23437    else if (xpp.getName().equals(prefix+"Count"))
23438      return parseCount(xpp);
23439    else if (xpp.getName().equals(prefix+"DataRequirement"))
23440      return parseDataRequirement(xpp);
23441    else if (xpp.getName().equals(prefix+"Dosage"))
23442      return parseDosage(xpp);
23443    else if (xpp.getName().equals(prefix+"Money"))
23444      return parseMoney(xpp);
23445    else if (xpp.getName().equals(prefix+"HumanName"))
23446      return parseHumanName(xpp);
23447    else if (xpp.getName().equals(prefix+"ContactPoint"))
23448      return parseContactPoint(xpp);
23449    else if (xpp.getName().equals(prefix+"Identifier"))
23450      return parseIdentifier(xpp);
23451    else if (xpp.getName().equals(prefix+"Coding"))
23452      return parseCoding(xpp);
23453    else if (xpp.getName().equals(prefix+"SampledData"))
23454      return parseSampledData(xpp);
23455    else if (xpp.getName().equals(prefix+"Ratio"))
23456      return parseRatio(xpp);
23457    else if (xpp.getName().equals(prefix+"Distance"))
23458      return parseDistance(xpp);
23459    else if (xpp.getName().equals(prefix+"Age"))
23460      return parseAge(xpp);
23461    else if (xpp.getName().equals(prefix+"Reference"))
23462      return parseReference(xpp);
23463    else if (xpp.getName().equals(prefix+"TriggerDefinition"))
23464      return parseTriggerDefinition(xpp);
23465    else if (xpp.getName().equals(prefix+"Quantity"))
23466      return parseQuantity(xpp);
23467    else if (xpp.getName().equals(prefix+"Period"))
23468      return parsePeriod(xpp);
23469    else if (xpp.getName().equals(prefix+"Duration"))
23470      return parseDuration(xpp);
23471    else if (xpp.getName().equals(prefix+"Range"))
23472      return parseRange(xpp);
23473    else if (xpp.getName().equals(prefix+"RelatedArtifact"))
23474      return parseRelatedArtifact(xpp);
23475    else if (xpp.getName().equals(prefix+"Annotation"))
23476      return parseAnnotation(xpp);
23477    else if (xpp.getName().equals(prefix+"ContactDetail"))
23478      return parseContactDetail(xpp);
23479    else if (xpp.getName().equals(prefix+"UsageContext"))
23480      return parseUsageContext(xpp);
23481    else if (xpp.getName().equals(prefix+"Expression"))
23482      return parseExpression(xpp);
23483    else if (xpp.getName().equals(prefix+"Signature"))
23484      return parseSignature(xpp);
23485    else if (xpp.getName().equals(prefix+"Timing"))
23486      return parseTiming(xpp);
23487    else if (xpp.getName().equals(prefix+"CodeableConcept"))
23488      return parseCodeableConcept(xpp);
23489    else if (xpp.getName().equals(prefix+"ParameterDefinition"))
23490      return parseParameterDefinition(xpp);
23491    else if (xpp.getName().equals(prefix+"Date"))
23492      return parseDate(xpp);
23493    else if (xpp.getName().equals(prefix+"DateTime"))
23494      return parseDateTime(xpp);
23495    else if (xpp.getName().equals(prefix+"Code"))
23496      return parseCode(xpp);
23497    else if (xpp.getName().equals(prefix+"String"))
23498      return parseString(xpp);
23499    else if (xpp.getName().equals(prefix+"Integer"))
23500      return parseInteger(xpp);
23501    else if (xpp.getName().equals(prefix+"Oid"))
23502      return parseOid(xpp);
23503    else if (xpp.getName().equals(prefix+"Canonical"))
23504      return parseCanonical(xpp);
23505    else if (xpp.getName().equals(prefix+"Uri"))
23506      return parseUri(xpp);
23507    else if (xpp.getName().equals(prefix+"Uuid"))
23508      return parseUuid(xpp);
23509    else if (xpp.getName().equals(prefix+"Url"))
23510      return parseUrl(xpp);
23511    else if (xpp.getName().equals(prefix+"Instant"))
23512      return parseInstant(xpp);
23513    else if (xpp.getName().equals(prefix+"Boolean"))
23514      return parseBoolean(xpp);
23515    else if (xpp.getName().equals(prefix+"Base64Binary"))
23516      return parseBase64Binary(xpp);
23517    else if (xpp.getName().equals(prefix+"UnsignedInt"))
23518      return parseUnsignedInt(xpp);
23519    else if (xpp.getName().equals(prefix+"Markdown"))
23520      return parseMarkdown(xpp);
23521    else if (xpp.getName().equals(prefix+"Time"))
23522      return parseTime(xpp);
23523    else if (xpp.getName().equals(prefix+"Id"))
23524      return parseId(xpp);
23525    else if (xpp.getName().equals(prefix+"PositiveInt"))
23526      return parsePositiveInt(xpp);
23527    else if (xpp.getName().equals(prefix+"Decimal"))
23528      return parseDecimal(xpp);
23529    throw new FHIRFormatError("Unknown type "+xpp.getName());
23530  }
23531
23532  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
23533    if (type.equals("date"))
23534      return parseDate(xpp);
23535    else if (type.equals("dateTime"))
23536      return parseDateTime(xpp);
23537    else if (type.equals("code"))
23538      return parseCode(xpp);
23539    else if (type.equals("string"))
23540      return parseString(xpp);
23541    else if (type.equals("integer"))
23542      return parseInteger(xpp);
23543    else if (type.equals("oid"))
23544      return parseOid(xpp);
23545    else if (type.equals("canonical"))
23546      return parseCanonical(xpp);
23547    else if (type.equals("uri"))
23548      return parseUri(xpp);
23549    else if (type.equals("uuid"))
23550      return parseUuid(xpp);
23551    else if (type.equals("url"))
23552      return parseUrl(xpp);
23553    else if (type.equals("instant"))
23554      return parseInstant(xpp);
23555    else if (type.equals("boolean"))
23556      return parseBoolean(xpp);
23557    else if (type.equals("base64Binary"))
23558      return parseBase64Binary(xpp);
23559    else if (type.equals("unsignedInt"))
23560      return parseUnsignedInt(xpp);
23561    else if (type.equals("markdown"))
23562      return parseMarkdown(xpp);
23563    else if (type.equals("time"))
23564      return parseTime(xpp);
23565    else if (type.equals("id"))
23566      return parseId(xpp);
23567    else if (type.equals("positiveInt"))
23568      return parsePositiveInt(xpp);
23569    else if (type.equals("decimal"))
23570      return parseDecimal(xpp);
23571    else if (type.equals("Extension"))
23572      return parseExtension(xpp);
23573    else if (type.equals("Narrative"))
23574      return parseNarrative(xpp);
23575    else if (type.equals("Meta"))
23576      return parseMeta(xpp);
23577    else if (type.equals("Address"))
23578      return parseAddress(xpp);
23579    else if (type.equals("Contributor"))
23580      return parseContributor(xpp);
23581    else if (type.equals("Attachment"))
23582      return parseAttachment(xpp);
23583    else if (type.equals("Count"))
23584      return parseCount(xpp);
23585    else if (type.equals("DataRequirement"))
23586      return parseDataRequirement(xpp);
23587    else if (type.equals("Dosage"))
23588      return parseDosage(xpp);
23589    else if (type.equals("Money"))
23590      return parseMoney(xpp);
23591    else if (type.equals("HumanName"))
23592      return parseHumanName(xpp);
23593    else if (type.equals("ContactPoint"))
23594      return parseContactPoint(xpp);
23595    else if (type.equals("Identifier"))
23596      return parseIdentifier(xpp);
23597    else if (type.equals("Coding"))
23598      return parseCoding(xpp);
23599    else if (type.equals("SampledData"))
23600      return parseSampledData(xpp);
23601    else if (type.equals("Ratio"))
23602      return parseRatio(xpp);
23603    else if (type.equals("Distance"))
23604      return parseDistance(xpp);
23605    else if (type.equals("Age"))
23606      return parseAge(xpp);
23607    else if (type.equals("Reference"))
23608      return parseReference(xpp);
23609    else if (type.equals("TriggerDefinition"))
23610      return parseTriggerDefinition(xpp);
23611    else if (type.equals("Quantity"))
23612      return parseQuantity(xpp);
23613    else if (type.equals("Period"))
23614      return parsePeriod(xpp);
23615    else if (type.equals("Duration"))
23616      return parseDuration(xpp);
23617    else if (type.equals("Range"))
23618      return parseRange(xpp);
23619    else if (type.equals("RelatedArtifact"))
23620      return parseRelatedArtifact(xpp);
23621    else if (type.equals("Annotation"))
23622      return parseAnnotation(xpp);
23623    else if (type.equals("ContactDetail"))
23624      return parseContactDetail(xpp);
23625    else if (type.equals("UsageContext"))
23626      return parseUsageContext(xpp);
23627    else if (type.equals("Expression"))
23628      return parseExpression(xpp);
23629    else if (type.equals("Signature"))
23630      return parseSignature(xpp);
23631    else if (type.equals("Timing"))
23632      return parseTiming(xpp);
23633    else if (type.equals("CodeableConcept"))
23634      return parseCodeableConcept(xpp);
23635    else if (type.equals("ParameterDefinition"))
23636      return parseParameterDefinition(xpp);
23637    throw new FHIRFormatError("Unknown type "+type);
23638  }
23639
23640  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
23641    if (type.equals("Extension"))
23642      return parseExtension(xpp);
23643    else if (type.equals("Narrative"))
23644      return parseNarrative(xpp);
23645    else if (type.equals("Meta"))
23646      return parseMeta(xpp);
23647    else if (type.equals("Address"))
23648      return parseAddress(xpp);
23649    else if (type.equals("Contributor"))
23650      return parseContributor(xpp);
23651    else if (type.equals("Attachment"))
23652      return parseAttachment(xpp);
23653    else if (type.equals("Count"))
23654      return parseCount(xpp);
23655    else if (type.equals("DataRequirement"))
23656      return parseDataRequirement(xpp);
23657    else if (type.equals("Dosage"))
23658      return parseDosage(xpp);
23659    else if (type.equals("Money"))
23660      return parseMoney(xpp);
23661    else if (type.equals("HumanName"))
23662      return parseHumanName(xpp);
23663    else if (type.equals("ContactPoint"))
23664      return parseContactPoint(xpp);
23665    else if (type.equals("Identifier"))
23666      return parseIdentifier(xpp);
23667    else if (type.equals("Coding"))
23668      return parseCoding(xpp);
23669    else if (type.equals("SampledData"))
23670      return parseSampledData(xpp);
23671    else if (type.equals("Ratio"))
23672      return parseRatio(xpp);
23673    else if (type.equals("Distance"))
23674      return parseDistance(xpp);
23675    else if (type.equals("Age"))
23676      return parseAge(xpp);
23677    else if (type.equals("Reference"))
23678      return parseReference(xpp);
23679    else if (type.equals("TriggerDefinition"))
23680      return parseTriggerDefinition(xpp);
23681    else if (type.equals("Quantity"))
23682      return parseQuantity(xpp);
23683    else if (type.equals("Period"))
23684      return parsePeriod(xpp);
23685    else if (type.equals("Duration"))
23686      return parseDuration(xpp);
23687    else if (type.equals("Range"))
23688      return parseRange(xpp);
23689    else if (type.equals("RelatedArtifact"))
23690      return parseRelatedArtifact(xpp);
23691    else if (type.equals("Annotation"))
23692      return parseAnnotation(xpp);
23693    else if (type.equals("ContactDetail"))
23694      return parseContactDetail(xpp);
23695    else if (type.equals("UsageContext"))
23696      return parseUsageContext(xpp);
23697    else if (type.equals("Expression"))
23698      return parseExpression(xpp);
23699    else if (type.equals("Signature"))
23700      return parseSignature(xpp);
23701    else if (type.equals("Timing"))
23702      return parseTiming(xpp);
23703    else if (type.equals("CodeableConcept"))
23704      return parseCodeableConcept(xpp);
23705    else if (type.equals("ParameterDefinition"))
23706      return parseParameterDefinition(xpp);
23707    else if (type.equals("Parameters"))
23708      return parseParameters(xpp);
23709    else if (type.equals("Account"))
23710      return parseAccount(xpp);
23711    else if (type.equals("ActivityDefinition"))
23712      return parseActivityDefinition(xpp);
23713    else if (type.equals("AdverseEvent"))
23714      return parseAdverseEvent(xpp);
23715    else if (type.equals("AllergyIntolerance"))
23716      return parseAllergyIntolerance(xpp);
23717    else if (type.equals("Appointment"))
23718      return parseAppointment(xpp);
23719    else if (type.equals("AppointmentResponse"))
23720      return parseAppointmentResponse(xpp);
23721    else if (type.equals("AuditEvent"))
23722      return parseAuditEvent(xpp);
23723    else if (type.equals("Basic"))
23724      return parseBasic(xpp);
23725    else if (type.equals("Binary"))
23726      return parseBinary(xpp);
23727    else if (type.equals("BiologicallyDerivedProduct"))
23728      return parseBiologicallyDerivedProduct(xpp);
23729    else if (type.equals("BodyStructure"))
23730      return parseBodyStructure(xpp);
23731    else if (type.equals("Bundle"))
23732      return parseBundle(xpp);
23733    else if (type.equals("CapabilityStatement"))
23734      return parseCapabilityStatement(xpp);
23735    else if (type.equals("CarePlan"))
23736      return parseCarePlan(xpp);
23737    else if (type.equals("CareTeam"))
23738      return parseCareTeam(xpp);
23739    else if (type.equals("CatalogEntry"))
23740      return parseCatalogEntry(xpp);
23741    else if (type.equals("ChargeItem"))
23742      return parseChargeItem(xpp);
23743    else if (type.equals("ChargeItemDefinition"))
23744      return parseChargeItemDefinition(xpp);
23745    else if (type.equals("Claim"))
23746      return parseClaim(xpp);
23747    else if (type.equals("ClaimResponse"))
23748      return parseClaimResponse(xpp);
23749    else if (type.equals("ClinicalImpression"))
23750      return parseClinicalImpression(xpp);
23751    else if (type.equals("CodeSystem"))
23752      return parseCodeSystem(xpp);
23753    else if (type.equals("Communication"))
23754      return parseCommunication(xpp);
23755    else if (type.equals("CommunicationRequest"))
23756      return parseCommunicationRequest(xpp);
23757    else if (type.equals("CompartmentDefinition"))
23758      return parseCompartmentDefinition(xpp);
23759    else if (type.equals("Composition"))
23760      return parseComposition(xpp);
23761    else if (type.equals("ConceptMap"))
23762      return parseConceptMap(xpp);
23763    else if (type.equals("Condition"))
23764      return parseCondition(xpp);
23765    else if (type.equals("Consent"))
23766      return parseConsent(xpp);
23767    else if (type.equals("Contract"))
23768      return parseContract(xpp);
23769    else if (type.equals("Coverage"))
23770      return parseCoverage(xpp);
23771    else if (type.equals("CoverageEligibilityRequest"))
23772      return parseCoverageEligibilityRequest(xpp);
23773    else if (type.equals("CoverageEligibilityResponse"))
23774      return parseCoverageEligibilityResponse(xpp);
23775    else if (type.equals("DetectedIssue"))
23776      return parseDetectedIssue(xpp);
23777    else if (type.equals("Device"))
23778      return parseDevice(xpp);
23779    else if (type.equals("DeviceDefinition"))
23780      return parseDeviceDefinition(xpp);
23781    else if (type.equals("DeviceMetric"))
23782      return parseDeviceMetric(xpp);
23783    else if (type.equals("DeviceRequest"))
23784      return parseDeviceRequest(xpp);
23785    else if (type.equals("DeviceUseStatement"))
23786      return parseDeviceUseStatement(xpp);
23787    else if (type.equals("DiagnosticReport"))
23788      return parseDiagnosticReport(xpp);
23789    else if (type.equals("DocumentManifest"))
23790      return parseDocumentManifest(xpp);
23791    else if (type.equals("DocumentReference"))
23792      return parseDocumentReference(xpp);
23793    else if (type.equals("Encounter"))
23794      return parseEncounter(xpp);
23795    else if (type.equals("Endpoint"))
23796      return parseEndpoint(xpp);
23797    else if (type.equals("EnrollmentRequest"))
23798      return parseEnrollmentRequest(xpp);
23799    else if (type.equals("EnrollmentResponse"))
23800      return parseEnrollmentResponse(xpp);
23801    else if (type.equals("EpisodeOfCare"))
23802      return parseEpisodeOfCare(xpp);
23803    else if (type.equals("EventDefinition"))
23804      return parseEventDefinition(xpp);
23805    else if (type.equals("ExampleScenario"))
23806      return parseExampleScenario(xpp);
23807    else if (type.equals("ExplanationOfBenefit"))
23808      return parseExplanationOfBenefit(xpp);
23809    else if (type.equals("FamilyMemberHistory"))
23810      return parseFamilyMemberHistory(xpp);
23811    else if (type.equals("Flag"))
23812      return parseFlag(xpp);
23813    else if (type.equals("Goal"))
23814      return parseGoal(xpp);
23815    else if (type.equals("GraphDefinition"))
23816      return parseGraphDefinition(xpp);
23817    else if (type.equals("Group"))
23818      return parseGroup(xpp);
23819    else if (type.equals("GuidanceResponse"))
23820      return parseGuidanceResponse(xpp);
23821    else if (type.equals("HealthcareService"))
23822      return parseHealthcareService(xpp);
23823    else if (type.equals("ImagingStudy"))
23824      return parseImagingStudy(xpp);
23825    else if (type.equals("Immunization"))
23826      return parseImmunization(xpp);
23827    else if (type.equals("ImmunizationEvaluation"))
23828      return parseImmunizationEvaluation(xpp);
23829    else if (type.equals("ImmunizationRecommendation"))
23830      return parseImmunizationRecommendation(xpp);
23831    else if (type.equals("ImplementationGuide"))
23832      return parseImplementationGuide(xpp);
23833    else if (type.equals("InsurancePlan"))
23834      return parseInsurancePlan(xpp);
23835    else if (type.equals("Invoice"))
23836      return parseInvoice(xpp);
23837    else if (type.equals("ItemInstance"))
23838      return parseItemInstance(xpp);
23839    else if (type.equals("Library"))
23840      return parseLibrary(xpp);
23841    else if (type.equals("Linkage"))
23842      return parseLinkage(xpp);
23843    else if (type.equals("List"))
23844      return parseListResource(xpp);
23845    else if (type.equals("Location"))
23846      return parseLocation(xpp);
23847    else if (type.equals("Measure"))
23848      return parseMeasure(xpp);
23849    else if (type.equals("MeasureReport"))
23850      return parseMeasureReport(xpp);
23851    else if (type.equals("Media"))
23852      return parseMedia(xpp);
23853    else if (type.equals("Medication"))
23854      return parseMedication(xpp);
23855    else if (type.equals("MedicationAdministration"))
23856      return parseMedicationAdministration(xpp);
23857    else if (type.equals("MedicationDispense"))
23858      return parseMedicationDispense(xpp);
23859    else if (type.equals("MedicationKnowledge"))
23860      return parseMedicationKnowledge(xpp);
23861    else if (type.equals("MedicationRequest"))
23862      return parseMedicationRequest(xpp);
23863    else if (type.equals("MedicationStatement"))
23864      return parseMedicationStatement(xpp);
23865    else if (type.equals("MedicinalProduct"))
23866      return parseMedicinalProduct(xpp);
23867    else if (type.equals("MedicinalProductAuthorization"))
23868      return parseMedicinalProductAuthorization(xpp);
23869    else if (type.equals("MedicinalProductClinicals"))
23870      return parseMedicinalProductClinicals(xpp);
23871    else if (type.equals("MedicinalProductContraindication"))
23872      return parseMedicinalProductContraindication(xpp);
23873    else if (type.equals("MedicinalProductDeviceSpec"))
23874      return parseMedicinalProductDeviceSpec(xpp);
23875    else if (type.equals("MedicinalProductIndication"))
23876      return parseMedicinalProductIndication(xpp);
23877    else if (type.equals("MedicinalProductIngredient"))
23878      return parseMedicinalProductIngredient(xpp);
23879    else if (type.equals("MedicinalProductInteraction"))
23880      return parseMedicinalProductInteraction(xpp);
23881    else if (type.equals("MedicinalProductManufactured"))
23882      return parseMedicinalProductManufactured(xpp);
23883    else if (type.equals("MedicinalProductPackaged"))
23884      return parseMedicinalProductPackaged(xpp);
23885    else if (type.equals("MedicinalProductPharmaceutical"))
23886      return parseMedicinalProductPharmaceutical(xpp);
23887    else if (type.equals("MedicinalProductUndesirableEffect"))
23888      return parseMedicinalProductUndesirableEffect(xpp);
23889    else if (type.equals("MessageDefinition"))
23890      return parseMessageDefinition(xpp);
23891    else if (type.equals("MessageHeader"))
23892      return parseMessageHeader(xpp);
23893    else if (type.equals("NamingSystem"))
23894      return parseNamingSystem(xpp);
23895    else if (type.equals("NutritionOrder"))
23896      return parseNutritionOrder(xpp);
23897    else if (type.equals("Observation"))
23898      return parseObservation(xpp);
23899    else if (type.equals("ObservationDefinition"))
23900      return parseObservationDefinition(xpp);
23901    else if (type.equals("OperationDefinition"))
23902      return parseOperationDefinition(xpp);
23903    else if (type.equals("OperationOutcome"))
23904      return parseOperationOutcome(xpp);
23905    else if (type.equals("Organization"))
23906      return parseOrganization(xpp);
23907    else if (type.equals("OrganizationAffiliation"))
23908      return parseOrganizationAffiliation(xpp);
23909    else if (type.equals("Patient"))
23910      return parsePatient(xpp);
23911    else if (type.equals("PaymentNotice"))
23912      return parsePaymentNotice(xpp);
23913    else if (type.equals("PaymentReconciliation"))
23914      return parsePaymentReconciliation(xpp);
23915    else if (type.equals("Person"))
23916      return parsePerson(xpp);
23917    else if (type.equals("PlanDefinition"))
23918      return parsePlanDefinition(xpp);
23919    else if (type.equals("Practitioner"))
23920      return parsePractitioner(xpp);
23921    else if (type.equals("PractitionerRole"))
23922      return parsePractitionerRole(xpp);
23923    else if (type.equals("Procedure"))
23924      return parseProcedure(xpp);
23925    else if (type.equals("ProcessRequest"))
23926      return parseProcessRequest(xpp);
23927    else if (type.equals("ProcessResponse"))
23928      return parseProcessResponse(xpp);
23929    else if (type.equals("Provenance"))
23930      return parseProvenance(xpp);
23931    else if (type.equals("Questionnaire"))
23932      return parseQuestionnaire(xpp);
23933    else if (type.equals("QuestionnaireResponse"))
23934      return parseQuestionnaireResponse(xpp);
23935    else if (type.equals("RelatedPerson"))
23936      return parseRelatedPerson(xpp);
23937    else if (type.equals("RequestGroup"))
23938      return parseRequestGroup(xpp);
23939    else if (type.equals("ResearchStudy"))
23940      return parseResearchStudy(xpp);
23941    else if (type.equals("ResearchSubject"))
23942      return parseResearchSubject(xpp);
23943    else if (type.equals("RiskAssessment"))
23944      return parseRiskAssessment(xpp);
23945    else if (type.equals("Schedule"))
23946      return parseSchedule(xpp);
23947    else if (type.equals("SearchParameter"))
23948      return parseSearchParameter(xpp);
23949    else if (type.equals("Sequence"))
23950      return parseSequence(xpp);
23951    else if (type.equals("ServiceRequest"))
23952      return parseServiceRequest(xpp);
23953    else if (type.equals("Slot"))
23954      return parseSlot(xpp);
23955    else if (type.equals("Specimen"))
23956      return parseSpecimen(xpp);
23957    else if (type.equals("SpecimenDefinition"))
23958      return parseSpecimenDefinition(xpp);
23959    else if (type.equals("StructureDefinition"))
23960      return parseStructureDefinition(xpp);
23961    else if (type.equals("StructureMap"))
23962      return parseStructureMap(xpp);
23963    else if (type.equals("Subscription"))
23964      return parseSubscription(xpp);
23965    else if (type.equals("Substance"))
23966      return parseSubstance(xpp);
23967    else if (type.equals("SubstancePolymer"))
23968      return parseSubstancePolymer(xpp);
23969    else if (type.equals("SubstanceReferenceInformation"))
23970      return parseSubstanceReferenceInformation(xpp);
23971    else if (type.equals("SubstanceSpecification"))
23972      return parseSubstanceSpecification(xpp);
23973    else if (type.equals("SupplyDelivery"))
23974      return parseSupplyDelivery(xpp);
23975    else if (type.equals("SupplyRequest"))
23976      return parseSupplyRequest(xpp);
23977    else if (type.equals("Task"))
23978      return parseTask(xpp);
23979    else if (type.equals("TerminologyCapabilities"))
23980      return parseTerminologyCapabilities(xpp);
23981    else if (type.equals("TestReport"))
23982      return parseTestReport(xpp);
23983    else if (type.equals("TestScript"))
23984      return parseTestScript(xpp);
23985    else if (type.equals("UserSession"))
23986      return parseUserSession(xpp);
23987    else if (type.equals("ValueSet"))
23988      return parseValueSet(xpp);
23989    else if (type.equals("VerificationResult"))
23990      return parseVerificationResult(xpp);
23991    else if (type.equals("VisionPrescription"))
23992      return parseVisionPrescription(xpp);
23993    else if (type.equals("date"))
23994      return parseDate(xpp);
23995    else if (type.equals("dateTime"))
23996      return parseDateTime(xpp);
23997    else if (type.equals("code"))
23998      return parseCode(xpp);
23999    else if (type.equals("string"))
24000      return parseString(xpp);
24001    else if (type.equals("integer"))
24002      return parseInteger(xpp);
24003    else if (type.equals("oid"))
24004      return parseOid(xpp);
24005    else if (type.equals("canonical"))
24006      return parseCanonical(xpp);
24007    else if (type.equals("uri"))
24008      return parseUri(xpp);
24009    else if (type.equals("uuid"))
24010      return parseUuid(xpp);
24011    else if (type.equals("url"))
24012      return parseUrl(xpp);
24013    else if (type.equals("instant"))
24014      return parseInstant(xpp);
24015    else if (type.equals("boolean"))
24016      return parseBoolean(xpp);
24017    else if (type.equals("base64Binary"))
24018      return parseBase64Binary(xpp);
24019    else if (type.equals("unsignedInt"))
24020      return parseUnsignedInt(xpp);
24021    else if (type.equals("markdown"))
24022      return parseMarkdown(xpp);
24023    else if (type.equals("time"))
24024      return parseTime(xpp);
24025    else if (type.equals("id"))
24026      return parseId(xpp);
24027    else if (type.equals("positiveInt"))
24028      return parsePositiveInt(xpp);
24029    else if (type.equals("decimal"))
24030      return parseDecimal(xpp);
24031    throw new FHIRFormatError("Unknown type "+type);
24032  }
24033
24034  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
24035        if (xpp.getName().equals(prefix+"Meta"))
24036      return true;
24037    if (xpp.getName().equals(prefix+"Address"))
24038      return true;
24039    if (xpp.getName().equals(prefix+"Contributor"))
24040      return true;
24041    if (xpp.getName().equals(prefix+"Attachment"))
24042      return true;
24043    if (xpp.getName().equals(prefix+"Count"))
24044      return true;
24045    if (xpp.getName().equals(prefix+"DataRequirement"))
24046      return true;
24047    if (xpp.getName().equals(prefix+"Dosage"))
24048      return true;
24049    if (xpp.getName().equals(prefix+"Money"))
24050      return true;
24051    if (xpp.getName().equals(prefix+"HumanName"))
24052      return true;
24053    if (xpp.getName().equals(prefix+"ContactPoint"))
24054      return true;
24055    if (xpp.getName().equals(prefix+"Identifier"))
24056      return true;
24057    if (xpp.getName().equals(prefix+"Coding"))
24058      return true;
24059    if (xpp.getName().equals(prefix+"SampledData"))
24060      return true;
24061    if (xpp.getName().equals(prefix+"Ratio"))
24062      return true;
24063    if (xpp.getName().equals(prefix+"Distance"))
24064      return true;
24065    if (xpp.getName().equals(prefix+"Age"))
24066      return true;
24067    if (xpp.getName().equals(prefix+"Reference"))
24068      return true;
24069    if (xpp.getName().equals(prefix+"TriggerDefinition"))
24070      return true;
24071    if (xpp.getName().equals(prefix+"Quantity"))
24072      return true;
24073    if (xpp.getName().equals(prefix+"Period"))
24074      return true;
24075    if (xpp.getName().equals(prefix+"Duration"))
24076      return true;
24077    if (xpp.getName().equals(prefix+"Range"))
24078      return true;
24079    if (xpp.getName().equals(prefix+"RelatedArtifact"))
24080      return true;
24081    if (xpp.getName().equals(prefix+"Annotation"))
24082      return true;
24083    if (xpp.getName().equals(prefix+"ContactDetail"))
24084      return true;
24085    if (xpp.getName().equals(prefix+"UsageContext"))
24086      return true;
24087    if (xpp.getName().equals(prefix+"Expression"))
24088      return true;
24089    if (xpp.getName().equals(prefix+"Signature"))
24090      return true;
24091    if (xpp.getName().equals(prefix+"Timing"))
24092      return true;
24093    if (xpp.getName().equals(prefix+"CodeableConcept"))
24094      return true;
24095    if (xpp.getName().equals(prefix+"ParameterDefinition"))
24096      return true;
24097    if (xpp.getName().equals(prefix+"Parameters"))
24098      return true;
24099    if (xpp.getName().equals(prefix+"Account"))
24100      return true;
24101    if (xpp.getName().equals(prefix+"ActivityDefinition"))
24102      return true;
24103    if (xpp.getName().equals(prefix+"AdverseEvent"))
24104      return true;
24105    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
24106      return true;
24107    if (xpp.getName().equals(prefix+"Appointment"))
24108      return true;
24109    if (xpp.getName().equals(prefix+"AppointmentResponse"))
24110      return true;
24111    if (xpp.getName().equals(prefix+"AuditEvent"))
24112      return true;
24113    if (xpp.getName().equals(prefix+"Basic"))
24114      return true;
24115    if (xpp.getName().equals(prefix+"Binary"))
24116      return true;
24117    if (xpp.getName().equals(prefix+"BiologicallyDerivedProduct"))
24118      return true;
24119    if (xpp.getName().equals(prefix+"BodyStructure"))
24120      return true;
24121    if (xpp.getName().equals(prefix+"Bundle"))
24122      return true;
24123    if (xpp.getName().equals(prefix+"CapabilityStatement"))
24124      return true;
24125    if (xpp.getName().equals(prefix+"CarePlan"))
24126      return true;
24127    if (xpp.getName().equals(prefix+"CareTeam"))
24128      return true;
24129    if (xpp.getName().equals(prefix+"CatalogEntry"))
24130      return true;
24131    if (xpp.getName().equals(prefix+"ChargeItem"))
24132      return true;
24133    if (xpp.getName().equals(prefix+"ChargeItemDefinition"))
24134      return true;
24135    if (xpp.getName().equals(prefix+"Claim"))
24136      return true;
24137    if (xpp.getName().equals(prefix+"ClaimResponse"))
24138      return true;
24139    if (xpp.getName().equals(prefix+"ClinicalImpression"))
24140      return true;
24141    if (xpp.getName().equals(prefix+"CodeSystem"))
24142      return true;
24143    if (xpp.getName().equals(prefix+"Communication"))
24144      return true;
24145    if (xpp.getName().equals(prefix+"CommunicationRequest"))
24146      return true;
24147    if (xpp.getName().equals(prefix+"CompartmentDefinition"))
24148      return true;
24149    if (xpp.getName().equals(prefix+"Composition"))
24150      return true;
24151    if (xpp.getName().equals(prefix+"ConceptMap"))
24152      return true;
24153    if (xpp.getName().equals(prefix+"Condition"))
24154      return true;
24155    if (xpp.getName().equals(prefix+"Consent"))
24156      return true;
24157    if (xpp.getName().equals(prefix+"Contract"))
24158      return true;
24159    if (xpp.getName().equals(prefix+"Coverage"))
24160      return true;
24161    if (xpp.getName().equals(prefix+"CoverageEligibilityRequest"))
24162      return true;
24163    if (xpp.getName().equals(prefix+"CoverageEligibilityResponse"))
24164      return true;
24165    if (xpp.getName().equals(prefix+"DetectedIssue"))
24166      return true;
24167    if (xpp.getName().equals(prefix+"Device"))
24168      return true;
24169    if (xpp.getName().equals(prefix+"DeviceDefinition"))
24170      return true;
24171    if (xpp.getName().equals(prefix+"DeviceMetric"))
24172      return true;
24173    if (xpp.getName().equals(prefix+"DeviceRequest"))
24174      return true;
24175    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
24176      return true;
24177    if (xpp.getName().equals(prefix+"DiagnosticReport"))
24178      return true;
24179    if (xpp.getName().equals(prefix+"DocumentManifest"))
24180      return true;
24181    if (xpp.getName().equals(prefix+"DocumentReference"))
24182      return true;
24183    if (xpp.getName().equals(prefix+"Encounter"))
24184      return true;
24185    if (xpp.getName().equals(prefix+"Endpoint"))
24186      return true;
24187    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
24188      return true;
24189    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
24190      return true;
24191    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
24192      return true;
24193    if (xpp.getName().equals(prefix+"EventDefinition"))
24194      return true;
24195    if (xpp.getName().equals(prefix+"ExampleScenario"))
24196      return true;
24197    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
24198      return true;
24199    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
24200      return true;
24201    if (xpp.getName().equals(prefix+"Flag"))
24202      return true;
24203    if (xpp.getName().equals(prefix+"Goal"))
24204      return true;
24205    if (xpp.getName().equals(prefix+"GraphDefinition"))
24206      return true;
24207    if (xpp.getName().equals(prefix+"Group"))
24208      return true;
24209    if (xpp.getName().equals(prefix+"GuidanceResponse"))
24210      return true;
24211    if (xpp.getName().equals(prefix+"HealthcareService"))
24212      return true;
24213    if (xpp.getName().equals(prefix+"ImagingStudy"))
24214      return true;
24215    if (xpp.getName().equals(prefix+"Immunization"))
24216      return true;
24217    if (xpp.getName().equals(prefix+"ImmunizationEvaluation"))
24218      return true;
24219    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
24220      return true;
24221    if (xpp.getName().equals(prefix+"ImplementationGuide"))
24222      return true;
24223    if (xpp.getName().equals(prefix+"InsurancePlan"))
24224      return true;
24225    if (xpp.getName().equals(prefix+"Invoice"))
24226      return true;
24227    if (xpp.getName().equals(prefix+"ItemInstance"))
24228      return true;
24229    if (xpp.getName().equals(prefix+"Library"))
24230      return true;
24231    if (xpp.getName().equals(prefix+"Linkage"))
24232      return true;
24233    if (xpp.getName().equals(prefix+"List"))
24234      return true;
24235    if (xpp.getName().equals(prefix+"Location"))
24236      return true;
24237    if (xpp.getName().equals(prefix+"Measure"))
24238      return true;
24239    if (xpp.getName().equals(prefix+"MeasureReport"))
24240      return true;
24241    if (xpp.getName().equals(prefix+"Media"))
24242      return true;
24243    if (xpp.getName().equals(prefix+"Medication"))
24244      return true;
24245    if (xpp.getName().equals(prefix+"MedicationAdministration"))
24246      return true;
24247    if (xpp.getName().equals(prefix+"MedicationDispense"))
24248      return true;
24249    if (xpp.getName().equals(prefix+"MedicationKnowledge"))
24250      return true;
24251    if (xpp.getName().equals(prefix+"MedicationRequest"))
24252      return true;
24253    if (xpp.getName().equals(prefix+"MedicationStatement"))
24254      return true;
24255    if (xpp.getName().equals(prefix+"MedicinalProduct"))
24256      return true;
24257    if (xpp.getName().equals(prefix+"MedicinalProductAuthorization"))
24258      return true;
24259    if (xpp.getName().equals(prefix+"MedicinalProductClinicals"))
24260      return true;
24261    if (xpp.getName().equals(prefix+"MedicinalProductContraindication"))
24262      return true;
24263    if (xpp.getName().equals(prefix+"MedicinalProductDeviceSpec"))
24264      return true;
24265    if (xpp.getName().equals(prefix+"MedicinalProductIndication"))
24266      return true;
24267    if (xpp.getName().equals(prefix+"MedicinalProductIngredient"))
24268      return true;
24269    if (xpp.getName().equals(prefix+"MedicinalProductInteraction"))
24270      return true;
24271    if (xpp.getName().equals(prefix+"MedicinalProductManufactured"))
24272      return true;
24273    if (xpp.getName().equals(prefix+"MedicinalProductPackaged"))
24274      return true;
24275    if (xpp.getName().equals(prefix+"MedicinalProductPharmaceutical"))
24276      return true;
24277    if (xpp.getName().equals(prefix+"MedicinalProductUndesirableEffect"))
24278      return true;
24279    if (xpp.getName().equals(prefix+"MessageDefinition"))
24280      return true;
24281    if (xpp.getName().equals(prefix+"MessageHeader"))
24282      return true;
24283    if (xpp.getName().equals(prefix+"NamingSystem"))
24284      return true;
24285    if (xpp.getName().equals(prefix+"NutritionOrder"))
24286      return true;
24287    if (xpp.getName().equals(prefix+"Observation"))
24288      return true;
24289    if (xpp.getName().equals(prefix+"ObservationDefinition"))
24290      return true;
24291    if (xpp.getName().equals(prefix+"OperationDefinition"))
24292      return true;
24293    if (xpp.getName().equals(prefix+"OperationOutcome"))
24294      return true;
24295    if (xpp.getName().equals(prefix+"Organization"))
24296      return true;
24297    if (xpp.getName().equals(prefix+"OrganizationAffiliation"))
24298      return true;
24299    if (xpp.getName().equals(prefix+"Patient"))
24300      return true;
24301    if (xpp.getName().equals(prefix+"PaymentNotice"))
24302      return true;
24303    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
24304      return true;
24305    if (xpp.getName().equals(prefix+"Person"))
24306      return true;
24307    if (xpp.getName().equals(prefix+"PlanDefinition"))
24308      return true;
24309    if (xpp.getName().equals(prefix+"Practitioner"))
24310      return true;
24311    if (xpp.getName().equals(prefix+"PractitionerRole"))
24312      return true;
24313    if (xpp.getName().equals(prefix+"Procedure"))
24314      return true;
24315    if (xpp.getName().equals(prefix+"ProcessRequest"))
24316      return true;
24317    if (xpp.getName().equals(prefix+"ProcessResponse"))
24318      return true;
24319    if (xpp.getName().equals(prefix+"Provenance"))
24320      return true;
24321    if (xpp.getName().equals(prefix+"Questionnaire"))
24322      return true;
24323    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
24324      return true;
24325    if (xpp.getName().equals(prefix+"RelatedPerson"))
24326      return true;
24327    if (xpp.getName().equals(prefix+"RequestGroup"))
24328      return true;
24329    if (xpp.getName().equals(prefix+"ResearchStudy"))
24330      return true;
24331    if (xpp.getName().equals(prefix+"ResearchSubject"))
24332      return true;
24333    if (xpp.getName().equals(prefix+"RiskAssessment"))
24334      return true;
24335    if (xpp.getName().equals(prefix+"Schedule"))
24336      return true;
24337    if (xpp.getName().equals(prefix+"SearchParameter"))
24338      return true;
24339    if (xpp.getName().equals(prefix+"Sequence"))
24340      return true;
24341    if (xpp.getName().equals(prefix+"ServiceRequest"))
24342      return true;
24343    if (xpp.getName().equals(prefix+"Slot"))
24344      return true;
24345    if (xpp.getName().equals(prefix+"Specimen"))
24346      return true;
24347    if (xpp.getName().equals(prefix+"SpecimenDefinition"))
24348      return true;
24349    if (xpp.getName().equals(prefix+"StructureDefinition"))
24350      return true;
24351    if (xpp.getName().equals(prefix+"StructureMap"))
24352      return true;
24353    if (xpp.getName().equals(prefix+"Subscription"))
24354      return true;
24355    if (xpp.getName().equals(prefix+"Substance"))
24356      return true;
24357    if (xpp.getName().equals(prefix+"SubstancePolymer"))
24358      return true;
24359    if (xpp.getName().equals(prefix+"SubstanceReferenceInformation"))
24360      return true;
24361    if (xpp.getName().equals(prefix+"SubstanceSpecification"))
24362      return true;
24363    if (xpp.getName().equals(prefix+"SupplyDelivery"))
24364      return true;
24365    if (xpp.getName().equals(prefix+"SupplyRequest"))
24366      return true;
24367    if (xpp.getName().equals(prefix+"Task"))
24368      return true;
24369    if (xpp.getName().equals(prefix+"TerminologyCapabilities"))
24370      return true;
24371    if (xpp.getName().equals(prefix+"TestReport"))
24372      return true;
24373    if (xpp.getName().equals(prefix+"TestScript"))
24374      return true;
24375    if (xpp.getName().equals(prefix+"UserSession"))
24376      return true;
24377    if (xpp.getName().equals(prefix+"ValueSet"))
24378      return true;
24379    if (xpp.getName().equals(prefix+"VerificationResult"))
24380      return true;
24381    if (xpp.getName().equals(prefix+"VisionPrescription"))
24382      return true;
24383    if (xpp.getName().equals(prefix+"Date"))
24384      return true;
24385    if (xpp.getName().equals(prefix+"DateTime"))
24386      return true;
24387    if (xpp.getName().equals(prefix+"Code"))
24388      return true;
24389    if (xpp.getName().equals(prefix+"String"))
24390      return true;
24391    if (xpp.getName().equals(prefix+"Integer"))
24392      return true;
24393    if (xpp.getName().equals(prefix+"Oid"))
24394      return true;
24395    if (xpp.getName().equals(prefix+"Canonical"))
24396      return true;
24397    if (xpp.getName().equals(prefix+"Uri"))
24398      return true;
24399    if (xpp.getName().equals(prefix+"Uuid"))
24400      return true;
24401    if (xpp.getName().equals(prefix+"Url"))
24402      return true;
24403    if (xpp.getName().equals(prefix+"Instant"))
24404      return true;
24405    if (xpp.getName().equals(prefix+"Boolean"))
24406      return true;
24407    if (xpp.getName().equals(prefix+"Base64Binary"))
24408      return true;
24409    if (xpp.getName().equals(prefix+"UnsignedInt"))
24410      return true;
24411    if (xpp.getName().equals(prefix+"Markdown"))
24412      return true;
24413    if (xpp.getName().equals(prefix+"Time"))
24414      return true;
24415    if (xpp.getName().equals(prefix+"Id"))
24416      return true;
24417    if (xpp.getName().equals(prefix+"PositiveInt"))
24418      return true;
24419    if (xpp.getName().equals(prefix+"Decimal"))
24420      return true;
24421    return false;
24422  }
24423
24424  @Override
24425    protected Type parseAnyType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
24426      if (type.equals("ElementDefinition"))
24427        return parseElementDefinition(xpp);
24428      else if (type.equals("DataRequirement"))
24429        return parseDataRequirement(xpp);
24430      else
24431        return parseType(xpp, type);
24432  }
24433
24434  protected void composeElementElements(Element element) throws IOException {
24435    for (Extension e : element.getExtension()) {
24436      composeExtension("extension", e);
24437    }
24438  }
24439
24440  protected void composeBackboneElementElements(BackboneElement element) throws IOException {
24441    composeElementElements(element);
24442    for (Extension e : element.getModifierExtension()) {
24443      composeExtension("modifierExtension", e);
24444    }
24445  }
24446
24447  protected void composeBackboneElementElements(BackboneType element) throws IOException {
24448    composeElementElements(element);
24449    for (Extension e : element.getModifierExtension()) {
24450      composeExtension("modifierExtension", e);
24451    }
24452  }
24453
24454  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
24455    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
24456      composeElementAttributes(value);
24457      if (value.getValue() != null) 
24458        xml.attribute("value", e.toCode(value.getValue()));
24459        
24460      xml.enter(FHIR_NS, name);
24461      composeElementElements(value);
24462      composeElementClose(value);
24463      xml.exit(FHIR_NS, name);
24464    }    
24465  }    
24466
24467  protected void composeDate(String name, DateType value) throws IOException  {
24468    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
24469      composeElementAttributes(value);
24470      if (value.asStringValue() != null) 
24471        xml.attribute("value", value.asStringValue());
24472        
24473      xml.enter(FHIR_NS, name);
24474      composeElementElements(value);
24475      composeElementClose(value);
24476      xml.exit(FHIR_NS, name);
24477    }    
24478  }    
24479
24480  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
24481    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
24482      composeElementAttributes(value);
24483      if (value.asStringValue() != null) 
24484        xml.attribute("value", value.asStringValue());
24485        
24486      xml.enter(FHIR_NS, name);
24487      composeElementElements(value);
24488      composeElementClose(value);
24489      xml.exit(FHIR_NS, name);
24490    }    
24491  }    
24492
24493  protected void composeCode(String name, CodeType value) throws IOException  {
24494    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
24495      composeElementAttributes(value);
24496      if (value.asStringValue() != null) 
24497        xml.attribute("value", value.asStringValue());
24498        
24499      xml.enter(FHIR_NS, name);
24500      composeElementElements(value);
24501      composeElementClose(value);
24502      xml.exit(FHIR_NS, name);
24503    }    
24504  }    
24505
24506  protected void composeString(String name, StringType value) throws IOException  {
24507    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
24508      composeElementAttributes(value);
24509      if (value.asStringValue() != null) 
24510        xml.attribute("value", value.asStringValue());
24511        
24512      xml.enter(FHIR_NS, name);
24513      composeElementElements(value);
24514      composeElementClose(value);
24515      xml.exit(FHIR_NS, name);
24516    }    
24517  }    
24518
24519  protected void composeInteger(String name, IntegerType value) throws IOException  {
24520    if (value != null) { // integer
24521      composeElementAttributes(value);
24522      if (value.asStringValue() != null) 
24523        xml.attribute("value", value.asStringValue());
24524        
24525      xml.enter(FHIR_NS, name);
24526      composeElementElements(value);
24527      composeElementClose(value);
24528      xml.exit(FHIR_NS, name);
24529    }    
24530  }    
24531
24532  protected void composeOid(String name, OidType value) throws IOException  {
24533    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
24534      composeElementAttributes(value);
24535      if (value.asStringValue() != null) 
24536        xml.attribute("value", value.asStringValue());
24537        
24538      xml.enter(FHIR_NS, name);
24539      composeElementElements(value);
24540      composeElementClose(value);
24541      xml.exit(FHIR_NS, name);
24542    }    
24543  }    
24544
24545  protected void composeCanonical(String name, CanonicalType value) throws IOException  {
24546    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// canonical
24547      composeElementAttributes(value);
24548      if (value.asStringValue() != null) 
24549        xml.attribute("value", value.asStringValue());
24550        
24551      xml.enter(FHIR_NS, name);
24552      composeElementElements(value);
24553      composeElementClose(value);
24554      xml.exit(FHIR_NS, name);
24555    }    
24556  }    
24557
24558  protected void composeUri(String name, UriType value) throws IOException  {
24559    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
24560      composeElementAttributes(value);
24561      if (value.asStringValue() != null) 
24562        xml.attribute("value", value.asStringValue());
24563        
24564      xml.enter(FHIR_NS, name);
24565      composeElementElements(value);
24566      composeElementClose(value);
24567      xml.exit(FHIR_NS, name);
24568    }    
24569  }    
24570
24571  protected void composeUuid(String name, UuidType value) throws IOException  {
24572    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
24573      composeElementAttributes(value);
24574      if (value.asStringValue() != null) 
24575        xml.attribute("value", value.asStringValue());
24576        
24577      xml.enter(FHIR_NS, name);
24578      composeElementElements(value);
24579      composeElementClose(value);
24580      xml.exit(FHIR_NS, name);
24581    }    
24582  }    
24583
24584  protected void composeUrl(String name, UrlType value) throws IOException  {
24585    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// url
24586      composeElementAttributes(value);
24587      if (value.asStringValue() != null) 
24588        xml.attribute("value", value.asStringValue());
24589        
24590      xml.enter(FHIR_NS, name);
24591      composeElementElements(value);
24592      composeElementClose(value);
24593      xml.exit(FHIR_NS, name);
24594    }    
24595  }    
24596
24597  protected void composeInstant(String name, InstantType value) throws IOException  {
24598    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
24599      composeElementAttributes(value);
24600      if (value.asStringValue() != null) 
24601        xml.attribute("value", value.asStringValue());
24602        
24603      xml.enter(FHIR_NS, name);
24604      composeElementElements(value);
24605      composeElementClose(value);
24606      xml.exit(FHIR_NS, name);
24607    }    
24608  }    
24609
24610  protected void composeBoolean(String name, BooleanType value) throws IOException  {
24611    if (value != null) { // boolean
24612      composeElementAttributes(value);
24613      if (value.asStringValue() != null) 
24614        xml.attribute("value", value.asStringValue());
24615        
24616      xml.enter(FHIR_NS, name);
24617      composeElementElements(value);
24618      composeElementClose(value);
24619      xml.exit(FHIR_NS, name);
24620    }    
24621  }    
24622
24623  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
24624    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
24625      composeElementAttributes(value);
24626      if (value.asStringValue() != null) 
24627        xml.attribute("value", value.asStringValue());
24628        
24629      xml.enter(FHIR_NS, name);
24630      composeElementElements(value);
24631      composeElementClose(value);
24632      xml.exit(FHIR_NS, name);
24633    }    
24634  }    
24635
24636  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
24637    if (value != null) { // unsignedInt
24638      composeElementAttributes(value);
24639      if (value.asStringValue() != null) 
24640        xml.attribute("value", value.asStringValue());
24641        
24642      xml.enter(FHIR_NS, name);
24643      composeElementElements(value);
24644      composeElementClose(value);
24645      xml.exit(FHIR_NS, name);
24646    }    
24647  }    
24648
24649  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
24650    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
24651      composeElementAttributes(value);
24652      if (value.asStringValue() != null) 
24653        xml.attribute("value", value.asStringValue());
24654        
24655      xml.enter(FHIR_NS, name);
24656      composeElementElements(value);
24657      composeElementClose(value);
24658      xml.exit(FHIR_NS, name);
24659    }    
24660  }    
24661
24662  protected void composeTime(String name, TimeType value) throws IOException  {
24663    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
24664      composeElementAttributes(value);
24665      if (value.asStringValue() != null) 
24666        xml.attribute("value", value.asStringValue());
24667        
24668      xml.enter(FHIR_NS, name);
24669      composeElementElements(value);
24670      composeElementClose(value);
24671      xml.exit(FHIR_NS, name);
24672    }    
24673  }    
24674
24675  protected void composeId(String name, IdType value) throws IOException  {
24676    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
24677      composeElementAttributes(value);
24678      if (value.asStringValue() != null) 
24679        xml.attribute("value", value.asStringValue());
24680        
24681      xml.enter(FHIR_NS, name);
24682      composeElementElements(value);
24683      composeElementClose(value);
24684      xml.exit(FHIR_NS, name);
24685    }    
24686  }    
24687
24688  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
24689    if (value != null) { // positiveInt
24690      composeElementAttributes(value);
24691      if (value.asStringValue() != null) 
24692        xml.attribute("value", value.asStringValue());
24693        
24694      xml.enter(FHIR_NS, name);
24695      composeElementElements(value);
24696      composeElementClose(value);
24697      xml.exit(FHIR_NS, name);
24698    }    
24699  }    
24700
24701  protected void composeDecimal(String name, DecimalType value) throws IOException  {
24702    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
24703      composeElementAttributes(value);
24704      if (value.asStringValue() != null) 
24705        xml.attribute("value", value.asStringValue());
24706        
24707      xml.enter(FHIR_NS, name);
24708      composeElementElements(value);
24709      composeElementClose(value);
24710      xml.exit(FHIR_NS, name);
24711    }    
24712  }    
24713
24714  protected void composeExtension(String name, Extension element) throws IOException {
24715    if (element != null) {
24716      composeElementAttributes(element);
24717      if (element.hasUrlElement())
24718        xml.attribute("url", element.getUrlElement().getValue());
24719      xml.enter(FHIR_NS, name);
24720      composeExtensionElements(element);
24721      composeElementClose(element);
24722      xml.exit(FHIR_NS, name);
24723    }
24724  }
24725
24726  protected void composeExtensionElements(Extension element) throws IOException {
24727      composeElementElements(element);
24728      if (element.hasValue()) {
24729        composeType("value", element.getValue());
24730      }  }
24731
24732  protected void composeNarrative(String name, Narrative element) throws IOException {
24733    if (element != null) {
24734      composeElementAttributes(element);
24735      xml.enter(FHIR_NS, name);
24736      composeNarrativeElements(element);
24737      composeElementClose(element);
24738      xml.exit(FHIR_NS, name);
24739    }
24740  }
24741
24742  protected void composeNarrativeElements(Narrative element) throws IOException {
24743      composeElementElements(element);
24744      if (element.hasStatusElement())
24745        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
24746      if (element.hasDiv()) {
24747        composeXhtml("div", element.getDiv());
24748      }
24749  }
24750
24751  protected void composeCount(String name, Count element) throws IOException {
24752    if (element != null) {
24753      composeTypeAttributes(element);
24754      xml.enter(FHIR_NS, name);
24755      composeCountElements(element);
24756      composeElementClose(element);
24757      xml.exit(FHIR_NS, name);
24758    }
24759  }
24760
24761  protected void composeCountElements(Count element) throws IOException {
24762      composeQuantityElements(element);
24763  }
24764
24765  protected void composeDosage(String name, Dosage element) throws IOException {
24766    if (element != null) {
24767      composeTypeAttributes(element);
24768      xml.enter(FHIR_NS, name);
24769      composeDosageElements(element);
24770      composeElementClose(element);
24771      xml.exit(FHIR_NS, name);
24772    }
24773  }
24774
24775  protected void composeDosageElements(Dosage element) throws IOException {
24776      composeBackboneElementElements(element);
24777      if (element.hasSequenceElement()) {
24778        composeInteger("sequence", element.getSequenceElement());
24779      }
24780      if (element.hasTextElement()) {
24781        composeString("text", element.getTextElement());
24782      }
24783      if (element.hasAdditionalInstruction()) { 
24784        for (CodeableConcept e : element.getAdditionalInstruction()) 
24785          composeCodeableConcept("additionalInstruction", e);
24786      }
24787      if (element.hasPatientInstructionElement()) {
24788        composeString("patientInstruction", element.getPatientInstructionElement());
24789      }
24790      if (element.hasTiming()) {
24791        composeTiming("timing", element.getTiming());
24792      }
24793      if (element.hasAsNeeded()) {
24794        composeType("asNeeded", element.getAsNeeded());
24795      }      if (element.hasSite()) {
24796        composeCodeableConcept("site", element.getSite());
24797      }
24798      if (element.hasRoute()) {
24799        composeCodeableConcept("route", element.getRoute());
24800      }
24801      if (element.hasMethod()) {
24802        composeCodeableConcept("method", element.getMethod());
24803      }
24804      if (element.hasDoseAndRate()) { 
24805        for (Dosage.DosageDoseAndRateComponent e : element.getDoseAndRate()) 
24806          composeDosageDosageDoseAndRateComponent("doseAndRate", e);
24807      }
24808      if (element.hasMaxDosePerPeriod()) {
24809        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
24810      }
24811      if (element.hasMaxDosePerAdministration()) {
24812        composeQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
24813      }
24814      if (element.hasMaxDosePerLifetime()) {
24815        composeQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
24816      }
24817  }
24818
24819  protected void composeDosageDosageDoseAndRateComponent(String name, Dosage.DosageDoseAndRateComponent element) throws IOException {
24820    if (element != null) {
24821      composeElementAttributes(element);
24822      xml.enter(FHIR_NS, name);
24823      composeDosageDosageDoseAndRateComponentElements(element);
24824      composeElementClose(element);
24825      xml.exit(FHIR_NS, name);
24826    }
24827  }
24828
24829  protected void composeDosageDosageDoseAndRateComponentElements(Dosage.DosageDoseAndRateComponent element) throws IOException {
24830      composeElementElements(element);
24831      if (element.hasType()) {
24832        composeCodeableConcept("type", element.getType());
24833      }
24834      if (element.hasDose()) {
24835        composeType("dose", element.getDose());
24836      }      if (element.hasRate()) {
24837        composeType("rate", element.getRate());
24838      }  }
24839
24840  protected void composeDistance(String name, Distance element) throws IOException {
24841    if (element != null) {
24842      composeTypeAttributes(element);
24843      xml.enter(FHIR_NS, name);
24844      composeDistanceElements(element);
24845      composeElementClose(element);
24846      xml.exit(FHIR_NS, name);
24847    }
24848  }
24849
24850  protected void composeDistanceElements(Distance element) throws IOException {
24851      composeQuantityElements(element);
24852  }
24853
24854  protected void composeAge(String name, Age element) throws IOException {
24855    if (element != null) {
24856      composeTypeAttributes(element);
24857      xml.enter(FHIR_NS, name);
24858      composeAgeElements(element);
24859      composeElementClose(element);
24860      xml.exit(FHIR_NS, name);
24861    }
24862  }
24863
24864  protected void composeAgeElements(Age element) throws IOException {
24865      composeQuantityElements(element);
24866  }
24867
24868  protected void composeDuration(String name, Duration element) throws IOException {
24869    if (element != null) {
24870      composeTypeAttributes(element);
24871      xml.enter(FHIR_NS, name);
24872      composeDurationElements(element);
24873      composeElementClose(element);
24874      xml.exit(FHIR_NS, name);
24875    }
24876  }
24877
24878  protected void composeDurationElements(Duration element) throws IOException {
24879      composeQuantityElements(element);
24880  }
24881
24882  protected void composeTiming(String name, Timing element) throws IOException {
24883    if (element != null) {
24884      composeTypeAttributes(element);
24885      xml.enter(FHIR_NS, name);
24886      composeTimingElements(element);
24887      composeElementClose(element);
24888      xml.exit(FHIR_NS, name);
24889    }
24890  }
24891
24892  protected void composeTimingElements(Timing element) throws IOException {
24893      composeBackboneElementElements(element);
24894      if (element.hasEvent()) { 
24895        for (DateTimeType e : element.getEvent()) 
24896          composeDateTime("event", e);
24897      }
24898      if (element.hasRepeat()) {
24899        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
24900      }
24901      if (element.hasCode()) {
24902        composeCodeableConcept("code", element.getCode());
24903      }
24904  }
24905
24906  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
24907    if (element != null) {
24908      composeElementAttributes(element);
24909      xml.enter(FHIR_NS, name);
24910      composeTimingTimingRepeatComponentElements(element);
24911      composeElementClose(element);
24912      xml.exit(FHIR_NS, name);
24913    }
24914  }
24915
24916  protected void composeTimingTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
24917      composeElementElements(element);
24918      if (element.hasBounds()) {
24919        composeType("bounds", element.getBounds());
24920      }      if (element.hasCountElement()) {
24921        composePositiveInt("count", element.getCountElement());
24922      }
24923      if (element.hasCountMaxElement()) {
24924        composePositiveInt("countMax", element.getCountMaxElement());
24925      }
24926      if (element.hasDurationElement()) {
24927        composeDecimal("duration", element.getDurationElement());
24928      }
24929      if (element.hasDurationMaxElement()) {
24930        composeDecimal("durationMax", element.getDurationMaxElement());
24931      }
24932      if (element.hasDurationUnitElement())
24933        composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
24934      if (element.hasFrequencyElement()) {
24935        composePositiveInt("frequency", element.getFrequencyElement());
24936      }
24937      if (element.hasFrequencyMaxElement()) {
24938        composePositiveInt("frequencyMax", element.getFrequencyMaxElement());
24939      }
24940      if (element.hasPeriodElement()) {
24941        composeDecimal("period", element.getPeriodElement());
24942      }
24943      if (element.hasPeriodMaxElement()) {
24944        composeDecimal("periodMax", element.getPeriodMaxElement());
24945      }
24946      if (element.hasPeriodUnitElement())
24947        composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
24948        if (element.hasDayOfWeek()) 
24949          for (Enumeration<Timing.DayOfWeek> e : element.getDayOfWeek()) 
24950            composeEnumeration("dayOfWeek", e, new Timing.DayOfWeekEnumFactory());
24951      if (element.hasTimeOfDay()) { 
24952        for (TimeType e : element.getTimeOfDay()) 
24953          composeTime("timeOfDay", e);
24954      }
24955        if (element.hasWhen()) 
24956          for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
24957            composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
24958      if (element.hasOffsetElement()) {
24959        composeUnsignedInt("offset", element.getOffsetElement());
24960      }
24961  }
24962
24963  protected void composeMeta(String name, Meta element) throws IOException {
24964    if (element != null) {
24965      composeTypeAttributes(element);
24966      xml.enter(FHIR_NS, name);
24967      composeMetaElements(element);
24968      composeElementClose(element);
24969      xml.exit(FHIR_NS, name);
24970    }
24971  }
24972
24973  protected void composeMetaElements(Meta element) throws IOException {
24974      composeElementElements(element);
24975      if (element.hasVersionIdElement()) {
24976        composeId("versionId", element.getVersionIdElement());
24977      }
24978      if (element.hasLastUpdatedElement()) {
24979        composeInstant("lastUpdated", element.getLastUpdatedElement());
24980      }
24981      if (element.hasSourceElement()) {
24982        composeUri("source", element.getSourceElement());
24983      }
24984      if (element.hasProfile()) { 
24985        for (CanonicalType e : element.getProfile()) 
24986          composeCanonical("profile", e);
24987      }
24988      if (element.hasSecurity()) { 
24989        for (Coding e : element.getSecurity()) 
24990          composeCoding("security", e);
24991      }
24992      if (element.hasTag()) { 
24993        for (Coding e : element.getTag()) 
24994          composeCoding("tag", e);
24995      }
24996  }
24997
24998  protected void composeAddress(String name, Address element) throws IOException {
24999    if (element != null) {
25000      composeTypeAttributes(element);
25001      xml.enter(FHIR_NS, name);
25002      composeAddressElements(element);
25003      composeElementClose(element);
25004      xml.exit(FHIR_NS, name);
25005    }
25006  }
25007
25008  protected void composeAddressElements(Address element) throws IOException {
25009      composeElementElements(element);
25010      if (element.hasUseElement())
25011        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
25012      if (element.hasTypeElement())
25013        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
25014      if (element.hasTextElement()) {
25015        composeString("text", element.getTextElement());
25016      }
25017      if (element.hasLine()) { 
25018        for (StringType e : element.getLine()) 
25019          composeString("line", e);
25020      }
25021      if (element.hasCityElement()) {
25022        composeString("city", element.getCityElement());
25023      }
25024      if (element.hasDistrictElement()) {
25025        composeString("district", element.getDistrictElement());
25026      }
25027      if (element.hasStateElement()) {
25028        composeString("state", element.getStateElement());
25029      }
25030      if (element.hasPostalCodeElement()) {
25031        composeString("postalCode", element.getPostalCodeElement());
25032      }
25033      if (element.hasCountryElement()) {
25034        composeString("country", element.getCountryElement());
25035      }
25036      if (element.hasPeriod()) {
25037        composePeriod("period", element.getPeriod());
25038      }
25039  }
25040
25041  protected void composeContributor(String name, Contributor element) throws IOException {
25042    if (element != null) {
25043      composeTypeAttributes(element);
25044      xml.enter(FHIR_NS, name);
25045      composeContributorElements(element);
25046      composeElementClose(element);
25047      xml.exit(FHIR_NS, name);
25048    }
25049  }
25050
25051  protected void composeContributorElements(Contributor element) throws IOException {
25052      composeElementElements(element);
25053      if (element.hasTypeElement())
25054        composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
25055      if (element.hasNameElement()) {
25056        composeString("name", element.getNameElement());
25057      }
25058      if (element.hasContact()) { 
25059        for (ContactDetail e : element.getContact()) 
25060          composeContactDetail("contact", e);
25061      }
25062  }
25063
25064  protected void composeAttachment(String name, Attachment element) throws IOException {
25065    if (element != null) {
25066      composeTypeAttributes(element);
25067      xml.enter(FHIR_NS, name);
25068      composeAttachmentElements(element);
25069      composeElementClose(element);
25070      xml.exit(FHIR_NS, name);
25071    }
25072  }
25073
25074  protected void composeAttachmentElements(Attachment element) throws IOException {
25075      composeElementElements(element);
25076      if (element.hasContentTypeElement()) {
25077        composeCode("contentType", element.getContentTypeElement());
25078      }
25079      if (element.hasLanguageElement()) {
25080        composeCode("language", element.getLanguageElement());
25081      }
25082      if (element.hasDataElement()) {
25083        composeBase64Binary("data", element.getDataElement());
25084      }
25085      if (element.hasUrlElement()) {
25086        composeUrl("url", element.getUrlElement());
25087      }
25088      if (element.hasSizeElement()) {
25089        composeUnsignedInt("size", element.getSizeElement());
25090      }
25091      if (element.hasHashElement()) {
25092        composeBase64Binary("hash", element.getHashElement());
25093      }
25094      if (element.hasTitleElement()) {
25095        composeString("title", element.getTitleElement());
25096      }
25097      if (element.hasCreationElement()) {
25098        composeDateTime("creation", element.getCreationElement());
25099      }
25100  }
25101
25102  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
25103    if (element != null) {
25104      composeTypeAttributes(element);
25105      xml.enter(FHIR_NS, name);
25106      composeDataRequirementElements(element);
25107      composeElementClose(element);
25108      xml.exit(FHIR_NS, name);
25109    }
25110  }
25111
25112  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
25113      composeElementElements(element);
25114      if (element.hasTypeElement()) {
25115        composeCode("type", element.getTypeElement());
25116      }
25117      if (element.hasProfile()) { 
25118        for (CanonicalType e : element.getProfile()) 
25119          composeCanonical("profile", e);
25120      }
25121      if (element.hasSubject()) {
25122        composeType("subject", element.getSubject());
25123      }      if (element.hasMustSupport()) { 
25124        for (StringType e : element.getMustSupport()) 
25125          composeString("mustSupport", e);
25126      }
25127      if (element.hasCodeFilter()) { 
25128        for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
25129          composeDataRequirementDataRequirementCodeFilterComponent("codeFilter", e);
25130      }
25131      if (element.hasDateFilter()) { 
25132        for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
25133          composeDataRequirementDataRequirementDateFilterComponent("dateFilter", e);
25134      }
25135      if (element.hasLimitElement()) {
25136        composePositiveInt("limit", element.getLimitElement());
25137      }
25138      if (element.hasSort()) { 
25139        for (DataRequirement.DataRequirementSortComponent e : element.getSort()) 
25140          composeDataRequirementDataRequirementSortComponent("sort", e);
25141      }
25142  }
25143
25144  protected void composeDataRequirementDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
25145    if (element != null) {
25146      composeElementAttributes(element);
25147      xml.enter(FHIR_NS, name);
25148      composeDataRequirementDataRequirementCodeFilterComponentElements(element);
25149      composeElementClose(element);
25150      xml.exit(FHIR_NS, name);
25151    }
25152  }
25153
25154  protected void composeDataRequirementDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
25155      composeElementElements(element);
25156      if (element.hasPathElement()) {
25157        composeString("path", element.getPathElement());
25158      }
25159      if (element.hasSearchParamElement()) {
25160        composeString("searchParam", element.getSearchParamElement());
25161      }
25162      if (element.hasValueSetElement()) {
25163        composeCanonical("valueSet", element.getValueSetElement());
25164      }
25165      if (element.hasCode()) { 
25166        for (Coding e : element.getCode()) 
25167          composeCoding("code", e);
25168      }
25169  }
25170
25171  protected void composeDataRequirementDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
25172    if (element != null) {
25173      composeElementAttributes(element);
25174      xml.enter(FHIR_NS, name);
25175      composeDataRequirementDataRequirementDateFilterComponentElements(element);
25176      composeElementClose(element);
25177      xml.exit(FHIR_NS, name);
25178    }
25179  }
25180
25181  protected void composeDataRequirementDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
25182      composeElementElements(element);
25183      if (element.hasPathElement()) {
25184        composeString("path", element.getPathElement());
25185      }
25186      if (element.hasSearchParamElement()) {
25187        composeString("searchParam", element.getSearchParamElement());
25188      }
25189      if (element.hasValue()) {
25190        composeType("value", element.getValue());
25191      }  }
25192
25193  protected void composeDataRequirementDataRequirementSortComponent(String name, DataRequirement.DataRequirementSortComponent element) throws IOException {
25194    if (element != null) {
25195      composeElementAttributes(element);
25196      xml.enter(FHIR_NS, name);
25197      composeDataRequirementDataRequirementSortComponentElements(element);
25198      composeElementClose(element);
25199      xml.exit(FHIR_NS, name);
25200    }
25201  }
25202
25203  protected void composeDataRequirementDataRequirementSortComponentElements(DataRequirement.DataRequirementSortComponent element) throws IOException {
25204      composeElementElements(element);
25205      if (element.hasPathElement()) {
25206        composeString("path", element.getPathElement());
25207      }
25208      if (element.hasDirectionElement())
25209        composeEnumeration("direction", element.getDirectionElement(), new DataRequirement.SortDirectionEnumFactory());
25210  }
25211
25212  protected void composeMoney(String name, Money element) throws IOException {
25213    if (element != null) {
25214      composeTypeAttributes(element);
25215      xml.enter(FHIR_NS, name);
25216      composeMoneyElements(element);
25217      composeElementClose(element);
25218      xml.exit(FHIR_NS, name);
25219    }
25220  }
25221
25222  protected void composeMoneyElements(Money element) throws IOException {
25223      composeElementElements(element);
25224      if (element.hasValueElement()) {
25225        composeDecimal("value", element.getValueElement());
25226      }
25227      if (element.hasCurrencyElement()) {
25228        composeCode("currency", element.getCurrencyElement());
25229      }
25230  }
25231
25232  protected void composeHumanName(String name, HumanName element) throws IOException {
25233    if (element != null) {
25234      composeTypeAttributes(element);
25235      xml.enter(FHIR_NS, name);
25236      composeHumanNameElements(element);
25237      composeElementClose(element);
25238      xml.exit(FHIR_NS, name);
25239    }
25240  }
25241
25242  protected void composeHumanNameElements(HumanName element) throws IOException {
25243      composeElementElements(element);
25244      if (element.hasUseElement())
25245        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
25246      if (element.hasTextElement()) {
25247        composeString("text", element.getTextElement());
25248      }
25249      if (element.hasFamilyElement()) {
25250        composeString("family", element.getFamilyElement());
25251      }
25252      if (element.hasGiven()) { 
25253        for (StringType e : element.getGiven()) 
25254          composeString("given", e);
25255      }
25256      if (element.hasPrefix()) { 
25257        for (StringType e : element.getPrefix()) 
25258          composeString("prefix", e);
25259      }
25260      if (element.hasSuffix()) { 
25261        for (StringType e : element.getSuffix()) 
25262          composeString("suffix", e);
25263      }
25264      if (element.hasPeriod()) {
25265        composePeriod("period", element.getPeriod());
25266      }
25267  }
25268
25269  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
25270    if (element != null) {
25271      composeTypeAttributes(element);
25272      xml.enter(FHIR_NS, name);
25273      composeContactPointElements(element);
25274      composeElementClose(element);
25275      xml.exit(FHIR_NS, name);
25276    }
25277  }
25278
25279  protected void composeContactPointElements(ContactPoint element) throws IOException {
25280      composeElementElements(element);
25281      if (element.hasSystemElement())
25282        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
25283      if (element.hasValueElement()) {
25284        composeString("value", element.getValueElement());
25285      }
25286      if (element.hasUseElement())
25287        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
25288      if (element.hasRankElement()) {
25289        composePositiveInt("rank", element.getRankElement());
25290      }
25291      if (element.hasPeriod()) {
25292        composePeriod("period", element.getPeriod());
25293      }
25294  }
25295
25296  protected void composeIdentifier(String name, Identifier element) throws IOException {
25297    if (element != null) {
25298      composeTypeAttributes(element);
25299      xml.enter(FHIR_NS, name);
25300      composeIdentifierElements(element);
25301      composeElementClose(element);
25302      xml.exit(FHIR_NS, name);
25303    }
25304  }
25305
25306  protected void composeIdentifierElements(Identifier element) throws IOException {
25307      composeElementElements(element);
25308      if (element.hasUseElement())
25309        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
25310      if (element.hasType()) {
25311        composeCodeableConcept("type", element.getType());
25312      }
25313      if (element.hasSystemElement()) {
25314        composeUri("system", element.getSystemElement());
25315      }
25316      if (element.hasValueElement()) {
25317        composeString("value", element.getValueElement());
25318      }
25319      if (element.hasPeriod()) {
25320        composePeriod("period", element.getPeriod());
25321      }
25322      if (element.hasAssigner()) {
25323        composeReference("assigner", element.getAssigner());
25324      }
25325  }
25326
25327  protected void composeCoding(String name, Coding element) throws IOException {
25328    if (element != null) {
25329      composeTypeAttributes(element);
25330      xml.enter(FHIR_NS, name);
25331      composeCodingElements(element);
25332      composeElementClose(element);
25333      xml.exit(FHIR_NS, name);
25334    }
25335  }
25336
25337  protected void composeCodingElements(Coding element) throws IOException {
25338      composeElementElements(element);
25339      if (element.hasSystemElement()) {
25340        composeUri("system", element.getSystemElement());
25341      }
25342      if (element.hasVersionElement()) {
25343        composeString("version", element.getVersionElement());
25344      }
25345      if (element.hasCodeElement()) {
25346        composeCode("code", element.getCodeElement());
25347      }
25348      if (element.hasDisplayElement()) {
25349        composeString("display", element.getDisplayElement());
25350      }
25351      if (element.hasUserSelectedElement()) {
25352        composeBoolean("userSelected", element.getUserSelectedElement());
25353      }
25354  }
25355
25356  protected void composeSampledData(String name, SampledData element) throws IOException {
25357    if (element != null) {
25358      composeTypeAttributes(element);
25359      xml.enter(FHIR_NS, name);
25360      composeSampledDataElements(element);
25361      composeElementClose(element);
25362      xml.exit(FHIR_NS, name);
25363    }
25364  }
25365
25366  protected void composeSampledDataElements(SampledData element) throws IOException {
25367      composeElementElements(element);
25368      if (element.hasOrigin()) {
25369        composeQuantity("origin", element.getOrigin());
25370      }
25371      if (element.hasPeriodElement()) {
25372        composeDecimal("period", element.getPeriodElement());
25373      }
25374      if (element.hasFactorElement()) {
25375        composeDecimal("factor", element.getFactorElement());
25376      }
25377      if (element.hasLowerLimitElement()) {
25378        composeDecimal("lowerLimit", element.getLowerLimitElement());
25379      }
25380      if (element.hasUpperLimitElement()) {
25381        composeDecimal("upperLimit", element.getUpperLimitElement());
25382      }
25383      if (element.hasDimensionsElement()) {
25384        composePositiveInt("dimensions", element.getDimensionsElement());
25385      }
25386      if (element.hasDataElement()) {
25387        composeString("data", element.getDataElement());
25388      }
25389  }
25390
25391  protected void composeRatio(String name, Ratio element) throws IOException {
25392    if (element != null) {
25393      composeTypeAttributes(element);
25394      xml.enter(FHIR_NS, name);
25395      composeRatioElements(element);
25396      composeElementClose(element);
25397      xml.exit(FHIR_NS, name);
25398    }
25399  }
25400
25401  protected void composeRatioElements(Ratio element) throws IOException {
25402      composeElementElements(element);
25403      if (element.hasNumerator()) {
25404        composeQuantity("numerator", element.getNumerator());
25405      }
25406      if (element.hasDenominator()) {
25407        composeQuantity("denominator", element.getDenominator());
25408      }
25409  }
25410
25411  protected void composeReference(String name, Reference element) throws IOException {
25412    if (element != null) {
25413      composeTypeAttributes(element);
25414      xml.enter(FHIR_NS, name);
25415      composeReferenceElements(element);
25416      composeElementClose(element);
25417      xml.exit(FHIR_NS, name);
25418    }
25419  }
25420
25421  protected void composeReferenceElements(Reference element) throws IOException {
25422      composeElementElements(element);
25423      if (element.hasReferenceElement()) {
25424        composeString("reference", element.getReferenceElement());
25425      }
25426      if (element.hasTypeElement()) {
25427        composeUri("type", element.getTypeElement());
25428      }
25429      if (element.hasIdentifier()) {
25430        composeIdentifier("identifier", element.getIdentifier());
25431      }
25432      if (element.hasDisplayElement()) {
25433        composeString("display", element.getDisplayElement());
25434      }
25435  }
25436
25437  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
25438    if (element != null) {
25439      composeTypeAttributes(element);
25440      xml.enter(FHIR_NS, name);
25441      composeTriggerDefinitionElements(element);
25442      composeElementClose(element);
25443      xml.exit(FHIR_NS, name);
25444    }
25445  }
25446
25447  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
25448      composeElementElements(element);
25449      if (element.hasTypeElement())
25450        composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
25451      if (element.hasNameElement()) {
25452        composeString("name", element.getNameElement());
25453      }
25454      if (element.hasTiming()) {
25455        composeType("timing", element.getTiming());
25456      }      if (element.hasData()) {
25457        composeDataRequirement("data", element.getData());
25458      }
25459      if (element.hasCondition()) {
25460        composeExpression("condition", element.getCondition());
25461      }
25462  }
25463
25464  protected void composeQuantity(String name, Quantity element) throws IOException {
25465    if (element != null) {
25466      composeTypeAttributes(element);
25467      xml.enter(FHIR_NS, name);
25468      composeQuantityElements(element);
25469      composeElementClose(element);
25470      xml.exit(FHIR_NS, name);
25471    }
25472  }
25473
25474  protected void composeQuantityElements(Quantity element) throws IOException {
25475      composeElementElements(element);
25476      if (element.hasValueElement()) {
25477        composeDecimal("value", element.getValueElement());
25478      }
25479      if (element.hasComparatorElement())
25480        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
25481      if (element.hasUnitElement()) {
25482        composeString("unit", element.getUnitElement());
25483      }
25484      if (element.hasSystemElement()) {
25485        composeUri("system", element.getSystemElement());
25486      }
25487      if (element.hasCodeElement()) {
25488        composeCode("code", element.getCodeElement());
25489      }
25490  }
25491
25492  protected void composePeriod(String name, Period element) throws IOException {
25493    if (element != null) {
25494      composeTypeAttributes(element);
25495      xml.enter(FHIR_NS, name);
25496      composePeriodElements(element);
25497      composeElementClose(element);
25498      xml.exit(FHIR_NS, name);
25499    }
25500  }
25501
25502  protected void composePeriodElements(Period element) throws IOException {
25503      composeElementElements(element);
25504      if (element.hasStartElement()) {
25505        composeDateTime("start", element.getStartElement());
25506      }
25507      if (element.hasEndElement()) {
25508        composeDateTime("end", element.getEndElement());
25509      }
25510  }
25511
25512  protected void composeRange(String name, Range element) throws IOException {
25513    if (element != null) {
25514      composeTypeAttributes(element);
25515      xml.enter(FHIR_NS, name);
25516      composeRangeElements(element);
25517      composeElementClose(element);
25518      xml.exit(FHIR_NS, name);
25519    }
25520  }
25521
25522  protected void composeRangeElements(Range element) throws IOException {
25523      composeElementElements(element);
25524      if (element.hasLow()) {
25525        composeQuantity("low", element.getLow());
25526      }
25527      if (element.hasHigh()) {
25528        composeQuantity("high", element.getHigh());
25529      }
25530  }
25531
25532  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
25533    if (element != null) {
25534      composeTypeAttributes(element);
25535      xml.enter(FHIR_NS, name);
25536      composeRelatedArtifactElements(element);
25537      composeElementClose(element);
25538      xml.exit(FHIR_NS, name);
25539    }
25540  }
25541
25542  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
25543      composeElementElements(element);
25544      if (element.hasTypeElement())
25545        composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
25546      if (element.hasDisplayElement()) {
25547        composeString("display", element.getDisplayElement());
25548      }
25549      if (element.hasCitationElement()) {
25550        composeString("citation", element.getCitationElement());
25551      }
25552      if (element.hasUrlElement()) {
25553        composeUrl("url", element.getUrlElement());
25554      }
25555      if (element.hasDocument()) {
25556        composeAttachment("document", element.getDocument());
25557      }
25558      if (element.hasResourceElement()) {
25559        composeCanonical("resource", element.getResourceElement());
25560      }
25561  }
25562
25563  protected void composeAnnotation(String name, Annotation element) throws IOException {
25564    if (element != null) {
25565      composeTypeAttributes(element);
25566      xml.enter(FHIR_NS, name);
25567      composeAnnotationElements(element);
25568      composeElementClose(element);
25569      xml.exit(FHIR_NS, name);
25570    }
25571  }
25572
25573  protected void composeAnnotationElements(Annotation element) throws IOException {
25574      composeElementElements(element);
25575      if (element.hasAuthor()) {
25576        composeType("author", element.getAuthor());
25577      }      if (element.hasTimeElement()) {
25578        composeDateTime("time", element.getTimeElement());
25579      }
25580      if (element.hasTextElement()) {
25581        composeMarkdown("text", element.getTextElement());
25582      }
25583  }
25584
25585  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
25586    if (element != null) {
25587      composeTypeAttributes(element);
25588      xml.enter(FHIR_NS, name);
25589      composeContactDetailElements(element);
25590      composeElementClose(element);
25591      xml.exit(FHIR_NS, name);
25592    }
25593  }
25594
25595  protected void composeContactDetailElements(ContactDetail element) throws IOException {
25596      composeElementElements(element);
25597      if (element.hasNameElement()) {
25598        composeString("name", element.getNameElement());
25599      }
25600      if (element.hasTelecom()) { 
25601        for (ContactPoint e : element.getTelecom()) 
25602          composeContactPoint("telecom", e);
25603      }
25604  }
25605
25606  protected void composeUsageContext(String name, UsageContext element) throws IOException {
25607    if (element != null) {
25608      composeTypeAttributes(element);
25609      xml.enter(FHIR_NS, name);
25610      composeUsageContextElements(element);
25611      composeElementClose(element);
25612      xml.exit(FHIR_NS, name);
25613    }
25614  }
25615
25616  protected void composeUsageContextElements(UsageContext element) throws IOException {
25617      composeElementElements(element);
25618      if (element.hasCode()) {
25619        composeCoding("code", element.getCode());
25620      }
25621      if (element.hasValue()) {
25622        composeType("value", element.getValue());
25623      }  }
25624
25625  protected void composeExpression(String name, Expression element) throws IOException {
25626    if (element != null) {
25627      composeTypeAttributes(element);
25628      xml.enter(FHIR_NS, name);
25629      composeExpressionElements(element);
25630      composeElementClose(element);
25631      xml.exit(FHIR_NS, name);
25632    }
25633  }
25634
25635  protected void composeExpressionElements(Expression element) throws IOException {
25636      composeElementElements(element);
25637      if (element.hasDescriptionElement()) {
25638        composeString("description", element.getDescriptionElement());
25639      }
25640      if (element.hasNameElement()) {
25641        composeId("name", element.getNameElement());
25642      }
25643      if (element.hasLanguageElement())
25644        composeEnumeration("language", element.getLanguageElement(), new Expression.ExpressionLanguageEnumFactory());
25645      if (element.hasExpressionElement()) {
25646        composeString("expression", element.getExpressionElement());
25647      }
25648      if (element.hasReferenceElement()) {
25649        composeUri("reference", element.getReferenceElement());
25650      }
25651  }
25652
25653  protected void composeSignature(String name, Signature element) throws IOException {
25654    if (element != null) {
25655      composeTypeAttributes(element);
25656      xml.enter(FHIR_NS, name);
25657      composeSignatureElements(element);
25658      composeElementClose(element);
25659      xml.exit(FHIR_NS, name);
25660    }
25661  }
25662
25663  protected void composeSignatureElements(Signature element) throws IOException {
25664      composeElementElements(element);
25665      if (element.hasType()) { 
25666        for (Coding e : element.getType()) 
25667          composeCoding("type", e);
25668      }
25669      if (element.hasWhenElement()) {
25670        composeInstant("when", element.getWhenElement());
25671      }
25672      if (element.hasWho()) {
25673        composeReference("who", element.getWho());
25674      }
25675      if (element.hasOnBehalfOf()) {
25676        composeReference("onBehalfOf", element.getOnBehalfOf());
25677      }
25678      if (element.hasTargetFormatElement()) {
25679        composeCode("targetFormat", element.getTargetFormatElement());
25680      }
25681      if (element.hasSigFormatElement()) {
25682        composeCode("sigFormat", element.getSigFormatElement());
25683      }
25684      if (element.hasDataElement()) {
25685        composeBase64Binary("data", element.getDataElement());
25686      }
25687  }
25688
25689  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
25690    if (element != null) {
25691      composeTypeAttributes(element);
25692      xml.enter(FHIR_NS, name);
25693      composeCodeableConceptElements(element);
25694      composeElementClose(element);
25695      xml.exit(FHIR_NS, name);
25696    }
25697  }
25698
25699  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
25700      composeElementElements(element);
25701      if (element.hasCoding()) { 
25702        for (Coding e : element.getCoding()) 
25703          composeCoding("coding", e);
25704      }
25705      if (element.hasTextElement()) {
25706        composeString("text", element.getTextElement());
25707      }
25708  }
25709
25710  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
25711    if (element != null) {
25712      composeTypeAttributes(element);
25713      xml.enter(FHIR_NS, name);
25714      composeParameterDefinitionElements(element);
25715      composeElementClose(element);
25716      xml.exit(FHIR_NS, name);
25717    }
25718  }
25719
25720  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
25721      composeElementElements(element);
25722      if (element.hasNameElement()) {
25723        composeCode("name", element.getNameElement());
25724      }
25725      if (element.hasUseElement())
25726        composeEnumeration("use", element.getUseElement(), new ParameterDefinition.ParameterUseEnumFactory());
25727      if (element.hasMinElement()) {
25728        composeInteger("min", element.getMinElement());
25729      }
25730      if (element.hasMaxElement()) {
25731        composeString("max", element.getMaxElement());
25732      }
25733      if (element.hasDocumentationElement()) {
25734        composeString("documentation", element.getDocumentationElement());
25735      }
25736      if (element.hasTypeElement()) {
25737        composeCode("type", element.getTypeElement());
25738      }
25739      if (element.hasProfileElement()) {
25740        composeCanonical("profile", element.getProfileElement());
25741      }
25742  }
25743
25744  protected void composeMarketingStatus(String name, MarketingStatus element) throws IOException {
25745    if (element != null) {
25746      composeElementAttributes(element);
25747      xml.enter(FHIR_NS, name);
25748      composeMarketingStatusElements(element);
25749      composeElementClose(element);
25750      xml.exit(FHIR_NS, name);
25751    }
25752  }
25753
25754  protected void composeMarketingStatusElements(MarketingStatus element) throws IOException {
25755      composeBackboneElementElements(element);
25756      if (element.hasCountry()) {
25757        composeCodeableConcept("country", element.getCountry());
25758      }
25759      if (element.hasJurisdiction()) {
25760        composeCodeableConcept("jurisdiction", element.getJurisdiction());
25761      }
25762      if (element.hasStatus()) {
25763        composeCodeableConcept("status", element.getStatus());
25764      }
25765      if (element.hasDateRange()) {
25766        composePeriod("dateRange", element.getDateRange());
25767      }
25768      if (element.hasRestoreDateElement()) {
25769        composeDateTime("restoreDate", element.getRestoreDateElement());
25770      }
25771  }
25772
25773  protected void composeSubstanceAmount(String name, SubstanceAmount element) throws IOException {
25774    if (element != null) {
25775      composeElementAttributes(element);
25776      xml.enter(FHIR_NS, name);
25777      composeSubstanceAmountElements(element);
25778      composeElementClose(element);
25779      xml.exit(FHIR_NS, name);
25780    }
25781  }
25782
25783  protected void composeSubstanceAmountElements(SubstanceAmount element) throws IOException {
25784      composeBackboneElementElements(element);
25785      if (element.hasAmount()) {
25786        composeType("amount", element.getAmount());
25787      }      if (element.hasAmountType()) {
25788        composeCodeableConcept("amountType", element.getAmountType());
25789      }
25790      if (element.hasAmountTextElement()) {
25791        composeString("amountText", element.getAmountTextElement());
25792      }
25793      if (element.hasReferenceRange()) {
25794        composeSubstanceAmountSubstanceAmountReferenceRangeComponent("referenceRange", element.getReferenceRange());
25795      }
25796  }
25797
25798  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponent(String name, SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
25799    if (element != null) {
25800      composeElementAttributes(element);
25801      xml.enter(FHIR_NS, name);
25802      composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(element);
25803      composeElementClose(element);
25804      xml.exit(FHIR_NS, name);
25805    }
25806  }
25807
25808  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
25809      composeElementElements(element);
25810      if (element.hasLowLimit()) {
25811        composeQuantity("lowLimit", element.getLowLimit());
25812      }
25813      if (element.hasHighLimit()) {
25814        composeQuantity("highLimit", element.getHighLimit());
25815      }
25816  }
25817
25818  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
25819    if (element != null) {
25820      composeElementAttributes(element);
25821      xml.enter(FHIR_NS, name);
25822      composeElementDefinitionElements(element);
25823      composeElementClose(element);
25824      xml.exit(FHIR_NS, name);
25825    }
25826  }
25827
25828  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
25829      composeBackboneElementElements(element);
25830      if (element.hasPathElement()) {
25831        composeString("path", element.getPathElement());
25832      }
25833        if (element.hasRepresentation()) 
25834          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
25835            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
25836      if (element.hasSliceNameElement()) {
25837        composeString("sliceName", element.getSliceNameElement());
25838      }
25839      if (element.hasSliceIsConstrainingElement()) {
25840        composeBoolean("sliceIsConstraining", element.getSliceIsConstrainingElement());
25841      }
25842      if (element.hasLabelElement()) {
25843        composeString("label", element.getLabelElement());
25844      }
25845      if (element.hasCode()) { 
25846        for (Coding e : element.getCode()) 
25847          composeCoding("code", e);
25848      }
25849      if (element.hasSlicing()) {
25850        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
25851      }
25852      if (element.hasShortElement()) {
25853        composeString("short", element.getShortElement());
25854      }
25855      if (element.hasDefinitionElement()) {
25856        composeMarkdown("definition", element.getDefinitionElement());
25857      }
25858      if (element.hasCommentElement()) {
25859        composeMarkdown("comment", element.getCommentElement());
25860      }
25861      if (element.hasRequirementsElement()) {
25862        composeMarkdown("requirements", element.getRequirementsElement());
25863      }
25864      if (element.hasAlias()) { 
25865        for (StringType e : element.getAlias()) 
25866          composeString("alias", e);
25867      }
25868      if (element.hasMinElement()) {
25869        composeUnsignedInt("min", element.getMinElement());
25870      }
25871      if (element.hasMaxElement()) {
25872        composeString("max", element.getMaxElement());
25873      }
25874      if (element.hasBase()) {
25875        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
25876      }
25877      if (element.hasContentReferenceElement()) {
25878        composeUri("contentReference", element.getContentReferenceElement());
25879      }
25880      if (element.hasType()) { 
25881        for (ElementDefinition.TypeRefComponent e : element.getType()) 
25882          composeElementDefinitionTypeRefComponent("type", e);
25883      }
25884      if (element.hasDefaultValue()) {
25885        composeType("defaultValue", element.getDefaultValue());
25886      }      if (element.hasMeaningWhenMissingElement()) {
25887        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
25888      }
25889      if (element.hasOrderMeaningElement()) {
25890        composeString("orderMeaning", element.getOrderMeaningElement());
25891      }
25892      if (element.hasFixed()) {
25893        composeType("fixed", element.getFixed());
25894      }      if (element.hasPattern()) {
25895        composeType("pattern", element.getPattern());
25896      }      if (element.hasExample()) { 
25897        for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
25898          composeElementDefinitionElementDefinitionExampleComponent("example", e);
25899      }
25900      if (element.hasMinValue()) {
25901        composeType("minValue", element.getMinValue());
25902      }      if (element.hasMaxValue()) {
25903        composeType("maxValue", element.getMaxValue());
25904      }      if (element.hasMaxLengthElement()) {
25905        composeInteger("maxLength", element.getMaxLengthElement());
25906      }
25907      if (element.hasCondition()) { 
25908        for (IdType e : element.getCondition()) 
25909          composeId("condition", e);
25910      }
25911      if (element.hasConstraint()) { 
25912        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
25913          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
25914      }
25915      if (element.hasMustSupportElement()) {
25916        composeBoolean("mustSupport", element.getMustSupportElement());
25917      }
25918      if (element.hasIsModifierElement()) {
25919        composeBoolean("isModifier", element.getIsModifierElement());
25920      }
25921      if (element.hasIsModifierReasonElement()) {
25922        composeString("isModifierReason", element.getIsModifierReasonElement());
25923      }
25924      if (element.hasIsSummaryElement()) {
25925        composeBoolean("isSummary", element.getIsSummaryElement());
25926      }
25927      if (element.hasBinding()) {
25928        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
25929      }
25930      if (element.hasMapping()) { 
25931        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
25932          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
25933      }
25934  }
25935
25936  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
25937    if (element != null) {
25938      composeElementAttributes(element);
25939      xml.enter(FHIR_NS, name);
25940      composeElementDefinitionElementDefinitionSlicingComponentElements(element);
25941      composeElementClose(element);
25942      xml.exit(FHIR_NS, name);
25943    }
25944  }
25945
25946  protected void composeElementDefinitionElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
25947      composeElementElements(element);
25948      if (element.hasDiscriminator()) { 
25949        for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
25950          composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
25951      }
25952      if (element.hasDescriptionElement()) {
25953        composeString("description", element.getDescriptionElement());
25954      }
25955      if (element.hasOrderedElement()) {
25956        composeBoolean("ordered", element.getOrderedElement());
25957      }
25958      if (element.hasRulesElement())
25959        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
25960  }
25961
25962  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
25963    if (element != null) {
25964      composeElementAttributes(element);
25965      xml.enter(FHIR_NS, name);
25966      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(element);
25967      composeElementClose(element);
25968      xml.exit(FHIR_NS, name);
25969    }
25970  }
25971
25972  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
25973      composeElementElements(element);
25974      if (element.hasTypeElement())
25975        composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
25976      if (element.hasPathElement()) {
25977        composeString("path", element.getPathElement());
25978      }
25979  }
25980
25981  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
25982    if (element != null) {
25983      composeElementAttributes(element);
25984      xml.enter(FHIR_NS, name);
25985      composeElementDefinitionElementDefinitionBaseComponentElements(element);
25986      composeElementClose(element);
25987      xml.exit(FHIR_NS, name);
25988    }
25989  }
25990
25991  protected void composeElementDefinitionElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
25992      composeElementElements(element);
25993      if (element.hasPathElement()) {
25994        composeString("path", element.getPathElement());
25995      }
25996      if (element.hasMinElement()) {
25997        composeUnsignedInt("min", element.getMinElement());
25998      }
25999      if (element.hasMaxElement()) {
26000        composeString("max", element.getMaxElement());
26001      }
26002  }
26003
26004  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
26005    if (element != null) {
26006      composeElementAttributes(element);
26007      xml.enter(FHIR_NS, name);
26008      composeElementDefinitionTypeRefComponentElements(element);
26009      composeElementClose(element);
26010      xml.exit(FHIR_NS, name);
26011    }
26012  }
26013
26014  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
26015      composeElementElements(element);
26016      if (element.hasCodeElement()) {
26017        composeUri("code", element.getCodeElement());
26018      }
26019      if (element.hasProfile()) { 
26020        for (CanonicalType e : element.getProfile()) 
26021          composeCanonical("profile", e);
26022      }
26023      if (element.hasTargetProfile()) { 
26024        for (CanonicalType e : element.getTargetProfile()) 
26025          composeCanonical("targetProfile", e);
26026      }
26027        if (element.hasAggregation()) 
26028          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
26029            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
26030      if (element.hasVersioningElement())
26031        composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
26032  }
26033
26034  protected void composeElementDefinitionElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
26035    if (element != null) {
26036      composeElementAttributes(element);
26037      xml.enter(FHIR_NS, name);
26038      composeElementDefinitionElementDefinitionExampleComponentElements(element);
26039      composeElementClose(element);
26040      xml.exit(FHIR_NS, name);
26041    }
26042  }
26043
26044  protected void composeElementDefinitionElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
26045      composeElementElements(element);
26046      if (element.hasLabelElement()) {
26047        composeString("label", element.getLabelElement());
26048      }
26049      if (element.hasValue()) {
26050        composeType("value", element.getValue());
26051      }  }
26052
26053  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
26054    if (element != null) {
26055      composeElementAttributes(element);
26056      xml.enter(FHIR_NS, name);
26057      composeElementDefinitionElementDefinitionConstraintComponentElements(element);
26058      composeElementClose(element);
26059      xml.exit(FHIR_NS, name);
26060    }
26061  }
26062
26063  protected void composeElementDefinitionElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
26064      composeElementElements(element);
26065      if (element.hasKeyElement()) {
26066        composeId("key", element.getKeyElement());
26067      }
26068      if (element.hasRequirementsElement()) {
26069        composeString("requirements", element.getRequirementsElement());
26070      }
26071      if (element.hasSeverityElement())
26072        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
26073      if (element.hasHumanElement()) {
26074        composeString("human", element.getHumanElement());
26075      }
26076      if (element.hasExpressionElement()) {
26077        composeString("expression", element.getExpressionElement());
26078      }
26079      if (element.hasXpathElement()) {
26080        composeString("xpath", element.getXpathElement());
26081      }
26082      if (element.hasSourceElement()) {
26083        composeCanonical("source", element.getSourceElement());
26084      }
26085  }
26086
26087  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
26088    if (element != null) {
26089      composeElementAttributes(element);
26090      xml.enter(FHIR_NS, name);
26091      composeElementDefinitionElementDefinitionBindingComponentElements(element);
26092      composeElementClose(element);
26093      xml.exit(FHIR_NS, name);
26094    }
26095  }
26096
26097  protected void composeElementDefinitionElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
26098      composeElementElements(element);
26099      if (element.hasStrengthElement())
26100        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
26101      if (element.hasDescriptionElement()) {
26102        composeString("description", element.getDescriptionElement());
26103      }
26104      if (element.hasValueSetElement()) {
26105        composeCanonical("valueSet", element.getValueSetElement());
26106      }
26107  }
26108
26109  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
26110    if (element != null) {
26111      composeElementAttributes(element);
26112      xml.enter(FHIR_NS, name);
26113      composeElementDefinitionElementDefinitionMappingComponentElements(element);
26114      composeElementClose(element);
26115      xml.exit(FHIR_NS, name);
26116    }
26117  }
26118
26119  protected void composeElementDefinitionElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
26120      composeElementElements(element);
26121      if (element.hasIdentityElement()) {
26122        composeId("identity", element.getIdentityElement());
26123      }
26124      if (element.hasLanguageElement()) {
26125        composeCode("language", element.getLanguageElement());
26126      }
26127      if (element.hasMapElement()) {
26128        composeString("map", element.getMapElement());
26129      }
26130      if (element.hasCommentElement()) {
26131        composeString("comment", element.getCommentElement());
26132      }
26133  }
26134
26135  protected void composeSubstanceMoiety(String name, SubstanceMoiety element) throws IOException {
26136    if (element != null) {
26137      composeElementAttributes(element);
26138      xml.enter(FHIR_NS, name);
26139      composeSubstanceMoietyElements(element);
26140      composeElementClose(element);
26141      xml.exit(FHIR_NS, name);
26142    }
26143  }
26144
26145  protected void composeSubstanceMoietyElements(SubstanceMoiety element) throws IOException {
26146      composeBackboneElementElements(element);
26147      if (element.hasRole()) {
26148        composeCodeableConcept("role", element.getRole());
26149      }
26150      if (element.hasIdentifier()) {
26151        composeIdentifier("identifier", element.getIdentifier());
26152      }
26153      if (element.hasNameElement()) {
26154        composeString("name", element.getNameElement());
26155      }
26156      if (element.hasStereochemistry()) {
26157        composeCodeableConcept("stereochemistry", element.getStereochemistry());
26158      }
26159      if (element.hasOpticalActivity()) {
26160        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
26161      }
26162      if (element.hasMolecularFormulaElement()) {
26163        composeString("molecularFormula", element.getMolecularFormulaElement());
26164      }
26165      if (element.hasAmount()) {
26166        composeSubstanceAmount("amount", element.getAmount());
26167      }
26168  }
26169
26170  protected void composeProductShelfLife(String name, ProductShelfLife element) throws IOException {
26171    if (element != null) {
26172      composeElementAttributes(element);
26173      xml.enter(FHIR_NS, name);
26174      composeProductShelfLifeElements(element);
26175      composeElementClose(element);
26176      xml.exit(FHIR_NS, name);
26177    }
26178  }
26179
26180  protected void composeProductShelfLifeElements(ProductShelfLife element) throws IOException {
26181      composeBackboneElementElements(element);
26182      if (element.hasIdentifier()) {
26183        composeIdentifier("identifier", element.getIdentifier());
26184      }
26185      if (element.hasType()) {
26186        composeCodeableConcept("type", element.getType());
26187      }
26188      if (element.hasPeriod()) {
26189        composeQuantity("period", element.getPeriod());
26190      }
26191      if (element.hasSpecialPrecautionsForStorage()) { 
26192        for (CodeableConcept e : element.getSpecialPrecautionsForStorage()) 
26193          composeCodeableConcept("specialPrecautionsForStorage", e);
26194      }
26195  }
26196
26197  protected void composeProdCharacteristic(String name, ProdCharacteristic element) throws IOException {
26198    if (element != null) {
26199      composeElementAttributes(element);
26200      xml.enter(FHIR_NS, name);
26201      composeProdCharacteristicElements(element);
26202      composeElementClose(element);
26203      xml.exit(FHIR_NS, name);
26204    }
26205  }
26206
26207  protected void composeProdCharacteristicElements(ProdCharacteristic element) throws IOException {
26208      composeBackboneElementElements(element);
26209      if (element.hasHeight()) {
26210        composeQuantity("height", element.getHeight());
26211      }
26212      if (element.hasWidth()) {
26213        composeQuantity("width", element.getWidth());
26214      }
26215      if (element.hasDepth()) {
26216        composeQuantity("depth", element.getDepth());
26217      }
26218      if (element.hasWeight()) {
26219        composeQuantity("weight", element.getWeight());
26220      }
26221      if (element.hasNominalVolume()) {
26222        composeQuantity("nominalVolume", element.getNominalVolume());
26223      }
26224      if (element.hasExternalDiameter()) {
26225        composeQuantity("externalDiameter", element.getExternalDiameter());
26226      }
26227      if (element.hasShapeElement()) {
26228        composeString("shape", element.getShapeElement());
26229      }
26230      if (element.hasColor()) { 
26231        for (StringType e : element.getColor()) 
26232          composeString("color", e);
26233      }
26234      if (element.hasImprint()) { 
26235        for (StringType e : element.getImprint()) 
26236          composeString("imprint", e);
26237      }
26238      if (element.hasImage()) { 
26239        for (Attachment e : element.getImage()) 
26240          composeAttachment("image", e);
26241      }
26242      if (element.hasScoring()) {
26243        composeCodeableConcept("scoring", element.getScoring());
26244      }
26245  }
26246
26247  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
26248    composeResourceAttributes(element);
26249  }
26250
26251  protected void composeDomainResourceElements(DomainResource element) throws IOException {
26252    composeResourceElements(element);
26253      if (element.hasText()) {
26254        composeNarrative("text", element.getText());
26255      }
26256      if (element.hasContained()) { 
26257        for (Resource e : element.getContained()) 
26258        {
26259          xml.enter(FHIR_NS, "contained");
26260          composeResource(e);
26261          xml.exit(FHIR_NS, "contained");
26262        }
26263      }
26264      if (element.hasExtension()) 
26265        for (Extension e : element.getExtension()) 
26266          composeExtension("extension", e);
26267      if (element.hasModifierExtension()) { 
26268        for (Extension e : element.getModifierExtension()) 
26269          composeExtension("modifierExtension", e);
26270      }
26271  }
26272
26273  protected void composeParameters(String name, Parameters element) throws IOException {
26274    if (element != null) {
26275      composeResourceAttributes(element);
26276      xml.enter(FHIR_NS, name);
26277      composeParametersElements(element);
26278      composeElementClose(element);
26279      xml.exit(FHIR_NS, name);
26280    }
26281  }
26282
26283  protected void composeParametersElements(Parameters element) throws IOException {
26284      composeResourceElements(element);
26285      if (element.hasParameter()) { 
26286        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
26287          composeParametersParametersParameterComponent("parameter", e);
26288      }
26289  }
26290
26291  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
26292    if (element != null) {
26293      composeElementAttributes(element);
26294      xml.enter(FHIR_NS, name);
26295      composeParametersParametersParameterComponentElements(element);
26296      composeElementClose(element);
26297      xml.exit(FHIR_NS, name);
26298    }
26299  }
26300
26301  protected void composeParametersParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
26302      composeBackboneElementElements(element);
26303      if (element.hasNameElement()) {
26304        composeString("name", element.getNameElement());
26305      }
26306      if (element.hasValue()) {
26307        composeType("value", element.getValue());
26308      }      if (element.hasResource()) {
26309        xml.enter(FHIR_NS, "resource");
26310        composeResource(element.getResource());
26311        xml.exit(FHIR_NS, "resource");
26312      }
26313      if (element.hasPart()) { 
26314        for (Parameters.ParametersParameterComponent e : element.getPart()) 
26315          composeParametersParametersParameterComponent("part", e);
26316      }
26317  }
26318
26319  protected void composeResourceAttributes(Resource element) throws IOException {
26320    if (style != OutputStyle.CANONICAL)
26321      for (String comment : element.getFormatCommentsPre())
26322        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
26323  }
26324
26325  protected void composeResourceElements(Resource element) throws IOException {
26326      if (element.hasIdElement()) {
26327        composeId("id", element.getIdElement());
26328      }
26329      if (element.hasMeta()) {
26330        composeMeta("meta", element.getMeta());
26331      }
26332      if (element.hasImplicitRulesElement()) {
26333        composeUri("implicitRules", element.getImplicitRulesElement());
26334      }
26335      if (element.hasLanguageElement()) {
26336        composeCode("language", element.getLanguageElement());
26337      }
26338  }
26339
26340  protected void composeAccount(String name, Account element) throws IOException {
26341    if (element != null) {
26342      composeDomainResourceAttributes(element);
26343      xml.enter(FHIR_NS, name);
26344      composeAccountElements(element);
26345      composeElementClose(element);
26346      xml.exit(FHIR_NS, name);
26347    }
26348  }
26349
26350  protected void composeAccountElements(Account element) throws IOException {
26351      composeDomainResourceElements(element);
26352      if (element.hasIdentifier()) { 
26353        for (Identifier e : element.getIdentifier()) 
26354          composeIdentifier("identifier", e);
26355      }
26356      if (element.hasStatusElement())
26357        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
26358      if (element.hasType()) {
26359        composeCodeableConcept("type", element.getType());
26360      }
26361      if (element.hasNameElement()) {
26362        composeString("name", element.getNameElement());
26363      }
26364      if (element.hasSubject()) { 
26365        for (Reference e : element.getSubject()) 
26366          composeReference("subject", e);
26367      }
26368      if (element.hasServicePeriod()) {
26369        composePeriod("servicePeriod", element.getServicePeriod());
26370      }
26371      if (element.hasCoverage()) { 
26372        for (Account.CoverageComponent e : element.getCoverage()) 
26373          composeAccountCoverageComponent("coverage", e);
26374      }
26375      if (element.hasOwner()) {
26376        composeReference("owner", element.getOwner());
26377      }
26378      if (element.hasDescriptionElement()) {
26379        composeString("description", element.getDescriptionElement());
26380      }
26381      if (element.hasGuarantor()) { 
26382        for (Account.GuarantorComponent e : element.getGuarantor()) 
26383          composeAccountGuarantorComponent("guarantor", e);
26384      }
26385      if (element.hasPartOf()) {
26386        composeReference("partOf", element.getPartOf());
26387      }
26388  }
26389
26390  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
26391    if (element != null) {
26392      composeElementAttributes(element);
26393      xml.enter(FHIR_NS, name);
26394      composeAccountCoverageComponentElements(element);
26395      composeElementClose(element);
26396      xml.exit(FHIR_NS, name);
26397    }
26398  }
26399
26400  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
26401      composeBackboneElementElements(element);
26402      if (element.hasCoverage()) {
26403        composeReference("coverage", element.getCoverage());
26404      }
26405      if (element.hasPriorityElement()) {
26406        composePositiveInt("priority", element.getPriorityElement());
26407      }
26408  }
26409
26410  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
26411    if (element != null) {
26412      composeElementAttributes(element);
26413      xml.enter(FHIR_NS, name);
26414      composeAccountGuarantorComponentElements(element);
26415      composeElementClose(element);
26416      xml.exit(FHIR_NS, name);
26417    }
26418  }
26419
26420  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
26421      composeBackboneElementElements(element);
26422      if (element.hasParty()) {
26423        composeReference("party", element.getParty());
26424      }
26425      if (element.hasOnHoldElement()) {
26426        composeBoolean("onHold", element.getOnHoldElement());
26427      }
26428      if (element.hasPeriod()) {
26429        composePeriod("period", element.getPeriod());
26430      }
26431  }
26432
26433  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
26434    if (element != null) {
26435      composeDomainResourceAttributes(element);
26436      xml.enter(FHIR_NS, name);
26437      composeActivityDefinitionElements(element);
26438      composeElementClose(element);
26439      xml.exit(FHIR_NS, name);
26440    }
26441  }
26442
26443  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
26444      composeDomainResourceElements(element);
26445      if (element.hasUrlElement()) {
26446        composeUri("url", element.getUrlElement());
26447      }
26448      if (element.hasIdentifier()) { 
26449        for (Identifier e : element.getIdentifier()) 
26450          composeIdentifier("identifier", e);
26451      }
26452      if (element.hasVersionElement()) {
26453        composeString("version", element.getVersionElement());
26454      }
26455      if (element.hasNameElement()) {
26456        composeString("name", element.getNameElement());
26457      }
26458      if (element.hasTitleElement()) {
26459        composeString("title", element.getTitleElement());
26460      }
26461      if (element.hasSubtitleElement()) {
26462        composeString("subtitle", element.getSubtitleElement());
26463      }
26464      if (element.hasStatusElement())
26465        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
26466      if (element.hasExperimentalElement()) {
26467        composeBoolean("experimental", element.getExperimentalElement());
26468      }
26469      if (element.hasSubject()) {
26470        composeType("subject", element.getSubject());
26471      }      if (element.hasDateElement()) {
26472        composeDateTime("date", element.getDateElement());
26473      }
26474      if (element.hasPublisherElement()) {
26475        composeString("publisher", element.getPublisherElement());
26476      }
26477      if (element.hasContact()) { 
26478        for (ContactDetail e : element.getContact()) 
26479          composeContactDetail("contact", e);
26480      }
26481      if (element.hasDescriptionElement()) {
26482        composeMarkdown("description", element.getDescriptionElement());
26483      }
26484      if (element.hasUseContext()) { 
26485        for (UsageContext e : element.getUseContext()) 
26486          composeUsageContext("useContext", e);
26487      }
26488      if (element.hasJurisdiction()) { 
26489        for (CodeableConcept e : element.getJurisdiction()) 
26490          composeCodeableConcept("jurisdiction", e);
26491      }
26492      if (element.hasPurposeElement()) {
26493        composeMarkdown("purpose", element.getPurposeElement());
26494      }
26495      if (element.hasUsageElement()) {
26496        composeString("usage", element.getUsageElement());
26497      }
26498      if (element.hasCopyrightElement()) {
26499        composeMarkdown("copyright", element.getCopyrightElement());
26500      }
26501      if (element.hasApprovalDateElement()) {
26502        composeDate("approvalDate", element.getApprovalDateElement());
26503      }
26504      if (element.hasLastReviewDateElement()) {
26505        composeDate("lastReviewDate", element.getLastReviewDateElement());
26506      }
26507      if (element.hasEffectivePeriod()) {
26508        composePeriod("effectivePeriod", element.getEffectivePeriod());
26509      }
26510      if (element.hasTopic()) { 
26511        for (CodeableConcept e : element.getTopic()) 
26512          composeCodeableConcept("topic", e);
26513      }
26514      if (element.hasAuthor()) { 
26515        for (ContactDetail e : element.getAuthor()) 
26516          composeContactDetail("author", e);
26517      }
26518      if (element.hasEditor()) { 
26519        for (ContactDetail e : element.getEditor()) 
26520          composeContactDetail("editor", e);
26521      }
26522      if (element.hasReviewer()) { 
26523        for (ContactDetail e : element.getReviewer()) 
26524          composeContactDetail("reviewer", e);
26525      }
26526      if (element.hasEndorser()) { 
26527        for (ContactDetail e : element.getEndorser()) 
26528          composeContactDetail("endorser", e);
26529      }
26530      if (element.hasRelatedArtifact()) { 
26531        for (RelatedArtifact e : element.getRelatedArtifact()) 
26532          composeRelatedArtifact("relatedArtifact", e);
26533      }
26534      if (element.hasLibrary()) { 
26535        for (CanonicalType e : element.getLibrary()) 
26536          composeCanonical("library", e);
26537      }
26538      if (element.hasKindElement())
26539        composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.ActivityDefinitionKindEnumFactory());
26540      if (element.hasProfileElement()) {
26541        composeCanonical("profile", element.getProfileElement());
26542      }
26543      if (element.hasCode()) {
26544        composeCodeableConcept("code", element.getCode());
26545      }
26546      if (element.hasIntentElement())
26547        composeEnumeration("intent", element.getIntentElement(), new ActivityDefinition.RequestIntentEnumFactory());
26548      if (element.hasPriorityElement())
26549        composeEnumeration("priority", element.getPriorityElement(), new ActivityDefinition.RequestPriorityEnumFactory());
26550      if (element.hasDoNotPerformElement()) {
26551        composeBoolean("doNotPerform", element.getDoNotPerformElement());
26552      }
26553      if (element.hasTiming()) {
26554        composeType("timing", element.getTiming());
26555      }      if (element.hasLocation()) {
26556        composeReference("location", element.getLocation());
26557      }
26558      if (element.hasParticipant()) { 
26559        for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
26560          composeActivityDefinitionActivityDefinitionParticipantComponent("participant", e);
26561      }
26562      if (element.hasProduct()) {
26563        composeType("product", element.getProduct());
26564      }      if (element.hasQuantity()) {
26565        composeQuantity("quantity", element.getQuantity());
26566      }
26567      if (element.hasDosage()) { 
26568        for (Dosage e : element.getDosage()) 
26569          composeDosage("dosage", e);
26570      }
26571      if (element.hasBodySite()) { 
26572        for (CodeableConcept e : element.getBodySite()) 
26573          composeCodeableConcept("bodySite", e);
26574      }
26575      if (element.hasSpecimenRequirement()) { 
26576        for (Reference e : element.getSpecimenRequirement()) 
26577          composeReference("specimenRequirement", e);
26578      }
26579      if (element.hasObservationRequirement()) { 
26580        for (Reference e : element.getObservationRequirement()) 
26581          composeReference("observationRequirement", e);
26582      }
26583      if (element.hasObservationResultRequirement()) { 
26584        for (Reference e : element.getObservationResultRequirement()) 
26585          composeReference("observationResultRequirement", e);
26586      }
26587      if (element.hasTransformElement()) {
26588        composeCanonical("transform", element.getTransformElement());
26589      }
26590      if (element.hasDynamicValue()) { 
26591        for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
26592          composeActivityDefinitionActivityDefinitionDynamicValueComponent("dynamicValue", e);
26593      }
26594  }
26595
26596  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
26597    if (element != null) {
26598      composeElementAttributes(element);
26599      xml.enter(FHIR_NS, name);
26600      composeActivityDefinitionActivityDefinitionParticipantComponentElements(element);
26601      composeElementClose(element);
26602      xml.exit(FHIR_NS, name);
26603    }
26604  }
26605
26606  protected void composeActivityDefinitionActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
26607      composeBackboneElementElements(element);
26608      if (element.hasTypeElement())
26609        composeEnumeration("type", element.getTypeElement(), new ActivityDefinition.ActivityParticipantTypeEnumFactory());
26610      if (element.hasRole()) {
26611        composeCodeableConcept("role", element.getRole());
26612      }
26613  }
26614
26615  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
26616    if (element != null) {
26617      composeElementAttributes(element);
26618      xml.enter(FHIR_NS, name);
26619      composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(element);
26620      composeElementClose(element);
26621      xml.exit(FHIR_NS, name);
26622    }
26623  }
26624
26625  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
26626      composeBackboneElementElements(element);
26627      if (element.hasPathElement()) {
26628        composeString("path", element.getPathElement());
26629      }
26630      if (element.hasExpression()) {
26631        composeExpression("expression", element.getExpression());
26632      }
26633  }
26634
26635  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
26636    if (element != null) {
26637      composeDomainResourceAttributes(element);
26638      xml.enter(FHIR_NS, name);
26639      composeAdverseEventElements(element);
26640      composeElementClose(element);
26641      xml.exit(FHIR_NS, name);
26642    }
26643  }
26644
26645  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
26646      composeDomainResourceElements(element);
26647      if (element.hasIdentifier()) {
26648        composeIdentifier("identifier", element.getIdentifier());
26649      }
26650      if (element.hasActualityElement())
26651        composeEnumeration("actuality", element.getActualityElement(), new AdverseEvent.AdverseEventActualityEnumFactory());
26652      if (element.hasCategory()) { 
26653        for (CodeableConcept e : element.getCategory()) 
26654          composeCodeableConcept("category", e);
26655      }
26656      if (element.hasEvent()) {
26657        composeCodeableConcept("event", element.getEvent());
26658      }
26659      if (element.hasSubject()) {
26660        composeReference("subject", element.getSubject());
26661      }
26662      if (element.hasContext()) {
26663        composeReference("context", element.getContext());
26664      }
26665      if (element.hasDateElement()) {
26666        composeDateTime("date", element.getDateElement());
26667      }
26668      if (element.hasDetectedElement()) {
26669        composeDateTime("detected", element.getDetectedElement());
26670      }
26671      if (element.hasRecordedDateElement()) {
26672        composeDateTime("recordedDate", element.getRecordedDateElement());
26673      }
26674      if (element.hasResultingCondition()) { 
26675        for (Reference e : element.getResultingCondition()) 
26676          composeReference("resultingCondition", e);
26677      }
26678      if (element.hasLocation()) {
26679        composeReference("location", element.getLocation());
26680      }
26681      if (element.hasSeriousness()) {
26682        composeCodeableConcept("seriousness", element.getSeriousness());
26683      }
26684      if (element.hasSeverity()) {
26685        composeCodeableConcept("severity", element.getSeverity());
26686      }
26687      if (element.hasOutcome()) {
26688        composeCodeableConcept("outcome", element.getOutcome());
26689      }
26690      if (element.hasRecorder()) {
26691        composeReference("recorder", element.getRecorder());
26692      }
26693      if (element.hasContributor()) { 
26694        for (Reference e : element.getContributor()) 
26695          composeReference("contributor", e);
26696      }
26697      if (element.hasSuspectEntity()) { 
26698        for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
26699          composeAdverseEventAdverseEventSuspectEntityComponent("suspectEntity", e);
26700      }
26701      if (element.hasSubjectMedicalHistory()) { 
26702        for (Reference e : element.getSubjectMedicalHistory()) 
26703          composeReference("subjectMedicalHistory", e);
26704      }
26705      if (element.hasReferenceDocument()) { 
26706        for (Reference e : element.getReferenceDocument()) 
26707          composeReference("referenceDocument", e);
26708      }
26709      if (element.hasStudy()) { 
26710        for (Reference e : element.getStudy()) 
26711          composeReference("study", e);
26712      }
26713  }
26714
26715  protected void composeAdverseEventAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
26716    if (element != null) {
26717      composeElementAttributes(element);
26718      xml.enter(FHIR_NS, name);
26719      composeAdverseEventAdverseEventSuspectEntityComponentElements(element);
26720      composeElementClose(element);
26721      xml.exit(FHIR_NS, name);
26722    }
26723  }
26724
26725  protected void composeAdverseEventAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
26726      composeBackboneElementElements(element);
26727      if (element.hasInstance()) {
26728        composeReference("instance", element.getInstance());
26729      }
26730      if (element.hasCausality()) { 
26731        for (AdverseEvent.AdverseEventSuspectEntityCausalityComponent e : element.getCausality()) 
26732          composeAdverseEventAdverseEventSuspectEntityCausalityComponent("causality", e);
26733      }
26734  }
26735
26736  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponent(String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
26737    if (element != null) {
26738      composeElementAttributes(element);
26739      xml.enter(FHIR_NS, name);
26740      composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(element);
26741      composeElementClose(element);
26742      xml.exit(FHIR_NS, name);
26743    }
26744  }
26745
26746  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
26747      composeBackboneElementElements(element);
26748      if (element.hasAssessment()) {
26749        composeCodeableConcept("assessment", element.getAssessment());
26750      }
26751      if (element.hasProductRelatednessElement()) {
26752        composeString("productRelatedness", element.getProductRelatednessElement());
26753      }
26754      if (element.hasAuthor()) {
26755        composeReference("author", element.getAuthor());
26756      }
26757      if (element.hasMethod()) {
26758        composeCodeableConcept("method", element.getMethod());
26759      }
26760  }
26761
26762  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
26763    if (element != null) {
26764      composeDomainResourceAttributes(element);
26765      xml.enter(FHIR_NS, name);
26766      composeAllergyIntoleranceElements(element);
26767      composeElementClose(element);
26768      xml.exit(FHIR_NS, name);
26769    }
26770  }
26771
26772  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
26773      composeDomainResourceElements(element);
26774      if (element.hasIdentifier()) { 
26775        for (Identifier e : element.getIdentifier()) 
26776          composeIdentifier("identifier", e);
26777      }
26778      if (element.hasClinicalStatusElement())
26779        composeEnumeration("clinicalStatus", element.getClinicalStatusElement(), new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory());
26780      if (element.hasVerificationStatusElement())
26781        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory());
26782      if (element.hasTypeElement())
26783        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
26784        if (element.hasCategory()) 
26785          for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
26786            composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
26787      if (element.hasCriticalityElement())
26788        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
26789      if (element.hasCode()) {
26790        composeCodeableConcept("code", element.getCode());
26791      }
26792      if (element.hasPatient()) {
26793        composeReference("patient", element.getPatient());
26794      }
26795      if (element.hasEncounter()) {
26796        composeReference("encounter", element.getEncounter());
26797      }
26798      if (element.hasOnset()) {
26799        composeType("onset", element.getOnset());
26800      }      if (element.hasRecordedDateElement()) {
26801        composeDateTime("recordedDate", element.getRecordedDateElement());
26802      }
26803      if (element.hasRecorder()) {
26804        composeReference("recorder", element.getRecorder());
26805      }
26806      if (element.hasAsserter()) {
26807        composeReference("asserter", element.getAsserter());
26808      }
26809      if (element.hasLastOccurrenceElement()) {
26810        composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
26811      }
26812      if (element.hasNote()) { 
26813        for (Annotation e : element.getNote()) 
26814          composeAnnotation("note", e);
26815      }
26816      if (element.hasReaction()) { 
26817        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
26818          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
26819      }
26820  }
26821
26822  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
26823    if (element != null) {
26824      composeElementAttributes(element);
26825      xml.enter(FHIR_NS, name);
26826      composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(element);
26827      composeElementClose(element);
26828      xml.exit(FHIR_NS, name);
26829    }
26830  }
26831
26832  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
26833      composeBackboneElementElements(element);
26834      if (element.hasSubstance()) {
26835        composeCodeableConcept("substance", element.getSubstance());
26836      }
26837      if (element.hasManifestation()) { 
26838        for (CodeableConcept e : element.getManifestation()) 
26839          composeCodeableConcept("manifestation", e);
26840      }
26841      if (element.hasDescriptionElement()) {
26842        composeString("description", element.getDescriptionElement());
26843      }
26844      if (element.hasOnsetElement()) {
26845        composeDateTime("onset", element.getOnsetElement());
26846      }
26847      if (element.hasSeverityElement())
26848        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
26849      if (element.hasExposureRoute()) {
26850        composeCodeableConcept("exposureRoute", element.getExposureRoute());
26851      }
26852      if (element.hasNote()) { 
26853        for (Annotation e : element.getNote()) 
26854          composeAnnotation("note", e);
26855      }
26856  }
26857
26858  protected void composeAppointment(String name, Appointment element) throws IOException {
26859    if (element != null) {
26860      composeDomainResourceAttributes(element);
26861      xml.enter(FHIR_NS, name);
26862      composeAppointmentElements(element);
26863      composeElementClose(element);
26864      xml.exit(FHIR_NS, name);
26865    }
26866  }
26867
26868  protected void composeAppointmentElements(Appointment element) throws IOException {
26869      composeDomainResourceElements(element);
26870      if (element.hasIdentifier()) { 
26871        for (Identifier e : element.getIdentifier()) 
26872          composeIdentifier("identifier", e);
26873      }
26874      if (element.hasStatusElement())
26875        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
26876      if (element.hasServiceCategory()) { 
26877        for (CodeableConcept e : element.getServiceCategory()) 
26878          composeCodeableConcept("serviceCategory", e);
26879      }
26880      if (element.hasServiceType()) { 
26881        for (CodeableConcept e : element.getServiceType()) 
26882          composeCodeableConcept("serviceType", e);
26883      }
26884      if (element.hasSpecialty()) { 
26885        for (CodeableConcept e : element.getSpecialty()) 
26886          composeCodeableConcept("specialty", e);
26887      }
26888      if (element.hasAppointmentType()) {
26889        composeCodeableConcept("appointmentType", element.getAppointmentType());
26890      }
26891      if (element.hasReason()) { 
26892        for (CodeableConcept e : element.getReason()) 
26893          composeCodeableConcept("reason", e);
26894      }
26895      if (element.hasIndication()) { 
26896        for (Reference e : element.getIndication()) 
26897          composeReference("indication", e);
26898      }
26899      if (element.hasPriorityElement()) {
26900        composeUnsignedInt("priority", element.getPriorityElement());
26901      }
26902      if (element.hasDescriptionElement()) {
26903        composeString("description", element.getDescriptionElement());
26904      }
26905      if (element.hasSupportingInformation()) { 
26906        for (Reference e : element.getSupportingInformation()) 
26907          composeReference("supportingInformation", e);
26908      }
26909      if (element.hasStartElement()) {
26910        composeInstant("start", element.getStartElement());
26911      }
26912      if (element.hasEndElement()) {
26913        composeInstant("end", element.getEndElement());
26914      }
26915      if (element.hasMinutesDurationElement()) {
26916        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
26917      }
26918      if (element.hasSlot()) { 
26919        for (Reference e : element.getSlot()) 
26920          composeReference("slot", e);
26921      }
26922      if (element.hasCreatedElement()) {
26923        composeDateTime("created", element.getCreatedElement());
26924      }
26925      if (element.hasCommentElement()) {
26926        composeString("comment", element.getCommentElement());
26927      }
26928      if (element.hasPatientInstructionElement()) {
26929        composeString("patientInstruction", element.getPatientInstructionElement());
26930      }
26931      if (element.hasBasedOn()) { 
26932        for (Reference e : element.getBasedOn()) 
26933          composeReference("basedOn", e);
26934      }
26935      if (element.hasParticipant()) { 
26936        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
26937          composeAppointmentAppointmentParticipantComponent("participant", e);
26938      }
26939      if (element.hasRequestedPeriod()) { 
26940        for (Period e : element.getRequestedPeriod()) 
26941          composePeriod("requestedPeriod", e);
26942      }
26943  }
26944
26945  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
26946    if (element != null) {
26947      composeElementAttributes(element);
26948      xml.enter(FHIR_NS, name);
26949      composeAppointmentAppointmentParticipantComponentElements(element);
26950      composeElementClose(element);
26951      xml.exit(FHIR_NS, name);
26952    }
26953  }
26954
26955  protected void composeAppointmentAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
26956      composeBackboneElementElements(element);
26957      if (element.hasType()) { 
26958        for (CodeableConcept e : element.getType()) 
26959          composeCodeableConcept("type", e);
26960      }
26961      if (element.hasActor()) {
26962        composeReference("actor", element.getActor());
26963      }
26964      if (element.hasRequiredElement())
26965        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
26966      if (element.hasStatusElement())
26967        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
26968      if (element.hasPeriod()) {
26969        composePeriod("period", element.getPeriod());
26970      }
26971  }
26972
26973  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
26974    if (element != null) {
26975      composeDomainResourceAttributes(element);
26976      xml.enter(FHIR_NS, name);
26977      composeAppointmentResponseElements(element);
26978      composeElementClose(element);
26979      xml.exit(FHIR_NS, name);
26980    }
26981  }
26982
26983  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
26984      composeDomainResourceElements(element);
26985      if (element.hasIdentifier()) { 
26986        for (Identifier e : element.getIdentifier()) 
26987          composeIdentifier("identifier", e);
26988      }
26989      if (element.hasAppointment()) {
26990        composeReference("appointment", element.getAppointment());
26991      }
26992      if (element.hasStartElement()) {
26993        composeInstant("start", element.getStartElement());
26994      }
26995      if (element.hasEndElement()) {
26996        composeInstant("end", element.getEndElement());
26997      }
26998      if (element.hasParticipantType()) { 
26999        for (CodeableConcept e : element.getParticipantType()) 
27000          composeCodeableConcept("participantType", e);
27001      }
27002      if (element.hasActor()) {
27003        composeReference("actor", element.getActor());
27004      }
27005      if (element.hasParticipantStatusElement())
27006        composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.ParticipantStatusEnumFactory());
27007      if (element.hasCommentElement()) {
27008        composeString("comment", element.getCommentElement());
27009      }
27010  }
27011
27012  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
27013    if (element != null) {
27014      composeDomainResourceAttributes(element);
27015      xml.enter(FHIR_NS, name);
27016      composeAuditEventElements(element);
27017      composeElementClose(element);
27018      xml.exit(FHIR_NS, name);
27019    }
27020  }
27021
27022  protected void composeAuditEventElements(AuditEvent element) throws IOException {
27023      composeDomainResourceElements(element);
27024      if (element.hasType()) {
27025        composeCoding("type", element.getType());
27026      }
27027      if (element.hasSubtype()) { 
27028        for (Coding e : element.getSubtype()) 
27029          composeCoding("subtype", e);
27030      }
27031      if (element.hasActionElement())
27032        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
27033      if (element.hasPeriod()) {
27034        composePeriod("period", element.getPeriod());
27035      }
27036      if (element.hasRecordedElement()) {
27037        composeInstant("recorded", element.getRecordedElement());
27038      }
27039      if (element.hasOutcomeElement())
27040        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
27041      if (element.hasOutcomeDescElement()) {
27042        composeString("outcomeDesc", element.getOutcomeDescElement());
27043      }
27044      if (element.hasPurposeOfEvent()) { 
27045        for (CodeableConcept e : element.getPurposeOfEvent()) 
27046          composeCodeableConcept("purposeOfEvent", e);
27047      }
27048      if (element.hasAgent()) { 
27049        for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
27050          composeAuditEventAuditEventAgentComponent("agent", e);
27051      }
27052      if (element.hasSource()) {
27053        composeAuditEventAuditEventSourceComponent("source", element.getSource());
27054      }
27055      if (element.hasEntity()) { 
27056        for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
27057          composeAuditEventAuditEventEntityComponent("entity", e);
27058      }
27059  }
27060
27061  protected void composeAuditEventAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
27062    if (element != null) {
27063      composeElementAttributes(element);
27064      xml.enter(FHIR_NS, name);
27065      composeAuditEventAuditEventAgentComponentElements(element);
27066      composeElementClose(element);
27067      xml.exit(FHIR_NS, name);
27068    }
27069  }
27070
27071  protected void composeAuditEventAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
27072      composeBackboneElementElements(element);
27073      if (element.hasType()) {
27074        composeCodeableConcept("type", element.getType());
27075      }
27076      if (element.hasRole()) { 
27077        for (CodeableConcept e : element.getRole()) 
27078          composeCodeableConcept("role", e);
27079      }
27080      if (element.hasWho()) {
27081        composeReference("who", element.getWho());
27082      }
27083      if (element.hasAltIdElement()) {
27084        composeString("altId", element.getAltIdElement());
27085      }
27086      if (element.hasNameElement()) {
27087        composeString("name", element.getNameElement());
27088      }
27089      if (element.hasRequestorElement()) {
27090        composeBoolean("requestor", element.getRequestorElement());
27091      }
27092      if (element.hasLocation()) {
27093        composeReference("location", element.getLocation());
27094      }
27095      if (element.hasPolicy()) { 
27096        for (UriType e : element.getPolicy()) 
27097          composeUri("policy", e);
27098      }
27099      if (element.hasMedia()) {
27100        composeCoding("media", element.getMedia());
27101      }
27102      if (element.hasNetwork()) {
27103        composeAuditEventAuditEventAgentNetworkComponent("network", element.getNetwork());
27104      }
27105      if (element.hasPurposeOfUse()) { 
27106        for (CodeableConcept e : element.getPurposeOfUse()) 
27107          composeCodeableConcept("purposeOfUse", e);
27108      }
27109  }
27110
27111  protected void composeAuditEventAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
27112    if (element != null) {
27113      composeElementAttributes(element);
27114      xml.enter(FHIR_NS, name);
27115      composeAuditEventAuditEventAgentNetworkComponentElements(element);
27116      composeElementClose(element);
27117      xml.exit(FHIR_NS, name);
27118    }
27119  }
27120
27121  protected void composeAuditEventAuditEventAgentNetworkComponentElements(AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
27122      composeBackboneElementElements(element);
27123      if (element.hasAddressElement()) {
27124        composeString("address", element.getAddressElement());
27125      }
27126      if (element.hasTypeElement())
27127        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventAgentNetworkTypeEnumFactory());
27128  }
27129
27130  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
27131    if (element != null) {
27132      composeElementAttributes(element);
27133      xml.enter(FHIR_NS, name);
27134      composeAuditEventAuditEventSourceComponentElements(element);
27135      composeElementClose(element);
27136      xml.exit(FHIR_NS, name);
27137    }
27138  }
27139
27140  protected void composeAuditEventAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
27141      composeBackboneElementElements(element);
27142      if (element.hasSiteElement()) {
27143        composeString("site", element.getSiteElement());
27144      }
27145      if (element.hasObserver()) {
27146        composeReference("observer", element.getObserver());
27147      }
27148      if (element.hasType()) { 
27149        for (Coding e : element.getType()) 
27150          composeCoding("type", e);
27151      }
27152  }
27153
27154  protected void composeAuditEventAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
27155    if (element != null) {
27156      composeElementAttributes(element);
27157      xml.enter(FHIR_NS, name);
27158      composeAuditEventAuditEventEntityComponentElements(element);
27159      composeElementClose(element);
27160      xml.exit(FHIR_NS, name);
27161    }
27162  }
27163
27164  protected void composeAuditEventAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
27165      composeBackboneElementElements(element);
27166      if (element.hasWhat()) {
27167        composeReference("what", element.getWhat());
27168      }
27169      if (element.hasType()) {
27170        composeCoding("type", element.getType());
27171      }
27172      if (element.hasRole()) {
27173        composeCoding("role", element.getRole());
27174      }
27175      if (element.hasLifecycle()) {
27176        composeCoding("lifecycle", element.getLifecycle());
27177      }
27178      if (element.hasSecurityLabel()) { 
27179        for (Coding e : element.getSecurityLabel()) 
27180          composeCoding("securityLabel", e);
27181      }
27182      if (element.hasNameElement()) {
27183        composeString("name", element.getNameElement());
27184      }
27185      if (element.hasDescriptionElement()) {
27186        composeString("description", element.getDescriptionElement());
27187      }
27188      if (element.hasQueryElement()) {
27189        composeBase64Binary("query", element.getQueryElement());
27190      }
27191      if (element.hasDetail()) { 
27192        for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
27193          composeAuditEventAuditEventEntityDetailComponent("detail", e);
27194      }
27195  }
27196
27197  protected void composeAuditEventAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
27198    if (element != null) {
27199      composeElementAttributes(element);
27200      xml.enter(FHIR_NS, name);
27201      composeAuditEventAuditEventEntityDetailComponentElements(element);
27202      composeElementClose(element);
27203      xml.exit(FHIR_NS, name);
27204    }
27205  }
27206
27207  protected void composeAuditEventAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
27208      composeBackboneElementElements(element);
27209      if (element.hasTypeElement()) {
27210        composeString("type", element.getTypeElement());
27211      }
27212      if (element.hasValue()) {
27213        composeType("value", element.getValue());
27214      }  }
27215
27216  protected void composeBasic(String name, Basic element) throws IOException {
27217    if (element != null) {
27218      composeDomainResourceAttributes(element);
27219      xml.enter(FHIR_NS, name);
27220      composeBasicElements(element);
27221      composeElementClose(element);
27222      xml.exit(FHIR_NS, name);
27223    }
27224  }
27225
27226  protected void composeBasicElements(Basic element) throws IOException {
27227      composeDomainResourceElements(element);
27228      if (element.hasIdentifier()) { 
27229        for (Identifier e : element.getIdentifier()) 
27230          composeIdentifier("identifier", e);
27231      }
27232      if (element.hasCode()) {
27233        composeCodeableConcept("code", element.getCode());
27234      }
27235      if (element.hasSubject()) {
27236        composeReference("subject", element.getSubject());
27237      }
27238      if (element.hasCreatedElement()) {
27239        composeDate("created", element.getCreatedElement());
27240      }
27241      if (element.hasAuthor()) {
27242        composeReference("author", element.getAuthor());
27243      }
27244  }
27245
27246  protected void composeBinary(String name, Binary element) throws IOException {
27247    if (element != null) {
27248      composeResourceAttributes(element);
27249      xml.enter(FHIR_NS, name);
27250      composeBinaryElements(element);
27251      composeElementClose(element);
27252      xml.exit(FHIR_NS, name);
27253    }
27254  }
27255
27256  protected void composeBinaryElements(Binary element) throws IOException {
27257      composeResourceElements(element);
27258      if (element.hasContentTypeElement()) {
27259        composeCode("contentType", element.getContentTypeElement());
27260      }
27261      if (element.hasSecurityContext()) {
27262        composeReference("securityContext", element.getSecurityContext());
27263      }
27264      if (element.hasDataElement()) {
27265        composeBase64Binary("data", element.getDataElement());
27266      }
27267  }
27268
27269  protected void composeBiologicallyDerivedProduct(String name, BiologicallyDerivedProduct element) throws IOException {
27270    if (element != null) {
27271      composeDomainResourceAttributes(element);
27272      xml.enter(FHIR_NS, name);
27273      composeBiologicallyDerivedProductElements(element);
27274      composeElementClose(element);
27275      xml.exit(FHIR_NS, name);
27276    }
27277  }
27278
27279  protected void composeBiologicallyDerivedProductElements(BiologicallyDerivedProduct element) throws IOException {
27280      composeDomainResourceElements(element);
27281      if (element.hasIdentifier()) { 
27282        for (Identifier e : element.getIdentifier()) 
27283          composeIdentifier("identifier", e);
27284      }
27285      if (element.hasProductCategoryElement())
27286        composeEnumeration("productCategory", element.getProductCategoryElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory());
27287      if (element.hasProductCode()) {
27288        composeCodeableConcept("productCode", element.getProductCode());
27289      }
27290      if (element.hasStatusElement())
27291        composeEnumeration("status", element.getStatusElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory());
27292      if (element.hasRequest()) { 
27293        for (Reference e : element.getRequest()) 
27294          composeReference("request", e);
27295      }
27296      if (element.hasQuantityElement()) {
27297        composeInteger("quantity", element.getQuantityElement());
27298      }
27299      if (element.hasParent()) {
27300        composeReference("parent", element.getParent());
27301      }
27302      if (element.hasCollection()) {
27303        composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent("collection", element.getCollection());
27304      }
27305      if (element.hasProcessing()) { 
27306        for (BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent e : element.getProcessing()) 
27307          composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent("processing", e);
27308      }
27309      if (element.hasManipulation()) {
27310        composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent("manipulation", element.getManipulation());
27311      }
27312      if (element.hasStorage()) { 
27313        for (BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent e : element.getStorage()) 
27314          composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent("storage", e);
27315      }
27316  }
27317
27318  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
27319    if (element != null) {
27320      composeElementAttributes(element);
27321      xml.enter(FHIR_NS, name);
27322      composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(element);
27323      composeElementClose(element);
27324      xml.exit(FHIR_NS, name);
27325    }
27326  }
27327
27328  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
27329      composeBackboneElementElements(element);
27330      if (element.hasCollector()) {
27331        composeReference("collector", element.getCollector());
27332      }
27333      if (element.hasSource()) {
27334        composeReference("source", element.getSource());
27335      }
27336      if (element.hasCollected()) {
27337        composeType("collected", element.getCollected());
27338      }  }
27339
27340  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
27341    if (element != null) {
27342      composeElementAttributes(element);
27343      xml.enter(FHIR_NS, name);
27344      composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(element);
27345      composeElementClose(element);
27346      xml.exit(FHIR_NS, name);
27347    }
27348  }
27349
27350  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
27351      composeBackboneElementElements(element);
27352      if (element.hasDescriptionElement()) {
27353        composeString("description", element.getDescriptionElement());
27354      }
27355      if (element.hasProcedure()) {
27356        composeCodeableConcept("procedure", element.getProcedure());
27357      }
27358      if (element.hasAdditive()) {
27359        composeReference("additive", element.getAdditive());
27360      }
27361      if (element.hasTime()) {
27362        composeType("time", element.getTime());
27363      }  }
27364
27365  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
27366    if (element != null) {
27367      composeElementAttributes(element);
27368      xml.enter(FHIR_NS, name);
27369      composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(element);
27370      composeElementClose(element);
27371      xml.exit(FHIR_NS, name);
27372    }
27373  }
27374
27375  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
27376      composeBackboneElementElements(element);
27377      if (element.hasDescriptionElement()) {
27378        composeString("description", element.getDescriptionElement());
27379      }
27380      if (element.hasTime()) {
27381        composeType("time", element.getTime());
27382      }  }
27383
27384  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
27385    if (element != null) {
27386      composeElementAttributes(element);
27387      xml.enter(FHIR_NS, name);
27388      composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(element);
27389      composeElementClose(element);
27390      xml.exit(FHIR_NS, name);
27391    }
27392  }
27393
27394  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
27395      composeBackboneElementElements(element);
27396      if (element.hasDescriptionElement()) {
27397        composeString("description", element.getDescriptionElement());
27398      }
27399      if (element.hasTemperatureElement()) {
27400        composeDecimal("temperature", element.getTemperatureElement());
27401      }
27402      if (element.hasScaleElement())
27403        composeEnumeration("scale", element.getScaleElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory());
27404      if (element.hasDuration()) {
27405        composePeriod("duration", element.getDuration());
27406      }
27407  }
27408
27409  protected void composeBodyStructure(String name, BodyStructure element) throws IOException {
27410    if (element != null) {
27411      composeDomainResourceAttributes(element);
27412      xml.enter(FHIR_NS, name);
27413      composeBodyStructureElements(element);
27414      composeElementClose(element);
27415      xml.exit(FHIR_NS, name);
27416    }
27417  }
27418
27419  protected void composeBodyStructureElements(BodyStructure element) throws IOException {
27420      composeDomainResourceElements(element);
27421      if (element.hasIdentifier()) { 
27422        for (Identifier e : element.getIdentifier()) 
27423          composeIdentifier("identifier", e);
27424      }
27425      if (element.hasActiveElement()) {
27426        composeBoolean("active", element.getActiveElement());
27427      }
27428      if (element.hasMorphology()) {
27429        composeCodeableConcept("morphology", element.getMorphology());
27430      }
27431      if (element.hasLocation()) {
27432        composeCodeableConcept("location", element.getLocation());
27433      }
27434      if (element.hasLocationQualifier()) { 
27435        for (CodeableConcept e : element.getLocationQualifier()) 
27436          composeCodeableConcept("locationQualifier", e);
27437      }
27438      if (element.hasDescriptionElement()) {
27439        composeString("description", element.getDescriptionElement());
27440      }
27441      if (element.hasImage()) { 
27442        for (Attachment e : element.getImage()) 
27443          composeAttachment("image", e);
27444      }
27445      if (element.hasPatient()) {
27446        composeReference("patient", element.getPatient());
27447      }
27448  }
27449
27450  protected void composeBundle(String name, Bundle element) throws IOException {
27451    if (element != null) {
27452      composeResourceAttributes(element);
27453      xml.enter(FHIR_NS, name);
27454      composeBundleElements(element);
27455      composeElementClose(element);
27456      xml.exit(FHIR_NS, name);
27457    }
27458  }
27459
27460  protected void composeBundleElements(Bundle element) throws IOException {
27461      composeResourceElements(element);
27462      if (element.hasIdentifier()) {
27463        composeIdentifier("identifier", element.getIdentifier());
27464      }
27465      if (element.hasTypeElement())
27466        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
27467      if (element.hasTimestampElement()) {
27468        composeInstant("timestamp", element.getTimestampElement());
27469      }
27470      if (element.hasTotalElement()) {
27471        composeUnsignedInt("total", element.getTotalElement());
27472      }
27473      if (element.hasLink()) { 
27474        for (Bundle.BundleLinkComponent e : element.getLink()) 
27475          composeBundleBundleLinkComponent("link", e);
27476      }
27477      if (element.hasEntry()) { 
27478        for (Bundle.BundleEntryComponent e : element.getEntry()) 
27479          composeBundleBundleEntryComponent("entry", e);
27480      }
27481      if (element.hasSignature()) {
27482        composeSignature("signature", element.getSignature());
27483      }
27484  }
27485
27486  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
27487    if (element != null) {
27488      composeElementAttributes(element);
27489      xml.enter(FHIR_NS, name);
27490      composeBundleBundleLinkComponentElements(element);
27491      composeElementClose(element);
27492      xml.exit(FHIR_NS, name);
27493    }
27494  }
27495
27496  protected void composeBundleBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
27497      composeBackboneElementElements(element);
27498      if (element.hasRelationElement()) {
27499        composeString("relation", element.getRelationElement());
27500      }
27501      if (element.hasUrlElement()) {
27502        composeUri("url", element.getUrlElement());
27503      }
27504  }
27505
27506  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
27507    if (element != null) {
27508      composeElementAttributes(element);
27509      xml.enter(FHIR_NS, name);
27510      composeBundleBundleEntryComponentElements(element);
27511      composeElementClose(element);
27512      xml.exit(FHIR_NS, name);
27513    }
27514  }
27515
27516  protected void composeBundleBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
27517      composeBackboneElementElements(element);
27518      if (element.hasLink()) { 
27519        for (Bundle.BundleLinkComponent e : element.getLink()) 
27520          composeBundleBundleLinkComponent("link", e);
27521      }
27522      if (element.hasFullUrlElement()) {
27523        composeUri("fullUrl", element.getFullUrlElement());
27524      }
27525      if (element.hasResource()) {
27526        xml.enter(FHIR_NS, "resource");
27527        composeResource(element.getResource());
27528        xml.exit(FHIR_NS, "resource");
27529      }
27530      if (element.hasSearch()) {
27531        composeBundleBundleEntrySearchComponent("search", element.getSearch());
27532      }
27533      if (element.hasRequest()) {
27534        composeBundleBundleEntryRequestComponent("request", element.getRequest());
27535      }
27536      if (element.hasResponse()) {
27537        composeBundleBundleEntryResponseComponent("response", element.getResponse());
27538      }
27539  }
27540
27541  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
27542    if (element != null) {
27543      composeElementAttributes(element);
27544      xml.enter(FHIR_NS, name);
27545      composeBundleBundleEntrySearchComponentElements(element);
27546      composeElementClose(element);
27547      xml.exit(FHIR_NS, name);
27548    }
27549  }
27550
27551  protected void composeBundleBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
27552      composeBackboneElementElements(element);
27553      if (element.hasModeElement())
27554        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
27555      if (element.hasScoreElement()) {
27556        composeDecimal("score", element.getScoreElement());
27557      }
27558  }
27559
27560  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
27561    if (element != null) {
27562      composeElementAttributes(element);
27563      xml.enter(FHIR_NS, name);
27564      composeBundleBundleEntryRequestComponentElements(element);
27565      composeElementClose(element);
27566      xml.exit(FHIR_NS, name);
27567    }
27568  }
27569
27570  protected void composeBundleBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
27571      composeBackboneElementElements(element);
27572      if (element.hasMethodElement())
27573        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
27574      if (element.hasUrlElement()) {
27575        composeUri("url", element.getUrlElement());
27576      }
27577      if (element.hasIfNoneMatchElement()) {
27578        composeString("ifNoneMatch", element.getIfNoneMatchElement());
27579      }
27580      if (element.hasIfModifiedSinceElement()) {
27581        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
27582      }
27583      if (element.hasIfMatchElement()) {
27584        composeString("ifMatch", element.getIfMatchElement());
27585      }
27586      if (element.hasIfNoneExistElement()) {
27587        composeString("ifNoneExist", element.getIfNoneExistElement());
27588      }
27589  }
27590
27591  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
27592    if (element != null) {
27593      composeElementAttributes(element);
27594      xml.enter(FHIR_NS, name);
27595      composeBundleBundleEntryResponseComponentElements(element);
27596      composeElementClose(element);
27597      xml.exit(FHIR_NS, name);
27598    }
27599  }
27600
27601  protected void composeBundleBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
27602      composeBackboneElementElements(element);
27603      if (element.hasStatusElement()) {
27604        composeString("status", element.getStatusElement());
27605      }
27606      if (element.hasLocationElement()) {
27607        composeUri("location", element.getLocationElement());
27608      }
27609      if (element.hasEtagElement()) {
27610        composeString("etag", element.getEtagElement());
27611      }
27612      if (element.hasLastModifiedElement()) {
27613        composeInstant("lastModified", element.getLastModifiedElement());
27614      }
27615      if (element.hasOutcome()) {
27616        xml.enter(FHIR_NS, "outcome");
27617        composeResource(element.getOutcome());
27618        xml.exit(FHIR_NS, "outcome");
27619      }
27620  }
27621
27622  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
27623    if (element != null) {
27624      composeDomainResourceAttributes(element);
27625      xml.enter(FHIR_NS, name);
27626      composeCapabilityStatementElements(element);
27627      composeElementClose(element);
27628      xml.exit(FHIR_NS, name);
27629    }
27630  }
27631
27632  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
27633      composeDomainResourceElements(element);
27634      if (element.hasUrlElement()) {
27635        composeUri("url", element.getUrlElement());
27636      }
27637      if (element.hasVersionElement()) {
27638        composeString("version", element.getVersionElement());
27639      }
27640      if (element.hasNameElement()) {
27641        composeString("name", element.getNameElement());
27642      }
27643      if (element.hasTitleElement()) {
27644        composeString("title", element.getTitleElement());
27645      }
27646      if (element.hasStatusElement())
27647        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
27648      if (element.hasExperimentalElement()) {
27649        composeBoolean("experimental", element.getExperimentalElement());
27650      }
27651      if (element.hasDateElement()) {
27652        composeDateTime("date", element.getDateElement());
27653      }
27654      if (element.hasPublisherElement()) {
27655        composeString("publisher", element.getPublisherElement());
27656      }
27657      if (element.hasContact()) { 
27658        for (ContactDetail e : element.getContact()) 
27659          composeContactDetail("contact", e);
27660      }
27661      if (element.hasDescriptionElement()) {
27662        composeMarkdown("description", element.getDescriptionElement());
27663      }
27664      if (element.hasUseContext()) { 
27665        for (UsageContext e : element.getUseContext()) 
27666          composeUsageContext("useContext", e);
27667      }
27668      if (element.hasJurisdiction()) { 
27669        for (CodeableConcept e : element.getJurisdiction()) 
27670          composeCodeableConcept("jurisdiction", e);
27671      }
27672      if (element.hasPurposeElement()) {
27673        composeMarkdown("purpose", element.getPurposeElement());
27674      }
27675      if (element.hasCopyrightElement()) {
27676        composeMarkdown("copyright", element.getCopyrightElement());
27677      }
27678      if (element.hasKindElement())
27679        composeEnumeration("kind", element.getKindElement(), new CapabilityStatement.CapabilityStatementKindEnumFactory());
27680      if (element.hasInstantiates()) { 
27681        for (CanonicalType e : element.getInstantiates()) 
27682          composeCanonical("instantiates", e);
27683      }
27684      if (element.hasImports()) { 
27685        for (CanonicalType e : element.getImports()) 
27686          composeCanonical("imports", e);
27687      }
27688      if (element.hasSoftware()) {
27689        composeCapabilityStatementCapabilityStatementSoftwareComponent("software", element.getSoftware());
27690      }
27691      if (element.hasImplementation()) {
27692        composeCapabilityStatementCapabilityStatementImplementationComponent("implementation", element.getImplementation());
27693      }
27694      if (element.hasFhirVersionElement()) {
27695        composeId("fhirVersion", element.getFhirVersionElement());
27696      }
27697      if (element.hasFormat()) { 
27698        for (CodeType e : element.getFormat()) 
27699          composeCode("format", e);
27700      }
27701      if (element.hasPatchFormat()) { 
27702        for (CodeType e : element.getPatchFormat()) 
27703          composeCode("patchFormat", e);
27704      }
27705      if (element.hasImplementationGuide()) { 
27706        for (CanonicalType e : element.getImplementationGuide()) 
27707          composeCanonical("implementationGuide", e);
27708      }
27709      if (element.hasRest()) { 
27710        for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
27711          composeCapabilityStatementCapabilityStatementRestComponent("rest", e);
27712      }
27713      if (element.hasMessaging()) { 
27714        for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
27715          composeCapabilityStatementCapabilityStatementMessagingComponent("messaging", e);
27716      }
27717      if (element.hasDocument()) { 
27718        for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
27719          composeCapabilityStatementCapabilityStatementDocumentComponent("document", e);
27720      }
27721  }
27722
27723  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
27724    if (element != null) {
27725      composeElementAttributes(element);
27726      xml.enter(FHIR_NS, name);
27727      composeCapabilityStatementCapabilityStatementSoftwareComponentElements(element);
27728      composeElementClose(element);
27729      xml.exit(FHIR_NS, name);
27730    }
27731  }
27732
27733  protected void composeCapabilityStatementCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
27734      composeBackboneElementElements(element);
27735      if (element.hasNameElement()) {
27736        composeString("name", element.getNameElement());
27737      }
27738      if (element.hasVersionElement()) {
27739        composeString("version", element.getVersionElement());
27740      }
27741      if (element.hasReleaseDateElement()) {
27742        composeDateTime("releaseDate", element.getReleaseDateElement());
27743      }
27744  }
27745
27746  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
27747    if (element != null) {
27748      composeElementAttributes(element);
27749      xml.enter(FHIR_NS, name);
27750      composeCapabilityStatementCapabilityStatementImplementationComponentElements(element);
27751      composeElementClose(element);
27752      xml.exit(FHIR_NS, name);
27753    }
27754  }
27755
27756  protected void composeCapabilityStatementCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
27757      composeBackboneElementElements(element);
27758      if (element.hasDescriptionElement()) {
27759        composeString("description", element.getDescriptionElement());
27760      }
27761      if (element.hasUrlElement()) {
27762        composeUrl("url", element.getUrlElement());
27763      }
27764      if (element.hasCustodian()) {
27765        composeReference("custodian", element.getCustodian());
27766      }
27767  }
27768
27769  protected void composeCapabilityStatementCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
27770    if (element != null) {
27771      composeElementAttributes(element);
27772      xml.enter(FHIR_NS, name);
27773      composeCapabilityStatementCapabilityStatementRestComponentElements(element);
27774      composeElementClose(element);
27775      xml.exit(FHIR_NS, name);
27776    }
27777  }
27778
27779  protected void composeCapabilityStatementCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
27780      composeBackboneElementElements(element);
27781      if (element.hasModeElement())
27782        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
27783      if (element.hasDocumentationElement()) {
27784        composeMarkdown("documentation", element.getDocumentationElement());
27785      }
27786      if (element.hasSecurity()) {
27787        composeCapabilityStatementCapabilityStatementRestSecurityComponent("security", element.getSecurity());
27788      }
27789      if (element.hasResource()) { 
27790        for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
27791          composeCapabilityStatementCapabilityStatementRestResourceComponent("resource", e);
27792      }
27793      if (element.hasInteraction()) { 
27794        for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
27795          composeCapabilityStatementSystemInteractionComponent("interaction", e);
27796      }
27797      if (element.hasSearchParam()) { 
27798        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
27799          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
27800      }
27801      if (element.hasOperation()) { 
27802        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
27803          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
27804      }
27805      if (element.hasCompartment()) { 
27806        for (CanonicalType e : element.getCompartment()) 
27807          composeCanonical("compartment", e);
27808      }
27809  }
27810
27811  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
27812    if (element != null) {
27813      composeElementAttributes(element);
27814      xml.enter(FHIR_NS, name);
27815      composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(element);
27816      composeElementClose(element);
27817      xml.exit(FHIR_NS, name);
27818    }
27819  }
27820
27821  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
27822      composeBackboneElementElements(element);
27823      if (element.hasCorsElement()) {
27824        composeBoolean("cors", element.getCorsElement());
27825      }
27826      if (element.hasService()) { 
27827        for (CodeableConcept e : element.getService()) 
27828          composeCodeableConcept("service", e);
27829      }
27830      if (element.hasDescriptionElement()) {
27831        composeMarkdown("description", element.getDescriptionElement());
27832      }
27833  }
27834
27835  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
27836    if (element != null) {
27837      composeElementAttributes(element);
27838      xml.enter(FHIR_NS, name);
27839      composeCapabilityStatementCapabilityStatementRestResourceComponentElements(element);
27840      composeElementClose(element);
27841      xml.exit(FHIR_NS, name);
27842    }
27843  }
27844
27845  protected void composeCapabilityStatementCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
27846      composeBackboneElementElements(element);
27847      if (element.hasTypeElement()) {
27848        composeCode("type", element.getTypeElement());
27849      }
27850      if (element.hasProfileElement()) {
27851        composeCanonical("profile", element.getProfileElement());
27852      }
27853      if (element.hasSupportedProfile()) { 
27854        for (CanonicalType e : element.getSupportedProfile()) 
27855          composeCanonical("supportedProfile", e);
27856      }
27857      if (element.hasDocumentationElement()) {
27858        composeMarkdown("documentation", element.getDocumentationElement());
27859      }
27860      if (element.hasInteraction()) { 
27861        for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
27862          composeCapabilityStatementResourceInteractionComponent("interaction", e);
27863      }
27864      if (element.hasVersioningElement())
27865        composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
27866      if (element.hasReadHistoryElement()) {
27867        composeBoolean("readHistory", element.getReadHistoryElement());
27868      }
27869      if (element.hasUpdateCreateElement()) {
27870        composeBoolean("updateCreate", element.getUpdateCreateElement());
27871      }
27872      if (element.hasConditionalCreateElement()) {
27873        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
27874      }
27875      if (element.hasConditionalReadElement())
27876        composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
27877      if (element.hasConditionalUpdateElement()) {
27878        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
27879      }
27880      if (element.hasConditionalDeleteElement())
27881        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
27882        if (element.hasReferencePolicy()) 
27883          for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
27884            composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
27885      if (element.hasSearchInclude()) { 
27886        for (StringType e : element.getSearchInclude()) 
27887          composeString("searchInclude", e);
27888      }
27889      if (element.hasSearchRevInclude()) { 
27890        for (StringType e : element.getSearchRevInclude()) 
27891          composeString("searchRevInclude", e);
27892      }
27893      if (element.hasSearchParam()) { 
27894        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
27895          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
27896      }
27897      if (element.hasOperation()) { 
27898        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
27899          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
27900      }
27901  }
27902
27903  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
27904    if (element != null) {
27905      composeElementAttributes(element);
27906      xml.enter(FHIR_NS, name);
27907      composeCapabilityStatementResourceInteractionComponentElements(element);
27908      composeElementClose(element);
27909      xml.exit(FHIR_NS, name);
27910    }
27911  }
27912
27913  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
27914      composeBackboneElementElements(element);
27915      if (element.hasCodeElement())
27916        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
27917      if (element.hasDocumentationElement()) {
27918        composeMarkdown("documentation", element.getDocumentationElement());
27919      }
27920  }
27921
27922  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
27923    if (element != null) {
27924      composeElementAttributes(element);
27925      xml.enter(FHIR_NS, name);
27926      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(element);
27927      composeElementClose(element);
27928      xml.exit(FHIR_NS, name);
27929    }
27930  }
27931
27932  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
27933      composeBackboneElementElements(element);
27934      if (element.hasNameElement()) {
27935        composeString("name", element.getNameElement());
27936      }
27937      if (element.hasDefinitionElement()) {
27938        composeCanonical("definition", element.getDefinitionElement());
27939      }
27940      if (element.hasTypeElement())
27941        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
27942      if (element.hasDocumentationElement()) {
27943        composeMarkdown("documentation", element.getDocumentationElement());
27944      }
27945  }
27946
27947  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
27948    if (element != null) {
27949      composeElementAttributes(element);
27950      xml.enter(FHIR_NS, name);
27951      composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(element);
27952      composeElementClose(element);
27953      xml.exit(FHIR_NS, name);
27954    }
27955  }
27956
27957  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
27958      composeBackboneElementElements(element);
27959      if (element.hasNameElement()) {
27960        composeString("name", element.getNameElement());
27961      }
27962      if (element.hasDefinitionElement()) {
27963        composeCanonical("definition", element.getDefinitionElement());
27964      }
27965      if (element.hasDocumentationElement()) {
27966        composeMarkdown("documentation", element.getDocumentationElement());
27967      }
27968  }
27969
27970  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
27971    if (element != null) {
27972      composeElementAttributes(element);
27973      xml.enter(FHIR_NS, name);
27974      composeCapabilityStatementSystemInteractionComponentElements(element);
27975      composeElementClose(element);
27976      xml.exit(FHIR_NS, name);
27977    }
27978  }
27979
27980  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
27981      composeBackboneElementElements(element);
27982      if (element.hasCodeElement())
27983        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
27984      if (element.hasDocumentationElement()) {
27985        composeMarkdown("documentation", element.getDocumentationElement());
27986      }
27987  }
27988
27989  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
27990    if (element != null) {
27991      composeElementAttributes(element);
27992      xml.enter(FHIR_NS, name);
27993      composeCapabilityStatementCapabilityStatementMessagingComponentElements(element);
27994      composeElementClose(element);
27995      xml.exit(FHIR_NS, name);
27996    }
27997  }
27998
27999  protected void composeCapabilityStatementCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
28000      composeBackboneElementElements(element);
28001      if (element.hasEndpoint()) { 
28002        for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
28003          composeCapabilityStatementCapabilityStatementMessagingEndpointComponent("endpoint", e);
28004      }
28005      if (element.hasReliableCacheElement()) {
28006        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
28007      }
28008      if (element.hasDocumentationElement()) {
28009        composeMarkdown("documentation", element.getDocumentationElement());
28010      }
28011      if (element.hasSupportedMessage()) { 
28012        for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
28013          composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
28014      }
28015  }
28016
28017  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
28018    if (element != null) {
28019      composeElementAttributes(element);
28020      xml.enter(FHIR_NS, name);
28021      composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(element);
28022      composeElementClose(element);
28023      xml.exit(FHIR_NS, name);
28024    }
28025  }
28026
28027  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
28028      composeBackboneElementElements(element);
28029      if (element.hasProtocol()) {
28030        composeCoding("protocol", element.getProtocol());
28031      }
28032      if (element.hasAddressElement()) {
28033        composeUrl("address", element.getAddressElement());
28034      }
28035  }
28036
28037  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
28038    if (element != null) {
28039      composeElementAttributes(element);
28040      xml.enter(FHIR_NS, name);
28041      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(element);
28042      composeElementClose(element);
28043      xml.exit(FHIR_NS, name);
28044    }
28045  }
28046
28047  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
28048      composeBackboneElementElements(element);
28049      if (element.hasModeElement())
28050        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
28051      if (element.hasDefinitionElement()) {
28052        composeCanonical("definition", element.getDefinitionElement());
28053      }
28054  }
28055
28056  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
28057    if (element != null) {
28058      composeElementAttributes(element);
28059      xml.enter(FHIR_NS, name);
28060      composeCapabilityStatementCapabilityStatementDocumentComponentElements(element);
28061      composeElementClose(element);
28062      xml.exit(FHIR_NS, name);
28063    }
28064  }
28065
28066  protected void composeCapabilityStatementCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
28067      composeBackboneElementElements(element);
28068      if (element.hasModeElement())
28069        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
28070      if (element.hasDocumentationElement()) {
28071        composeMarkdown("documentation", element.getDocumentationElement());
28072      }
28073      if (element.hasProfileElement()) {
28074        composeCanonical("profile", element.getProfileElement());
28075      }
28076  }
28077
28078  protected void composeCarePlan(String name, CarePlan element) throws IOException {
28079    if (element != null) {
28080      composeDomainResourceAttributes(element);
28081      xml.enter(FHIR_NS, name);
28082      composeCarePlanElements(element);
28083      composeElementClose(element);
28084      xml.exit(FHIR_NS, name);
28085    }
28086  }
28087
28088  protected void composeCarePlanElements(CarePlan element) throws IOException {
28089      composeDomainResourceElements(element);
28090      if (element.hasIdentifier()) { 
28091        for (Identifier e : element.getIdentifier()) 
28092          composeIdentifier("identifier", e);
28093      }
28094      if (element.hasInstantiatesCanonical()) { 
28095        for (CanonicalType e : element.getInstantiatesCanonical()) 
28096          composeCanonical("instantiatesCanonical", e);
28097      }
28098      if (element.hasInstantiatesUri()) { 
28099        for (UriType e : element.getInstantiatesUri()) 
28100          composeUri("instantiatesUri", e);
28101      }
28102      if (element.hasBasedOn()) { 
28103        for (Reference e : element.getBasedOn()) 
28104          composeReference("basedOn", e);
28105      }
28106      if (element.hasReplaces()) { 
28107        for (Reference e : element.getReplaces()) 
28108          composeReference("replaces", e);
28109      }
28110      if (element.hasPartOf()) { 
28111        for (Reference e : element.getPartOf()) 
28112          composeReference("partOf", e);
28113      }
28114      if (element.hasStatusElement())
28115        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
28116      if (element.hasIntentElement())
28117        composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
28118      if (element.hasCategory()) { 
28119        for (CodeableConcept e : element.getCategory()) 
28120          composeCodeableConcept("category", e);
28121      }
28122      if (element.hasTitleElement()) {
28123        composeString("title", element.getTitleElement());
28124      }
28125      if (element.hasDescriptionElement()) {
28126        composeString("description", element.getDescriptionElement());
28127      }
28128      if (element.hasSubject()) {
28129        composeReference("subject", element.getSubject());
28130      }
28131      if (element.hasContext()) {
28132        composeReference("context", element.getContext());
28133      }
28134      if (element.hasPeriod()) {
28135        composePeriod("period", element.getPeriod());
28136      }
28137      if (element.hasCreatedElement()) {
28138        composeDateTime("created", element.getCreatedElement());
28139      }
28140      if (element.hasAuthor()) {
28141        composeReference("author", element.getAuthor());
28142      }
28143      if (element.hasContributor()) { 
28144        for (Reference e : element.getContributor()) 
28145          composeReference("contributor", e);
28146      }
28147      if (element.hasCareTeam()) { 
28148        for (Reference e : element.getCareTeam()) 
28149          composeReference("careTeam", e);
28150      }
28151      if (element.hasAddresses()) { 
28152        for (Reference e : element.getAddresses()) 
28153          composeReference("addresses", e);
28154      }
28155      if (element.hasSupportingInfo()) { 
28156        for (Reference e : element.getSupportingInfo()) 
28157          composeReference("supportingInfo", e);
28158      }
28159      if (element.hasGoal()) { 
28160        for (Reference e : element.getGoal()) 
28161          composeReference("goal", e);
28162      }
28163      if (element.hasActivity()) { 
28164        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
28165          composeCarePlanCarePlanActivityComponent("activity", e);
28166      }
28167      if (element.hasNote()) { 
28168        for (Annotation e : element.getNote()) 
28169          composeAnnotation("note", e);
28170      }
28171  }
28172
28173  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
28174    if (element != null) {
28175      composeElementAttributes(element);
28176      xml.enter(FHIR_NS, name);
28177      composeCarePlanCarePlanActivityComponentElements(element);
28178      composeElementClose(element);
28179      xml.exit(FHIR_NS, name);
28180    }
28181  }
28182
28183  protected void composeCarePlanCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
28184      composeBackboneElementElements(element);
28185      if (element.hasOutcomeCodeableConcept()) { 
28186        for (CodeableConcept e : element.getOutcomeCodeableConcept()) 
28187          composeCodeableConcept("outcomeCodeableConcept", e);
28188      }
28189      if (element.hasOutcomeReference()) { 
28190        for (Reference e : element.getOutcomeReference()) 
28191          composeReference("outcomeReference", e);
28192      }
28193      if (element.hasProgress()) { 
28194        for (Annotation e : element.getProgress()) 
28195          composeAnnotation("progress", e);
28196      }
28197      if (element.hasReference()) {
28198        composeReference("reference", element.getReference());
28199      }
28200      if (element.hasDetail()) {
28201        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
28202      }
28203  }
28204
28205  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
28206    if (element != null) {
28207      composeElementAttributes(element);
28208      xml.enter(FHIR_NS, name);
28209      composeCarePlanCarePlanActivityDetailComponentElements(element);
28210      composeElementClose(element);
28211      xml.exit(FHIR_NS, name);
28212    }
28213  }
28214
28215  protected void composeCarePlanCarePlanActivityDetailComponentElements(CarePlan.CarePlanActivityDetailComponent element) throws IOException {
28216      composeBackboneElementElements(element);
28217      if (element.hasKindElement())
28218        composeEnumeration("kind", element.getKindElement(), new CarePlan.CarePlanActivityKindEnumFactory());
28219      if (element.hasInstantiatesCanonical()) { 
28220        for (CanonicalType e : element.getInstantiatesCanonical()) 
28221          composeCanonical("instantiatesCanonical", e);
28222      }
28223      if (element.hasInstantiatesUri()) { 
28224        for (UriType e : element.getInstantiatesUri()) 
28225          composeUri("instantiatesUri", e);
28226      }
28227      if (element.hasCode()) {
28228        composeCodeableConcept("code", element.getCode());
28229      }
28230      if (element.hasReasonCode()) { 
28231        for (CodeableConcept e : element.getReasonCode()) 
28232          composeCodeableConcept("reasonCode", e);
28233      }
28234      if (element.hasReasonReference()) { 
28235        for (Reference e : element.getReasonReference()) 
28236          composeReference("reasonReference", e);
28237      }
28238      if (element.hasGoal()) { 
28239        for (Reference e : element.getGoal()) 
28240          composeReference("goal", e);
28241      }
28242      if (element.hasStatusElement())
28243        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
28244      if (element.hasStatusReason()) {
28245        composeCodeableConcept("statusReason", element.getStatusReason());
28246      }
28247      if (element.hasDoNotPerformElement()) {
28248        composeBoolean("doNotPerform", element.getDoNotPerformElement());
28249      }
28250      if (element.hasScheduled()) {
28251        composeType("scheduled", element.getScheduled());
28252      }      if (element.hasLocation()) {
28253        composeReference("location", element.getLocation());
28254      }
28255      if (element.hasPerformer()) { 
28256        for (Reference e : element.getPerformer()) 
28257          composeReference("performer", e);
28258      }
28259      if (element.hasProduct()) {
28260        composeType("product", element.getProduct());
28261      }      if (element.hasDailyAmount()) {
28262        composeQuantity("dailyAmount", element.getDailyAmount());
28263      }
28264      if (element.hasQuantity()) {
28265        composeQuantity("quantity", element.getQuantity());
28266      }
28267      if (element.hasDescriptionElement()) {
28268        composeString("description", element.getDescriptionElement());
28269      }
28270  }
28271
28272  protected void composeCareTeam(String name, CareTeam element) throws IOException {
28273    if (element != null) {
28274      composeDomainResourceAttributes(element);
28275      xml.enter(FHIR_NS, name);
28276      composeCareTeamElements(element);
28277      composeElementClose(element);
28278      xml.exit(FHIR_NS, name);
28279    }
28280  }
28281
28282  protected void composeCareTeamElements(CareTeam element) throws IOException {
28283      composeDomainResourceElements(element);
28284      if (element.hasIdentifier()) { 
28285        for (Identifier e : element.getIdentifier()) 
28286          composeIdentifier("identifier", e);
28287      }
28288      if (element.hasStatusElement())
28289        composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
28290      if (element.hasCategory()) { 
28291        for (CodeableConcept e : element.getCategory()) 
28292          composeCodeableConcept("category", e);
28293      }
28294      if (element.hasNameElement()) {
28295        composeString("name", element.getNameElement());
28296      }
28297      if (element.hasSubject()) {
28298        composeReference("subject", element.getSubject());
28299      }
28300      if (element.hasContext()) {
28301        composeReference("context", element.getContext());
28302      }
28303      if (element.hasPeriod()) {
28304        composePeriod("period", element.getPeriod());
28305      }
28306      if (element.hasParticipant()) { 
28307        for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
28308          composeCareTeamCareTeamParticipantComponent("participant", e);
28309      }
28310      if (element.hasReasonCode()) { 
28311        for (CodeableConcept e : element.getReasonCode()) 
28312          composeCodeableConcept("reasonCode", e);
28313      }
28314      if (element.hasReasonReference()) { 
28315        for (Reference e : element.getReasonReference()) 
28316          composeReference("reasonReference", e);
28317      }
28318      if (element.hasManagingOrganization()) { 
28319        for (Reference e : element.getManagingOrganization()) 
28320          composeReference("managingOrganization", e);
28321      }
28322      if (element.hasTelecom()) { 
28323        for (ContactPoint e : element.getTelecom()) 
28324          composeContactPoint("telecom", e);
28325      }
28326      if (element.hasNote()) { 
28327        for (Annotation e : element.getNote()) 
28328          composeAnnotation("note", e);
28329      }
28330  }
28331
28332  protected void composeCareTeamCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
28333    if (element != null) {
28334      composeElementAttributes(element);
28335      xml.enter(FHIR_NS, name);
28336      composeCareTeamCareTeamParticipantComponentElements(element);
28337      composeElementClose(element);
28338      xml.exit(FHIR_NS, name);
28339    }
28340  }
28341
28342  protected void composeCareTeamCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
28343      composeBackboneElementElements(element);
28344      if (element.hasRole()) { 
28345        for (CodeableConcept e : element.getRole()) 
28346          composeCodeableConcept("role", e);
28347      }
28348      if (element.hasMember()) {
28349        composeReference("member", element.getMember());
28350      }
28351      if (element.hasOnBehalfOf()) {
28352        composeReference("onBehalfOf", element.getOnBehalfOf());
28353      }
28354      if (element.hasPeriod()) {
28355        composePeriod("period", element.getPeriod());
28356      }
28357  }
28358
28359  protected void composeCatalogEntry(String name, CatalogEntry element) throws IOException {
28360    if (element != null) {
28361      composeDomainResourceAttributes(element);
28362      xml.enter(FHIR_NS, name);
28363      composeCatalogEntryElements(element);
28364      composeElementClose(element);
28365      xml.exit(FHIR_NS, name);
28366    }
28367  }
28368
28369  protected void composeCatalogEntryElements(CatalogEntry element) throws IOException {
28370      composeDomainResourceElements(element);
28371      if (element.hasIdentifier()) { 
28372        for (Identifier e : element.getIdentifier()) 
28373          composeIdentifier("identifier", e);
28374      }
28375      if (element.hasType()) {
28376        composeCodeableConcept("type", element.getType());
28377      }
28378      if (element.hasOrderableElement()) {
28379        composeBoolean("orderable", element.getOrderableElement());
28380      }
28381      if (element.hasReferencedItem()) {
28382        composeReference("referencedItem", element.getReferencedItem());
28383      }
28384      if (element.hasAdditionalIdentifier()) { 
28385        for (Identifier e : element.getAdditionalIdentifier()) 
28386          composeIdentifier("additionalIdentifier", e);
28387      }
28388      if (element.hasClassification()) { 
28389        for (CodeableConcept e : element.getClassification()) 
28390          composeCodeableConcept("classification", e);
28391      }
28392      if (element.hasStatusElement())
28393        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28394      if (element.hasValidityPeriod()) {
28395        composePeriod("validityPeriod", element.getValidityPeriod());
28396      }
28397      if (element.hasValidToElement()) {
28398        composeDateTime("validTo", element.getValidToElement());
28399      }
28400      if (element.hasLastUpdatedElement()) {
28401        composeDateTime("lastUpdated", element.getLastUpdatedElement());
28402      }
28403      if (element.hasAdditionalCharacteristic()) { 
28404        for (CodeableConcept e : element.getAdditionalCharacteristic()) 
28405          composeCodeableConcept("additionalCharacteristic", e);
28406      }
28407      if (element.hasAdditionalClassification()) { 
28408        for (CodeableConcept e : element.getAdditionalClassification()) 
28409          composeCodeableConcept("additionalClassification", e);
28410      }
28411      if (element.hasRelatedEntry()) { 
28412        for (CatalogEntry.CatalogEntryRelatedEntryComponent e : element.getRelatedEntry()) 
28413          composeCatalogEntryCatalogEntryRelatedEntryComponent("relatedEntry", e);
28414      }
28415  }
28416
28417  protected void composeCatalogEntryCatalogEntryRelatedEntryComponent(String name, CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
28418    if (element != null) {
28419      composeElementAttributes(element);
28420      xml.enter(FHIR_NS, name);
28421      composeCatalogEntryCatalogEntryRelatedEntryComponentElements(element);
28422      composeElementClose(element);
28423      xml.exit(FHIR_NS, name);
28424    }
28425  }
28426
28427  protected void composeCatalogEntryCatalogEntryRelatedEntryComponentElements(CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
28428      composeBackboneElementElements(element);
28429      if (element.hasRelationtypeElement())
28430        composeEnumeration("relationtype", element.getRelationtypeElement(), new CatalogEntry.CatalogEntryRelationTypeEnumFactory());
28431      if (element.hasItem()) {
28432        composeReference("item", element.getItem());
28433      }
28434  }
28435
28436  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
28437    if (element != null) {
28438      composeDomainResourceAttributes(element);
28439      xml.enter(FHIR_NS, name);
28440      composeChargeItemElements(element);
28441      composeElementClose(element);
28442      xml.exit(FHIR_NS, name);
28443    }
28444  }
28445
28446  protected void composeChargeItemElements(ChargeItem element) throws IOException {
28447      composeDomainResourceElements(element);
28448      if (element.hasIdentifier()) { 
28449        for (Identifier e : element.getIdentifier()) 
28450          composeIdentifier("identifier", e);
28451      }
28452      if (element.hasDefinition()) { 
28453        for (UriType e : element.getDefinition()) 
28454          composeUri("definition", e);
28455      }
28456      if (element.hasStatusElement())
28457        composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
28458      if (element.hasPartOf()) { 
28459        for (Reference e : element.getPartOf()) 
28460          composeReference("partOf", e);
28461      }
28462      if (element.hasCode()) {
28463        composeCodeableConcept("code", element.getCode());
28464      }
28465      if (element.hasSubject()) {
28466        composeReference("subject", element.getSubject());
28467      }
28468      if (element.hasContext()) {
28469        composeReference("context", element.getContext());
28470      }
28471      if (element.hasOccurrence()) {
28472        composeType("occurrence", element.getOccurrence());
28473      }      if (element.hasPerformer()) { 
28474        for (ChargeItem.ChargeItemPerformerComponent e : element.getPerformer()) 
28475          composeChargeItemChargeItemPerformerComponent("performer", e);
28476      }
28477      if (element.hasPerformingOrganization()) {
28478        composeReference("performingOrganization", element.getPerformingOrganization());
28479      }
28480      if (element.hasRequestingOrganization()) {
28481        composeReference("requestingOrganization", element.getRequestingOrganization());
28482      }
28483      if (element.hasCostCenter()) {
28484        composeReference("costCenter", element.getCostCenter());
28485      }
28486      if (element.hasQuantity()) {
28487        composeQuantity("quantity", element.getQuantity());
28488      }
28489      if (element.hasBodysite()) { 
28490        for (CodeableConcept e : element.getBodysite()) 
28491          composeCodeableConcept("bodysite", e);
28492      }
28493      if (element.hasFactorOverrideElement()) {
28494        composeDecimal("factorOverride", element.getFactorOverrideElement());
28495      }
28496      if (element.hasPriceOverride()) {
28497        composeMoney("priceOverride", element.getPriceOverride());
28498      }
28499      if (element.hasOverrideReasonElement()) {
28500        composeString("overrideReason", element.getOverrideReasonElement());
28501      }
28502      if (element.hasEnterer()) {
28503        composeReference("enterer", element.getEnterer());
28504      }
28505      if (element.hasEnteredDateElement()) {
28506        composeDateTime("enteredDate", element.getEnteredDateElement());
28507      }
28508      if (element.hasReason()) { 
28509        for (CodeableConcept e : element.getReason()) 
28510          composeCodeableConcept("reason", e);
28511      }
28512      if (element.hasService()) { 
28513        for (Reference e : element.getService()) 
28514          composeReference("service", e);
28515      }
28516      if (element.hasProduct()) {
28517        composeType("product", element.getProduct());
28518      }      if (element.hasAccount()) { 
28519        for (Reference e : element.getAccount()) 
28520          composeReference("account", e);
28521      }
28522      if (element.hasNote()) { 
28523        for (Annotation e : element.getNote()) 
28524          composeAnnotation("note", e);
28525      }
28526      if (element.hasSupportingInformation()) { 
28527        for (Reference e : element.getSupportingInformation()) 
28528          composeReference("supportingInformation", e);
28529      }
28530  }
28531
28532  protected void composeChargeItemChargeItemPerformerComponent(String name, ChargeItem.ChargeItemPerformerComponent element) throws IOException {
28533    if (element != null) {
28534      composeElementAttributes(element);
28535      xml.enter(FHIR_NS, name);
28536      composeChargeItemChargeItemPerformerComponentElements(element);
28537      composeElementClose(element);
28538      xml.exit(FHIR_NS, name);
28539    }
28540  }
28541
28542  protected void composeChargeItemChargeItemPerformerComponentElements(ChargeItem.ChargeItemPerformerComponent element) throws IOException {
28543      composeBackboneElementElements(element);
28544      if (element.hasFunction()) {
28545        composeCodeableConcept("function", element.getFunction());
28546      }
28547      if (element.hasActor()) {
28548        composeReference("actor", element.getActor());
28549      }
28550  }
28551
28552  protected void composeChargeItemDefinition(String name, ChargeItemDefinition element) throws IOException {
28553    if (element != null) {
28554      composeDomainResourceAttributes(element);
28555      xml.enter(FHIR_NS, name);
28556      composeChargeItemDefinitionElements(element);
28557      composeElementClose(element);
28558      xml.exit(FHIR_NS, name);
28559    }
28560  }
28561
28562  protected void composeChargeItemDefinitionElements(ChargeItemDefinition element) throws IOException {
28563      composeDomainResourceElements(element);
28564      if (element.hasUrlElement()) {
28565        composeUri("url", element.getUrlElement());
28566      }
28567      if (element.hasIdentifier()) { 
28568        for (Identifier e : element.getIdentifier()) 
28569          composeIdentifier("identifier", e);
28570      }
28571      if (element.hasVersionElement()) {
28572        composeString("version", element.getVersionElement());
28573      }
28574      if (element.hasTitleElement()) {
28575        composeString("title", element.getTitleElement());
28576      }
28577      if (element.hasDerivedFromUri()) { 
28578        for (UriType e : element.getDerivedFromUri()) 
28579          composeUri("derivedFromUri", e);
28580      }
28581      if (element.hasPartOf()) { 
28582        for (CanonicalType e : element.getPartOf()) 
28583          composeCanonical("partOf", e);
28584      }
28585      if (element.hasReplaces()) { 
28586        for (CanonicalType e : element.getReplaces()) 
28587          composeCanonical("replaces", e);
28588      }
28589      if (element.hasStatusElement())
28590        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28591      if (element.hasExperimentalElement()) {
28592        composeBoolean("experimental", element.getExperimentalElement());
28593      }
28594      if (element.hasDateElement()) {
28595        composeDateTime("date", element.getDateElement());
28596      }
28597      if (element.hasPublisherElement()) {
28598        composeString("publisher", element.getPublisherElement());
28599      }
28600      if (element.hasContact()) { 
28601        for (ContactDetail e : element.getContact()) 
28602          composeContactDetail("contact", e);
28603      }
28604      if (element.hasDescriptionElement()) {
28605        composeMarkdown("description", element.getDescriptionElement());
28606      }
28607      if (element.hasUseContext()) { 
28608        for (UsageContext e : element.getUseContext()) 
28609          composeUsageContext("useContext", e);
28610      }
28611      if (element.hasJurisdiction()) { 
28612        for (CodeableConcept e : element.getJurisdiction()) 
28613          composeCodeableConcept("jurisdiction", e);
28614      }
28615      if (element.hasCopyrightElement()) {
28616        composeMarkdown("copyright", element.getCopyrightElement());
28617      }
28618      if (element.hasApprovalDateElement()) {
28619        composeDate("approvalDate", element.getApprovalDateElement());
28620      }
28621      if (element.hasLastReviewDateElement()) {
28622        composeDate("lastReviewDate", element.getLastReviewDateElement());
28623      }
28624      if (element.hasEffectivePeriod()) {
28625        composePeriod("effectivePeriod", element.getEffectivePeriod());
28626      }
28627      if (element.hasCode()) {
28628        composeCodeableConcept("code", element.getCode());
28629      }
28630      if (element.hasInstance()) { 
28631        for (Reference e : element.getInstance()) 
28632          composeReference("instance", e);
28633      }
28634      if (element.hasApplicability()) { 
28635        for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
28636          composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent("applicability", e);
28637      }
28638      if (element.hasPropertyGroup()) { 
28639        for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent e : element.getPropertyGroup()) 
28640          composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent("propertyGroup", e);
28641      }
28642  }
28643
28644  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(String name, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
28645    if (element != null) {
28646      composeElementAttributes(element);
28647      xml.enter(FHIR_NS, name);
28648      composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponentElements(element);
28649      composeElementClose(element);
28650      xml.exit(FHIR_NS, name);
28651    }
28652  }
28653
28654  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponentElements(ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
28655      composeBackboneElementElements(element);
28656      if (element.hasDescriptionElement()) {
28657        composeString("description", element.getDescriptionElement());
28658      }
28659      if (element.hasLanguageElement()) {
28660        composeString("language", element.getLanguageElement());
28661      }
28662      if (element.hasExpressionElement()) {
28663        composeString("expression", element.getExpressionElement());
28664      }
28665  }
28666
28667  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
28668    if (element != null) {
28669      composeElementAttributes(element);
28670      xml.enter(FHIR_NS, name);
28671      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentElements(element);
28672      composeElementClose(element);
28673      xml.exit(FHIR_NS, name);
28674    }
28675  }
28676
28677  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
28678      composeBackboneElementElements(element);
28679      if (element.hasApplicability()) { 
28680        for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
28681          composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent("applicability", e);
28682      }
28683      if (element.hasPriceComponent()) { 
28684        for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent e : element.getPriceComponent()) 
28685          composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent("priceComponent", e);
28686      }
28687  }
28688
28689  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
28690    if (element != null) {
28691      composeElementAttributes(element);
28692      xml.enter(FHIR_NS, name);
28693      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentElements(element);
28694      composeElementClose(element);
28695      xml.exit(FHIR_NS, name);
28696    }
28697  }
28698
28699  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
28700      composeBackboneElementElements(element);
28701      if (element.hasTypeElement())
28702        composeEnumeration("type", element.getTypeElement(), new ChargeItemDefinition.ChargeItemDefinitionPriceComponentTypeEnumFactory());
28703      if (element.hasCode()) {
28704        composeCodeableConcept("code", element.getCode());
28705      }
28706      if (element.hasFactorElement()) {
28707        composeDecimal("factor", element.getFactorElement());
28708      }
28709      if (element.hasAmount()) {
28710        composeMoney("amount", element.getAmount());
28711      }
28712  }
28713
28714  protected void composeClaim(String name, Claim element) throws IOException {
28715    if (element != null) {
28716      composeDomainResourceAttributes(element);
28717      xml.enter(FHIR_NS, name);
28718      composeClaimElements(element);
28719      composeElementClose(element);
28720      xml.exit(FHIR_NS, name);
28721    }
28722  }
28723
28724  protected void composeClaimElements(Claim element) throws IOException {
28725      composeDomainResourceElements(element);
28726      if (element.hasIdentifier()) { 
28727        for (Identifier e : element.getIdentifier()) 
28728          composeIdentifier("identifier", e);
28729      }
28730      if (element.hasStatusElement())
28731        composeEnumeration("status", element.getStatusElement(), new Claim.ClaimStatusEnumFactory());
28732      if (element.hasType()) {
28733        composeCodeableConcept("type", element.getType());
28734      }
28735      if (element.hasSubType()) {
28736        composeCodeableConcept("subType", element.getSubType());
28737      }
28738      if (element.hasUseElement())
28739        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
28740      if (element.hasPatient()) {
28741        composeReference("patient", element.getPatient());
28742      }
28743      if (element.hasBillablePeriod()) {
28744        composePeriod("billablePeriod", element.getBillablePeriod());
28745      }
28746      if (element.hasCreatedElement()) {
28747        composeDateTime("created", element.getCreatedElement());
28748      }
28749      if (element.hasEnterer()) {
28750        composeReference("enterer", element.getEnterer());
28751      }
28752      if (element.hasInsurer()) {
28753        composeReference("insurer", element.getInsurer());
28754      }
28755      if (element.hasProvider()) {
28756        composeReference("provider", element.getProvider());
28757      }
28758      if (element.hasPriority()) {
28759        composeCodeableConcept("priority", element.getPriority());
28760      }
28761      if (element.hasFundsReserve()) {
28762        composeCodeableConcept("fundsReserve", element.getFundsReserve());
28763      }
28764      if (element.hasRelated()) { 
28765        for (Claim.RelatedClaimComponent e : element.getRelated()) 
28766          composeClaimRelatedClaimComponent("related", e);
28767      }
28768      if (element.hasPrescription()) {
28769        composeReference("prescription", element.getPrescription());
28770      }
28771      if (element.hasOriginalPrescription()) {
28772        composeReference("originalPrescription", element.getOriginalPrescription());
28773      }
28774      if (element.hasPayee()) {
28775        composeClaimPayeeComponent("payee", element.getPayee());
28776      }
28777      if (element.hasReferral()) {
28778        composeReference("referral", element.getReferral());
28779      }
28780      if (element.hasFacility()) {
28781        composeReference("facility", element.getFacility());
28782      }
28783      if (element.hasCareTeam()) { 
28784        for (Claim.CareTeamComponent e : element.getCareTeam()) 
28785          composeClaimCareTeamComponent("careTeam", e);
28786      }
28787      if (element.hasInformation()) { 
28788        for (Claim.SpecialConditionComponent e : element.getInformation()) 
28789          composeClaimSpecialConditionComponent("information", e);
28790      }
28791      if (element.hasDiagnosis()) { 
28792        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
28793          composeClaimDiagnosisComponent("diagnosis", e);
28794      }
28795      if (element.hasProcedure()) { 
28796        for (Claim.ProcedureComponent e : element.getProcedure()) 
28797          composeClaimProcedureComponent("procedure", e);
28798      }
28799      if (element.hasInsurance()) { 
28800        for (Claim.InsuranceComponent e : element.getInsurance()) 
28801          composeClaimInsuranceComponent("insurance", e);
28802      }
28803      if (element.hasAccident()) {
28804        composeClaimAccidentComponent("accident", element.getAccident());
28805      }
28806      if (element.hasItem()) { 
28807        for (Claim.ItemComponent e : element.getItem()) 
28808          composeClaimItemComponent("item", e);
28809      }
28810      if (element.hasTotal()) {
28811        composeMoney("total", element.getTotal());
28812      }
28813  }
28814
28815  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
28816    if (element != null) {
28817      composeElementAttributes(element);
28818      xml.enter(FHIR_NS, name);
28819      composeClaimRelatedClaimComponentElements(element);
28820      composeElementClose(element);
28821      xml.exit(FHIR_NS, name);
28822    }
28823  }
28824
28825  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
28826      composeBackboneElementElements(element);
28827      if (element.hasClaim()) {
28828        composeReference("claim", element.getClaim());
28829      }
28830      if (element.hasRelationship()) {
28831        composeCodeableConcept("relationship", element.getRelationship());
28832      }
28833      if (element.hasReference()) {
28834        composeIdentifier("reference", element.getReference());
28835      }
28836  }
28837
28838  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
28839    if (element != null) {
28840      composeElementAttributes(element);
28841      xml.enter(FHIR_NS, name);
28842      composeClaimPayeeComponentElements(element);
28843      composeElementClose(element);
28844      xml.exit(FHIR_NS, name);
28845    }
28846  }
28847
28848  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
28849      composeBackboneElementElements(element);
28850      if (element.hasType()) {
28851        composeCodeableConcept("type", element.getType());
28852      }
28853      if (element.hasResource()) {
28854        composeCoding("resource", element.getResource());
28855      }
28856      if (element.hasParty()) {
28857        composeReference("party", element.getParty());
28858      }
28859  }
28860
28861  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
28862    if (element != null) {
28863      composeElementAttributes(element);
28864      xml.enter(FHIR_NS, name);
28865      composeClaimCareTeamComponentElements(element);
28866      composeElementClose(element);
28867      xml.exit(FHIR_NS, name);
28868    }
28869  }
28870
28871  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
28872      composeBackboneElementElements(element);
28873      if (element.hasSequenceElement()) {
28874        composePositiveInt("sequence", element.getSequenceElement());
28875      }
28876      if (element.hasProvider()) {
28877        composeReference("provider", element.getProvider());
28878      }
28879      if (element.hasResponsibleElement()) {
28880        composeBoolean("responsible", element.getResponsibleElement());
28881      }
28882      if (element.hasRole()) {
28883        composeCodeableConcept("role", element.getRole());
28884      }
28885      if (element.hasQualification()) {
28886        composeCodeableConcept("qualification", element.getQualification());
28887      }
28888  }
28889
28890  protected void composeClaimSpecialConditionComponent(String name, Claim.SpecialConditionComponent element) throws IOException {
28891    if (element != null) {
28892      composeElementAttributes(element);
28893      xml.enter(FHIR_NS, name);
28894      composeClaimSpecialConditionComponentElements(element);
28895      composeElementClose(element);
28896      xml.exit(FHIR_NS, name);
28897    }
28898  }
28899
28900  protected void composeClaimSpecialConditionComponentElements(Claim.SpecialConditionComponent element) throws IOException {
28901      composeBackboneElementElements(element);
28902      if (element.hasSequenceElement()) {
28903        composePositiveInt("sequence", element.getSequenceElement());
28904      }
28905      if (element.hasCategory()) {
28906        composeCodeableConcept("category", element.getCategory());
28907      }
28908      if (element.hasCode()) {
28909        composeCodeableConcept("code", element.getCode());
28910      }
28911      if (element.hasTiming()) {
28912        composeType("timing", element.getTiming());
28913      }      if (element.hasValue()) {
28914        composeType("value", element.getValue());
28915      }      if (element.hasReason()) {
28916        composeCodeableConcept("reason", element.getReason());
28917      }
28918  }
28919
28920  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
28921    if (element != null) {
28922      composeElementAttributes(element);
28923      xml.enter(FHIR_NS, name);
28924      composeClaimDiagnosisComponentElements(element);
28925      composeElementClose(element);
28926      xml.exit(FHIR_NS, name);
28927    }
28928  }
28929
28930  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
28931      composeBackboneElementElements(element);
28932      if (element.hasSequenceElement()) {
28933        composePositiveInt("sequence", element.getSequenceElement());
28934      }
28935      if (element.hasDiagnosis()) {
28936        composeType("diagnosis", element.getDiagnosis());
28937      }      if (element.hasType()) { 
28938        for (CodeableConcept e : element.getType()) 
28939          composeCodeableConcept("type", e);
28940      }
28941      if (element.hasOnAdmission()) {
28942        composeCodeableConcept("onAdmission", element.getOnAdmission());
28943      }
28944      if (element.hasPackageCode()) {
28945        composeCodeableConcept("packageCode", element.getPackageCode());
28946      }
28947  }
28948
28949  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
28950    if (element != null) {
28951      composeElementAttributes(element);
28952      xml.enter(FHIR_NS, name);
28953      composeClaimProcedureComponentElements(element);
28954      composeElementClose(element);
28955      xml.exit(FHIR_NS, name);
28956    }
28957  }
28958
28959  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
28960      composeBackboneElementElements(element);
28961      if (element.hasSequenceElement()) {
28962        composePositiveInt("sequence", element.getSequenceElement());
28963      }
28964      if (element.hasDateElement()) {
28965        composeDateTime("date", element.getDateElement());
28966      }
28967      if (element.hasProcedure()) {
28968        composeType("procedure", element.getProcedure());
28969      }  }
28970
28971  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
28972    if (element != null) {
28973      composeElementAttributes(element);
28974      xml.enter(FHIR_NS, name);
28975      composeClaimInsuranceComponentElements(element);
28976      composeElementClose(element);
28977      xml.exit(FHIR_NS, name);
28978    }
28979  }
28980
28981  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
28982      composeBackboneElementElements(element);
28983      if (element.hasSequenceElement()) {
28984        composePositiveInt("sequence", element.getSequenceElement());
28985      }
28986      if (element.hasFocalElement()) {
28987        composeBoolean("focal", element.getFocalElement());
28988      }
28989      if (element.hasIdentifier()) {
28990        composeIdentifier("identifier", element.getIdentifier());
28991      }
28992      if (element.hasCoverage()) {
28993        composeReference("coverage", element.getCoverage());
28994      }
28995      if (element.hasBusinessArrangementElement()) {
28996        composeString("businessArrangement", element.getBusinessArrangementElement());
28997      }
28998      if (element.hasPreAuthRef()) { 
28999        for (StringType e : element.getPreAuthRef()) 
29000          composeString("preAuthRef", e);
29001      }
29002      if (element.hasClaimResponse()) {
29003        composeReference("claimResponse", element.getClaimResponse());
29004      }
29005  }
29006
29007  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
29008    if (element != null) {
29009      composeElementAttributes(element);
29010      xml.enter(FHIR_NS, name);
29011      composeClaimAccidentComponentElements(element);
29012      composeElementClose(element);
29013      xml.exit(FHIR_NS, name);
29014    }
29015  }
29016
29017  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
29018      composeBackboneElementElements(element);
29019      if (element.hasDateElement()) {
29020        composeDate("date", element.getDateElement());
29021      }
29022      if (element.hasType()) {
29023        composeCodeableConcept("type", element.getType());
29024      }
29025      if (element.hasLocation()) {
29026        composeType("location", element.getLocation());
29027      }  }
29028
29029  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
29030    if (element != null) {
29031      composeElementAttributes(element);
29032      xml.enter(FHIR_NS, name);
29033      composeClaimItemComponentElements(element);
29034      composeElementClose(element);
29035      xml.exit(FHIR_NS, name);
29036    }
29037  }
29038
29039  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
29040      composeBackboneElementElements(element);
29041      if (element.hasSequenceElement()) {
29042        composePositiveInt("sequence", element.getSequenceElement());
29043      }
29044      if (element.hasCareTeamSequence()) { 
29045        for (PositiveIntType e : element.getCareTeamSequence()) 
29046          composePositiveInt("careTeamSequence", e);
29047      }
29048      if (element.hasDiagnosisSequence()) { 
29049        for (PositiveIntType e : element.getDiagnosisSequence()) 
29050          composePositiveInt("diagnosisSequence", e);
29051      }
29052      if (element.hasProcedureSequence()) { 
29053        for (PositiveIntType e : element.getProcedureSequence()) 
29054          composePositiveInt("procedureSequence", e);
29055      }
29056      if (element.hasInformationSequence()) { 
29057        for (PositiveIntType e : element.getInformationSequence()) 
29058          composePositiveInt("informationSequence", e);
29059      }
29060      if (element.hasRevenue()) {
29061        composeCodeableConcept("revenue", element.getRevenue());
29062      }
29063      if (element.hasCategory()) {
29064        composeCodeableConcept("category", element.getCategory());
29065      }
29066      if (element.hasBillcode()) {
29067        composeCodeableConcept("billcode", element.getBillcode());
29068      }
29069      if (element.hasModifier()) { 
29070        for (CodeableConcept e : element.getModifier()) 
29071          composeCodeableConcept("modifier", e);
29072      }
29073      if (element.hasProgramCode()) { 
29074        for (CodeableConcept e : element.getProgramCode()) 
29075          composeCodeableConcept("programCode", e);
29076      }
29077      if (element.hasServiced()) {
29078        composeType("serviced", element.getServiced());
29079      }      if (element.hasLocation()) {
29080        composeType("location", element.getLocation());
29081      }      if (element.hasQuantity()) {
29082        composeQuantity("quantity", element.getQuantity());
29083      }
29084      if (element.hasUnitPrice()) {
29085        composeMoney("unitPrice", element.getUnitPrice());
29086      }
29087      if (element.hasFactorElement()) {
29088        composeDecimal("factor", element.getFactorElement());
29089      }
29090      if (element.hasNet()) {
29091        composeMoney("net", element.getNet());
29092      }
29093      if (element.hasUdi()) { 
29094        for (Reference e : element.getUdi()) 
29095          composeReference("udi", e);
29096      }
29097      if (element.hasBodySite()) {
29098        composeCodeableConcept("bodySite", element.getBodySite());
29099      }
29100      if (element.hasSubSite()) { 
29101        for (CodeableConcept e : element.getSubSite()) 
29102          composeCodeableConcept("subSite", e);
29103      }
29104      if (element.hasEncounter()) { 
29105        for (Reference e : element.getEncounter()) 
29106          composeReference("encounter", e);
29107      }
29108      if (element.hasDetail()) { 
29109        for (Claim.DetailComponent e : element.getDetail()) 
29110          composeClaimDetailComponent("detail", e);
29111      }
29112  }
29113
29114  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
29115    if (element != null) {
29116      composeElementAttributes(element);
29117      xml.enter(FHIR_NS, name);
29118      composeClaimDetailComponentElements(element);
29119      composeElementClose(element);
29120      xml.exit(FHIR_NS, name);
29121    }
29122  }
29123
29124  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
29125      composeBackboneElementElements(element);
29126      if (element.hasSequenceElement()) {
29127        composePositiveInt("sequence", element.getSequenceElement());
29128      }
29129      if (element.hasRevenue()) {
29130        composeCodeableConcept("revenue", element.getRevenue());
29131      }
29132      if (element.hasCategory()) {
29133        composeCodeableConcept("category", element.getCategory());
29134      }
29135      if (element.hasBillcode()) {
29136        composeCodeableConcept("billcode", element.getBillcode());
29137      }
29138      if (element.hasModifier()) { 
29139        for (CodeableConcept e : element.getModifier()) 
29140          composeCodeableConcept("modifier", e);
29141      }
29142      if (element.hasProgramCode()) { 
29143        for (CodeableConcept e : element.getProgramCode()) 
29144          composeCodeableConcept("programCode", e);
29145      }
29146      if (element.hasQuantity()) {
29147        composeQuantity("quantity", element.getQuantity());
29148      }
29149      if (element.hasUnitPrice()) {
29150        composeMoney("unitPrice", element.getUnitPrice());
29151      }
29152      if (element.hasFactorElement()) {
29153        composeDecimal("factor", element.getFactorElement());
29154      }
29155      if (element.hasNet()) {
29156        composeMoney("net", element.getNet());
29157      }
29158      if (element.hasUdi()) { 
29159        for (Reference e : element.getUdi()) 
29160          composeReference("udi", e);
29161      }
29162      if (element.hasSubDetail()) { 
29163        for (Claim.SubDetailComponent e : element.getSubDetail()) 
29164          composeClaimSubDetailComponent("subDetail", e);
29165      }
29166  }
29167
29168  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
29169    if (element != null) {
29170      composeElementAttributes(element);
29171      xml.enter(FHIR_NS, name);
29172      composeClaimSubDetailComponentElements(element);
29173      composeElementClose(element);
29174      xml.exit(FHIR_NS, name);
29175    }
29176  }
29177
29178  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
29179      composeBackboneElementElements(element);
29180      if (element.hasSequenceElement()) {
29181        composePositiveInt("sequence", element.getSequenceElement());
29182      }
29183      if (element.hasRevenue()) {
29184        composeCodeableConcept("revenue", element.getRevenue());
29185      }
29186      if (element.hasCategory()) {
29187        composeCodeableConcept("category", element.getCategory());
29188      }
29189      if (element.hasBillcode()) {
29190        composeCodeableConcept("billcode", element.getBillcode());
29191      }
29192      if (element.hasModifier()) { 
29193        for (CodeableConcept e : element.getModifier()) 
29194          composeCodeableConcept("modifier", e);
29195      }
29196      if (element.hasProgramCode()) { 
29197        for (CodeableConcept e : element.getProgramCode()) 
29198          composeCodeableConcept("programCode", e);
29199      }
29200      if (element.hasQuantity()) {
29201        composeQuantity("quantity", element.getQuantity());
29202      }
29203      if (element.hasUnitPrice()) {
29204        composeMoney("unitPrice", element.getUnitPrice());
29205      }
29206      if (element.hasFactorElement()) {
29207        composeDecimal("factor", element.getFactorElement());
29208      }
29209      if (element.hasNet()) {
29210        composeMoney("net", element.getNet());
29211      }
29212      if (element.hasUdi()) { 
29213        for (Reference e : element.getUdi()) 
29214          composeReference("udi", e);
29215      }
29216  }
29217
29218  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
29219    if (element != null) {
29220      composeDomainResourceAttributes(element);
29221      xml.enter(FHIR_NS, name);
29222      composeClaimResponseElements(element);
29223      composeElementClose(element);
29224      xml.exit(FHIR_NS, name);
29225    }
29226  }
29227
29228  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
29229      composeDomainResourceElements(element);
29230      if (element.hasIdentifier()) { 
29231        for (Identifier e : element.getIdentifier()) 
29232          composeIdentifier("identifier", e);
29233      }
29234      if (element.hasStatusElement())
29235        composeEnumeration("status", element.getStatusElement(), new ClaimResponse.ClaimResponseStatusEnumFactory());
29236      if (element.hasType()) {
29237        composeCodeableConcept("type", element.getType());
29238      }
29239      if (element.hasSubType()) {
29240        composeCodeableConcept("subType", element.getSubType());
29241      }
29242      if (element.hasUseElement())
29243        composeEnumeration("use", element.getUseElement(), new ClaimResponse.UseEnumFactory());
29244      if (element.hasPatient()) {
29245        composeReference("patient", element.getPatient());
29246      }
29247      if (element.hasCreatedElement()) {
29248        composeDateTime("created", element.getCreatedElement());
29249      }
29250      if (element.hasInsurer()) {
29251        composeReference("insurer", element.getInsurer());
29252      }
29253      if (element.hasRequestProvider()) {
29254        composeReference("requestProvider", element.getRequestProvider());
29255      }
29256      if (element.hasRequest()) {
29257        composeReference("request", element.getRequest());
29258      }
29259      if (element.hasOutcomeElement())
29260        composeEnumeration("outcome", element.getOutcomeElement(), new ClaimResponse.RemittanceOutcomeEnumFactory());
29261      if (element.hasDispositionElement()) {
29262        composeString("disposition", element.getDispositionElement());
29263      }
29264      if (element.hasPreAuthRefElement()) {
29265        composeString("preAuthRef", element.getPreAuthRefElement());
29266      }
29267      if (element.hasPayeeType()) {
29268        composeCodeableConcept("payeeType", element.getPayeeType());
29269      }
29270      if (element.hasItem()) { 
29271        for (ClaimResponse.ItemComponent e : element.getItem()) 
29272          composeClaimResponseItemComponent("item", e);
29273      }
29274      if (element.hasAddItem()) { 
29275        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
29276          composeClaimResponseAddedItemComponent("addItem", e);
29277      }
29278      if (element.hasError()) { 
29279        for (ClaimResponse.ErrorComponent e : element.getError()) 
29280          composeClaimResponseErrorComponent("error", e);
29281      }
29282      if (element.hasTotal()) { 
29283        for (ClaimResponse.TotalComponent e : element.getTotal()) 
29284          composeClaimResponseTotalComponent("total", e);
29285      }
29286      if (element.hasPayment()) {
29287        composeClaimResponsePaymentComponent("payment", element.getPayment());
29288      }
29289      if (element.hasReserved()) {
29290        composeCoding("reserved", element.getReserved());
29291      }
29292      if (element.hasForm()) {
29293        composeCodeableConcept("form", element.getForm());
29294      }
29295      if (element.hasProcessNote()) { 
29296        for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
29297          composeClaimResponseNoteComponent("processNote", e);
29298      }
29299      if (element.hasCommunicationRequest()) { 
29300        for (Reference e : element.getCommunicationRequest()) 
29301          composeReference("communicationRequest", e);
29302      }
29303      if (element.hasInsurance()) { 
29304        for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
29305          composeClaimResponseInsuranceComponent("insurance", e);
29306      }
29307  }
29308
29309  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
29310    if (element != null) {
29311      composeElementAttributes(element);
29312      xml.enter(FHIR_NS, name);
29313      composeClaimResponseItemComponentElements(element);
29314      composeElementClose(element);
29315      xml.exit(FHIR_NS, name);
29316    }
29317  }
29318
29319  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
29320      composeBackboneElementElements(element);
29321      if (element.hasItemSequenceElement()) {
29322        composePositiveInt("itemSequence", element.getItemSequenceElement());
29323      }
29324      if (element.hasNoteNumber()) { 
29325        for (PositiveIntType e : element.getNoteNumber()) 
29326          composePositiveInt("noteNumber", e);
29327      }
29328      if (element.hasAdjudication()) { 
29329        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
29330          composeClaimResponseAdjudicationComponent("adjudication", e);
29331      }
29332      if (element.hasDetail()) { 
29333        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
29334          composeClaimResponseItemDetailComponent("detail", e);
29335      }
29336  }
29337
29338  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
29339    if (element != null) {
29340      composeElementAttributes(element);
29341      xml.enter(FHIR_NS, name);
29342      composeClaimResponseAdjudicationComponentElements(element);
29343      composeElementClose(element);
29344      xml.exit(FHIR_NS, name);
29345    }
29346  }
29347
29348  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
29349      composeBackboneElementElements(element);
29350      if (element.hasCategory()) {
29351        composeCodeableConcept("category", element.getCategory());
29352      }
29353      if (element.hasReason()) {
29354        composeCodeableConcept("reason", element.getReason());
29355      }
29356      if (element.hasAmount()) {
29357        composeMoney("amount", element.getAmount());
29358      }
29359      if (element.hasValueElement()) {
29360        composeDecimal("value", element.getValueElement());
29361      }
29362  }
29363
29364  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
29365    if (element != null) {
29366      composeElementAttributes(element);
29367      xml.enter(FHIR_NS, name);
29368      composeClaimResponseItemDetailComponentElements(element);
29369      composeElementClose(element);
29370      xml.exit(FHIR_NS, name);
29371    }
29372  }
29373
29374  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
29375      composeBackboneElementElements(element);
29376      if (element.hasDetailSequenceElement()) {
29377        composePositiveInt("detailSequence", element.getDetailSequenceElement());
29378      }
29379      if (element.hasNoteNumber()) { 
29380        for (PositiveIntType e : element.getNoteNumber()) 
29381          composePositiveInt("noteNumber", e);
29382      }
29383      if (element.hasAdjudication()) { 
29384        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
29385          composeClaimResponseAdjudicationComponent("adjudication", e);
29386      }
29387      if (element.hasSubDetail()) { 
29388        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
29389          composeClaimResponseSubDetailComponent("subDetail", e);
29390      }
29391  }
29392
29393  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
29394    if (element != null) {
29395      composeElementAttributes(element);
29396      xml.enter(FHIR_NS, name);
29397      composeClaimResponseSubDetailComponentElements(element);
29398      composeElementClose(element);
29399      xml.exit(FHIR_NS, name);
29400    }
29401  }
29402
29403  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
29404      composeBackboneElementElements(element);
29405      if (element.hasSubDetailSequenceElement()) {
29406        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
29407      }
29408      if (element.hasNoteNumber()) { 
29409        for (PositiveIntType e : element.getNoteNumber()) 
29410          composePositiveInt("noteNumber", e);
29411      }
29412      if (element.hasAdjudication()) { 
29413        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
29414          composeClaimResponseAdjudicationComponent("adjudication", e);
29415      }
29416  }
29417
29418  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
29419    if (element != null) {
29420      composeElementAttributes(element);
29421      xml.enter(FHIR_NS, name);
29422      composeClaimResponseAddedItemComponentElements(element);
29423      composeElementClose(element);
29424      xml.exit(FHIR_NS, name);
29425    }
29426  }
29427
29428  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
29429      composeBackboneElementElements(element);
29430      if (element.hasItemSequence()) { 
29431        for (PositiveIntType e : element.getItemSequence()) 
29432          composePositiveInt("itemSequence", e);
29433      }
29434      if (element.hasDetailSequence()) { 
29435        for (PositiveIntType e : element.getDetailSequence()) 
29436          composePositiveInt("detailSequence", e);
29437      }
29438      if (element.hasSubdetailSequence()) { 
29439        for (PositiveIntType e : element.getSubdetailSequence()) 
29440          composePositiveInt("subdetailSequence", e);
29441      }
29442      if (element.hasProvider()) { 
29443        for (Reference e : element.getProvider()) 
29444          composeReference("provider", e);
29445      }
29446      if (element.hasBillcode()) {
29447        composeCodeableConcept("billcode", element.getBillcode());
29448      }
29449      if (element.hasModifier()) { 
29450        for (CodeableConcept e : element.getModifier()) 
29451          composeCodeableConcept("modifier", e);
29452      }
29453      if (element.hasProgramCode()) { 
29454        for (CodeableConcept e : element.getProgramCode()) 
29455          composeCodeableConcept("programCode", e);
29456      }
29457      if (element.hasServiced()) {
29458        composeType("serviced", element.getServiced());
29459      }      if (element.hasLocation()) {
29460        composeType("location", element.getLocation());
29461      }      if (element.hasQuantity()) {
29462        composeQuantity("quantity", element.getQuantity());
29463      }
29464      if (element.hasUnitPrice()) {
29465        composeMoney("unitPrice", element.getUnitPrice());
29466      }
29467      if (element.hasFactorElement()) {
29468        composeDecimal("factor", element.getFactorElement());
29469      }
29470      if (element.hasNet()) {
29471        composeMoney("net", element.getNet());
29472      }
29473      if (element.hasBodySite()) {
29474        composeCodeableConcept("bodySite", element.getBodySite());
29475      }
29476      if (element.hasSubSite()) { 
29477        for (CodeableConcept e : element.getSubSite()) 
29478          composeCodeableConcept("subSite", e);
29479      }
29480      if (element.hasNoteNumber()) { 
29481        for (PositiveIntType e : element.getNoteNumber()) 
29482          composePositiveInt("noteNumber", e);
29483      }
29484      if (element.hasAdjudication()) { 
29485        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
29486          composeClaimResponseAdjudicationComponent("adjudication", e);
29487      }
29488      if (element.hasDetail()) { 
29489        for (ClaimResponse.AddedItemDetailComponent e : element.getDetail()) 
29490          composeClaimResponseAddedItemDetailComponent("detail", e);
29491      }
29492  }
29493
29494  protected void composeClaimResponseAddedItemDetailComponent(String name, ClaimResponse.AddedItemDetailComponent element) throws IOException {
29495    if (element != null) {
29496      composeElementAttributes(element);
29497      xml.enter(FHIR_NS, name);
29498      composeClaimResponseAddedItemDetailComponentElements(element);
29499      composeElementClose(element);
29500      xml.exit(FHIR_NS, name);
29501    }
29502  }
29503
29504  protected void composeClaimResponseAddedItemDetailComponentElements(ClaimResponse.AddedItemDetailComponent element) throws IOException {
29505      composeBackboneElementElements(element);
29506      if (element.hasBillcode()) {
29507        composeCodeableConcept("billcode", element.getBillcode());
29508      }
29509      if (element.hasModifier()) { 
29510        for (CodeableConcept e : element.getModifier()) 
29511          composeCodeableConcept("modifier", e);
29512      }
29513      if (element.hasQuantity()) {
29514        composeQuantity("quantity", element.getQuantity());
29515      }
29516      if (element.hasUnitPrice()) {
29517        composeMoney("unitPrice", element.getUnitPrice());
29518      }
29519      if (element.hasFactorElement()) {
29520        composeDecimal("factor", element.getFactorElement());
29521      }
29522      if (element.hasNet()) {
29523        composeMoney("net", element.getNet());
29524      }
29525      if (element.hasNoteNumber()) { 
29526        for (PositiveIntType e : element.getNoteNumber()) 
29527          composePositiveInt("noteNumber", e);
29528      }
29529      if (element.hasAdjudication()) { 
29530        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
29531          composeClaimResponseAdjudicationComponent("adjudication", e);
29532      }
29533      if (element.hasSubDetail()) { 
29534        for (ClaimResponse.AddedItemSubDetailComponent e : element.getSubDetail()) 
29535          composeClaimResponseAddedItemSubDetailComponent("subDetail", e);
29536      }
29537  }
29538
29539  protected void composeClaimResponseAddedItemSubDetailComponent(String name, ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
29540    if (element != null) {
29541      composeElementAttributes(element);
29542      xml.enter(FHIR_NS, name);
29543      composeClaimResponseAddedItemSubDetailComponentElements(element);
29544      composeElementClose(element);
29545      xml.exit(FHIR_NS, name);
29546    }
29547  }
29548
29549  protected void composeClaimResponseAddedItemSubDetailComponentElements(ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
29550      composeBackboneElementElements(element);
29551      if (element.hasBillcode()) {
29552        composeCodeableConcept("billcode", element.getBillcode());
29553      }
29554      if (element.hasModifier()) { 
29555        for (CodeableConcept e : element.getModifier()) 
29556          composeCodeableConcept("modifier", e);
29557      }
29558      if (element.hasQuantity()) {
29559        composeQuantity("quantity", element.getQuantity());
29560      }
29561      if (element.hasUnitPrice()) {
29562        composeMoney("unitPrice", element.getUnitPrice());
29563      }
29564      if (element.hasFactorElement()) {
29565        composeDecimal("factor", element.getFactorElement());
29566      }
29567      if (element.hasNet()) {
29568        composeMoney("net", element.getNet());
29569      }
29570      if (element.hasNoteNumber()) { 
29571        for (PositiveIntType e : element.getNoteNumber()) 
29572          composePositiveInt("noteNumber", e);
29573      }
29574      if (element.hasAdjudication()) { 
29575        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
29576          composeClaimResponseAdjudicationComponent("adjudication", e);
29577      }
29578  }
29579
29580  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
29581    if (element != null) {
29582      composeElementAttributes(element);
29583      xml.enter(FHIR_NS, name);
29584      composeClaimResponseErrorComponentElements(element);
29585      composeElementClose(element);
29586      xml.exit(FHIR_NS, name);
29587    }
29588  }
29589
29590  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
29591      composeBackboneElementElements(element);
29592      if (element.hasItemSequenceElement()) {
29593        composePositiveInt("itemSequence", element.getItemSequenceElement());
29594      }
29595      if (element.hasDetailSequenceElement()) {
29596        composePositiveInt("detailSequence", element.getDetailSequenceElement());
29597      }
29598      if (element.hasSubDetailSequenceElement()) {
29599        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
29600      }
29601      if (element.hasCode()) {
29602        composeCodeableConcept("code", element.getCode());
29603      }
29604  }
29605
29606  protected void composeClaimResponseTotalComponent(String name, ClaimResponse.TotalComponent element) throws IOException {
29607    if (element != null) {
29608      composeElementAttributes(element);
29609      xml.enter(FHIR_NS, name);
29610      composeClaimResponseTotalComponentElements(element);
29611      composeElementClose(element);
29612      xml.exit(FHIR_NS, name);
29613    }
29614  }
29615
29616  protected void composeClaimResponseTotalComponentElements(ClaimResponse.TotalComponent element) throws IOException {
29617      composeBackboneElementElements(element);
29618      if (element.hasCategory()) {
29619        composeCodeableConcept("category", element.getCategory());
29620      }
29621      if (element.hasAmount()) {
29622        composeMoney("amount", element.getAmount());
29623      }
29624  }
29625
29626  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
29627    if (element != null) {
29628      composeElementAttributes(element);
29629      xml.enter(FHIR_NS, name);
29630      composeClaimResponsePaymentComponentElements(element);
29631      composeElementClose(element);
29632      xml.exit(FHIR_NS, name);
29633    }
29634  }
29635
29636  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
29637      composeBackboneElementElements(element);
29638      if (element.hasType()) {
29639        composeCodeableConcept("type", element.getType());
29640      }
29641      if (element.hasAdjustment()) {
29642        composeMoney("adjustment", element.getAdjustment());
29643      }
29644      if (element.hasAdjustmentReason()) {
29645        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
29646      }
29647      if (element.hasDateElement()) {
29648        composeDate("date", element.getDateElement());
29649      }
29650      if (element.hasAmount()) {
29651        composeMoney("amount", element.getAmount());
29652      }
29653      if (element.hasIdentifier()) {
29654        composeIdentifier("identifier", element.getIdentifier());
29655      }
29656  }
29657
29658  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
29659    if (element != null) {
29660      composeElementAttributes(element);
29661      xml.enter(FHIR_NS, name);
29662      composeClaimResponseNoteComponentElements(element);
29663      composeElementClose(element);
29664      xml.exit(FHIR_NS, name);
29665    }
29666  }
29667
29668  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
29669      composeBackboneElementElements(element);
29670      if (element.hasNumberElement()) {
29671        composePositiveInt("number", element.getNumberElement());
29672      }
29673      if (element.hasTypeElement())
29674        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
29675      if (element.hasTextElement()) {
29676        composeString("text", element.getTextElement());
29677      }
29678      if (element.hasLanguage()) {
29679        composeCodeableConcept("language", element.getLanguage());
29680      }
29681  }
29682
29683  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
29684    if (element != null) {
29685      composeElementAttributes(element);
29686      xml.enter(FHIR_NS, name);
29687      composeClaimResponseInsuranceComponentElements(element);
29688      composeElementClose(element);
29689      xml.exit(FHIR_NS, name);
29690    }
29691  }
29692
29693  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
29694      composeBackboneElementElements(element);
29695      if (element.hasSequenceElement()) {
29696        composePositiveInt("sequence", element.getSequenceElement());
29697      }
29698      if (element.hasFocalElement()) {
29699        composeBoolean("focal", element.getFocalElement());
29700      }
29701      if (element.hasCoverage()) {
29702        composeReference("coverage", element.getCoverage());
29703      }
29704      if (element.hasBusinessArrangementElement()) {
29705        composeString("businessArrangement", element.getBusinessArrangementElement());
29706      }
29707      if (element.hasClaimResponse()) {
29708        composeReference("claimResponse", element.getClaimResponse());
29709      }
29710  }
29711
29712  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
29713    if (element != null) {
29714      composeDomainResourceAttributes(element);
29715      xml.enter(FHIR_NS, name);
29716      composeClinicalImpressionElements(element);
29717      composeElementClose(element);
29718      xml.exit(FHIR_NS, name);
29719    }
29720  }
29721
29722  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
29723      composeDomainResourceElements(element);
29724      if (element.hasIdentifier()) { 
29725        for (Identifier e : element.getIdentifier()) 
29726          composeIdentifier("identifier", e);
29727      }
29728      if (element.hasStatusElement())
29729        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
29730      if (element.hasStatusReason()) {
29731        composeCodeableConcept("statusReason", element.getStatusReason());
29732      }
29733      if (element.hasCode()) {
29734        composeCodeableConcept("code", element.getCode());
29735      }
29736      if (element.hasDescriptionElement()) {
29737        composeString("description", element.getDescriptionElement());
29738      }
29739      if (element.hasSubject()) {
29740        composeReference("subject", element.getSubject());
29741      }
29742      if (element.hasContext()) {
29743        composeReference("context", element.getContext());
29744      }
29745      if (element.hasEffective()) {
29746        composeType("effective", element.getEffective());
29747      }      if (element.hasDateElement()) {
29748        composeDateTime("date", element.getDateElement());
29749      }
29750      if (element.hasAssessor()) {
29751        composeReference("assessor", element.getAssessor());
29752      }
29753      if (element.hasPrevious()) {
29754        composeReference("previous", element.getPrevious());
29755      }
29756      if (element.hasProblem()) { 
29757        for (Reference e : element.getProblem()) 
29758          composeReference("problem", e);
29759      }
29760      if (element.hasInvestigation()) { 
29761        for (ClinicalImpression.ClinicalImpressionInvestigationComponent e : element.getInvestigation()) 
29762          composeClinicalImpressionClinicalImpressionInvestigationComponent("investigation", e);
29763      }
29764      if (element.hasProtocol()) { 
29765        for (UriType e : element.getProtocol()) 
29766          composeUri("protocol", e);
29767      }
29768      if (element.hasSummaryElement()) {
29769        composeString("summary", element.getSummaryElement());
29770      }
29771      if (element.hasFinding()) { 
29772        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
29773          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
29774      }
29775      if (element.hasPrognosisCodeableConcept()) { 
29776        for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
29777          composeCodeableConcept("prognosisCodeableConcept", e);
29778      }
29779      if (element.hasPrognosisReference()) { 
29780        for (Reference e : element.getPrognosisReference()) 
29781          composeReference("prognosisReference", e);
29782      }
29783      if (element.hasSupportingInfo()) { 
29784        for (Reference e : element.getSupportingInfo()) 
29785          composeReference("supportingInfo", e);
29786      }
29787      if (element.hasNote()) { 
29788        for (Annotation e : element.getNote()) 
29789          composeAnnotation("note", e);
29790      }
29791  }
29792
29793  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
29794    if (element != null) {
29795      composeElementAttributes(element);
29796      xml.enter(FHIR_NS, name);
29797      composeClinicalImpressionClinicalImpressionInvestigationComponentElements(element);
29798      composeElementClose(element);
29799      xml.exit(FHIR_NS, name);
29800    }
29801  }
29802
29803  protected void composeClinicalImpressionClinicalImpressionInvestigationComponentElements(ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
29804      composeBackboneElementElements(element);
29805      if (element.hasCode()) {
29806        composeCodeableConcept("code", element.getCode());
29807      }
29808      if (element.hasItem()) { 
29809        for (Reference e : element.getItem()) 
29810          composeReference("item", e);
29811      }
29812  }
29813
29814  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
29815    if (element != null) {
29816      composeElementAttributes(element);
29817      xml.enter(FHIR_NS, name);
29818      composeClinicalImpressionClinicalImpressionFindingComponentElements(element);
29819      composeElementClose(element);
29820      xml.exit(FHIR_NS, name);
29821    }
29822  }
29823
29824  protected void composeClinicalImpressionClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
29825      composeBackboneElementElements(element);
29826      if (element.hasItemCodeableConcept()) {
29827        composeCodeableConcept("itemCodeableConcept", element.getItemCodeableConcept());
29828      }
29829      if (element.hasItemReference()) {
29830        composeReference("itemReference", element.getItemReference());
29831      }
29832      if (element.hasBasisElement()) {
29833        composeString("basis", element.getBasisElement());
29834      }
29835  }
29836
29837  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
29838    if (element != null) {
29839      composeDomainResourceAttributes(element);
29840      xml.enter(FHIR_NS, name);
29841      composeCodeSystemElements(element);
29842      composeElementClose(element);
29843      xml.exit(FHIR_NS, name);
29844    }
29845  }
29846
29847  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
29848      composeDomainResourceElements(element);
29849      if (element.hasUrlElement()) {
29850        composeUri("url", element.getUrlElement());
29851      }
29852      if (element.hasIdentifier()) { 
29853        for (Identifier e : element.getIdentifier()) 
29854          composeIdentifier("identifier", e);
29855      }
29856      if (element.hasVersionElement()) {
29857        composeString("version", element.getVersionElement());
29858      }
29859      if (element.hasNameElement()) {
29860        composeString("name", element.getNameElement());
29861      }
29862      if (element.hasTitleElement()) {
29863        composeString("title", element.getTitleElement());
29864      }
29865      if (element.hasStatusElement())
29866        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29867      if (element.hasExperimentalElement()) {
29868        composeBoolean("experimental", element.getExperimentalElement());
29869      }
29870      if (element.hasDateElement()) {
29871        composeDateTime("date", element.getDateElement());
29872      }
29873      if (element.hasPublisherElement()) {
29874        composeString("publisher", element.getPublisherElement());
29875      }
29876      if (element.hasContact()) { 
29877        for (ContactDetail e : element.getContact()) 
29878          composeContactDetail("contact", e);
29879      }
29880      if (element.hasDescriptionElement()) {
29881        composeMarkdown("description", element.getDescriptionElement());
29882      }
29883      if (element.hasUseContext()) { 
29884        for (UsageContext e : element.getUseContext()) 
29885          composeUsageContext("useContext", e);
29886      }
29887      if (element.hasJurisdiction()) { 
29888        for (CodeableConcept e : element.getJurisdiction()) 
29889          composeCodeableConcept("jurisdiction", e);
29890      }
29891      if (element.hasPurposeElement()) {
29892        composeMarkdown("purpose", element.getPurposeElement());
29893      }
29894      if (element.hasCopyrightElement()) {
29895        composeMarkdown("copyright", element.getCopyrightElement());
29896      }
29897      if (element.hasCaseSensitiveElement()) {
29898        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
29899      }
29900      if (element.hasValueSetElement()) {
29901        composeCanonical("valueSet", element.getValueSetElement());
29902      }
29903      if (element.hasHierarchyMeaningElement())
29904        composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
29905      if (element.hasCompositionalElement()) {
29906        composeBoolean("compositional", element.getCompositionalElement());
29907      }
29908      if (element.hasVersionNeededElement()) {
29909        composeBoolean("versionNeeded", element.getVersionNeededElement());
29910      }
29911      if (element.hasContentElement())
29912        composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
29913      if (element.hasSupplementsElement()) {
29914        composeCanonical("supplements", element.getSupplementsElement());
29915      }
29916      if (element.hasCountElement()) {
29917        composeUnsignedInt("count", element.getCountElement());
29918      }
29919      if (element.hasFilter()) { 
29920        for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
29921          composeCodeSystemCodeSystemFilterComponent("filter", e);
29922      }
29923      if (element.hasProperty()) { 
29924        for (CodeSystem.PropertyComponent e : element.getProperty()) 
29925          composeCodeSystemPropertyComponent("property", e);
29926      }
29927      if (element.hasConcept()) { 
29928        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
29929          composeCodeSystemConceptDefinitionComponent("concept", e);
29930      }
29931  }
29932
29933  protected void composeCodeSystemCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
29934    if (element != null) {
29935      composeElementAttributes(element);
29936      xml.enter(FHIR_NS, name);
29937      composeCodeSystemCodeSystemFilterComponentElements(element);
29938      composeElementClose(element);
29939      xml.exit(FHIR_NS, name);
29940    }
29941  }
29942
29943  protected void composeCodeSystemCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
29944      composeBackboneElementElements(element);
29945      if (element.hasCodeElement()) {
29946        composeCode("code", element.getCodeElement());
29947      }
29948      if (element.hasDescriptionElement()) {
29949        composeString("description", element.getDescriptionElement());
29950      }
29951        if (element.hasOperator()) 
29952          for (Enumeration<CodeSystem.FilterOperator> e : element.getOperator()) 
29953            composeEnumeration("operator", e, new CodeSystem.FilterOperatorEnumFactory());
29954      if (element.hasValueElement()) {
29955        composeString("value", element.getValueElement());
29956      }
29957  }
29958
29959  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
29960    if (element != null) {
29961      composeElementAttributes(element);
29962      xml.enter(FHIR_NS, name);
29963      composeCodeSystemPropertyComponentElements(element);
29964      composeElementClose(element);
29965      xml.exit(FHIR_NS, name);
29966    }
29967  }
29968
29969  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
29970      composeBackboneElementElements(element);
29971      if (element.hasCodeElement()) {
29972        composeCode("code", element.getCodeElement());
29973      }
29974      if (element.hasUriElement()) {
29975        composeUri("uri", element.getUriElement());
29976      }
29977      if (element.hasDescriptionElement()) {
29978        composeString("description", element.getDescriptionElement());
29979      }
29980      if (element.hasTypeElement())
29981        composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
29982  }
29983
29984  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
29985    if (element != null) {
29986      composeElementAttributes(element);
29987      xml.enter(FHIR_NS, name);
29988      composeCodeSystemConceptDefinitionComponentElements(element);
29989      composeElementClose(element);
29990      xml.exit(FHIR_NS, name);
29991    }
29992  }
29993
29994  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
29995      composeBackboneElementElements(element);
29996      if (element.hasCodeElement()) {
29997        composeCode("code", element.getCodeElement());
29998      }
29999      if (element.hasDisplayElement()) {
30000        composeString("display", element.getDisplayElement());
30001      }
30002      if (element.hasDefinitionElement()) {
30003        composeString("definition", element.getDefinitionElement());
30004      }
30005      if (element.hasDesignation()) { 
30006        for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
30007          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
30008      }
30009      if (element.hasProperty()) { 
30010        for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
30011          composeCodeSystemConceptPropertyComponent("property", e);
30012      }
30013      if (element.hasConcept()) { 
30014        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
30015          composeCodeSystemConceptDefinitionComponent("concept", e);
30016      }
30017  }
30018
30019  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
30020    if (element != null) {
30021      composeElementAttributes(element);
30022      xml.enter(FHIR_NS, name);
30023      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
30024      composeElementClose(element);
30025      xml.exit(FHIR_NS, name);
30026    }
30027  }
30028
30029  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
30030      composeBackboneElementElements(element);
30031      if (element.hasLanguageElement()) {
30032        composeCode("language", element.getLanguageElement());
30033      }
30034      if (element.hasUse()) {
30035        composeCoding("use", element.getUse());
30036      }
30037      if (element.hasValueElement()) {
30038        composeString("value", element.getValueElement());
30039      }
30040  }
30041
30042  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
30043    if (element != null) {
30044      composeElementAttributes(element);
30045      xml.enter(FHIR_NS, name);
30046      composeCodeSystemConceptPropertyComponentElements(element);
30047      composeElementClose(element);
30048      xml.exit(FHIR_NS, name);
30049    }
30050  }
30051
30052  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
30053      composeBackboneElementElements(element);
30054      if (element.hasCodeElement()) {
30055        composeCode("code", element.getCodeElement());
30056      }
30057      if (element.hasValue()) {
30058        composeType("value", element.getValue());
30059      }  }
30060
30061  protected void composeCommunication(String name, Communication element) throws IOException {
30062    if (element != null) {
30063      composeDomainResourceAttributes(element);
30064      xml.enter(FHIR_NS, name);
30065      composeCommunicationElements(element);
30066      composeElementClose(element);
30067      xml.exit(FHIR_NS, name);
30068    }
30069  }
30070
30071  protected void composeCommunicationElements(Communication element) throws IOException {
30072      composeDomainResourceElements(element);
30073      if (element.hasIdentifier()) { 
30074        for (Identifier e : element.getIdentifier()) 
30075          composeIdentifier("identifier", e);
30076      }
30077      if (element.hasInstantiatesCanonical()) { 
30078        for (CanonicalType e : element.getInstantiatesCanonical()) 
30079          composeCanonical("instantiatesCanonical", e);
30080      }
30081      if (element.hasInstantiatesUri()) { 
30082        for (UriType e : element.getInstantiatesUri()) 
30083          composeUri("instantiatesUri", e);
30084      }
30085      if (element.hasBasedOn()) { 
30086        for (Reference e : element.getBasedOn()) 
30087          composeReference("basedOn", e);
30088      }
30089      if (element.hasPartOf()) { 
30090        for (Reference e : element.getPartOf()) 
30091          composeReference("partOf", e);
30092      }
30093      if (element.hasInResponseTo()) { 
30094        for (Reference e : element.getInResponseTo()) 
30095          composeReference("inResponseTo", e);
30096      }
30097      if (element.hasStatusElement())
30098        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
30099      if (element.hasStatusReason()) {
30100        composeCodeableConcept("statusReason", element.getStatusReason());
30101      }
30102      if (element.hasCategory()) { 
30103        for (CodeableConcept e : element.getCategory()) 
30104          composeCodeableConcept("category", e);
30105      }
30106      if (element.hasPriorityElement())
30107        composeEnumeration("priority", element.getPriorityElement(), new Communication.CommunicationPriorityEnumFactory());
30108      if (element.hasMedium()) { 
30109        for (CodeableConcept e : element.getMedium()) 
30110          composeCodeableConcept("medium", e);
30111      }
30112      if (element.hasSubject()) {
30113        composeReference("subject", element.getSubject());
30114      }
30115      if (element.hasTopic()) {
30116        composeCodeableConcept("topic", element.getTopic());
30117      }
30118      if (element.hasAbout()) { 
30119        for (Reference e : element.getAbout()) 
30120          composeReference("about", e);
30121      }
30122      if (element.hasContext()) {
30123        composeReference("context", element.getContext());
30124      }
30125      if (element.hasSentElement()) {
30126        composeDateTime("sent", element.getSentElement());
30127      }
30128      if (element.hasReceivedElement()) {
30129        composeDateTime("received", element.getReceivedElement());
30130      }
30131      if (element.hasRecipient()) { 
30132        for (Reference e : element.getRecipient()) 
30133          composeReference("recipient", e);
30134      }
30135      if (element.hasSender()) {
30136        composeReference("sender", element.getSender());
30137      }
30138      if (element.hasReasonCode()) { 
30139        for (CodeableConcept e : element.getReasonCode()) 
30140          composeCodeableConcept("reasonCode", e);
30141      }
30142      if (element.hasReasonReference()) { 
30143        for (Reference e : element.getReasonReference()) 
30144          composeReference("reasonReference", e);
30145      }
30146      if (element.hasPayload()) { 
30147        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
30148          composeCommunicationCommunicationPayloadComponent("payload", e);
30149      }
30150      if (element.hasNote()) { 
30151        for (Annotation e : element.getNote()) 
30152          composeAnnotation("note", e);
30153      }
30154  }
30155
30156  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
30157    if (element != null) {
30158      composeElementAttributes(element);
30159      xml.enter(FHIR_NS, name);
30160      composeCommunicationCommunicationPayloadComponentElements(element);
30161      composeElementClose(element);
30162      xml.exit(FHIR_NS, name);
30163    }
30164  }
30165
30166  protected void composeCommunicationCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
30167      composeBackboneElementElements(element);
30168      if (element.hasContent()) {
30169        composeType("content", element.getContent());
30170      }  }
30171
30172  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
30173    if (element != null) {
30174      composeDomainResourceAttributes(element);
30175      xml.enter(FHIR_NS, name);
30176      composeCommunicationRequestElements(element);
30177      composeElementClose(element);
30178      xml.exit(FHIR_NS, name);
30179    }
30180  }
30181
30182  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
30183      composeDomainResourceElements(element);
30184      if (element.hasIdentifier()) { 
30185        for (Identifier e : element.getIdentifier()) 
30186          composeIdentifier("identifier", e);
30187      }
30188      if (element.hasBasedOn()) { 
30189        for (Reference e : element.getBasedOn()) 
30190          composeReference("basedOn", e);
30191      }
30192      if (element.hasReplaces()) { 
30193        for (Reference e : element.getReplaces()) 
30194          composeReference("replaces", e);
30195      }
30196      if (element.hasGroupIdentifier()) {
30197        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
30198      }
30199      if (element.hasStatusElement())
30200        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
30201      if (element.hasStatusReason()) {
30202        composeCodeableConcept("statusReason", element.getStatusReason());
30203      }
30204      if (element.hasCategory()) { 
30205        for (CodeableConcept e : element.getCategory()) 
30206          composeCodeableConcept("category", e);
30207      }
30208      if (element.hasPriorityElement())
30209        composeEnumeration("priority", element.getPriorityElement(), new CommunicationRequest.CommunicationPriorityEnumFactory());
30210      if (element.hasDoNotPerformElement()) {
30211        composeBoolean("doNotPerform", element.getDoNotPerformElement());
30212      }
30213      if (element.hasMedium()) { 
30214        for (CodeableConcept e : element.getMedium()) 
30215          composeCodeableConcept("medium", e);
30216      }
30217      if (element.hasSubject()) {
30218        composeReference("subject", element.getSubject());
30219      }
30220      if (element.hasAbout()) { 
30221        for (Reference e : element.getAbout()) 
30222          composeReference("about", e);
30223      }
30224      if (element.hasContext()) {
30225        composeReference("context", element.getContext());
30226      }
30227      if (element.hasPayload()) { 
30228        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
30229          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
30230      }
30231      if (element.hasOccurrence()) {
30232        composeType("occurrence", element.getOccurrence());
30233      }      if (element.hasAuthoredOnElement()) {
30234        composeDateTime("authoredOn", element.getAuthoredOnElement());
30235      }
30236      if (element.hasRequester()) {
30237        composeReference("requester", element.getRequester());
30238      }
30239      if (element.hasRecipient()) { 
30240        for (Reference e : element.getRecipient()) 
30241          composeReference("recipient", e);
30242      }
30243      if (element.hasSender()) {
30244        composeReference("sender", element.getSender());
30245      }
30246      if (element.hasReasonCode()) { 
30247        for (CodeableConcept e : element.getReasonCode()) 
30248          composeCodeableConcept("reasonCode", e);
30249      }
30250      if (element.hasReasonReference()) { 
30251        for (Reference e : element.getReasonReference()) 
30252          composeReference("reasonReference", e);
30253      }
30254      if (element.hasNote()) { 
30255        for (Annotation e : element.getNote()) 
30256          composeAnnotation("note", e);
30257      }
30258  }
30259
30260  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
30261    if (element != null) {
30262      composeElementAttributes(element);
30263      xml.enter(FHIR_NS, name);
30264      composeCommunicationRequestCommunicationRequestPayloadComponentElements(element);
30265      composeElementClose(element);
30266      xml.exit(FHIR_NS, name);
30267    }
30268  }
30269
30270  protected void composeCommunicationRequestCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
30271      composeBackboneElementElements(element);
30272      if (element.hasContent()) {
30273        composeType("content", element.getContent());
30274      }  }
30275
30276  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
30277    if (element != null) {
30278      composeDomainResourceAttributes(element);
30279      xml.enter(FHIR_NS, name);
30280      composeCompartmentDefinitionElements(element);
30281      composeElementClose(element);
30282      xml.exit(FHIR_NS, name);
30283    }
30284  }
30285
30286  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
30287      composeDomainResourceElements(element);
30288      if (element.hasUrlElement()) {
30289        composeUri("url", element.getUrlElement());
30290      }
30291      if (element.hasVersionElement()) {
30292        composeString("version", element.getVersionElement());
30293      }
30294      if (element.hasNameElement()) {
30295        composeString("name", element.getNameElement());
30296      }
30297      if (element.hasStatusElement())
30298        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30299      if (element.hasExperimentalElement()) {
30300        composeBoolean("experimental", element.getExperimentalElement());
30301      }
30302      if (element.hasDateElement()) {
30303        composeDateTime("date", element.getDateElement());
30304      }
30305      if (element.hasPublisherElement()) {
30306        composeString("publisher", element.getPublisherElement());
30307      }
30308      if (element.hasContact()) { 
30309        for (ContactDetail e : element.getContact()) 
30310          composeContactDetail("contact", e);
30311      }
30312      if (element.hasDescriptionElement()) {
30313        composeMarkdown("description", element.getDescriptionElement());
30314      }
30315      if (element.hasUseContext()) { 
30316        for (UsageContext e : element.getUseContext()) 
30317          composeUsageContext("useContext", e);
30318      }
30319      if (element.hasPurposeElement()) {
30320        composeMarkdown("purpose", element.getPurposeElement());
30321      }
30322      if (element.hasCodeElement())
30323        composeEnumeration("code", element.getCodeElement(), new CompartmentDefinition.CompartmentTypeEnumFactory());
30324      if (element.hasSearchElement()) {
30325        composeBoolean("search", element.getSearchElement());
30326      }
30327      if (element.hasResource()) { 
30328        for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
30329          composeCompartmentDefinitionCompartmentDefinitionResourceComponent("resource", e);
30330      }
30331  }
30332
30333  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
30334    if (element != null) {
30335      composeElementAttributes(element);
30336      xml.enter(FHIR_NS, name);
30337      composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(element);
30338      composeElementClose(element);
30339      xml.exit(FHIR_NS, name);
30340    }
30341  }
30342
30343  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
30344      composeBackboneElementElements(element);
30345      if (element.hasCodeElement()) {
30346        composeCode("code", element.getCodeElement());
30347      }
30348      if (element.hasParam()) { 
30349        for (StringType e : element.getParam()) 
30350          composeString("param", e);
30351      }
30352      if (element.hasDocumentationElement()) {
30353        composeString("documentation", element.getDocumentationElement());
30354      }
30355  }
30356
30357  protected void composeComposition(String name, Composition element) throws IOException {
30358    if (element != null) {
30359      composeDomainResourceAttributes(element);
30360      xml.enter(FHIR_NS, name);
30361      composeCompositionElements(element);
30362      composeElementClose(element);
30363      xml.exit(FHIR_NS, name);
30364    }
30365  }
30366
30367  protected void composeCompositionElements(Composition element) throws IOException {
30368      composeDomainResourceElements(element);
30369      if (element.hasIdentifier()) {
30370        composeIdentifier("identifier", element.getIdentifier());
30371      }
30372      if (element.hasStatusElement())
30373        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
30374      if (element.hasType()) {
30375        composeCodeableConcept("type", element.getType());
30376      }
30377      if (element.hasCategory()) { 
30378        for (CodeableConcept e : element.getCategory()) 
30379          composeCodeableConcept("category", e);
30380      }
30381      if (element.hasSubject()) {
30382        composeReference("subject", element.getSubject());
30383      }
30384      if (element.hasEncounter()) {
30385        composeReference("encounter", element.getEncounter());
30386      }
30387      if (element.hasDateElement()) {
30388        composeDateTime("date", element.getDateElement());
30389      }
30390      if (element.hasAuthor()) { 
30391        for (Reference e : element.getAuthor()) 
30392          composeReference("author", e);
30393      }
30394      if (element.hasTitleElement()) {
30395        composeString("title", element.getTitleElement());
30396      }
30397      if (element.hasConfidentialityElement())
30398        composeEnumeration("confidentiality", element.getConfidentialityElement(), new Composition.DocumentConfidentialityEnumFactory());
30399      if (element.hasAttester()) { 
30400        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
30401          composeCompositionCompositionAttesterComponent("attester", e);
30402      }
30403      if (element.hasCustodian()) {
30404        composeReference("custodian", element.getCustodian());
30405      }
30406      if (element.hasRelatesTo()) { 
30407        for (Composition.CompositionRelatesToComponent e : element.getRelatesTo()) 
30408          composeCompositionCompositionRelatesToComponent("relatesTo", e);
30409      }
30410      if (element.hasEvent()) { 
30411        for (Composition.CompositionEventComponent e : element.getEvent()) 
30412          composeCompositionCompositionEventComponent("event", e);
30413      }
30414      if (element.hasSection()) { 
30415        for (Composition.SectionComponent e : element.getSection()) 
30416          composeCompositionSectionComponent("section", e);
30417      }
30418  }
30419
30420  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
30421    if (element != null) {
30422      composeElementAttributes(element);
30423      xml.enter(FHIR_NS, name);
30424      composeCompositionCompositionAttesterComponentElements(element);
30425      composeElementClose(element);
30426      xml.exit(FHIR_NS, name);
30427    }
30428  }
30429
30430  protected void composeCompositionCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
30431      composeBackboneElementElements(element);
30432      if (element.hasModeElement())
30433        composeEnumeration("mode", element.getModeElement(), new Composition.CompositionAttestationModeEnumFactory());
30434      if (element.hasTimeElement()) {
30435        composeDateTime("time", element.getTimeElement());
30436      }
30437      if (element.hasParty()) {
30438        composeReference("party", element.getParty());
30439      }
30440  }
30441
30442  protected void composeCompositionCompositionRelatesToComponent(String name, Composition.CompositionRelatesToComponent element) throws IOException {
30443    if (element != null) {
30444      composeElementAttributes(element);
30445      xml.enter(FHIR_NS, name);
30446      composeCompositionCompositionRelatesToComponentElements(element);
30447      composeElementClose(element);
30448      xml.exit(FHIR_NS, name);
30449    }
30450  }
30451
30452  protected void composeCompositionCompositionRelatesToComponentElements(Composition.CompositionRelatesToComponent element) throws IOException {
30453      composeBackboneElementElements(element);
30454      if (element.hasCodeElement())
30455        composeEnumeration("code", element.getCodeElement(), new Composition.DocumentRelationshipTypeEnumFactory());
30456      if (element.hasTarget()) {
30457        composeType("target", element.getTarget());
30458      }  }
30459
30460  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
30461    if (element != null) {
30462      composeElementAttributes(element);
30463      xml.enter(FHIR_NS, name);
30464      composeCompositionCompositionEventComponentElements(element);
30465      composeElementClose(element);
30466      xml.exit(FHIR_NS, name);
30467    }
30468  }
30469
30470  protected void composeCompositionCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
30471      composeBackboneElementElements(element);
30472      if (element.hasCode()) { 
30473        for (CodeableConcept e : element.getCode()) 
30474          composeCodeableConcept("code", e);
30475      }
30476      if (element.hasPeriod()) {
30477        composePeriod("period", element.getPeriod());
30478      }
30479      if (element.hasDetail()) { 
30480        for (Reference e : element.getDetail()) 
30481          composeReference("detail", e);
30482      }
30483  }
30484
30485  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
30486    if (element != null) {
30487      composeElementAttributes(element);
30488      xml.enter(FHIR_NS, name);
30489      composeCompositionSectionComponentElements(element);
30490      composeElementClose(element);
30491      xml.exit(FHIR_NS, name);
30492    }
30493  }
30494
30495  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
30496      composeBackboneElementElements(element);
30497      if (element.hasTitleElement()) {
30498        composeString("title", element.getTitleElement());
30499      }
30500      if (element.hasCode()) {
30501        composeCodeableConcept("code", element.getCode());
30502      }
30503      if (element.hasAuthor()) { 
30504        for (Reference e : element.getAuthor()) 
30505          composeReference("author", e);
30506      }
30507      if (element.hasText()) {
30508        composeNarrative("text", element.getText());
30509      }
30510      if (element.hasModeElement())
30511        composeEnumeration("mode", element.getModeElement(), new Composition.SectionModeEnumFactory());
30512      if (element.hasOrderedBy()) {
30513        composeCodeableConcept("orderedBy", element.getOrderedBy());
30514      }
30515      if (element.hasEntry()) { 
30516        for (Reference e : element.getEntry()) 
30517          composeReference("entry", e);
30518      }
30519      if (element.hasEmptyReason()) {
30520        composeCodeableConcept("emptyReason", element.getEmptyReason());
30521      }
30522      if (element.hasSection()) { 
30523        for (Composition.SectionComponent e : element.getSection()) 
30524          composeCompositionSectionComponent("section", e);
30525      }
30526  }
30527
30528  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
30529    if (element != null) {
30530      composeDomainResourceAttributes(element);
30531      xml.enter(FHIR_NS, name);
30532      composeConceptMapElements(element);
30533      composeElementClose(element);
30534      xml.exit(FHIR_NS, name);
30535    }
30536  }
30537
30538  protected void composeConceptMapElements(ConceptMap element) throws IOException {
30539      composeDomainResourceElements(element);
30540      if (element.hasUrlElement()) {
30541        composeUri("url", element.getUrlElement());
30542      }
30543      if (element.hasIdentifier()) {
30544        composeIdentifier("identifier", element.getIdentifier());
30545      }
30546      if (element.hasVersionElement()) {
30547        composeString("version", element.getVersionElement());
30548      }
30549      if (element.hasNameElement()) {
30550        composeString("name", element.getNameElement());
30551      }
30552      if (element.hasTitleElement()) {
30553        composeString("title", element.getTitleElement());
30554      }
30555      if (element.hasStatusElement())
30556        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30557      if (element.hasExperimentalElement()) {
30558        composeBoolean("experimental", element.getExperimentalElement());
30559      }
30560      if (element.hasDateElement()) {
30561        composeDateTime("date", element.getDateElement());
30562      }
30563      if (element.hasPublisherElement()) {
30564        composeString("publisher", element.getPublisherElement());
30565      }
30566      if (element.hasContact()) { 
30567        for (ContactDetail e : element.getContact()) 
30568          composeContactDetail("contact", e);
30569      }
30570      if (element.hasDescriptionElement()) {
30571        composeMarkdown("description", element.getDescriptionElement());
30572      }
30573      if (element.hasUseContext()) { 
30574        for (UsageContext e : element.getUseContext()) 
30575          composeUsageContext("useContext", e);
30576      }
30577      if (element.hasJurisdiction()) { 
30578        for (CodeableConcept e : element.getJurisdiction()) 
30579          composeCodeableConcept("jurisdiction", e);
30580      }
30581      if (element.hasPurposeElement()) {
30582        composeMarkdown("purpose", element.getPurposeElement());
30583      }
30584      if (element.hasCopyrightElement()) {
30585        composeMarkdown("copyright", element.getCopyrightElement());
30586      }
30587      if (element.hasSource()) {
30588        composeType("source", element.getSource());
30589      }      if (element.hasTarget()) {
30590        composeType("target", element.getTarget());
30591      }      if (element.hasGroup()) { 
30592        for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
30593          composeConceptMapConceptMapGroupComponent("group", e);
30594      }
30595  }
30596
30597  protected void composeConceptMapConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
30598    if (element != null) {
30599      composeElementAttributes(element);
30600      xml.enter(FHIR_NS, name);
30601      composeConceptMapConceptMapGroupComponentElements(element);
30602      composeElementClose(element);
30603      xml.exit(FHIR_NS, name);
30604    }
30605  }
30606
30607  protected void composeConceptMapConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
30608      composeBackboneElementElements(element);
30609      if (element.hasSourceElement()) {
30610        composeUri("source", element.getSourceElement());
30611      }
30612      if (element.hasSourceVersionElement()) {
30613        composeString("sourceVersion", element.getSourceVersionElement());
30614      }
30615      if (element.hasTargetElement()) {
30616        composeUri("target", element.getTargetElement());
30617      }
30618      if (element.hasTargetVersionElement()) {
30619        composeString("targetVersion", element.getTargetVersionElement());
30620      }
30621      if (element.hasElement()) { 
30622        for (ConceptMap.SourceElementComponent e : element.getElement()) 
30623          composeConceptMapSourceElementComponent("element", e);
30624      }
30625      if (element.hasUnmapped()) {
30626        composeConceptMapConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
30627      }
30628  }
30629
30630  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
30631    if (element != null) {
30632      composeElementAttributes(element);
30633      xml.enter(FHIR_NS, name);
30634      composeConceptMapSourceElementComponentElements(element);
30635      composeElementClose(element);
30636      xml.exit(FHIR_NS, name);
30637    }
30638  }
30639
30640  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
30641      composeBackboneElementElements(element);
30642      if (element.hasCodeElement()) {
30643        composeCode("code", element.getCodeElement());
30644      }
30645      if (element.hasDisplayElement()) {
30646        composeString("display", element.getDisplayElement());
30647      }
30648      if (element.hasTarget()) { 
30649        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
30650          composeConceptMapTargetElementComponent("target", e);
30651      }
30652  }
30653
30654  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
30655    if (element != null) {
30656      composeElementAttributes(element);
30657      xml.enter(FHIR_NS, name);
30658      composeConceptMapTargetElementComponentElements(element);
30659      composeElementClose(element);
30660      xml.exit(FHIR_NS, name);
30661    }
30662  }
30663
30664  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
30665      composeBackboneElementElements(element);
30666      if (element.hasCodeElement()) {
30667        composeCode("code", element.getCodeElement());
30668      }
30669      if (element.hasDisplayElement()) {
30670        composeString("display", element.getDisplayElement());
30671      }
30672      if (element.hasEquivalenceElement())
30673        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
30674      if (element.hasCommentElement()) {
30675        composeString("comment", element.getCommentElement());
30676      }
30677      if (element.hasDependsOn()) { 
30678        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
30679          composeConceptMapOtherElementComponent("dependsOn", e);
30680      }
30681      if (element.hasProduct()) { 
30682        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
30683          composeConceptMapOtherElementComponent("product", e);
30684      }
30685  }
30686
30687  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
30688    if (element != null) {
30689      composeElementAttributes(element);
30690      xml.enter(FHIR_NS, name);
30691      composeConceptMapOtherElementComponentElements(element);
30692      composeElementClose(element);
30693      xml.exit(FHIR_NS, name);
30694    }
30695  }
30696
30697  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
30698      composeBackboneElementElements(element);
30699      if (element.hasPropertyElement()) {
30700        composeUri("property", element.getPropertyElement());
30701      }
30702      if (element.hasSystemElement()) {
30703        composeCanonical("system", element.getSystemElement());
30704      }
30705      if (element.hasValueElement()) {
30706        composeString("value", element.getValueElement());
30707      }
30708      if (element.hasDisplayElement()) {
30709        composeString("display", element.getDisplayElement());
30710      }
30711  }
30712
30713  protected void composeConceptMapConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
30714    if (element != null) {
30715      composeElementAttributes(element);
30716      xml.enter(FHIR_NS, name);
30717      composeConceptMapConceptMapGroupUnmappedComponentElements(element);
30718      composeElementClose(element);
30719      xml.exit(FHIR_NS, name);
30720    }
30721  }
30722
30723  protected void composeConceptMapConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
30724      composeBackboneElementElements(element);
30725      if (element.hasModeElement())
30726        composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
30727      if (element.hasCodeElement()) {
30728        composeCode("code", element.getCodeElement());
30729      }
30730      if (element.hasDisplayElement()) {
30731        composeString("display", element.getDisplayElement());
30732      }
30733      if (element.hasUrlElement()) {
30734        composeCanonical("url", element.getUrlElement());
30735      }
30736  }
30737
30738  protected void composeCondition(String name, Condition element) throws IOException {
30739    if (element != null) {
30740      composeDomainResourceAttributes(element);
30741      xml.enter(FHIR_NS, name);
30742      composeConditionElements(element);
30743      composeElementClose(element);
30744      xml.exit(FHIR_NS, name);
30745    }
30746  }
30747
30748  protected void composeConditionElements(Condition element) throws IOException {
30749      composeDomainResourceElements(element);
30750      if (element.hasIdentifier()) { 
30751        for (Identifier e : element.getIdentifier()) 
30752          composeIdentifier("identifier", e);
30753      }
30754      if (element.hasClinicalStatus()) {
30755        composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
30756      }
30757      if (element.hasVerificationStatus()) {
30758        composeCodeableConcept("verificationStatus", element.getVerificationStatus());
30759      }
30760      if (element.hasCategory()) { 
30761        for (CodeableConcept e : element.getCategory()) 
30762          composeCodeableConcept("category", e);
30763      }
30764      if (element.hasSeverity()) {
30765        composeCodeableConcept("severity", element.getSeverity());
30766      }
30767      if (element.hasCode()) {
30768        composeCodeableConcept("code", element.getCode());
30769      }
30770      if (element.hasBodySite()) { 
30771        for (CodeableConcept e : element.getBodySite()) 
30772          composeCodeableConcept("bodySite", e);
30773      }
30774      if (element.hasSubject()) {
30775        composeReference("subject", element.getSubject());
30776      }
30777      if (element.hasContext()) {
30778        composeReference("context", element.getContext());
30779      }
30780      if (element.hasOnset()) {
30781        composeType("onset", element.getOnset());
30782      }      if (element.hasAbatement()) {
30783        composeType("abatement", element.getAbatement());
30784      }      if (element.hasRecordedDateElement()) {
30785        composeDateTime("recordedDate", element.getRecordedDateElement());
30786      }
30787      if (element.hasRecorder()) {
30788        composeReference("recorder", element.getRecorder());
30789      }
30790      if (element.hasAsserter()) {
30791        composeReference("asserter", element.getAsserter());
30792      }
30793      if (element.hasStage()) { 
30794        for (Condition.ConditionStageComponent e : element.getStage()) 
30795          composeConditionConditionStageComponent("stage", e);
30796      }
30797      if (element.hasEvidence()) { 
30798        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
30799          composeConditionConditionEvidenceComponent("evidence", e);
30800      }
30801      if (element.hasNote()) { 
30802        for (Annotation e : element.getNote()) 
30803          composeAnnotation("note", e);
30804      }
30805  }
30806
30807  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
30808    if (element != null) {
30809      composeElementAttributes(element);
30810      xml.enter(FHIR_NS, name);
30811      composeConditionConditionStageComponentElements(element);
30812      composeElementClose(element);
30813      xml.exit(FHIR_NS, name);
30814    }
30815  }
30816
30817  protected void composeConditionConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
30818      composeBackboneElementElements(element);
30819      if (element.hasSummary()) {
30820        composeCodeableConcept("summary", element.getSummary());
30821      }
30822      if (element.hasAssessment()) { 
30823        for (Reference e : element.getAssessment()) 
30824          composeReference("assessment", e);
30825      }
30826      if (element.hasType()) {
30827        composeCodeableConcept("type", element.getType());
30828      }
30829  }
30830
30831  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
30832    if (element != null) {
30833      composeElementAttributes(element);
30834      xml.enter(FHIR_NS, name);
30835      composeConditionConditionEvidenceComponentElements(element);
30836      composeElementClose(element);
30837      xml.exit(FHIR_NS, name);
30838    }
30839  }
30840
30841  protected void composeConditionConditionEvidenceComponentElements(Condition.ConditionEvidenceComponent element) throws IOException {
30842      composeBackboneElementElements(element);
30843      if (element.hasCode()) { 
30844        for (CodeableConcept e : element.getCode()) 
30845          composeCodeableConcept("code", e);
30846      }
30847      if (element.hasDetail()) { 
30848        for (Reference e : element.getDetail()) 
30849          composeReference("detail", e);
30850      }
30851  }
30852
30853  protected void composeConsent(String name, Consent element) throws IOException {
30854    if (element != null) {
30855      composeDomainResourceAttributes(element);
30856      xml.enter(FHIR_NS, name);
30857      composeConsentElements(element);
30858      composeElementClose(element);
30859      xml.exit(FHIR_NS, name);
30860    }
30861  }
30862
30863  protected void composeConsentElements(Consent element) throws IOException {
30864      composeDomainResourceElements(element);
30865      if (element.hasIdentifier()) { 
30866        for (Identifier e : element.getIdentifier()) 
30867          composeIdentifier("identifier", e);
30868      }
30869      if (element.hasStatusElement())
30870        composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
30871      if (element.hasScope()) {
30872        composeCodeableConcept("scope", element.getScope());
30873      }
30874      if (element.hasCategory()) { 
30875        for (CodeableConcept e : element.getCategory()) 
30876          composeCodeableConcept("category", e);
30877      }
30878      if (element.hasPatient()) {
30879        composeReference("patient", element.getPatient());
30880      }
30881      if (element.hasDateTimeElement()) {
30882        composeDateTime("dateTime", element.getDateTimeElement());
30883      }
30884      if (element.hasPerformer()) { 
30885        for (Reference e : element.getPerformer()) 
30886          composeReference("performer", e);
30887      }
30888      if (element.hasOrganization()) { 
30889        for (Reference e : element.getOrganization()) 
30890          composeReference("organization", e);
30891      }
30892      if (element.hasSource()) {
30893        composeType("source", element.getSource());
30894      }      if (element.hasPolicy()) { 
30895        for (Consent.ConsentPolicyComponent e : element.getPolicy()) 
30896          composeConsentConsentPolicyComponent("policy", e);
30897      }
30898      if (element.hasPolicyRule()) {
30899        composeCodeableConcept("policyRule", element.getPolicyRule());
30900      }
30901      if (element.hasVerification()) { 
30902        for (Consent.ConsentVerificationComponent e : element.getVerification()) 
30903          composeConsentConsentVerificationComponent("verification", e);
30904      }
30905      if (element.hasProvision()) {
30906        composeConsentprovisionComponent("provision", element.getProvision());
30907      }
30908  }
30909
30910  protected void composeConsentConsentPolicyComponent(String name, Consent.ConsentPolicyComponent element) throws IOException {
30911    if (element != null) {
30912      composeElementAttributes(element);
30913      xml.enter(FHIR_NS, name);
30914      composeConsentConsentPolicyComponentElements(element);
30915      composeElementClose(element);
30916      xml.exit(FHIR_NS, name);
30917    }
30918  }
30919
30920  protected void composeConsentConsentPolicyComponentElements(Consent.ConsentPolicyComponent element) throws IOException {
30921      composeBackboneElementElements(element);
30922      if (element.hasAuthorityElement()) {
30923        composeUri("authority", element.getAuthorityElement());
30924      }
30925      if (element.hasUriElement()) {
30926        composeUri("uri", element.getUriElement());
30927      }
30928  }
30929
30930  protected void composeConsentConsentVerificationComponent(String name, Consent.ConsentVerificationComponent element) throws IOException {
30931    if (element != null) {
30932      composeElementAttributes(element);
30933      xml.enter(FHIR_NS, name);
30934      composeConsentConsentVerificationComponentElements(element);
30935      composeElementClose(element);
30936      xml.exit(FHIR_NS, name);
30937    }
30938  }
30939
30940  protected void composeConsentConsentVerificationComponentElements(Consent.ConsentVerificationComponent element) throws IOException {
30941      composeBackboneElementElements(element);
30942      if (element.hasVerifiedElement()) {
30943        composeBoolean("verified", element.getVerifiedElement());
30944      }
30945      if (element.hasVerifiedWith()) {
30946        composeReference("verifiedWith", element.getVerifiedWith());
30947      }
30948      if (element.hasVerificationDateElement()) {
30949        composeDateTime("verificationDate", element.getVerificationDateElement());
30950      }
30951  }
30952
30953  protected void composeConsentprovisionComponent(String name, Consent.provisionComponent element) throws IOException {
30954    if (element != null) {
30955      composeElementAttributes(element);
30956      xml.enter(FHIR_NS, name);
30957      composeConsentprovisionComponentElements(element);
30958      composeElementClose(element);
30959      xml.exit(FHIR_NS, name);
30960    }
30961  }
30962
30963  protected void composeConsentprovisionComponentElements(Consent.provisionComponent element) throws IOException {
30964      composeBackboneElementElements(element);
30965      if (element.hasTypeElement())
30966        composeEnumeration("type", element.getTypeElement(), new Consent.ConsentProvisionTypeEnumFactory());
30967      if (element.hasPeriod()) {
30968        composePeriod("period", element.getPeriod());
30969      }
30970      if (element.hasActor()) { 
30971        for (Consent.provisionActorComponent e : element.getActor()) 
30972          composeConsentprovisionActorComponent("actor", e);
30973      }
30974      if (element.hasAction()) { 
30975        for (CodeableConcept e : element.getAction()) 
30976          composeCodeableConcept("action", e);
30977      }
30978      if (element.hasSecurityLabel()) { 
30979        for (Coding e : element.getSecurityLabel()) 
30980          composeCoding("securityLabel", e);
30981      }
30982      if (element.hasPurpose()) { 
30983        for (Coding e : element.getPurpose()) 
30984          composeCoding("purpose", e);
30985      }
30986      if (element.hasClass_()) { 
30987        for (Coding e : element.getClass_()) 
30988          composeCoding("class", e);
30989      }
30990      if (element.hasCode()) { 
30991        for (CodeableConcept e : element.getCode()) 
30992          composeCodeableConcept("code", e);
30993      }
30994      if (element.hasDataPeriod()) {
30995        composePeriod("dataPeriod", element.getDataPeriod());
30996      }
30997      if (element.hasData()) { 
30998        for (Consent.provisionDataComponent e : element.getData()) 
30999          composeConsentprovisionDataComponent("data", e);
31000      }
31001      if (element.hasProvision()) { 
31002        for (Consent.provisionComponent e : element.getProvision()) 
31003          composeConsentprovisionComponent("provision", e);
31004      }
31005  }
31006
31007  protected void composeConsentprovisionActorComponent(String name, Consent.provisionActorComponent element) throws IOException {
31008    if (element != null) {
31009      composeElementAttributes(element);
31010      xml.enter(FHIR_NS, name);
31011      composeConsentprovisionActorComponentElements(element);
31012      composeElementClose(element);
31013      xml.exit(FHIR_NS, name);
31014    }
31015  }
31016
31017  protected void composeConsentprovisionActorComponentElements(Consent.provisionActorComponent element) throws IOException {
31018      composeBackboneElementElements(element);
31019      if (element.hasRole()) {
31020        composeCodeableConcept("role", element.getRole());
31021      }
31022      if (element.hasReference()) {
31023        composeReference("reference", element.getReference());
31024      }
31025  }
31026
31027  protected void composeConsentprovisionDataComponent(String name, Consent.provisionDataComponent element) throws IOException {
31028    if (element != null) {
31029      composeElementAttributes(element);
31030      xml.enter(FHIR_NS, name);
31031      composeConsentprovisionDataComponentElements(element);
31032      composeElementClose(element);
31033      xml.exit(FHIR_NS, name);
31034    }
31035  }
31036
31037  protected void composeConsentprovisionDataComponentElements(Consent.provisionDataComponent element) throws IOException {
31038      composeBackboneElementElements(element);
31039      if (element.hasMeaningElement())
31040        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
31041      if (element.hasReference()) {
31042        composeReference("reference", element.getReference());
31043      }
31044  }
31045
31046  protected void composeContract(String name, Contract element) throws IOException {
31047    if (element != null) {
31048      composeDomainResourceAttributes(element);
31049      xml.enter(FHIR_NS, name);
31050      composeContractElements(element);
31051      composeElementClose(element);
31052      xml.exit(FHIR_NS, name);
31053    }
31054  }
31055
31056  protected void composeContractElements(Contract element) throws IOException {
31057      composeDomainResourceElements(element);
31058      if (element.hasIdentifier()) { 
31059        for (Identifier e : element.getIdentifier()) 
31060          composeIdentifier("identifier", e);
31061      }
31062      if (element.hasUrlElement()) {
31063        composeUri("url", element.getUrlElement());
31064      }
31065      if (element.hasVersionElement()) {
31066        composeString("version", element.getVersionElement());
31067      }
31068      if (element.hasStatusElement())
31069        composeEnumeration("status", element.getStatusElement(), new Contract.ContractStatusEnumFactory());
31070      if (element.hasLegalState()) {
31071        composeCodeableConcept("legalState", element.getLegalState());
31072      }
31073      if (element.hasInstantiatesCanonical()) {
31074        composeReference("instantiatesCanonical", element.getInstantiatesCanonical());
31075      }
31076      if (element.hasInstantiatesUriElement()) {
31077        composeUri("instantiatesUri", element.getInstantiatesUriElement());
31078      }
31079      if (element.hasContentDerivative()) {
31080        composeCodeableConcept("contentDerivative", element.getContentDerivative());
31081      }
31082      if (element.hasIssuedElement()) {
31083        composeDateTime("issued", element.getIssuedElement());
31084      }
31085      if (element.hasApplies()) {
31086        composePeriod("applies", element.getApplies());
31087      }
31088      if (element.hasExpirationType()) {
31089        composeCodeableConcept("expirationType", element.getExpirationType());
31090      }
31091      if (element.hasSubject()) { 
31092        for (Reference e : element.getSubject()) 
31093          composeReference("subject", e);
31094      }
31095      if (element.hasAuthority()) { 
31096        for (Reference e : element.getAuthority()) 
31097          composeReference("authority", e);
31098      }
31099      if (element.hasDomain()) { 
31100        for (Reference e : element.getDomain()) 
31101          composeReference("domain", e);
31102      }
31103      if (element.hasSite()) { 
31104        for (Reference e : element.getSite()) 
31105          composeReference("site", e);
31106      }
31107      if (element.hasNameElement()) {
31108        composeString("name", element.getNameElement());
31109      }
31110      if (element.hasTitleElement()) {
31111        composeString("title", element.getTitleElement());
31112      }
31113      if (element.hasSubtitleElement()) {
31114        composeString("subtitle", element.getSubtitleElement());
31115      }
31116      if (element.hasAlias()) { 
31117        for (StringType e : element.getAlias()) 
31118          composeString("alias", e);
31119      }
31120      if (element.hasAuthor()) {
31121        composeReference("author", element.getAuthor());
31122      }
31123      if (element.hasScope()) {
31124        composeCodeableConcept("scope", element.getScope());
31125      }
31126      if (element.hasTopic()) {
31127        composeType("topic", element.getTopic());
31128      }      if (element.hasType()) {
31129        composeCodeableConcept("type", element.getType());
31130      }
31131      if (element.hasSubType()) { 
31132        for (CodeableConcept e : element.getSubType()) 
31133          composeCodeableConcept("subType", e);
31134      }
31135      if (element.hasContentDefinition()) {
31136        composeContractContentDefinitionComponent("contentDefinition", element.getContentDefinition());
31137      }
31138      if (element.hasTerm()) { 
31139        for (Contract.TermComponent e : element.getTerm()) 
31140          composeContractTermComponent("term", e);
31141      }
31142      if (element.hasSupportingInfo()) { 
31143        for (Reference e : element.getSupportingInfo()) 
31144          composeReference("supportingInfo", e);
31145      }
31146      if (element.hasRelevantHistory()) { 
31147        for (Reference e : element.getRelevantHistory()) 
31148          composeReference("relevantHistory", e);
31149      }
31150      if (element.hasSigner()) { 
31151        for (Contract.SignatoryComponent e : element.getSigner()) 
31152          composeContractSignatoryComponent("signer", e);
31153      }
31154      if (element.hasFriendly()) { 
31155        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
31156          composeContractFriendlyLanguageComponent("friendly", e);
31157      }
31158      if (element.hasLegal()) { 
31159        for (Contract.LegalLanguageComponent e : element.getLegal()) 
31160          composeContractLegalLanguageComponent("legal", e);
31161      }
31162      if (element.hasRule()) { 
31163        for (Contract.ComputableLanguageComponent e : element.getRule()) 
31164          composeContractComputableLanguageComponent("rule", e);
31165      }
31166      if (element.hasLegallyBinding()) {
31167        composeType("legallyBinding", element.getLegallyBinding());
31168      }  }
31169
31170  protected void composeContractContentDefinitionComponent(String name, Contract.ContentDefinitionComponent element) throws IOException {
31171    if (element != null) {
31172      composeElementAttributes(element);
31173      xml.enter(FHIR_NS, name);
31174      composeContractContentDefinitionComponentElements(element);
31175      composeElementClose(element);
31176      xml.exit(FHIR_NS, name);
31177    }
31178  }
31179
31180  protected void composeContractContentDefinitionComponentElements(Contract.ContentDefinitionComponent element) throws IOException {
31181      composeBackboneElementElements(element);
31182      if (element.hasType()) {
31183        composeCodeableConcept("type", element.getType());
31184      }
31185      if (element.hasSubType()) {
31186        composeCodeableConcept("subType", element.getSubType());
31187      }
31188      if (element.hasPublisher()) {
31189        composeReference("publisher", element.getPublisher());
31190      }
31191      if (element.hasPublicationDateElement()) {
31192        composeDateTime("publicationDate", element.getPublicationDateElement());
31193      }
31194      if (element.hasPublicationStatusElement())
31195        composeEnumeration("publicationStatus", element.getPublicationStatusElement(), new Contract.ContractPublicationStatusEnumFactory());
31196      if (element.hasCopyrightElement()) {
31197        composeMarkdown("copyright", element.getCopyrightElement());
31198      }
31199  }
31200
31201  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
31202    if (element != null) {
31203      composeElementAttributes(element);
31204      xml.enter(FHIR_NS, name);
31205      composeContractTermComponentElements(element);
31206      composeElementClose(element);
31207      xml.exit(FHIR_NS, name);
31208    }
31209  }
31210
31211  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
31212      composeBackboneElementElements(element);
31213      if (element.hasIdentifier()) {
31214        composeIdentifier("identifier", element.getIdentifier());
31215      }
31216      if (element.hasIssuedElement()) {
31217        composeDateTime("issued", element.getIssuedElement());
31218      }
31219      if (element.hasApplies()) {
31220        composePeriod("applies", element.getApplies());
31221      }
31222      if (element.hasTopic()) {
31223        composeType("topic", element.getTopic());
31224      }      if (element.hasType()) {
31225        composeCodeableConcept("type", element.getType());
31226      }
31227      if (element.hasSubType()) {
31228        composeCodeableConcept("subType", element.getSubType());
31229      }
31230      if (element.hasTextElement()) {
31231        composeString("text", element.getTextElement());
31232      }
31233      if (element.hasSecurityLabel()) { 
31234        for (Contract.SecurityLabelComponent e : element.getSecurityLabel()) 
31235          composeContractSecurityLabelComponent("securityLabel", e);
31236      }
31237      if (element.hasOffer()) {
31238        composeContractContractOfferComponent("offer", element.getOffer());
31239      }
31240      if (element.hasAsset()) { 
31241        for (Contract.ContractAssetComponent e : element.getAsset()) 
31242          composeContractContractAssetComponent("asset", e);
31243      }
31244      if (element.hasAction()) { 
31245        for (Contract.ActionComponent e : element.getAction()) 
31246          composeContractActionComponent("action", e);
31247      }
31248      if (element.hasGroup()) { 
31249        for (Contract.TermComponent e : element.getGroup()) 
31250          composeContractTermComponent("group", e);
31251      }
31252  }
31253
31254  protected void composeContractSecurityLabelComponent(String name, Contract.SecurityLabelComponent element) throws IOException {
31255    if (element != null) {
31256      composeElementAttributes(element);
31257      xml.enter(FHIR_NS, name);
31258      composeContractSecurityLabelComponentElements(element);
31259      composeElementClose(element);
31260      xml.exit(FHIR_NS, name);
31261    }
31262  }
31263
31264  protected void composeContractSecurityLabelComponentElements(Contract.SecurityLabelComponent element) throws IOException {
31265      composeBackboneElementElements(element);
31266      if (element.hasNumber()) { 
31267        for (UnsignedIntType e : element.getNumber()) 
31268          composeUnsignedInt("number", e);
31269      }
31270      if (element.hasClassification()) {
31271        composeCoding("classification", element.getClassification());
31272      }
31273      if (element.hasCategory()) { 
31274        for (Coding e : element.getCategory()) 
31275          composeCoding("category", e);
31276      }
31277      if (element.hasControl()) { 
31278        for (Coding e : element.getControl()) 
31279          composeCoding("control", e);
31280      }
31281  }
31282
31283  protected void composeContractContractOfferComponent(String name, Contract.ContractOfferComponent element) throws IOException {
31284    if (element != null) {
31285      composeElementAttributes(element);
31286      xml.enter(FHIR_NS, name);
31287      composeContractContractOfferComponentElements(element);
31288      composeElementClose(element);
31289      xml.exit(FHIR_NS, name);
31290    }
31291  }
31292
31293  protected void composeContractContractOfferComponentElements(Contract.ContractOfferComponent element) throws IOException {
31294      composeBackboneElementElements(element);
31295      if (element.hasIdentifier()) { 
31296        for (Identifier e : element.getIdentifier()) 
31297          composeIdentifier("identifier", e);
31298      }
31299      if (element.hasParty()) { 
31300        for (Contract.ContractPartyComponent e : element.getParty()) 
31301          composeContractContractPartyComponent("party", e);
31302      }
31303      if (element.hasTopic()) {
31304        composeReference("topic", element.getTopic());
31305      }
31306      if (element.hasType()) {
31307        composeCodeableConcept("type", element.getType());
31308      }
31309      if (element.hasDecision()) {
31310        composeCodeableConcept("decision", element.getDecision());
31311      }
31312      if (element.hasDecisionMode()) { 
31313        for (CodeableConcept e : element.getDecisionMode()) 
31314          composeCodeableConcept("decisionMode", e);
31315      }
31316      if (element.hasAnswer()) { 
31317        for (Contract.AnswerComponent e : element.getAnswer()) 
31318          composeContractAnswerComponent("answer", e);
31319      }
31320      if (element.hasTextElement()) {
31321        composeString("text", element.getTextElement());
31322      }
31323      if (element.hasLinkId()) { 
31324        for (StringType e : element.getLinkId()) 
31325          composeString("linkId", e);
31326      }
31327      if (element.hasSecurityLabelNumber()) { 
31328        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
31329          composeUnsignedInt("securityLabelNumber", e);
31330      }
31331  }
31332
31333  protected void composeContractContractPartyComponent(String name, Contract.ContractPartyComponent element) throws IOException {
31334    if (element != null) {
31335      composeElementAttributes(element);
31336      xml.enter(FHIR_NS, name);
31337      composeContractContractPartyComponentElements(element);
31338      composeElementClose(element);
31339      xml.exit(FHIR_NS, name);
31340    }
31341  }
31342
31343  protected void composeContractContractPartyComponentElements(Contract.ContractPartyComponent element) throws IOException {
31344      composeBackboneElementElements(element);
31345      if (element.hasReference()) { 
31346        for (Reference e : element.getReference()) 
31347          composeReference("reference", e);
31348      }
31349      if (element.hasRole()) {
31350        composeCodeableConcept("role", element.getRole());
31351      }
31352  }
31353
31354  protected void composeContractAnswerComponent(String name, Contract.AnswerComponent element) throws IOException {
31355    if (element != null) {
31356      composeElementAttributes(element);
31357      xml.enter(FHIR_NS, name);
31358      composeContractAnswerComponentElements(element);
31359      composeElementClose(element);
31360      xml.exit(FHIR_NS, name);
31361    }
31362  }
31363
31364  protected void composeContractAnswerComponentElements(Contract.AnswerComponent element) throws IOException {
31365      composeBackboneElementElements(element);
31366      if (element.hasValue()) {
31367        composeType("value", element.getValue());
31368      }  }
31369
31370  protected void composeContractContractAssetComponent(String name, Contract.ContractAssetComponent element) throws IOException {
31371    if (element != null) {
31372      composeElementAttributes(element);
31373      xml.enter(FHIR_NS, name);
31374      composeContractContractAssetComponentElements(element);
31375      composeElementClose(element);
31376      xml.exit(FHIR_NS, name);
31377    }
31378  }
31379
31380  protected void composeContractContractAssetComponentElements(Contract.ContractAssetComponent element) throws IOException {
31381      composeBackboneElementElements(element);
31382      if (element.hasScope()) {
31383        composeCodeableConcept("scope", element.getScope());
31384      }
31385      if (element.hasType()) { 
31386        for (CodeableConcept e : element.getType()) 
31387          composeCodeableConcept("type", e);
31388      }
31389      if (element.hasTypeReference()) { 
31390        for (Reference e : element.getTypeReference()) 
31391          composeReference("typeReference", e);
31392      }
31393      if (element.hasSubtype()) { 
31394        for (CodeableConcept e : element.getSubtype()) 
31395          composeCodeableConcept("subtype", e);
31396      }
31397      if (element.hasRelationship()) {
31398        composeCoding("relationship", element.getRelationship());
31399      }
31400      if (element.hasContext()) { 
31401        for (Contract.AssetContextComponent e : element.getContext()) 
31402          composeContractAssetContextComponent("context", e);
31403      }
31404      if (element.hasConditionElement()) {
31405        composeString("condition", element.getConditionElement());
31406      }
31407      if (element.hasPeriodType()) { 
31408        for (CodeableConcept e : element.getPeriodType()) 
31409          composeCodeableConcept("periodType", e);
31410      }
31411      if (element.hasPeriod()) { 
31412        for (Period e : element.getPeriod()) 
31413          composePeriod("period", e);
31414      }
31415      if (element.hasUsePeriod()) { 
31416        for (Period e : element.getUsePeriod()) 
31417          composePeriod("usePeriod", e);
31418      }
31419      if (element.hasTextElement()) {
31420        composeString("text", element.getTextElement());
31421      }
31422      if (element.hasLinkId()) { 
31423        for (StringType e : element.getLinkId()) 
31424          composeString("linkId", e);
31425      }
31426      if (element.hasAnswer()) { 
31427        for (Contract.AnswerComponent e : element.getAnswer()) 
31428          composeContractAnswerComponent("answer", e);
31429      }
31430      if (element.hasSecurityLabelNumber()) { 
31431        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
31432          composeUnsignedInt("securityLabelNumber", e);
31433      }
31434      if (element.hasValuedItem()) { 
31435        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
31436          composeContractValuedItemComponent("valuedItem", e);
31437      }
31438  }
31439
31440  protected void composeContractAssetContextComponent(String name, Contract.AssetContextComponent element) throws IOException {
31441    if (element != null) {
31442      composeElementAttributes(element);
31443      xml.enter(FHIR_NS, name);
31444      composeContractAssetContextComponentElements(element);
31445      composeElementClose(element);
31446      xml.exit(FHIR_NS, name);
31447    }
31448  }
31449
31450  protected void composeContractAssetContextComponentElements(Contract.AssetContextComponent element) throws IOException {
31451      composeBackboneElementElements(element);
31452      if (element.hasReference()) {
31453        composeReference("reference", element.getReference());
31454      }
31455      if (element.hasCode()) { 
31456        for (CodeableConcept e : element.getCode()) 
31457          composeCodeableConcept("code", e);
31458      }
31459      if (element.hasTextElement()) {
31460        composeString("text", element.getTextElement());
31461      }
31462  }
31463
31464  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
31465    if (element != null) {
31466      composeElementAttributes(element);
31467      xml.enter(FHIR_NS, name);
31468      composeContractValuedItemComponentElements(element);
31469      composeElementClose(element);
31470      xml.exit(FHIR_NS, name);
31471    }
31472  }
31473
31474  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
31475      composeBackboneElementElements(element);
31476      if (element.hasEntity()) {
31477        composeType("entity", element.getEntity());
31478      }      if (element.hasIdentifier()) {
31479        composeIdentifier("identifier", element.getIdentifier());
31480      }
31481      if (element.hasEffectiveTimeElement()) {
31482        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
31483      }
31484      if (element.hasQuantity()) {
31485        composeQuantity("quantity", element.getQuantity());
31486      }
31487      if (element.hasUnitPrice()) {
31488        composeMoney("unitPrice", element.getUnitPrice());
31489      }
31490      if (element.hasFactorElement()) {
31491        composeDecimal("factor", element.getFactorElement());
31492      }
31493      if (element.hasPointsElement()) {
31494        composeDecimal("points", element.getPointsElement());
31495      }
31496      if (element.hasNet()) {
31497        composeMoney("net", element.getNet());
31498      }
31499      if (element.hasPaymentElement()) {
31500        composeString("payment", element.getPaymentElement());
31501      }
31502      if (element.hasPaymentDateElement()) {
31503        composeDateTime("paymentDate", element.getPaymentDateElement());
31504      }
31505      if (element.hasResponsible()) {
31506        composeReference("responsible", element.getResponsible());
31507      }
31508      if (element.hasRecipient()) {
31509        composeReference("recipient", element.getRecipient());
31510      }
31511      if (element.hasLinkId()) { 
31512        for (StringType e : element.getLinkId()) 
31513          composeString("linkId", e);
31514      }
31515      if (element.hasSecurityLabelNumber()) { 
31516        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
31517          composeUnsignedInt("securityLabelNumber", e);
31518      }
31519  }
31520
31521  protected void composeContractActionComponent(String name, Contract.ActionComponent element) throws IOException {
31522    if (element != null) {
31523      composeElementAttributes(element);
31524      xml.enter(FHIR_NS, name);
31525      composeContractActionComponentElements(element);
31526      composeElementClose(element);
31527      xml.exit(FHIR_NS, name);
31528    }
31529  }
31530
31531  protected void composeContractActionComponentElements(Contract.ActionComponent element) throws IOException {
31532      composeBackboneElementElements(element);
31533      if (element.hasDoNotPerformElement()) {
31534        composeBoolean("doNotPerform", element.getDoNotPerformElement());
31535      }
31536      if (element.hasType()) {
31537        composeCodeableConcept("type", element.getType());
31538      }
31539      if (element.hasSubject()) { 
31540        for (Contract.ActionSubjectComponent e : element.getSubject()) 
31541          composeContractActionSubjectComponent("subject", e);
31542      }
31543      if (element.hasIntent()) {
31544        composeCodeableConcept("intent", element.getIntent());
31545      }
31546      if (element.hasLinkId()) { 
31547        for (StringType e : element.getLinkId()) 
31548          composeString("linkId", e);
31549      }
31550      if (element.hasStatus()) {
31551        composeCodeableConcept("status", element.getStatus());
31552      }
31553      if (element.hasContext()) {
31554        composeReference("context", element.getContext());
31555      }
31556      if (element.hasContextLinkId()) { 
31557        for (StringType e : element.getContextLinkId()) 
31558          composeString("contextLinkId", e);
31559      }
31560      if (element.hasOccurrence()) {
31561        composeType("occurrence", element.getOccurrence());
31562      }      if (element.hasRequester()) { 
31563        for (Reference e : element.getRequester()) 
31564          composeReference("requester", e);
31565      }
31566      if (element.hasRequesterLinkId()) { 
31567        for (StringType e : element.getRequesterLinkId()) 
31568          composeString("requesterLinkId", e);
31569      }
31570      if (element.hasPerformerType()) { 
31571        for (CodeableConcept e : element.getPerformerType()) 
31572          composeCodeableConcept("performerType", e);
31573      }
31574      if (element.hasPerformerRole()) {
31575        composeCodeableConcept("performerRole", element.getPerformerRole());
31576      }
31577      if (element.hasPerformer()) {
31578        composeReference("performer", element.getPerformer());
31579      }
31580      if (element.hasPerformerLinkId()) { 
31581        for (StringType e : element.getPerformerLinkId()) 
31582          composeString("performerLinkId", e);
31583      }
31584      if (element.hasReasonCode()) { 
31585        for (CodeableConcept e : element.getReasonCode()) 
31586          composeCodeableConcept("reasonCode", e);
31587      }
31588      if (element.hasReasonReference()) { 
31589        for (Reference e : element.getReasonReference()) 
31590          composeReference("reasonReference", e);
31591      }
31592      if (element.hasReason()) { 
31593        for (StringType e : element.getReason()) 
31594          composeString("reason", e);
31595      }
31596      if (element.hasReasonLinkId()) { 
31597        for (StringType e : element.getReasonLinkId()) 
31598          composeString("reasonLinkId", e);
31599      }
31600      if (element.hasNote()) { 
31601        for (Annotation e : element.getNote()) 
31602          composeAnnotation("note", e);
31603      }
31604      if (element.hasSecurityLabelNumber()) { 
31605        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
31606          composeUnsignedInt("securityLabelNumber", e);
31607      }
31608  }
31609
31610  protected void composeContractActionSubjectComponent(String name, Contract.ActionSubjectComponent element) throws IOException {
31611    if (element != null) {
31612      composeElementAttributes(element);
31613      xml.enter(FHIR_NS, name);
31614      composeContractActionSubjectComponentElements(element);
31615      composeElementClose(element);
31616      xml.exit(FHIR_NS, name);
31617    }
31618  }
31619
31620  protected void composeContractActionSubjectComponentElements(Contract.ActionSubjectComponent element) throws IOException {
31621      composeBackboneElementElements(element);
31622      if (element.hasReference()) { 
31623        for (Reference e : element.getReference()) 
31624          composeReference("reference", e);
31625      }
31626      if (element.hasRole()) {
31627        composeCodeableConcept("role", element.getRole());
31628      }
31629  }
31630
31631  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
31632    if (element != null) {
31633      composeElementAttributes(element);
31634      xml.enter(FHIR_NS, name);
31635      composeContractSignatoryComponentElements(element);
31636      composeElementClose(element);
31637      xml.exit(FHIR_NS, name);
31638    }
31639  }
31640
31641  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
31642      composeBackboneElementElements(element);
31643      if (element.hasType()) {
31644        composeCoding("type", element.getType());
31645      }
31646      if (element.hasParty()) {
31647        composeReference("party", element.getParty());
31648      }
31649      if (element.hasSignature()) { 
31650        for (Signature e : element.getSignature()) 
31651          composeSignature("signature", e);
31652      }
31653  }
31654
31655  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
31656    if (element != null) {
31657      composeElementAttributes(element);
31658      xml.enter(FHIR_NS, name);
31659      composeContractFriendlyLanguageComponentElements(element);
31660      composeElementClose(element);
31661      xml.exit(FHIR_NS, name);
31662    }
31663  }
31664
31665  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
31666      composeBackboneElementElements(element);
31667      if (element.hasContent()) {
31668        composeType("content", element.getContent());
31669      }  }
31670
31671  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
31672    if (element != null) {
31673      composeElementAttributes(element);
31674      xml.enter(FHIR_NS, name);
31675      composeContractLegalLanguageComponentElements(element);
31676      composeElementClose(element);
31677      xml.exit(FHIR_NS, name);
31678    }
31679  }
31680
31681  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
31682      composeBackboneElementElements(element);
31683      if (element.hasContent()) {
31684        composeType("content", element.getContent());
31685      }  }
31686
31687  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
31688    if (element != null) {
31689      composeElementAttributes(element);
31690      xml.enter(FHIR_NS, name);
31691      composeContractComputableLanguageComponentElements(element);
31692      composeElementClose(element);
31693      xml.exit(FHIR_NS, name);
31694    }
31695  }
31696
31697  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
31698      composeBackboneElementElements(element);
31699      if (element.hasContent()) {
31700        composeType("content", element.getContent());
31701      }  }
31702
31703  protected void composeCoverage(String name, Coverage element) throws IOException {
31704    if (element != null) {
31705      composeDomainResourceAttributes(element);
31706      xml.enter(FHIR_NS, name);
31707      composeCoverageElements(element);
31708      composeElementClose(element);
31709      xml.exit(FHIR_NS, name);
31710    }
31711  }
31712
31713  protected void composeCoverageElements(Coverage element) throws IOException {
31714      composeDomainResourceElements(element);
31715      if (element.hasIdentifier()) { 
31716        for (Identifier e : element.getIdentifier()) 
31717          composeIdentifier("identifier", e);
31718      }
31719      if (element.hasStatusElement())
31720        composeEnumeration("status", element.getStatusElement(), new Coverage.CoverageStatusEnumFactory());
31721      if (element.hasType()) {
31722        composeCodeableConcept("type", element.getType());
31723      }
31724      if (element.hasPolicyHolder()) {
31725        composeReference("policyHolder", element.getPolicyHolder());
31726      }
31727      if (element.hasSubscriber()) {
31728        composeReference("subscriber", element.getSubscriber());
31729      }
31730      if (element.hasSubscriberIdElement()) {
31731        composeString("subscriberId", element.getSubscriberIdElement());
31732      }
31733      if (element.hasBeneficiary()) {
31734        composeReference("beneficiary", element.getBeneficiary());
31735      }
31736      if (element.hasDependentElement()) {
31737        composeString("dependent", element.getDependentElement());
31738      }
31739      if (element.hasRelationship()) {
31740        composeCodeableConcept("relationship", element.getRelationship());
31741      }
31742      if (element.hasPeriod()) {
31743        composePeriod("period", element.getPeriod());
31744      }
31745      if (element.hasPayor()) { 
31746        for (Reference e : element.getPayor()) 
31747          composeReference("payor", e);
31748      }
31749      if (element.hasClass_()) { 
31750        for (Coverage.ClassComponent e : element.getClass_()) 
31751          composeCoverageClassComponent("class", e);
31752      }
31753      if (element.hasOrderElement()) {
31754        composePositiveInt("order", element.getOrderElement());
31755      }
31756      if (element.hasNetworkElement()) {
31757        composeString("network", element.getNetworkElement());
31758      }
31759      if (element.hasCopay()) { 
31760        for (Coverage.CoPayComponent e : element.getCopay()) 
31761          composeCoverageCoPayComponent("copay", e);
31762      }
31763      if (element.hasContract()) { 
31764        for (Reference e : element.getContract()) 
31765          composeReference("contract", e);
31766      }
31767  }
31768
31769  protected void composeCoverageClassComponent(String name, Coverage.ClassComponent element) throws IOException {
31770    if (element != null) {
31771      composeElementAttributes(element);
31772      xml.enter(FHIR_NS, name);
31773      composeCoverageClassComponentElements(element);
31774      composeElementClose(element);
31775      xml.exit(FHIR_NS, name);
31776    }
31777  }
31778
31779  protected void composeCoverageClassComponentElements(Coverage.ClassComponent element) throws IOException {
31780      composeBackboneElementElements(element);
31781      if (element.hasType()) {
31782        composeCoding("type", element.getType());
31783      }
31784      if (element.hasValueElement()) {
31785        composeString("value", element.getValueElement());
31786      }
31787      if (element.hasNameElement()) {
31788        composeString("name", element.getNameElement());
31789      }
31790  }
31791
31792  protected void composeCoverageCoPayComponent(String name, Coverage.CoPayComponent element) throws IOException {
31793    if (element != null) {
31794      composeElementAttributes(element);
31795      xml.enter(FHIR_NS, name);
31796      composeCoverageCoPayComponentElements(element);
31797      composeElementClose(element);
31798      xml.exit(FHIR_NS, name);
31799    }
31800  }
31801
31802  protected void composeCoverageCoPayComponentElements(Coverage.CoPayComponent element) throws IOException {
31803      composeBackboneElementElements(element);
31804      if (element.hasType()) {
31805        composeCoding("type", element.getType());
31806      }
31807      if (element.hasValue()) {
31808        composeQuantity("value", element.getValue());
31809      }
31810  }
31811
31812  protected void composeCoverageEligibilityRequest(String name, CoverageEligibilityRequest element) throws IOException {
31813    if (element != null) {
31814      composeDomainResourceAttributes(element);
31815      xml.enter(FHIR_NS, name);
31816      composeCoverageEligibilityRequestElements(element);
31817      composeElementClose(element);
31818      xml.exit(FHIR_NS, name);
31819    }
31820  }
31821
31822  protected void composeCoverageEligibilityRequestElements(CoverageEligibilityRequest element) throws IOException {
31823      composeDomainResourceElements(element);
31824      if (element.hasIdentifier()) { 
31825        for (Identifier e : element.getIdentifier()) 
31826          composeIdentifier("identifier", e);
31827      }
31828      if (element.hasStatusElement())
31829        composeEnumeration("status", element.getStatusElement(), new CoverageEligibilityRequest.EligibilityRequestStatusEnumFactory());
31830      if (element.hasPriority()) {
31831        composeCodeableConcept("priority", element.getPriority());
31832      }
31833        if (element.hasPurpose()) 
31834          for (Enumeration<CoverageEligibilityRequest.EligibilityRequestPurpose> e : element.getPurpose()) 
31835            composeEnumeration("purpose", e, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory());
31836      if (element.hasPatient()) {
31837        composeReference("patient", element.getPatient());
31838      }
31839      if (element.hasServiced()) {
31840        composeType("serviced", element.getServiced());
31841      }      if (element.hasCreatedElement()) {
31842        composeDateTime("created", element.getCreatedElement());
31843      }
31844      if (element.hasEnterer()) {
31845        composeReference("enterer", element.getEnterer());
31846      }
31847      if (element.hasProvider()) {
31848        composeReference("provider", element.getProvider());
31849      }
31850      if (element.hasInsurer()) {
31851        composeReference("insurer", element.getInsurer());
31852      }
31853      if (element.hasFacility()) {
31854        composeReference("facility", element.getFacility());
31855      }
31856      if (element.hasSupportingInformation()) { 
31857        for (CoverageEligibilityRequest.InformationComponent e : element.getSupportingInformation()) 
31858          composeCoverageEligibilityRequestInformationComponent("supportingInformation", e);
31859      }
31860      if (element.hasInsurance()) { 
31861        for (CoverageEligibilityRequest.InsuranceComponent e : element.getInsurance()) 
31862          composeCoverageEligibilityRequestInsuranceComponent("insurance", e);
31863      }
31864      if (element.hasItem()) { 
31865        for (CoverageEligibilityRequest.DetailsComponent e : element.getItem()) 
31866          composeCoverageEligibilityRequestDetailsComponent("item", e);
31867      }
31868  }
31869
31870  protected void composeCoverageEligibilityRequestInformationComponent(String name, CoverageEligibilityRequest.InformationComponent element) throws IOException {
31871    if (element != null) {
31872      composeElementAttributes(element);
31873      xml.enter(FHIR_NS, name);
31874      composeCoverageEligibilityRequestInformationComponentElements(element);
31875      composeElementClose(element);
31876      xml.exit(FHIR_NS, name);
31877    }
31878  }
31879
31880  protected void composeCoverageEligibilityRequestInformationComponentElements(CoverageEligibilityRequest.InformationComponent element) throws IOException {
31881      composeBackboneElementElements(element);
31882      if (element.hasSequenceElement()) {
31883        composePositiveInt("sequence", element.getSequenceElement());
31884      }
31885      if (element.hasInformation()) {
31886        composeReference("information", element.getInformation());
31887      }
31888      if (element.hasAppliesToAllElement()) {
31889        composeBoolean("appliesToAll", element.getAppliesToAllElement());
31890      }
31891  }
31892
31893  protected void composeCoverageEligibilityRequestInsuranceComponent(String name, CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
31894    if (element != null) {
31895      composeElementAttributes(element);
31896      xml.enter(FHIR_NS, name);
31897      composeCoverageEligibilityRequestInsuranceComponentElements(element);
31898      composeElementClose(element);
31899      xml.exit(FHIR_NS, name);
31900    }
31901  }
31902
31903  protected void composeCoverageEligibilityRequestInsuranceComponentElements(CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
31904      composeBackboneElementElements(element);
31905      if (element.hasFocalElement()) {
31906        composeBoolean("focal", element.getFocalElement());
31907      }
31908      if (element.hasCoverage()) {
31909        composeReference("coverage", element.getCoverage());
31910      }
31911      if (element.hasBusinessArrangementElement()) {
31912        composeString("businessArrangement", element.getBusinessArrangementElement());
31913      }
31914  }
31915
31916  protected void composeCoverageEligibilityRequestDetailsComponent(String name, CoverageEligibilityRequest.DetailsComponent element) throws IOException {
31917    if (element != null) {
31918      composeElementAttributes(element);
31919      xml.enter(FHIR_NS, name);
31920      composeCoverageEligibilityRequestDetailsComponentElements(element);
31921      composeElementClose(element);
31922      xml.exit(FHIR_NS, name);
31923    }
31924  }
31925
31926  protected void composeCoverageEligibilityRequestDetailsComponentElements(CoverageEligibilityRequest.DetailsComponent element) throws IOException {
31927      composeBackboneElementElements(element);
31928      if (element.hasSupportingInformationSequence()) { 
31929        for (PositiveIntType e : element.getSupportingInformationSequence()) 
31930          composePositiveInt("supportingInformationSequence", e);
31931      }
31932      if (element.hasCategory()) {
31933        composeCodeableConcept("category", element.getCategory());
31934      }
31935      if (element.hasBillcode()) {
31936        composeCodeableConcept("billcode", element.getBillcode());
31937      }
31938      if (element.hasModifier()) { 
31939        for (CodeableConcept e : element.getModifier()) 
31940          composeCodeableConcept("modifier", e);
31941      }
31942      if (element.hasProvider()) {
31943        composeReference("provider", element.getProvider());
31944      }
31945      if (element.hasQuantity()) {
31946        composeQuantity("quantity", element.getQuantity());
31947      }
31948      if (element.hasUnitPrice()) {
31949        composeMoney("unitPrice", element.getUnitPrice());
31950      }
31951      if (element.hasFacility()) {
31952        composeReference("facility", element.getFacility());
31953      }
31954      if (element.hasDiagnosis()) { 
31955        for (CoverageEligibilityRequest.DiagnosisComponent e : element.getDiagnosis()) 
31956          composeCoverageEligibilityRequestDiagnosisComponent("diagnosis", e);
31957      }
31958      if (element.hasDetail()) { 
31959        for (Reference e : element.getDetail()) 
31960          composeReference("detail", e);
31961      }
31962  }
31963
31964  protected void composeCoverageEligibilityRequestDiagnosisComponent(String name, CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
31965    if (element != null) {
31966      composeElementAttributes(element);
31967      xml.enter(FHIR_NS, name);
31968      composeCoverageEligibilityRequestDiagnosisComponentElements(element);
31969      composeElementClose(element);
31970      xml.exit(FHIR_NS, name);
31971    }
31972  }
31973
31974  protected void composeCoverageEligibilityRequestDiagnosisComponentElements(CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
31975      composeBackboneElementElements(element);
31976      if (element.hasDiagnosis()) {
31977        composeType("diagnosis", element.getDiagnosis());
31978      }  }
31979
31980  protected void composeCoverageEligibilityResponse(String name, CoverageEligibilityResponse element) throws IOException {
31981    if (element != null) {
31982      composeDomainResourceAttributes(element);
31983      xml.enter(FHIR_NS, name);
31984      composeCoverageEligibilityResponseElements(element);
31985      composeElementClose(element);
31986      xml.exit(FHIR_NS, name);
31987    }
31988  }
31989
31990  protected void composeCoverageEligibilityResponseElements(CoverageEligibilityResponse element) throws IOException {
31991      composeDomainResourceElements(element);
31992      if (element.hasIdentifier()) { 
31993        for (Identifier e : element.getIdentifier()) 
31994          composeIdentifier("identifier", e);
31995      }
31996      if (element.hasStatusElement())
31997        composeEnumeration("status", element.getStatusElement(), new CoverageEligibilityResponse.EligibilityResponseStatusEnumFactory());
31998        if (element.hasPurpose()) 
31999          for (Enumeration<CoverageEligibilityResponse.EligibilityResponsePurpose> e : element.getPurpose()) 
32000            composeEnumeration("purpose", e, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory());
32001      if (element.hasPatient()) {
32002        composeReference("patient", element.getPatient());
32003      }
32004      if (element.hasServiced()) {
32005        composeType("serviced", element.getServiced());
32006      }      if (element.hasCreatedElement()) {
32007        composeDateTime("created", element.getCreatedElement());
32008      }
32009      if (element.hasRequestProvider()) {
32010        composeReference("requestProvider", element.getRequestProvider());
32011      }
32012      if (element.hasRequest()) {
32013        composeReference("request", element.getRequest());
32014      }
32015      if (element.hasOutcomeElement())
32016        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
32017      if (element.hasDispositionElement()) {
32018        composeString("disposition", element.getDispositionElement());
32019      }
32020      if (element.hasInsurer()) {
32021        composeReference("insurer", element.getInsurer());
32022      }
32023      if (element.hasInsurance()) { 
32024        for (CoverageEligibilityResponse.InsuranceComponent e : element.getInsurance()) 
32025          composeCoverageEligibilityResponseInsuranceComponent("insurance", e);
32026      }
32027      if (element.hasPreAuthRefElement()) {
32028        composeString("preAuthRef", element.getPreAuthRefElement());
32029      }
32030      if (element.hasForm()) {
32031        composeCodeableConcept("form", element.getForm());
32032      }
32033      if (element.hasError()) { 
32034        for (CoverageEligibilityResponse.ErrorsComponent e : element.getError()) 
32035          composeCoverageEligibilityResponseErrorsComponent("error", e);
32036      }
32037  }
32038
32039  protected void composeCoverageEligibilityResponseInsuranceComponent(String name, CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
32040    if (element != null) {
32041      composeElementAttributes(element);
32042      xml.enter(FHIR_NS, name);
32043      composeCoverageEligibilityResponseInsuranceComponentElements(element);
32044      composeElementClose(element);
32045      xml.exit(FHIR_NS, name);
32046    }
32047  }
32048
32049  protected void composeCoverageEligibilityResponseInsuranceComponentElements(CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
32050      composeBackboneElementElements(element);
32051      if (element.hasCoverage()) {
32052        composeReference("coverage", element.getCoverage());
32053      }
32054      if (element.hasContract()) {
32055        composeReference("contract", element.getContract());
32056      }
32057      if (element.hasInforceElement()) {
32058        composeBoolean("inforce", element.getInforceElement());
32059      }
32060      if (element.hasItem()) { 
32061        for (CoverageEligibilityResponse.ItemsComponent e : element.getItem()) 
32062          composeCoverageEligibilityResponseItemsComponent("item", e);
32063      }
32064  }
32065
32066  protected void composeCoverageEligibilityResponseItemsComponent(String name, CoverageEligibilityResponse.ItemsComponent element) throws IOException {
32067    if (element != null) {
32068      composeElementAttributes(element);
32069      xml.enter(FHIR_NS, name);
32070      composeCoverageEligibilityResponseItemsComponentElements(element);
32071      composeElementClose(element);
32072      xml.exit(FHIR_NS, name);
32073    }
32074  }
32075
32076  protected void composeCoverageEligibilityResponseItemsComponentElements(CoverageEligibilityResponse.ItemsComponent element) throws IOException {
32077      composeBackboneElementElements(element);
32078      if (element.hasCategory()) {
32079        composeCodeableConcept("category", element.getCategory());
32080      }
32081      if (element.hasBillcode()) {
32082        composeCodeableConcept("billcode", element.getBillcode());
32083      }
32084      if (element.hasModifier()) { 
32085        for (CodeableConcept e : element.getModifier()) 
32086          composeCodeableConcept("modifier", e);
32087      }
32088      if (element.hasProvider()) {
32089        composeReference("provider", element.getProvider());
32090      }
32091      if (element.hasExcludedElement()) {
32092        composeBoolean("excluded", element.getExcludedElement());
32093      }
32094      if (element.hasNameElement()) {
32095        composeString("name", element.getNameElement());
32096      }
32097      if (element.hasDescriptionElement()) {
32098        composeString("description", element.getDescriptionElement());
32099      }
32100      if (element.hasNetwork()) {
32101        composeCodeableConcept("network", element.getNetwork());
32102      }
32103      if (element.hasUnit()) {
32104        composeCodeableConcept("unit", element.getUnit());
32105      }
32106      if (element.hasTerm()) {
32107        composeCodeableConcept("term", element.getTerm());
32108      }
32109      if (element.hasBenefit()) { 
32110        for (CoverageEligibilityResponse.BenefitComponent e : element.getBenefit()) 
32111          composeCoverageEligibilityResponseBenefitComponent("benefit", e);
32112      }
32113      if (element.hasAuthorizationRequiredElement()) {
32114        composeBoolean("authorizationRequired", element.getAuthorizationRequiredElement());
32115      }
32116      if (element.hasAuthorizationSupporting()) { 
32117        for (CodeableConcept e : element.getAuthorizationSupporting()) 
32118          composeCodeableConcept("authorizationSupporting", e);
32119      }
32120      if (element.hasAuthorizationUrlElement()) {
32121        composeUri("authorizationUrl", element.getAuthorizationUrlElement());
32122      }
32123  }
32124
32125  protected void composeCoverageEligibilityResponseBenefitComponent(String name, CoverageEligibilityResponse.BenefitComponent element) throws IOException {
32126    if (element != null) {
32127      composeElementAttributes(element);
32128      xml.enter(FHIR_NS, name);
32129      composeCoverageEligibilityResponseBenefitComponentElements(element);
32130      composeElementClose(element);
32131      xml.exit(FHIR_NS, name);
32132    }
32133  }
32134
32135  protected void composeCoverageEligibilityResponseBenefitComponentElements(CoverageEligibilityResponse.BenefitComponent element) throws IOException {
32136      composeBackboneElementElements(element);
32137      if (element.hasType()) {
32138        composeCodeableConcept("type", element.getType());
32139      }
32140      if (element.hasAllowed()) {
32141        composeType("allowed", element.getAllowed());
32142      }      if (element.hasUsed()) {
32143        composeType("used", element.getUsed());
32144      }  }
32145
32146  protected void composeCoverageEligibilityResponseErrorsComponent(String name, CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
32147    if (element != null) {
32148      composeElementAttributes(element);
32149      xml.enter(FHIR_NS, name);
32150      composeCoverageEligibilityResponseErrorsComponentElements(element);
32151      composeElementClose(element);
32152      xml.exit(FHIR_NS, name);
32153    }
32154  }
32155
32156  protected void composeCoverageEligibilityResponseErrorsComponentElements(CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
32157      composeBackboneElementElements(element);
32158      if (element.hasCode()) {
32159        composeCodeableConcept("code", element.getCode());
32160      }
32161  }
32162
32163  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
32164    if (element != null) {
32165      composeDomainResourceAttributes(element);
32166      xml.enter(FHIR_NS, name);
32167      composeDetectedIssueElements(element);
32168      composeElementClose(element);
32169      xml.exit(FHIR_NS, name);
32170    }
32171  }
32172
32173  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
32174      composeDomainResourceElements(element);
32175      if (element.hasIdentifier()) { 
32176        for (Identifier e : element.getIdentifier()) 
32177          composeIdentifier("identifier", e);
32178      }
32179      if (element.hasStatusElement())
32180        composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
32181      if (element.hasCategory()) {
32182        composeCodeableConcept("category", element.getCategory());
32183      }
32184      if (element.hasSeverityElement())
32185        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
32186      if (element.hasPatient()) {
32187        composeReference("patient", element.getPatient());
32188      }
32189      if (element.hasDateElement()) {
32190        composeDateTime("date", element.getDateElement());
32191      }
32192      if (element.hasAuthor()) {
32193        composeReference("author", element.getAuthor());
32194      }
32195      if (element.hasImplicated()) { 
32196        for (Reference e : element.getImplicated()) 
32197          composeReference("implicated", e);
32198      }
32199      if (element.hasDetailElement()) {
32200        composeString("detail", element.getDetailElement());
32201      }
32202      if (element.hasReferenceElement()) {
32203        composeUri("reference", element.getReferenceElement());
32204      }
32205      if (element.hasMitigation()) { 
32206        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
32207          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
32208      }
32209  }
32210
32211  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
32212    if (element != null) {
32213      composeElementAttributes(element);
32214      xml.enter(FHIR_NS, name);
32215      composeDetectedIssueDetectedIssueMitigationComponentElements(element);
32216      composeElementClose(element);
32217      xml.exit(FHIR_NS, name);
32218    }
32219  }
32220
32221  protected void composeDetectedIssueDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
32222      composeBackboneElementElements(element);
32223      if (element.hasAction()) {
32224        composeCodeableConcept("action", element.getAction());
32225      }
32226      if (element.hasDateElement()) {
32227        composeDateTime("date", element.getDateElement());
32228      }
32229      if (element.hasAuthor()) {
32230        composeReference("author", element.getAuthor());
32231      }
32232  }
32233
32234  protected void composeDevice(String name, Device element) throws IOException {
32235    if (element != null) {
32236      composeDomainResourceAttributes(element);
32237      xml.enter(FHIR_NS, name);
32238      composeDeviceElements(element);
32239      composeElementClose(element);
32240      xml.exit(FHIR_NS, name);
32241    }
32242  }
32243
32244  protected void composeDeviceElements(Device element) throws IOException {
32245      composeDomainResourceElements(element);
32246      if (element.hasIdentifier()) { 
32247        for (Identifier e : element.getIdentifier()) 
32248          composeIdentifier("identifier", e);
32249      }
32250      if (element.hasDefinition()) {
32251        composeReference("definition", element.getDefinition());
32252      }
32253      if (element.hasUdiCarrier()) { 
32254        for (Device.DeviceUdiCarrierComponent e : element.getUdiCarrier()) 
32255          composeDeviceDeviceUdiCarrierComponent("udiCarrier", e);
32256      }
32257      if (element.hasStatusElement())
32258        composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
32259      if (element.hasStatusReason()) { 
32260        for (CodeableConcept e : element.getStatusReason()) 
32261          composeCodeableConcept("statusReason", e);
32262      }
32263      if (element.hasDistinctIdentificationCodeElement()) {
32264        composeString("distinctIdentificationCode", element.getDistinctIdentificationCodeElement());
32265      }
32266      if (element.hasManufacturerElement()) {
32267        composeString("manufacturer", element.getManufacturerElement());
32268      }
32269      if (element.hasManufactureDateElement()) {
32270        composeDateTime("manufactureDate", element.getManufactureDateElement());
32271      }
32272      if (element.hasExpirationDateElement()) {
32273        composeDateTime("expirationDate", element.getExpirationDateElement());
32274      }
32275      if (element.hasLotNumberElement()) {
32276        composeString("lotNumber", element.getLotNumberElement());
32277      }
32278      if (element.hasSerialNumberElement()) {
32279        composeString("serialNumber", element.getSerialNumberElement());
32280      }
32281      if (element.hasDeviceName()) { 
32282        for (Device.DeviceDeviceNameComponent e : element.getDeviceName()) 
32283          composeDeviceDeviceDeviceNameComponent("deviceName", e);
32284      }
32285      if (element.hasModelNumberElement()) {
32286        composeString("modelNumber", element.getModelNumberElement());
32287      }
32288      if (element.hasPartNumberElement()) {
32289        composeString("partNumber", element.getPartNumberElement());
32290      }
32291      if (element.hasType()) {
32292        composeCodeableConcept("type", element.getType());
32293      }
32294      if (element.hasSpecialization()) { 
32295        for (Device.DeviceSpecializationComponent e : element.getSpecialization()) 
32296          composeDeviceDeviceSpecializationComponent("specialization", e);
32297      }
32298      if (element.hasVersion()) { 
32299        for (Device.DeviceVersionComponent e : element.getVersion()) 
32300          composeDeviceDeviceVersionComponent("version", e);
32301      }
32302      if (element.hasProperty()) { 
32303        for (Device.DevicePropertyComponent e : element.getProperty()) 
32304          composeDeviceDevicePropertyComponent("property", e);
32305      }
32306      if (element.hasPatient()) {
32307        composeReference("patient", element.getPatient());
32308      }
32309      if (element.hasOwner()) {
32310        composeReference("owner", element.getOwner());
32311      }
32312      if (element.hasContact()) { 
32313        for (ContactPoint e : element.getContact()) 
32314          composeContactPoint("contact", e);
32315      }
32316      if (element.hasLocation()) {
32317        composeReference("location", element.getLocation());
32318      }
32319      if (element.hasUrlElement()) {
32320        composeUri("url", element.getUrlElement());
32321      }
32322      if (element.hasNote()) { 
32323        for (Annotation e : element.getNote()) 
32324          composeAnnotation("note", e);
32325      }
32326      if (element.hasSafety()) { 
32327        for (CodeableConcept e : element.getSafety()) 
32328          composeCodeableConcept("safety", e);
32329      }
32330      if (element.hasParent()) {
32331        composeReference("parent", element.getParent());
32332      }
32333  }
32334
32335  protected void composeDeviceDeviceUdiCarrierComponent(String name, Device.DeviceUdiCarrierComponent element) throws IOException {
32336    if (element != null) {
32337      composeElementAttributes(element);
32338      xml.enter(FHIR_NS, name);
32339      composeDeviceDeviceUdiCarrierComponentElements(element);
32340      composeElementClose(element);
32341      xml.exit(FHIR_NS, name);
32342    }
32343  }
32344
32345  protected void composeDeviceDeviceUdiCarrierComponentElements(Device.DeviceUdiCarrierComponent element) throws IOException {
32346      composeBackboneElementElements(element);
32347      if (element.hasDeviceIdentifierElement()) {
32348        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
32349      }
32350      if (element.hasIssuerElement()) {
32351        composeUri("issuer", element.getIssuerElement());
32352      }
32353      if (element.hasJurisdictionElement()) {
32354        composeUri("jurisdiction", element.getJurisdictionElement());
32355      }
32356      if (element.hasCarrierAIDCElement()) {
32357        composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
32358      }
32359      if (element.hasCarrierHRFElement()) {
32360        composeString("carrierHRF", element.getCarrierHRFElement());
32361      }
32362      if (element.hasEntryTypeElement())
32363        composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
32364  }
32365
32366  protected void composeDeviceDeviceDeviceNameComponent(String name, Device.DeviceDeviceNameComponent element) throws IOException {
32367    if (element != null) {
32368      composeElementAttributes(element);
32369      xml.enter(FHIR_NS, name);
32370      composeDeviceDeviceDeviceNameComponentElements(element);
32371      composeElementClose(element);
32372      xml.exit(FHIR_NS, name);
32373    }
32374  }
32375
32376  protected void composeDeviceDeviceDeviceNameComponentElements(Device.DeviceDeviceNameComponent element) throws IOException {
32377      composeBackboneElementElements(element);
32378      if (element.hasNameElement()) {
32379        composeString("name", element.getNameElement());
32380      }
32381      if (element.hasTypeElement())
32382        composeEnumeration("type", element.getTypeElement(), new Device.DeviceNameTypeEnumFactory());
32383  }
32384
32385  protected void composeDeviceDeviceSpecializationComponent(String name, Device.DeviceSpecializationComponent element) throws IOException {
32386    if (element != null) {
32387      composeElementAttributes(element);
32388      xml.enter(FHIR_NS, name);
32389      composeDeviceDeviceSpecializationComponentElements(element);
32390      composeElementClose(element);
32391      xml.exit(FHIR_NS, name);
32392    }
32393  }
32394
32395  protected void composeDeviceDeviceSpecializationComponentElements(Device.DeviceSpecializationComponent element) throws IOException {
32396      composeBackboneElementElements(element);
32397      if (element.hasSystemType()) {
32398        composeCodeableConcept("systemType", element.getSystemType());
32399      }
32400      if (element.hasVersionElement()) {
32401        composeString("version", element.getVersionElement());
32402      }
32403  }
32404
32405  protected void composeDeviceDeviceVersionComponent(String name, Device.DeviceVersionComponent element) throws IOException {
32406    if (element != null) {
32407      composeElementAttributes(element);
32408      xml.enter(FHIR_NS, name);
32409      composeDeviceDeviceVersionComponentElements(element);
32410      composeElementClose(element);
32411      xml.exit(FHIR_NS, name);
32412    }
32413  }
32414
32415  protected void composeDeviceDeviceVersionComponentElements(Device.DeviceVersionComponent element) throws IOException {
32416      composeBackboneElementElements(element);
32417      if (element.hasType()) {
32418        composeCodeableConcept("type", element.getType());
32419      }
32420      if (element.hasComponent()) {
32421        composeIdentifier("component", element.getComponent());
32422      }
32423      if (element.hasValueElement()) {
32424        composeString("value", element.getValueElement());
32425      }
32426  }
32427
32428  protected void composeDeviceDevicePropertyComponent(String name, Device.DevicePropertyComponent element) throws IOException {
32429    if (element != null) {
32430      composeElementAttributes(element);
32431      xml.enter(FHIR_NS, name);
32432      composeDeviceDevicePropertyComponentElements(element);
32433      composeElementClose(element);
32434      xml.exit(FHIR_NS, name);
32435    }
32436  }
32437
32438  protected void composeDeviceDevicePropertyComponentElements(Device.DevicePropertyComponent element) throws IOException {
32439      composeBackboneElementElements(element);
32440      if (element.hasType()) {
32441        composeCodeableConcept("type", element.getType());
32442      }
32443      if (element.hasValueQuanity()) { 
32444        for (Quantity e : element.getValueQuanity()) 
32445          composeQuantity("valueQuanity", e);
32446      }
32447      if (element.hasValueCode()) { 
32448        for (CodeableConcept e : element.getValueCode()) 
32449          composeCodeableConcept("valueCode", e);
32450      }
32451  }
32452
32453  protected void composeDeviceDefinition(String name, DeviceDefinition element) throws IOException {
32454    if (element != null) {
32455      composeDomainResourceAttributes(element);
32456      xml.enter(FHIR_NS, name);
32457      composeDeviceDefinitionElements(element);
32458      composeElementClose(element);
32459      xml.exit(FHIR_NS, name);
32460    }
32461  }
32462
32463  protected void composeDeviceDefinitionElements(DeviceDefinition element) throws IOException {
32464      composeDomainResourceElements(element);
32465      if (element.hasIdentifier()) { 
32466        for (Identifier e : element.getIdentifier()) 
32467          composeIdentifier("identifier", e);
32468      }
32469      if (element.hasUdiDeviceIdentifier()) { 
32470        for (DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent e : element.getUdiDeviceIdentifier()) 
32471          composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent("udiDeviceIdentifier", e);
32472      }
32473      if (element.hasManufacturer()) {
32474        composeType("manufacturer", element.getManufacturer());
32475      }      if (element.hasDeviceName()) { 
32476        for (DeviceDefinition.DeviceDefinitionDeviceNameComponent e : element.getDeviceName()) 
32477          composeDeviceDefinitionDeviceDefinitionDeviceNameComponent("deviceName", e);
32478      }
32479      if (element.hasModelNumberElement()) {
32480        composeString("modelNumber", element.getModelNumberElement());
32481      }
32482      if (element.hasType()) {
32483        composeCodeableConcept("type", element.getType());
32484      }
32485      if (element.hasSpecialization()) { 
32486        for (DeviceDefinition.DeviceDefinitionSpecializationComponent e : element.getSpecialization()) 
32487          composeDeviceDefinitionDeviceDefinitionSpecializationComponent("specialization", e);
32488      }
32489      if (element.hasVersion()) { 
32490        for (StringType e : element.getVersion()) 
32491          composeString("version", e);
32492      }
32493      if (element.hasSafety()) { 
32494        for (CodeableConcept e : element.getSafety()) 
32495          composeCodeableConcept("safety", e);
32496      }
32497      if (element.hasShelfLifeStorage()) { 
32498        for (ProductShelfLife e : element.getShelfLifeStorage()) 
32499          composeProductShelfLife("shelfLifeStorage", e);
32500      }
32501      if (element.hasPhysicalCharacteristics()) {
32502        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
32503      }
32504      if (element.hasLanguageCode()) { 
32505        for (CodeableConcept e : element.getLanguageCode()) 
32506          composeCodeableConcept("languageCode", e);
32507      }
32508      if (element.hasCapability()) { 
32509        for (DeviceDefinition.DeviceDefinitionCapabilityComponent e : element.getCapability()) 
32510          composeDeviceDefinitionDeviceDefinitionCapabilityComponent("capability", e);
32511      }
32512      if (element.hasProperty()) { 
32513        for (DeviceDefinition.DeviceDefinitionPropertyComponent e : element.getProperty()) 
32514          composeDeviceDefinitionDeviceDefinitionPropertyComponent("property", e);
32515      }
32516      if (element.hasOwner()) {
32517        composeReference("owner", element.getOwner());
32518      }
32519      if (element.hasContact()) { 
32520        for (ContactPoint e : element.getContact()) 
32521          composeContactPoint("contact", e);
32522      }
32523      if (element.hasUrlElement()) {
32524        composeUri("url", element.getUrlElement());
32525      }
32526      if (element.hasOnlineInformationElement()) {
32527        composeUri("onlineInformation", element.getOnlineInformationElement());
32528      }
32529      if (element.hasNote()) { 
32530        for (Annotation e : element.getNote()) 
32531          composeAnnotation("note", e);
32532      }
32533      if (element.hasQuantity()) {
32534        composeQuantity("quantity", element.getQuantity());
32535      }
32536      if (element.hasParentDevice()) {
32537        composeReference("parentDevice", element.getParentDevice());
32538      }
32539      if (element.hasMaterial()) { 
32540        for (DeviceDefinition.DeviceDefinitionMaterialComponent e : element.getMaterial()) 
32541          composeDeviceDefinitionDeviceDefinitionMaterialComponent("material", e);
32542      }
32543  }
32544
32545  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(String name, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
32546    if (element != null) {
32547      composeElementAttributes(element);
32548      xml.enter(FHIR_NS, name);
32549      composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentElements(element);
32550      composeElementClose(element);
32551      xml.exit(FHIR_NS, name);
32552    }
32553  }
32554
32555  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentElements(DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
32556      composeBackboneElementElements(element);
32557      if (element.hasDeviceIdentifierElement()) {
32558        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
32559      }
32560      if (element.hasIssuerElement()) {
32561        composeUri("issuer", element.getIssuerElement());
32562      }
32563      if (element.hasJurisdictionElement()) {
32564        composeUri("jurisdiction", element.getJurisdictionElement());
32565      }
32566  }
32567
32568  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponent(String name, DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
32569    if (element != null) {
32570      composeElementAttributes(element);
32571      xml.enter(FHIR_NS, name);
32572      composeDeviceDefinitionDeviceDefinitionDeviceNameComponentElements(element);
32573      composeElementClose(element);
32574      xml.exit(FHIR_NS, name);
32575    }
32576  }
32577
32578  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponentElements(DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
32579      composeBackboneElementElements(element);
32580      if (element.hasNameElement()) {
32581        composeString("name", element.getNameElement());
32582      }
32583      if (element.hasTypeElement())
32584        composeEnumeration("type", element.getTypeElement(), new DeviceDefinition.DeviceNameTypeEnumFactory());
32585  }
32586
32587  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponent(String name, DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
32588    if (element != null) {
32589      composeElementAttributes(element);
32590      xml.enter(FHIR_NS, name);
32591      composeDeviceDefinitionDeviceDefinitionSpecializationComponentElements(element);
32592      composeElementClose(element);
32593      xml.exit(FHIR_NS, name);
32594    }
32595  }
32596
32597  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponentElements(DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
32598      composeBackboneElementElements(element);
32599      if (element.hasSystemTypeElement()) {
32600        composeString("systemType", element.getSystemTypeElement());
32601      }
32602      if (element.hasVersionElement()) {
32603        composeString("version", element.getVersionElement());
32604      }
32605  }
32606
32607  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponent(String name, DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
32608    if (element != null) {
32609      composeElementAttributes(element);
32610      xml.enter(FHIR_NS, name);
32611      composeDeviceDefinitionDeviceDefinitionCapabilityComponentElements(element);
32612      composeElementClose(element);
32613      xml.exit(FHIR_NS, name);
32614    }
32615  }
32616
32617  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponentElements(DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
32618      composeBackboneElementElements(element);
32619      if (element.hasType()) {
32620        composeCodeableConcept("type", element.getType());
32621      }
32622      if (element.hasDescription()) { 
32623        for (CodeableConcept e : element.getDescription()) 
32624          composeCodeableConcept("description", e);
32625      }
32626  }
32627
32628  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponent(String name, DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
32629    if (element != null) {
32630      composeElementAttributes(element);
32631      xml.enter(FHIR_NS, name);
32632      composeDeviceDefinitionDeviceDefinitionPropertyComponentElements(element);
32633      composeElementClose(element);
32634      xml.exit(FHIR_NS, name);
32635    }
32636  }
32637
32638  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponentElements(DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
32639      composeBackboneElementElements(element);
32640      if (element.hasType()) {
32641        composeCodeableConcept("type", element.getType());
32642      }
32643      if (element.hasValueQuanity()) { 
32644        for (Quantity e : element.getValueQuanity()) 
32645          composeQuantity("valueQuanity", e);
32646      }
32647      if (element.hasValueCode()) { 
32648        for (CodeableConcept e : element.getValueCode()) 
32649          composeCodeableConcept("valueCode", e);
32650      }
32651  }
32652
32653  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponent(String name, DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
32654    if (element != null) {
32655      composeElementAttributes(element);
32656      xml.enter(FHIR_NS, name);
32657      composeDeviceDefinitionDeviceDefinitionMaterialComponentElements(element);
32658      composeElementClose(element);
32659      xml.exit(FHIR_NS, name);
32660    }
32661  }
32662
32663  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponentElements(DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
32664      composeBackboneElementElements(element);
32665      if (element.hasSubstance()) {
32666        composeCodeableConcept("substance", element.getSubstance());
32667      }
32668      if (element.hasAlternateElement()) {
32669        composeBoolean("alternate", element.getAlternateElement());
32670      }
32671      if (element.hasAllergenicIndicatorElement()) {
32672        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
32673      }
32674  }
32675
32676  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
32677    if (element != null) {
32678      composeDomainResourceAttributes(element);
32679      xml.enter(FHIR_NS, name);
32680      composeDeviceMetricElements(element);
32681      composeElementClose(element);
32682      xml.exit(FHIR_NS, name);
32683    }
32684  }
32685
32686  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
32687      composeDomainResourceElements(element);
32688      if (element.hasIdentifier()) { 
32689        for (Identifier e : element.getIdentifier()) 
32690          composeIdentifier("identifier", e);
32691      }
32692      if (element.hasType()) {
32693        composeCodeableConcept("type", element.getType());
32694      }
32695      if (element.hasUnit()) {
32696        composeCodeableConcept("unit", element.getUnit());
32697      }
32698      if (element.hasSource()) {
32699        composeReference("source", element.getSource());
32700      }
32701      if (element.hasParent()) {
32702        composeReference("parent", element.getParent());
32703      }
32704      if (element.hasOperationalStatusElement())
32705        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
32706      if (element.hasColorElement())
32707        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
32708      if (element.hasCategoryElement())
32709        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
32710      if (element.hasMeasurementPeriod()) {
32711        composeTiming("measurementPeriod", element.getMeasurementPeriod());
32712      }
32713      if (element.hasCalibration()) { 
32714        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
32715          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
32716      }
32717  }
32718
32719  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
32720    if (element != null) {
32721      composeElementAttributes(element);
32722      xml.enter(FHIR_NS, name);
32723      composeDeviceMetricDeviceMetricCalibrationComponentElements(element);
32724      composeElementClose(element);
32725      xml.exit(FHIR_NS, name);
32726    }
32727  }
32728
32729  protected void composeDeviceMetricDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
32730      composeBackboneElementElements(element);
32731      if (element.hasTypeElement())
32732        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
32733      if (element.hasStateElement())
32734        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
32735      if (element.hasTimeElement()) {
32736        composeInstant("time", element.getTimeElement());
32737      }
32738  }
32739
32740  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
32741    if (element != null) {
32742      composeDomainResourceAttributes(element);
32743      xml.enter(FHIR_NS, name);
32744      composeDeviceRequestElements(element);
32745      composeElementClose(element);
32746      xml.exit(FHIR_NS, name);
32747    }
32748  }
32749
32750  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
32751      composeDomainResourceElements(element);
32752      if (element.hasIdentifier()) { 
32753        for (Identifier e : element.getIdentifier()) 
32754          composeIdentifier("identifier", e);
32755      }
32756      if (element.hasInstantiatesCanonical()) { 
32757        for (CanonicalType e : element.getInstantiatesCanonical()) 
32758          composeCanonical("instantiatesCanonical", e);
32759      }
32760      if (element.hasInstantiatesUri()) { 
32761        for (UriType e : element.getInstantiatesUri()) 
32762          composeUri("instantiatesUri", e);
32763      }
32764      if (element.hasBasedOn()) { 
32765        for (Reference e : element.getBasedOn()) 
32766          composeReference("basedOn", e);
32767      }
32768      if (element.hasPriorRequest()) { 
32769        for (Reference e : element.getPriorRequest()) 
32770          composeReference("priorRequest", e);
32771      }
32772      if (element.hasGroupIdentifier()) {
32773        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
32774      }
32775      if (element.hasStatusElement())
32776        composeEnumeration("status", element.getStatusElement(), new DeviceRequest.DeviceRequestStatusEnumFactory());
32777      if (element.hasIntentElement())
32778        composeEnumeration("intent", element.getIntentElement(), new DeviceRequest.RequestIntentEnumFactory());
32779      if (element.hasPriorityElement())
32780        composeEnumeration("priority", element.getPriorityElement(), new DeviceRequest.RequestPriorityEnumFactory());
32781      if (element.hasCode()) {
32782        composeType("code", element.getCode());
32783      }      if (element.hasParameter()) { 
32784        for (DeviceRequest.DeviceRequestParameterComponent e : element.getParameter()) 
32785          composeDeviceRequestDeviceRequestParameterComponent("parameter", e);
32786      }
32787      if (element.hasSubject()) {
32788        composeReference("subject", element.getSubject());
32789      }
32790      if (element.hasContext()) {
32791        composeReference("context", element.getContext());
32792      }
32793      if (element.hasOccurrence()) {
32794        composeType("occurrence", element.getOccurrence());
32795      }      if (element.hasAuthoredOnElement()) {
32796        composeDateTime("authoredOn", element.getAuthoredOnElement());
32797      }
32798      if (element.hasRequester()) {
32799        composeReference("requester", element.getRequester());
32800      }
32801      if (element.hasPerformerType()) {
32802        composeCodeableConcept("performerType", element.getPerformerType());
32803      }
32804      if (element.hasPerformer()) {
32805        composeReference("performer", element.getPerformer());
32806      }
32807      if (element.hasReasonCode()) { 
32808        for (CodeableConcept e : element.getReasonCode()) 
32809          composeCodeableConcept("reasonCode", e);
32810      }
32811      if (element.hasReasonReference()) { 
32812        for (Reference e : element.getReasonReference()) 
32813          composeReference("reasonReference", e);
32814      }
32815      if (element.hasInsurance()) { 
32816        for (Reference e : element.getInsurance()) 
32817          composeReference("insurance", e);
32818      }
32819      if (element.hasSupportingInfo()) { 
32820        for (Reference e : element.getSupportingInfo()) 
32821          composeReference("supportingInfo", e);
32822      }
32823      if (element.hasNote()) { 
32824        for (Annotation e : element.getNote()) 
32825          composeAnnotation("note", e);
32826      }
32827      if (element.hasRelevantHistory()) { 
32828        for (Reference e : element.getRelevantHistory()) 
32829          composeReference("relevantHistory", e);
32830      }
32831  }
32832
32833  protected void composeDeviceRequestDeviceRequestParameterComponent(String name, DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
32834    if (element != null) {
32835      composeElementAttributes(element);
32836      xml.enter(FHIR_NS, name);
32837      composeDeviceRequestDeviceRequestParameterComponentElements(element);
32838      composeElementClose(element);
32839      xml.exit(FHIR_NS, name);
32840    }
32841  }
32842
32843  protected void composeDeviceRequestDeviceRequestParameterComponentElements(DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
32844      composeBackboneElementElements(element);
32845      if (element.hasCode()) {
32846        composeCodeableConcept("code", element.getCode());
32847      }
32848      if (element.hasValue()) {
32849        composeType("value", element.getValue());
32850      }  }
32851
32852  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
32853    if (element != null) {
32854      composeDomainResourceAttributes(element);
32855      xml.enter(FHIR_NS, name);
32856      composeDeviceUseStatementElements(element);
32857      composeElementClose(element);
32858      xml.exit(FHIR_NS, name);
32859    }
32860  }
32861
32862  protected void composeDeviceUseStatementElements(DeviceUseStatement element) throws IOException {
32863      composeDomainResourceElements(element);
32864      if (element.hasIdentifier()) { 
32865        for (Identifier e : element.getIdentifier()) 
32866          composeIdentifier("identifier", e);
32867      }
32868      if (element.hasBasedOn()) { 
32869        for (Reference e : element.getBasedOn()) 
32870          composeReference("basedOn", e);
32871      }
32872      if (element.hasStatusElement())
32873        composeEnumeration("status", element.getStatusElement(), new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
32874      if (element.hasSubject()) {
32875        composeReference("subject", element.getSubject());
32876      }
32877      if (element.hasDerivedFrom()) { 
32878        for (Reference e : element.getDerivedFrom()) 
32879          composeReference("derivedFrom", e);
32880      }
32881      if (element.hasTiming()) {
32882        composeType("timing", element.getTiming());
32883      }      if (element.hasRecordedOnElement()) {
32884        composeDateTime("recordedOn", element.getRecordedOnElement());
32885      }
32886      if (element.hasSource()) {
32887        composeReference("source", element.getSource());
32888      }
32889      if (element.hasDevice()) {
32890        composeReference("device", element.getDevice());
32891      }
32892      if (element.hasReasonCode()) { 
32893        for (CodeableConcept e : element.getReasonCode()) 
32894          composeCodeableConcept("reasonCode", e);
32895      }
32896      if (element.hasReasonReference()) { 
32897        for (Reference e : element.getReasonReference()) 
32898          composeReference("reasonReference", e);
32899      }
32900      if (element.hasBodySite()) {
32901        composeCodeableConcept("bodySite", element.getBodySite());
32902      }
32903      if (element.hasNote()) { 
32904        for (Annotation e : element.getNote()) 
32905          composeAnnotation("note", e);
32906      }
32907  }
32908
32909  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
32910    if (element != null) {
32911      composeDomainResourceAttributes(element);
32912      xml.enter(FHIR_NS, name);
32913      composeDiagnosticReportElements(element);
32914      composeElementClose(element);
32915      xml.exit(FHIR_NS, name);
32916    }
32917  }
32918
32919  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
32920      composeDomainResourceElements(element);
32921      if (element.hasIdentifier()) { 
32922        for (Identifier e : element.getIdentifier()) 
32923          composeIdentifier("identifier", e);
32924      }
32925      if (element.hasBasedOn()) { 
32926        for (Reference e : element.getBasedOn()) 
32927          composeReference("basedOn", e);
32928      }
32929      if (element.hasStatusElement())
32930        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
32931      if (element.hasCategory()) {
32932        composeCodeableConcept("category", element.getCategory());
32933      }
32934      if (element.hasCode()) {
32935        composeCodeableConcept("code", element.getCode());
32936      }
32937      if (element.hasSubject()) {
32938        composeReference("subject", element.getSubject());
32939      }
32940      if (element.hasContext()) {
32941        composeReference("context", element.getContext());
32942      }
32943      if (element.hasEffective()) {
32944        composeType("effective", element.getEffective());
32945      }      if (element.hasIssuedElement()) {
32946        composeInstant("issued", element.getIssuedElement());
32947      }
32948      if (element.hasPerformer()) { 
32949        for (Reference e : element.getPerformer()) 
32950          composeReference("performer", e);
32951      }
32952      if (element.hasResultsInterpreter()) { 
32953        for (Reference e : element.getResultsInterpreter()) 
32954          composeReference("resultsInterpreter", e);
32955      }
32956      if (element.hasSpecimen()) { 
32957        for (Reference e : element.getSpecimen()) 
32958          composeReference("specimen", e);
32959      }
32960      if (element.hasResult()) { 
32961        for (Reference e : element.getResult()) 
32962          composeReference("result", e);
32963      }
32964      if (element.hasImagingStudy()) { 
32965        for (Reference e : element.getImagingStudy()) 
32966          composeReference("imagingStudy", e);
32967      }
32968      if (element.hasMedia()) { 
32969        for (DiagnosticReport.DiagnosticReportMediaComponent e : element.getMedia()) 
32970          composeDiagnosticReportDiagnosticReportMediaComponent("media", e);
32971      }
32972      if (element.hasConclusionElement()) {
32973        composeString("conclusion", element.getConclusionElement());
32974      }
32975      if (element.hasConclusionCode()) { 
32976        for (CodeableConcept e : element.getConclusionCode()) 
32977          composeCodeableConcept("conclusionCode", e);
32978      }
32979      if (element.hasPresentedForm()) { 
32980        for (Attachment e : element.getPresentedForm()) 
32981          composeAttachment("presentedForm", e);
32982      }
32983  }
32984
32985  protected void composeDiagnosticReportDiagnosticReportMediaComponent(String name, DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
32986    if (element != null) {
32987      composeElementAttributes(element);
32988      xml.enter(FHIR_NS, name);
32989      composeDiagnosticReportDiagnosticReportMediaComponentElements(element);
32990      composeElementClose(element);
32991      xml.exit(FHIR_NS, name);
32992    }
32993  }
32994
32995  protected void composeDiagnosticReportDiagnosticReportMediaComponentElements(DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
32996      composeBackboneElementElements(element);
32997      if (element.hasCommentElement()) {
32998        composeString("comment", element.getCommentElement());
32999      }
33000      if (element.hasLink()) {
33001        composeReference("link", element.getLink());
33002      }
33003  }
33004
33005  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
33006    if (element != null) {
33007      composeDomainResourceAttributes(element);
33008      xml.enter(FHIR_NS, name);
33009      composeDocumentManifestElements(element);
33010      composeElementClose(element);
33011      xml.exit(FHIR_NS, name);
33012    }
33013  }
33014
33015  protected void composeDocumentManifestElements(DocumentManifest element) throws IOException {
33016      composeDomainResourceElements(element);
33017      if (element.hasMasterIdentifier()) {
33018        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
33019      }
33020      if (element.hasIdentifier()) { 
33021        for (Identifier e : element.getIdentifier()) 
33022          composeIdentifier("identifier", e);
33023      }
33024      if (element.hasStatusElement())
33025        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
33026      if (element.hasType()) {
33027        composeCodeableConcept("type", element.getType());
33028      }
33029      if (element.hasSubject()) {
33030        composeReference("subject", element.getSubject());
33031      }
33032      if (element.hasCreatedElement()) {
33033        composeDateTime("created", element.getCreatedElement());
33034      }
33035      if (element.hasAgent()) { 
33036        for (DocumentManifest.DocumentManifestAgentComponent e : element.getAgent()) 
33037          composeDocumentManifestDocumentManifestAgentComponent("agent", e);
33038      }
33039      if (element.hasRecipient()) { 
33040        for (Reference e : element.getRecipient()) 
33041          composeReference("recipient", e);
33042      }
33043      if (element.hasSourceElement()) {
33044        composeUri("source", element.getSourceElement());
33045      }
33046      if (element.hasDescriptionElement()) {
33047        composeString("description", element.getDescriptionElement());
33048      }
33049      if (element.hasContent()) { 
33050        for (Reference e : element.getContent()) 
33051          composeReference("content", e);
33052      }
33053      if (element.hasRelated()) { 
33054        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
33055          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
33056      }
33057  }
33058
33059  protected void composeDocumentManifestDocumentManifestAgentComponent(String name, DocumentManifest.DocumentManifestAgentComponent element) throws IOException {
33060    if (element != null) {
33061      composeElementAttributes(element);
33062      xml.enter(FHIR_NS, name);
33063      composeDocumentManifestDocumentManifestAgentComponentElements(element);
33064      composeElementClose(element);
33065      xml.exit(FHIR_NS, name);
33066    }
33067  }
33068
33069  protected void composeDocumentManifestDocumentManifestAgentComponentElements(DocumentManifest.DocumentManifestAgentComponent element) throws IOException {
33070      composeBackboneElementElements(element);
33071      if (element.hasType()) {
33072        composeCodeableConcept("type", element.getType());
33073      }
33074      if (element.hasWho()) {
33075        composeReference("who", element.getWho());
33076      }
33077  }
33078
33079  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
33080    if (element != null) {
33081      composeElementAttributes(element);
33082      xml.enter(FHIR_NS, name);
33083      composeDocumentManifestDocumentManifestRelatedComponentElements(element);
33084      composeElementClose(element);
33085      xml.exit(FHIR_NS, name);
33086    }
33087  }
33088
33089  protected void composeDocumentManifestDocumentManifestRelatedComponentElements(DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
33090      composeBackboneElementElements(element);
33091      if (element.hasIdentifier()) {
33092        composeIdentifier("identifier", element.getIdentifier());
33093      }
33094      if (element.hasRef()) {
33095        composeReference("ref", element.getRef());
33096      }
33097  }
33098
33099  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
33100    if (element != null) {
33101      composeDomainResourceAttributes(element);
33102      xml.enter(FHIR_NS, name);
33103      composeDocumentReferenceElements(element);
33104      composeElementClose(element);
33105      xml.exit(FHIR_NS, name);
33106    }
33107  }
33108
33109  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
33110      composeDomainResourceElements(element);
33111      if (element.hasMasterIdentifier()) {
33112        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
33113      }
33114      if (element.hasIdentifier()) { 
33115        for (Identifier e : element.getIdentifier()) 
33116          composeIdentifier("identifier", e);
33117      }
33118      if (element.hasStatusElement())
33119        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
33120      if (element.hasDocStatusElement())
33121        composeEnumeration("docStatus", element.getDocStatusElement(), new DocumentReference.ReferredDocumentStatusEnumFactory());
33122      if (element.hasType()) {
33123        composeCodeableConcept("type", element.getType());
33124      }
33125      if (element.hasCategory()) { 
33126        for (CodeableConcept e : element.getCategory()) 
33127          composeCodeableConcept("category", e);
33128      }
33129      if (element.hasSubject()) {
33130        composeReference("subject", element.getSubject());
33131      }
33132      if (element.hasDateElement()) {
33133        composeInstant("date", element.getDateElement());
33134      }
33135      if (element.hasAgent()) { 
33136        for (DocumentReference.DocumentReferenceAgentComponent e : element.getAgent()) 
33137          composeDocumentReferenceDocumentReferenceAgentComponent("agent", e);
33138      }
33139      if (element.hasAuthenticator()) {
33140        composeReference("authenticator", element.getAuthenticator());
33141      }
33142      if (element.hasCustodian()) {
33143        composeReference("custodian", element.getCustodian());
33144      }
33145      if (element.hasRelatesTo()) { 
33146        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
33147          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
33148      }
33149      if (element.hasDescriptionElement()) {
33150        composeString("description", element.getDescriptionElement());
33151      }
33152      if (element.hasSecurityLabel()) { 
33153        for (CodeableConcept e : element.getSecurityLabel()) 
33154          composeCodeableConcept("securityLabel", e);
33155      }
33156      if (element.hasContent()) { 
33157        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
33158          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
33159      }
33160      if (element.hasContext()) {
33161        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
33162      }
33163  }
33164
33165  protected void composeDocumentReferenceDocumentReferenceAgentComponent(String name, DocumentReference.DocumentReferenceAgentComponent element) throws IOException {
33166    if (element != null) {
33167      composeElementAttributes(element);
33168      xml.enter(FHIR_NS, name);
33169      composeDocumentReferenceDocumentReferenceAgentComponentElements(element);
33170      composeElementClose(element);
33171      xml.exit(FHIR_NS, name);
33172    }
33173  }
33174
33175  protected void composeDocumentReferenceDocumentReferenceAgentComponentElements(DocumentReference.DocumentReferenceAgentComponent element) throws IOException {
33176      composeBackboneElementElements(element);
33177      if (element.hasType()) {
33178        composeCodeableConcept("type", element.getType());
33179      }
33180      if (element.hasWho()) {
33181        composeReference("who", element.getWho());
33182      }
33183  }
33184
33185  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
33186    if (element != null) {
33187      composeElementAttributes(element);
33188      xml.enter(FHIR_NS, name);
33189      composeDocumentReferenceDocumentReferenceRelatesToComponentElements(element);
33190      composeElementClose(element);
33191      xml.exit(FHIR_NS, name);
33192    }
33193  }
33194
33195  protected void composeDocumentReferenceDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
33196      composeBackboneElementElements(element);
33197      if (element.hasCodeElement())
33198        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
33199      if (element.hasTarget()) {
33200        composeReference("target", element.getTarget());
33201      }
33202  }
33203
33204  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
33205    if (element != null) {
33206      composeElementAttributes(element);
33207      xml.enter(FHIR_NS, name);
33208      composeDocumentReferenceDocumentReferenceContentComponentElements(element);
33209      composeElementClose(element);
33210      xml.exit(FHIR_NS, name);
33211    }
33212  }
33213
33214  protected void composeDocumentReferenceDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
33215      composeBackboneElementElements(element);
33216      if (element.hasAttachment()) {
33217        composeAttachment("attachment", element.getAttachment());
33218      }
33219      if (element.hasFormat()) {
33220        composeCoding("format", element.getFormat());
33221      }
33222  }
33223
33224  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
33225    if (element != null) {
33226      composeElementAttributes(element);
33227      xml.enter(FHIR_NS, name);
33228      composeDocumentReferenceDocumentReferenceContextComponentElements(element);
33229      composeElementClose(element);
33230      xml.exit(FHIR_NS, name);
33231    }
33232  }
33233
33234  protected void composeDocumentReferenceDocumentReferenceContextComponentElements(DocumentReference.DocumentReferenceContextComponent element) throws IOException {
33235      composeBackboneElementElements(element);
33236      if (element.hasEncounter()) { 
33237        for (Reference e : element.getEncounter()) 
33238          composeReference("encounter", e);
33239      }
33240      if (element.hasEvent()) { 
33241        for (CodeableConcept e : element.getEvent()) 
33242          composeCodeableConcept("event", e);
33243      }
33244      if (element.hasPeriod()) {
33245        composePeriod("period", element.getPeriod());
33246      }
33247      if (element.hasFacilityType()) {
33248        composeCodeableConcept("facilityType", element.getFacilityType());
33249      }
33250      if (element.hasPracticeSetting()) {
33251        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
33252      }
33253      if (element.hasSourcePatientInfo()) {
33254        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
33255      }
33256      if (element.hasRelated()) { 
33257        for (Reference e : element.getRelated()) 
33258          composeReference("related", e);
33259      }
33260  }
33261
33262  protected void composeEncounter(String name, Encounter element) throws IOException {
33263    if (element != null) {
33264      composeDomainResourceAttributes(element);
33265      xml.enter(FHIR_NS, name);
33266      composeEncounterElements(element);
33267      composeElementClose(element);
33268      xml.exit(FHIR_NS, name);
33269    }
33270  }
33271
33272  protected void composeEncounterElements(Encounter element) throws IOException {
33273      composeDomainResourceElements(element);
33274      if (element.hasIdentifier()) { 
33275        for (Identifier e : element.getIdentifier()) 
33276          composeIdentifier("identifier", e);
33277      }
33278      if (element.hasStatusElement())
33279        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
33280      if (element.hasStatusHistory()) { 
33281        for (Encounter.StatusHistoryComponent e : element.getStatusHistory()) 
33282          composeEncounterStatusHistoryComponent("statusHistory", e);
33283      }
33284      if (element.hasClass_()) {
33285        composeCoding("class", element.getClass_());
33286      }
33287      if (element.hasClassHistory()) { 
33288        for (Encounter.ClassHistoryComponent e : element.getClassHistory()) 
33289          composeEncounterClassHistoryComponent("classHistory", e);
33290      }
33291      if (element.hasType()) { 
33292        for (CodeableConcept e : element.getType()) 
33293          composeCodeableConcept("type", e);
33294      }
33295      if (element.hasServiceType()) {
33296        composeCodeableConcept("serviceType", element.getServiceType());
33297      }
33298      if (element.hasPriority()) {
33299        composeCodeableConcept("priority", element.getPriority());
33300      }
33301      if (element.hasSubject()) {
33302        composeReference("subject", element.getSubject());
33303      }
33304      if (element.hasEpisodeOfCare()) { 
33305        for (Reference e : element.getEpisodeOfCare()) 
33306          composeReference("episodeOfCare", e);
33307      }
33308      if (element.hasBasedOn()) { 
33309        for (Reference e : element.getBasedOn()) 
33310          composeReference("basedOn", e);
33311      }
33312      if (element.hasParticipant()) { 
33313        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
33314          composeEncounterEncounterParticipantComponent("participant", e);
33315      }
33316      if (element.hasAppointment()) {
33317        composeReference("appointment", element.getAppointment());
33318      }
33319      if (element.hasPeriod()) {
33320        composePeriod("period", element.getPeriod());
33321      }
33322      if (element.hasLength()) {
33323        composeDuration("length", element.getLength());
33324      }
33325      if (element.hasReason()) { 
33326        for (CodeableConcept e : element.getReason()) 
33327          composeCodeableConcept("reason", e);
33328      }
33329      if (element.hasDiagnosis()) { 
33330        for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
33331          composeEncounterDiagnosisComponent("diagnosis", e);
33332      }
33333      if (element.hasAccount()) { 
33334        for (Reference e : element.getAccount()) 
33335          composeReference("account", e);
33336      }
33337      if (element.hasHospitalization()) {
33338        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
33339      }
33340      if (element.hasLocation()) { 
33341        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
33342          composeEncounterEncounterLocationComponent("location", e);
33343      }
33344      if (element.hasServiceProvider()) {
33345        composeReference("serviceProvider", element.getServiceProvider());
33346      }
33347      if (element.hasPartOf()) {
33348        composeReference("partOf", element.getPartOf());
33349      }
33350  }
33351
33352  protected void composeEncounterStatusHistoryComponent(String name, Encounter.StatusHistoryComponent element) throws IOException {
33353    if (element != null) {
33354      composeElementAttributes(element);
33355      xml.enter(FHIR_NS, name);
33356      composeEncounterStatusHistoryComponentElements(element);
33357      composeElementClose(element);
33358      xml.exit(FHIR_NS, name);
33359    }
33360  }
33361
33362  protected void composeEncounterStatusHistoryComponentElements(Encounter.StatusHistoryComponent element) throws IOException {
33363      composeBackboneElementElements(element);
33364      if (element.hasStatusElement())
33365        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
33366      if (element.hasPeriod()) {
33367        composePeriod("period", element.getPeriod());
33368      }
33369  }
33370
33371  protected void composeEncounterClassHistoryComponent(String name, Encounter.ClassHistoryComponent element) throws IOException {
33372    if (element != null) {
33373      composeElementAttributes(element);
33374      xml.enter(FHIR_NS, name);
33375      composeEncounterClassHistoryComponentElements(element);
33376      composeElementClose(element);
33377      xml.exit(FHIR_NS, name);
33378    }
33379  }
33380
33381  protected void composeEncounterClassHistoryComponentElements(Encounter.ClassHistoryComponent element) throws IOException {
33382      composeBackboneElementElements(element);
33383      if (element.hasClass_()) {
33384        composeCoding("class", element.getClass_());
33385      }
33386      if (element.hasPeriod()) {
33387        composePeriod("period", element.getPeriod());
33388      }
33389  }
33390
33391  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
33392    if (element != null) {
33393      composeElementAttributes(element);
33394      xml.enter(FHIR_NS, name);
33395      composeEncounterEncounterParticipantComponentElements(element);
33396      composeElementClose(element);
33397      xml.exit(FHIR_NS, name);
33398    }
33399  }
33400
33401  protected void composeEncounterEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
33402      composeBackboneElementElements(element);
33403      if (element.hasType()) { 
33404        for (CodeableConcept e : element.getType()) 
33405          composeCodeableConcept("type", e);
33406      }
33407      if (element.hasPeriod()) {
33408        composePeriod("period", element.getPeriod());
33409      }
33410      if (element.hasIndividual()) {
33411        composeReference("individual", element.getIndividual());
33412      }
33413  }
33414
33415  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
33416    if (element != null) {
33417      composeElementAttributes(element);
33418      xml.enter(FHIR_NS, name);
33419      composeEncounterDiagnosisComponentElements(element);
33420      composeElementClose(element);
33421      xml.exit(FHIR_NS, name);
33422    }
33423  }
33424
33425  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
33426      composeBackboneElementElements(element);
33427      if (element.hasCondition()) {
33428        composeReference("condition", element.getCondition());
33429      }
33430      if (element.hasRole()) {
33431        composeCodeableConcept("role", element.getRole());
33432      }
33433      if (element.hasRankElement()) {
33434        composePositiveInt("rank", element.getRankElement());
33435      }
33436  }
33437
33438  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
33439    if (element != null) {
33440      composeElementAttributes(element);
33441      xml.enter(FHIR_NS, name);
33442      composeEncounterEncounterHospitalizationComponentElements(element);
33443      composeElementClose(element);
33444      xml.exit(FHIR_NS, name);
33445    }
33446  }
33447
33448  protected void composeEncounterEncounterHospitalizationComponentElements(Encounter.EncounterHospitalizationComponent element) throws IOException {
33449      composeBackboneElementElements(element);
33450      if (element.hasPreAdmissionIdentifier()) {
33451        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
33452      }
33453      if (element.hasOrigin()) {
33454        composeReference("origin", element.getOrigin());
33455      }
33456      if (element.hasAdmitSource()) {
33457        composeCodeableConcept("admitSource", element.getAdmitSource());
33458      }
33459      if (element.hasReAdmission()) {
33460        composeCodeableConcept("reAdmission", element.getReAdmission());
33461      }
33462      if (element.hasDietPreference()) { 
33463        for (CodeableConcept e : element.getDietPreference()) 
33464          composeCodeableConcept("dietPreference", e);
33465      }
33466      if (element.hasSpecialCourtesy()) { 
33467        for (CodeableConcept e : element.getSpecialCourtesy()) 
33468          composeCodeableConcept("specialCourtesy", e);
33469      }
33470      if (element.hasSpecialArrangement()) { 
33471        for (CodeableConcept e : element.getSpecialArrangement()) 
33472          composeCodeableConcept("specialArrangement", e);
33473      }
33474      if (element.hasDestination()) {
33475        composeReference("destination", element.getDestination());
33476      }
33477      if (element.hasDischargeDisposition()) {
33478        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
33479      }
33480  }
33481
33482  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
33483    if (element != null) {
33484      composeElementAttributes(element);
33485      xml.enter(FHIR_NS, name);
33486      composeEncounterEncounterLocationComponentElements(element);
33487      composeElementClose(element);
33488      xml.exit(FHIR_NS, name);
33489    }
33490  }
33491
33492  protected void composeEncounterEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
33493      composeBackboneElementElements(element);
33494      if (element.hasLocation()) {
33495        composeReference("location", element.getLocation());
33496      }
33497      if (element.hasStatusElement())
33498        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
33499      if (element.hasPeriod()) {
33500        composePeriod("period", element.getPeriod());
33501      }
33502  }
33503
33504  protected void composeEndpoint(String name, Endpoint element) throws IOException {
33505    if (element != null) {
33506      composeDomainResourceAttributes(element);
33507      xml.enter(FHIR_NS, name);
33508      composeEndpointElements(element);
33509      composeElementClose(element);
33510      xml.exit(FHIR_NS, name);
33511    }
33512  }
33513
33514  protected void composeEndpointElements(Endpoint element) throws IOException {
33515      composeDomainResourceElements(element);
33516      if (element.hasIdentifier()) { 
33517        for (Identifier e : element.getIdentifier()) 
33518          composeIdentifier("identifier", e);
33519      }
33520      if (element.hasStatusElement())
33521        composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
33522      if (element.hasConnectionType()) {
33523        composeCoding("connectionType", element.getConnectionType());
33524      }
33525      if (element.hasNameElement()) {
33526        composeString("name", element.getNameElement());
33527      }
33528      if (element.hasManagingOrganization()) {
33529        composeReference("managingOrganization", element.getManagingOrganization());
33530      }
33531      if (element.hasContact()) { 
33532        for (ContactPoint e : element.getContact()) 
33533          composeContactPoint("contact", e);
33534      }
33535      if (element.hasPeriod()) {
33536        composePeriod("period", element.getPeriod());
33537      }
33538      if (element.hasPayloadType()) { 
33539        for (CodeableConcept e : element.getPayloadType()) 
33540          composeCodeableConcept("payloadType", e);
33541      }
33542      if (element.hasPayloadMimeType()) { 
33543        for (CodeType e : element.getPayloadMimeType()) 
33544          composeCode("payloadMimeType", e);
33545      }
33546      if (element.hasAddressElement()) {
33547        composeUrl("address", element.getAddressElement());
33548      }
33549      if (element.hasHeader()) { 
33550        for (StringType e : element.getHeader()) 
33551          composeString("header", e);
33552      }
33553  }
33554
33555  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
33556    if (element != null) {
33557      composeDomainResourceAttributes(element);
33558      xml.enter(FHIR_NS, name);
33559      composeEnrollmentRequestElements(element);
33560      composeElementClose(element);
33561      xml.exit(FHIR_NS, name);
33562    }
33563  }
33564
33565  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
33566      composeDomainResourceElements(element);
33567      if (element.hasIdentifier()) { 
33568        for (Identifier e : element.getIdentifier()) 
33569          composeIdentifier("identifier", e);
33570      }
33571      if (element.hasStatusElement())
33572        composeEnumeration("status", element.getStatusElement(), new EnrollmentRequest.EnrollmentRequestStatusEnumFactory());
33573      if (element.hasCreatedElement()) {
33574        composeDateTime("created", element.getCreatedElement());
33575      }
33576      if (element.hasInsurer()) {
33577        composeReference("insurer", element.getInsurer());
33578      }
33579      if (element.hasProvider()) {
33580        composeReference("provider", element.getProvider());
33581      }
33582      if (element.hasCandidate()) {
33583        composeReference("candidate", element.getCandidate());
33584      }
33585      if (element.hasCoverage()) {
33586        composeReference("coverage", element.getCoverage());
33587      }
33588  }
33589
33590  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
33591    if (element != null) {
33592      composeDomainResourceAttributes(element);
33593      xml.enter(FHIR_NS, name);
33594      composeEnrollmentResponseElements(element);
33595      composeElementClose(element);
33596      xml.exit(FHIR_NS, name);
33597    }
33598  }
33599
33600  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
33601      composeDomainResourceElements(element);
33602      if (element.hasIdentifier()) { 
33603        for (Identifier e : element.getIdentifier()) 
33604          composeIdentifier("identifier", e);
33605      }
33606      if (element.hasStatusElement())
33607        composeEnumeration("status", element.getStatusElement(), new EnrollmentResponse.EnrollmentResponseStatusEnumFactory());
33608      if (element.hasRequest()) {
33609        composeReference("request", element.getRequest());
33610      }
33611      if (element.hasOutcomeElement())
33612        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
33613      if (element.hasDispositionElement()) {
33614        composeString("disposition", element.getDispositionElement());
33615      }
33616      if (element.hasCreatedElement()) {
33617        composeDateTime("created", element.getCreatedElement());
33618      }
33619      if (element.hasOrganization()) {
33620        composeReference("organization", element.getOrganization());
33621      }
33622      if (element.hasRequestProvider()) {
33623        composeReference("requestProvider", element.getRequestProvider());
33624      }
33625  }
33626
33627  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
33628    if (element != null) {
33629      composeDomainResourceAttributes(element);
33630      xml.enter(FHIR_NS, name);
33631      composeEpisodeOfCareElements(element);
33632      composeElementClose(element);
33633      xml.exit(FHIR_NS, name);
33634    }
33635  }
33636
33637  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
33638      composeDomainResourceElements(element);
33639      if (element.hasIdentifier()) { 
33640        for (Identifier e : element.getIdentifier()) 
33641          composeIdentifier("identifier", e);
33642      }
33643      if (element.hasStatusElement())
33644        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
33645      if (element.hasStatusHistory()) { 
33646        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
33647          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
33648      }
33649      if (element.hasType()) { 
33650        for (CodeableConcept e : element.getType()) 
33651          composeCodeableConcept("type", e);
33652      }
33653      if (element.hasDiagnosis()) { 
33654        for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
33655          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
33656      }
33657      if (element.hasPatient()) {
33658        composeReference("patient", element.getPatient());
33659      }
33660      if (element.hasManagingOrganization()) {
33661        composeReference("managingOrganization", element.getManagingOrganization());
33662      }
33663      if (element.hasPeriod()) {
33664        composePeriod("period", element.getPeriod());
33665      }
33666      if (element.hasReferralRequest()) { 
33667        for (Reference e : element.getReferralRequest()) 
33668          composeReference("referralRequest", e);
33669      }
33670      if (element.hasCareManager()) {
33671        composeReference("careManager", element.getCareManager());
33672      }
33673      if (element.hasTeam()) { 
33674        for (Reference e : element.getTeam()) 
33675          composeReference("team", e);
33676      }
33677      if (element.hasAccount()) { 
33678        for (Reference e : element.getAccount()) 
33679          composeReference("account", e);
33680      }
33681  }
33682
33683  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
33684    if (element != null) {
33685      composeElementAttributes(element);
33686      xml.enter(FHIR_NS, name);
33687      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(element);
33688      composeElementClose(element);
33689      xml.exit(FHIR_NS, name);
33690    }
33691  }
33692
33693  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
33694      composeBackboneElementElements(element);
33695      if (element.hasStatusElement())
33696        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
33697      if (element.hasPeriod()) {
33698        composePeriod("period", element.getPeriod());
33699      }
33700  }
33701
33702  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
33703    if (element != null) {
33704      composeElementAttributes(element);
33705      xml.enter(FHIR_NS, name);
33706      composeEpisodeOfCareDiagnosisComponentElements(element);
33707      composeElementClose(element);
33708      xml.exit(FHIR_NS, name);
33709    }
33710  }
33711
33712  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
33713      composeBackboneElementElements(element);
33714      if (element.hasCondition()) {
33715        composeReference("condition", element.getCondition());
33716      }
33717      if (element.hasRole()) {
33718        composeCodeableConcept("role", element.getRole());
33719      }
33720      if (element.hasRankElement()) {
33721        composePositiveInt("rank", element.getRankElement());
33722      }
33723  }
33724
33725  protected void composeEventDefinition(String name, EventDefinition element) throws IOException {
33726    if (element != null) {
33727      composeDomainResourceAttributes(element);
33728      xml.enter(FHIR_NS, name);
33729      composeEventDefinitionElements(element);
33730      composeElementClose(element);
33731      xml.exit(FHIR_NS, name);
33732    }
33733  }
33734
33735  protected void composeEventDefinitionElements(EventDefinition element) throws IOException {
33736      composeDomainResourceElements(element);
33737      if (element.hasUrlElement()) {
33738        composeUri("url", element.getUrlElement());
33739      }
33740      if (element.hasIdentifier()) { 
33741        for (Identifier e : element.getIdentifier()) 
33742          composeIdentifier("identifier", e);
33743      }
33744      if (element.hasVersionElement()) {
33745        composeString("version", element.getVersionElement());
33746      }
33747      if (element.hasNameElement()) {
33748        composeString("name", element.getNameElement());
33749      }
33750      if (element.hasTitleElement()) {
33751        composeString("title", element.getTitleElement());
33752      }
33753      if (element.hasSubtitleElement()) {
33754        composeString("subtitle", element.getSubtitleElement());
33755      }
33756      if (element.hasStatusElement())
33757        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33758      if (element.hasExperimentalElement()) {
33759        composeBoolean("experimental", element.getExperimentalElement());
33760      }
33761      if (element.hasSubject()) {
33762        composeType("subject", element.getSubject());
33763      }      if (element.hasDateElement()) {
33764        composeDateTime("date", element.getDateElement());
33765      }
33766      if (element.hasPublisherElement()) {
33767        composeString("publisher", element.getPublisherElement());
33768      }
33769      if (element.hasContact()) { 
33770        for (ContactDetail e : element.getContact()) 
33771          composeContactDetail("contact", e);
33772      }
33773      if (element.hasDescriptionElement()) {
33774        composeMarkdown("description", element.getDescriptionElement());
33775      }
33776      if (element.hasUseContext()) { 
33777        for (UsageContext e : element.getUseContext()) 
33778          composeUsageContext("useContext", e);
33779      }
33780      if (element.hasJurisdiction()) { 
33781        for (CodeableConcept e : element.getJurisdiction()) 
33782          composeCodeableConcept("jurisdiction", e);
33783      }
33784      if (element.hasPurposeElement()) {
33785        composeMarkdown("purpose", element.getPurposeElement());
33786      }
33787      if (element.hasUsageElement()) {
33788        composeString("usage", element.getUsageElement());
33789      }
33790      if (element.hasCopyrightElement()) {
33791        composeMarkdown("copyright", element.getCopyrightElement());
33792      }
33793      if (element.hasApprovalDateElement()) {
33794        composeDate("approvalDate", element.getApprovalDateElement());
33795      }
33796      if (element.hasLastReviewDateElement()) {
33797        composeDate("lastReviewDate", element.getLastReviewDateElement());
33798      }
33799      if (element.hasEffectivePeriod()) {
33800        composePeriod("effectivePeriod", element.getEffectivePeriod());
33801      }
33802      if (element.hasTopic()) { 
33803        for (CodeableConcept e : element.getTopic()) 
33804          composeCodeableConcept("topic", e);
33805      }
33806      if (element.hasAuthor()) { 
33807        for (ContactDetail e : element.getAuthor()) 
33808          composeContactDetail("author", e);
33809      }
33810      if (element.hasEditor()) { 
33811        for (ContactDetail e : element.getEditor()) 
33812          composeContactDetail("editor", e);
33813      }
33814      if (element.hasReviewer()) { 
33815        for (ContactDetail e : element.getReviewer()) 
33816          composeContactDetail("reviewer", e);
33817      }
33818      if (element.hasEndorser()) { 
33819        for (ContactDetail e : element.getEndorser()) 
33820          composeContactDetail("endorser", e);
33821      }
33822      if (element.hasRelatedArtifact()) { 
33823        for (RelatedArtifact e : element.getRelatedArtifact()) 
33824          composeRelatedArtifact("relatedArtifact", e);
33825      }
33826      if (element.hasTrigger()) {
33827        composeTriggerDefinition("trigger", element.getTrigger());
33828      }
33829  }
33830
33831  protected void composeExampleScenario(String name, ExampleScenario element) throws IOException {
33832    if (element != null) {
33833      composeDomainResourceAttributes(element);
33834      xml.enter(FHIR_NS, name);
33835      composeExampleScenarioElements(element);
33836      composeElementClose(element);
33837      xml.exit(FHIR_NS, name);
33838    }
33839  }
33840
33841  protected void composeExampleScenarioElements(ExampleScenario element) throws IOException {
33842      composeDomainResourceElements(element);
33843      if (element.hasUrlElement()) {
33844        composeUri("url", element.getUrlElement());
33845      }
33846      if (element.hasIdentifier()) { 
33847        for (Identifier e : element.getIdentifier()) 
33848          composeIdentifier("identifier", e);
33849      }
33850      if (element.hasVersionElement()) {
33851        composeString("version", element.getVersionElement());
33852      }
33853      if (element.hasNameElement()) {
33854        composeString("name", element.getNameElement());
33855      }
33856      if (element.hasStatusElement())
33857        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33858      if (element.hasExperimentalElement()) {
33859        composeBoolean("experimental", element.getExperimentalElement());
33860      }
33861      if (element.hasDateElement()) {
33862        composeDateTime("date", element.getDateElement());
33863      }
33864      if (element.hasPublisherElement()) {
33865        composeString("publisher", element.getPublisherElement());
33866      }
33867      if (element.hasContact()) { 
33868        for (ContactDetail e : element.getContact()) 
33869          composeContactDetail("contact", e);
33870      }
33871      if (element.hasUseContext()) { 
33872        for (UsageContext e : element.getUseContext()) 
33873          composeUsageContext("useContext", e);
33874      }
33875      if (element.hasJurisdiction()) { 
33876        for (CodeableConcept e : element.getJurisdiction()) 
33877          composeCodeableConcept("jurisdiction", e);
33878      }
33879      if (element.hasCopyrightElement()) {
33880        composeMarkdown("copyright", element.getCopyrightElement());
33881      }
33882      if (element.hasPurposeElement()) {
33883        composeMarkdown("purpose", element.getPurposeElement());
33884      }
33885      if (element.hasActor()) { 
33886        for (ExampleScenario.ExampleScenarioActorComponent e : element.getActor()) 
33887          composeExampleScenarioExampleScenarioActorComponent("actor", e);
33888      }
33889      if (element.hasInstance()) { 
33890        for (ExampleScenario.ExampleScenarioInstanceComponent e : element.getInstance()) 
33891          composeExampleScenarioExampleScenarioInstanceComponent("instance", e);
33892      }
33893      if (element.hasProcess()) { 
33894        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
33895          composeExampleScenarioExampleScenarioProcessComponent("process", e);
33896      }
33897      if (element.hasWorkflow()) { 
33898        for (CanonicalType e : element.getWorkflow()) 
33899          composeCanonical("workflow", e);
33900      }
33901  }
33902
33903  protected void composeExampleScenarioExampleScenarioActorComponent(String name, ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
33904    if (element != null) {
33905      composeElementAttributes(element);
33906      xml.enter(FHIR_NS, name);
33907      composeExampleScenarioExampleScenarioActorComponentElements(element);
33908      composeElementClose(element);
33909      xml.exit(FHIR_NS, name);
33910    }
33911  }
33912
33913  protected void composeExampleScenarioExampleScenarioActorComponentElements(ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
33914      composeBackboneElementElements(element);
33915      if (element.hasActorIdElement()) {
33916        composeString("actorId", element.getActorIdElement());
33917      }
33918      if (element.hasTypeElement())
33919        composeEnumeration("type", element.getTypeElement(), new ExampleScenario.ExampleScenarioActorTypeEnumFactory());
33920      if (element.hasNameElement()) {
33921        composeString("name", element.getNameElement());
33922      }
33923      if (element.hasDescriptionElement()) {
33924        composeMarkdown("description", element.getDescriptionElement());
33925      }
33926  }
33927
33928  protected void composeExampleScenarioExampleScenarioInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
33929    if (element != null) {
33930      composeElementAttributes(element);
33931      xml.enter(FHIR_NS, name);
33932      composeExampleScenarioExampleScenarioInstanceComponentElements(element);
33933      composeElementClose(element);
33934      xml.exit(FHIR_NS, name);
33935    }
33936  }
33937
33938  protected void composeExampleScenarioExampleScenarioInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
33939      composeBackboneElementElements(element);
33940      if (element.hasResourceIdElement()) {
33941        composeString("resourceId", element.getResourceIdElement());
33942      }
33943      if (element.hasResourceTypeElement())
33944        composeEnumeration("resourceType", element.getResourceTypeElement(), new ExampleScenario.FHIRResourceTypeEnumFactory());
33945      if (element.hasNameElement()) {
33946        composeString("name", element.getNameElement());
33947      }
33948      if (element.hasDescriptionElement()) {
33949        composeMarkdown("description", element.getDescriptionElement());
33950      }
33951      if (element.hasVersion()) { 
33952        for (ExampleScenario.ExampleScenarioInstanceVersionComponent e : element.getVersion()) 
33953          composeExampleScenarioExampleScenarioInstanceVersionComponent("version", e);
33954      }
33955      if (element.hasContainedInstance()) { 
33956        for (ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent e : element.getContainedInstance()) 
33957          composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("containedInstance", e);
33958      }
33959  }
33960
33961  protected void composeExampleScenarioExampleScenarioInstanceVersionComponent(String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
33962    if (element != null) {
33963      composeElementAttributes(element);
33964      xml.enter(FHIR_NS, name);
33965      composeExampleScenarioExampleScenarioInstanceVersionComponentElements(element);
33966      composeElementClose(element);
33967      xml.exit(FHIR_NS, name);
33968    }
33969  }
33970
33971  protected void composeExampleScenarioExampleScenarioInstanceVersionComponentElements(ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
33972      composeBackboneElementElements(element);
33973      if (element.hasVersionIdElement()) {
33974        composeString("versionId", element.getVersionIdElement());
33975      }
33976      if (element.hasDescriptionElement()) {
33977        composeMarkdown("description", element.getDescriptionElement());
33978      }
33979  }
33980
33981  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
33982    if (element != null) {
33983      composeElementAttributes(element);
33984      xml.enter(FHIR_NS, name);
33985      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(element);
33986      composeElementClose(element);
33987      xml.exit(FHIR_NS, name);
33988    }
33989  }
33990
33991  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
33992      composeBackboneElementElements(element);
33993      if (element.hasResourceIdElement()) {
33994        composeString("resourceId", element.getResourceIdElement());
33995      }
33996      if (element.hasVersionIdElement()) {
33997        composeString("versionId", element.getVersionIdElement());
33998      }
33999  }
34000
34001  protected void composeExampleScenarioExampleScenarioProcessComponent(String name, ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
34002    if (element != null) {
34003      composeElementAttributes(element);
34004      xml.enter(FHIR_NS, name);
34005      composeExampleScenarioExampleScenarioProcessComponentElements(element);
34006      composeElementClose(element);
34007      xml.exit(FHIR_NS, name);
34008    }
34009  }
34010
34011  protected void composeExampleScenarioExampleScenarioProcessComponentElements(ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
34012      composeBackboneElementElements(element);
34013      if (element.hasTitleElement()) {
34014        composeString("title", element.getTitleElement());
34015      }
34016      if (element.hasDescriptionElement()) {
34017        composeMarkdown("description", element.getDescriptionElement());
34018      }
34019      if (element.hasPreConditionsElement()) {
34020        composeMarkdown("preConditions", element.getPreConditionsElement());
34021      }
34022      if (element.hasPostConditionsElement()) {
34023        composeMarkdown("postConditions", element.getPostConditionsElement());
34024      }
34025      if (element.hasStep()) { 
34026        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
34027          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
34028      }
34029  }
34030
34031  protected void composeExampleScenarioExampleScenarioProcessStepComponent(String name, ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
34032    if (element != null) {
34033      composeElementAttributes(element);
34034      xml.enter(FHIR_NS, name);
34035      composeExampleScenarioExampleScenarioProcessStepComponentElements(element);
34036      composeElementClose(element);
34037      xml.exit(FHIR_NS, name);
34038    }
34039  }
34040
34041  protected void composeExampleScenarioExampleScenarioProcessStepComponentElements(ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
34042      composeBackboneElementElements(element);
34043      if (element.hasProcess()) { 
34044        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
34045          composeExampleScenarioExampleScenarioProcessComponent("process", e);
34046      }
34047      if (element.hasPauseElement()) {
34048        composeBoolean("pause", element.getPauseElement());
34049      }
34050      if (element.hasOperation()) {
34051        composeExampleScenarioExampleScenarioProcessStepOperationComponent("operation", element.getOperation());
34052      }
34053      if (element.hasAlternative()) {
34054        composeExampleScenarioExampleScenarioProcessStepAlternativeComponent("alternative", element.getAlternative());
34055      }
34056  }
34057
34058  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponent(String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
34059    if (element != null) {
34060      composeElementAttributes(element);
34061      xml.enter(FHIR_NS, name);
34062      composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(element);
34063      composeElementClose(element);
34064      xml.exit(FHIR_NS, name);
34065    }
34066  }
34067
34068  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
34069      composeBackboneElementElements(element);
34070      if (element.hasNumberElement()) {
34071        composeString("number", element.getNumberElement());
34072      }
34073      if (element.hasTypeElement()) {
34074        composeString("type", element.getTypeElement());
34075      }
34076      if (element.hasNameElement()) {
34077        composeString("name", element.getNameElement());
34078      }
34079      if (element.hasInitiatorElement()) {
34080        composeString("initiator", element.getInitiatorElement());
34081      }
34082      if (element.hasReceiverElement()) {
34083        composeString("receiver", element.getReceiverElement());
34084      }
34085      if (element.hasDescriptionElement()) {
34086        composeMarkdown("description", element.getDescriptionElement());
34087      }
34088      if (element.hasInitiatorActiveElement()) {
34089        composeBoolean("initiatorActive", element.getInitiatorActiveElement());
34090      }
34091      if (element.hasReceiverActiveElement()) {
34092        composeBoolean("receiverActive", element.getReceiverActiveElement());
34093      }
34094      if (element.hasRequest()) {
34095        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("request", element.getRequest());
34096      }
34097      if (element.hasResponse()) {
34098        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("response", element.getResponse());
34099      }
34100  }
34101
34102  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
34103    if (element != null) {
34104      composeElementAttributes(element);
34105      xml.enter(FHIR_NS, name);
34106      composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(element);
34107      composeElementClose(element);
34108      xml.exit(FHIR_NS, name);
34109    }
34110  }
34111
34112  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
34113      composeBackboneElementElements(element);
34114      if (element.hasNameElement()) {
34115        composeString("name", element.getNameElement());
34116      }
34117      if (element.hasOption()) { 
34118        for (ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent e : element.getOption()) 
34119          composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent("option", e);
34120      }
34121  }
34122
34123  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent element) throws IOException {
34124    if (element != null) {
34125      composeElementAttributes(element);
34126      xml.enter(FHIR_NS, name);
34127      composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponentElements(element);
34128      composeElementClose(element);
34129      xml.exit(FHIR_NS, name);
34130    }
34131  }
34132
34133  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeOptionComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeOptionComponent element) throws IOException {
34134      composeBackboneElementElements(element);
34135      if (element.hasDescriptionElement()) {
34136        composeMarkdown("description", element.getDescriptionElement());
34137      }
34138      if (element.hasStep()) { 
34139        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
34140          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
34141      }
34142      if (element.hasPause()) { 
34143        for (BooleanType e : element.getPause()) 
34144          composeBoolean("pause", e);
34145      }
34146  }
34147
34148  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
34149    if (element != null) {
34150      composeDomainResourceAttributes(element);
34151      xml.enter(FHIR_NS, name);
34152      composeExplanationOfBenefitElements(element);
34153      composeElementClose(element);
34154      xml.exit(FHIR_NS, name);
34155    }
34156  }
34157
34158  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
34159      composeDomainResourceElements(element);
34160      if (element.hasIdentifier()) { 
34161        for (Identifier e : element.getIdentifier()) 
34162          composeIdentifier("identifier", e);
34163      }
34164      if (element.hasStatusElement())
34165        composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
34166      if (element.hasType()) {
34167        composeCodeableConcept("type", element.getType());
34168      }
34169      if (element.hasSubType()) {
34170        composeCodeableConcept("subType", element.getSubType());
34171      }
34172      if (element.hasUseElement())
34173        composeEnumeration("use", element.getUseElement(), new ExplanationOfBenefit.UseEnumFactory());
34174      if (element.hasPatient()) {
34175        composeReference("patient", element.getPatient());
34176      }
34177      if (element.hasBillablePeriod()) {
34178        composePeriod("billablePeriod", element.getBillablePeriod());
34179      }
34180      if (element.hasCreatedElement()) {
34181        composeDateTime("created", element.getCreatedElement());
34182      }
34183      if (element.hasEnterer()) {
34184        composeReference("enterer", element.getEnterer());
34185      }
34186      if (element.hasInsurer()) {
34187        composeReference("insurer", element.getInsurer());
34188      }
34189      if (element.hasProvider()) {
34190        composeReference("provider", element.getProvider());
34191      }
34192      if (element.hasReferral()) {
34193        composeReference("referral", element.getReferral());
34194      }
34195      if (element.hasFacility()) {
34196        composeReference("facility", element.getFacility());
34197      }
34198      if (element.hasClaim()) {
34199        composeReference("claim", element.getClaim());
34200      }
34201      if (element.hasClaimResponse()) {
34202        composeReference("claimResponse", element.getClaimResponse());
34203      }
34204      if (element.hasOutcomeElement())
34205        composeEnumeration("outcome", element.getOutcomeElement(), new ExplanationOfBenefit.RemittanceOutcomeEnumFactory());
34206      if (element.hasDispositionElement()) {
34207        composeString("disposition", element.getDispositionElement());
34208      }
34209      if (element.hasRelated()) { 
34210        for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
34211          composeExplanationOfBenefitRelatedClaimComponent("related", e);
34212      }
34213      if (element.hasPrescription()) {
34214        composeReference("prescription", element.getPrescription());
34215      }
34216      if (element.hasOriginalPrescription()) {
34217        composeReference("originalPrescription", element.getOriginalPrescription());
34218      }
34219      if (element.hasPayee()) {
34220        composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
34221      }
34222      if (element.hasInformation()) { 
34223        for (ExplanationOfBenefit.SupportingInformationComponent e : element.getInformation()) 
34224          composeExplanationOfBenefitSupportingInformationComponent("information", e);
34225      }
34226      if (element.hasCareTeam()) { 
34227        for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
34228          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
34229      }
34230      if (element.hasDiagnosis()) { 
34231        for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
34232          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
34233      }
34234      if (element.hasProcedure()) { 
34235        for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
34236          composeExplanationOfBenefitProcedureComponent("procedure", e);
34237      }
34238      if (element.hasPrecedenceElement()) {
34239        composePositiveInt("precedence", element.getPrecedenceElement());
34240      }
34241      if (element.hasInsurance()) { 
34242        for (ExplanationOfBenefit.InsuranceComponent e : element.getInsurance()) 
34243          composeExplanationOfBenefitInsuranceComponent("insurance", e);
34244      }
34245      if (element.hasAccident()) {
34246        composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
34247      }
34248      if (element.hasItem()) { 
34249        for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
34250          composeExplanationOfBenefitItemComponent("item", e);
34251      }
34252      if (element.hasAddItem()) { 
34253        for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
34254          composeExplanationOfBenefitAddedItemComponent("addItem", e);
34255      }
34256      if (element.hasTotal()) { 
34257        for (ExplanationOfBenefit.TotalComponent e : element.getTotal()) 
34258          composeExplanationOfBenefitTotalComponent("total", e);
34259      }
34260      if (element.hasPayment()) {
34261        composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
34262      }
34263      if (element.hasForm()) {
34264        composeCodeableConcept("form", element.getForm());
34265      }
34266      if (element.hasProcessNote()) { 
34267        for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
34268          composeExplanationOfBenefitNoteComponent("processNote", e);
34269      }
34270      if (element.hasBenefitBalance()) { 
34271        for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
34272          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
34273      }
34274  }
34275
34276  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
34277    if (element != null) {
34278      composeElementAttributes(element);
34279      xml.enter(FHIR_NS, name);
34280      composeExplanationOfBenefitRelatedClaimComponentElements(element);
34281      composeElementClose(element);
34282      xml.exit(FHIR_NS, name);
34283    }
34284  }
34285
34286  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
34287      composeBackboneElementElements(element);
34288      if (element.hasClaim()) {
34289        composeReference("claim", element.getClaim());
34290      }
34291      if (element.hasRelationship()) {
34292        composeCodeableConcept("relationship", element.getRelationship());
34293      }
34294      if (element.hasReference()) {
34295        composeIdentifier("reference", element.getReference());
34296      }
34297  }
34298
34299  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
34300    if (element != null) {
34301      composeElementAttributes(element);
34302      xml.enter(FHIR_NS, name);
34303      composeExplanationOfBenefitPayeeComponentElements(element);
34304      composeElementClose(element);
34305      xml.exit(FHIR_NS, name);
34306    }
34307  }
34308
34309  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
34310      composeBackboneElementElements(element);
34311      if (element.hasType()) {
34312        composeCodeableConcept("type", element.getType());
34313      }
34314      if (element.hasResource()) {
34315        composeCoding("resource", element.getResource());
34316      }
34317      if (element.hasParty()) {
34318        composeReference("party", element.getParty());
34319      }
34320  }
34321
34322  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
34323    if (element != null) {
34324      composeElementAttributes(element);
34325      xml.enter(FHIR_NS, name);
34326      composeExplanationOfBenefitSupportingInformationComponentElements(element);
34327      composeElementClose(element);
34328      xml.exit(FHIR_NS, name);
34329    }
34330  }
34331
34332  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
34333      composeBackboneElementElements(element);
34334      if (element.hasSequenceElement()) {
34335        composePositiveInt("sequence", element.getSequenceElement());
34336      }
34337      if (element.hasCategory()) {
34338        composeCodeableConcept("category", element.getCategory());
34339      }
34340      if (element.hasCode()) {
34341        composeCodeableConcept("code", element.getCode());
34342      }
34343      if (element.hasTiming()) {
34344        composeType("timing", element.getTiming());
34345      }      if (element.hasValue()) {
34346        composeType("value", element.getValue());
34347      }      if (element.hasReason()) {
34348        composeCoding("reason", element.getReason());
34349      }
34350  }
34351
34352  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
34353    if (element != null) {
34354      composeElementAttributes(element);
34355      xml.enter(FHIR_NS, name);
34356      composeExplanationOfBenefitCareTeamComponentElements(element);
34357      composeElementClose(element);
34358      xml.exit(FHIR_NS, name);
34359    }
34360  }
34361
34362  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
34363      composeBackboneElementElements(element);
34364      if (element.hasSequenceElement()) {
34365        composePositiveInt("sequence", element.getSequenceElement());
34366      }
34367      if (element.hasProvider()) {
34368        composeReference("provider", element.getProvider());
34369      }
34370      if (element.hasResponsibleElement()) {
34371        composeBoolean("responsible", element.getResponsibleElement());
34372      }
34373      if (element.hasRole()) {
34374        composeCodeableConcept("role", element.getRole());
34375      }
34376      if (element.hasQualification()) {
34377        composeCodeableConcept("qualification", element.getQualification());
34378      }
34379  }
34380
34381  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
34382    if (element != null) {
34383      composeElementAttributes(element);
34384      xml.enter(FHIR_NS, name);
34385      composeExplanationOfBenefitDiagnosisComponentElements(element);
34386      composeElementClose(element);
34387      xml.exit(FHIR_NS, name);
34388    }
34389  }
34390
34391  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
34392      composeBackboneElementElements(element);
34393      if (element.hasSequenceElement()) {
34394        composePositiveInt("sequence", element.getSequenceElement());
34395      }
34396      if (element.hasDiagnosis()) {
34397        composeType("diagnosis", element.getDiagnosis());
34398      }      if (element.hasType()) { 
34399        for (CodeableConcept e : element.getType()) 
34400          composeCodeableConcept("type", e);
34401      }
34402      if (element.hasOnAdmission()) {
34403        composeCodeableConcept("onAdmission", element.getOnAdmission());
34404      }
34405      if (element.hasPackageCode()) {
34406        composeCodeableConcept("packageCode", element.getPackageCode());
34407      }
34408  }
34409
34410  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
34411    if (element != null) {
34412      composeElementAttributes(element);
34413      xml.enter(FHIR_NS, name);
34414      composeExplanationOfBenefitProcedureComponentElements(element);
34415      composeElementClose(element);
34416      xml.exit(FHIR_NS, name);
34417    }
34418  }
34419
34420  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
34421      composeBackboneElementElements(element);
34422      if (element.hasSequenceElement()) {
34423        composePositiveInt("sequence", element.getSequenceElement());
34424      }
34425      if (element.hasDateElement()) {
34426        composeDateTime("date", element.getDateElement());
34427      }
34428      if (element.hasProcedure()) {
34429        composeType("procedure", element.getProcedure());
34430      }  }
34431
34432  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
34433    if (element != null) {
34434      composeElementAttributes(element);
34435      xml.enter(FHIR_NS, name);
34436      composeExplanationOfBenefitInsuranceComponentElements(element);
34437      composeElementClose(element);
34438      xml.exit(FHIR_NS, name);
34439    }
34440  }
34441
34442  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
34443      composeBackboneElementElements(element);
34444      if (element.hasFocalElement()) {
34445        composeBoolean("focal", element.getFocalElement());
34446      }
34447      if (element.hasCoverage()) {
34448        composeReference("coverage", element.getCoverage());
34449      }
34450  }
34451
34452  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
34453    if (element != null) {
34454      composeElementAttributes(element);
34455      xml.enter(FHIR_NS, name);
34456      composeExplanationOfBenefitAccidentComponentElements(element);
34457      composeElementClose(element);
34458      xml.exit(FHIR_NS, name);
34459    }
34460  }
34461
34462  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
34463      composeBackboneElementElements(element);
34464      if (element.hasDateElement()) {
34465        composeDate("date", element.getDateElement());
34466      }
34467      if (element.hasType()) {
34468        composeCodeableConcept("type", element.getType());
34469      }
34470      if (element.hasLocation()) {
34471        composeType("location", element.getLocation());
34472      }  }
34473
34474  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
34475    if (element != null) {
34476      composeElementAttributes(element);
34477      xml.enter(FHIR_NS, name);
34478      composeExplanationOfBenefitItemComponentElements(element);
34479      composeElementClose(element);
34480      xml.exit(FHIR_NS, name);
34481    }
34482  }
34483
34484  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
34485      composeBackboneElementElements(element);
34486      if (element.hasSequenceElement()) {
34487        composePositiveInt("sequence", element.getSequenceElement());
34488      }
34489      if (element.hasCareTeamSequence()) { 
34490        for (PositiveIntType e : element.getCareTeamSequence()) 
34491          composePositiveInt("careTeamSequence", e);
34492      }
34493      if (element.hasDiagnosisSequence()) { 
34494        for (PositiveIntType e : element.getDiagnosisSequence()) 
34495          composePositiveInt("diagnosisSequence", e);
34496      }
34497      if (element.hasProcedureSequence()) { 
34498        for (PositiveIntType e : element.getProcedureSequence()) 
34499          composePositiveInt("procedureSequence", e);
34500      }
34501      if (element.hasInformationSequence()) { 
34502        for (PositiveIntType e : element.getInformationSequence()) 
34503          composePositiveInt("informationSequence", e);
34504      }
34505      if (element.hasRevenue()) {
34506        composeCodeableConcept("revenue", element.getRevenue());
34507      }
34508      if (element.hasCategory()) {
34509        composeCodeableConcept("category", element.getCategory());
34510      }
34511      if (element.hasBillcode()) {
34512        composeCodeableConcept("billcode", element.getBillcode());
34513      }
34514      if (element.hasModifier()) { 
34515        for (CodeableConcept e : element.getModifier()) 
34516          composeCodeableConcept("modifier", e);
34517      }
34518      if (element.hasProgramCode()) { 
34519        for (CodeableConcept e : element.getProgramCode()) 
34520          composeCodeableConcept("programCode", e);
34521      }
34522      if (element.hasServiced()) {
34523        composeType("serviced", element.getServiced());
34524      }      if (element.hasLocation()) {
34525        composeType("location", element.getLocation());
34526      }      if (element.hasQuantity()) {
34527        composeQuantity("quantity", element.getQuantity());
34528      }
34529      if (element.hasUnitPrice()) {
34530        composeMoney("unitPrice", element.getUnitPrice());
34531      }
34532      if (element.hasFactorElement()) {
34533        composeDecimal("factor", element.getFactorElement());
34534      }
34535      if (element.hasNet()) {
34536        composeMoney("net", element.getNet());
34537      }
34538      if (element.hasUdi()) { 
34539        for (Reference e : element.getUdi()) 
34540          composeReference("udi", e);
34541      }
34542      if (element.hasBodySite()) {
34543        composeCodeableConcept("bodySite", element.getBodySite());
34544      }
34545      if (element.hasSubSite()) { 
34546        for (CodeableConcept e : element.getSubSite()) 
34547          composeCodeableConcept("subSite", e);
34548      }
34549      if (element.hasEncounter()) { 
34550        for (Reference e : element.getEncounter()) 
34551          composeReference("encounter", e);
34552      }
34553      if (element.hasNoteNumber()) { 
34554        for (PositiveIntType e : element.getNoteNumber()) 
34555          composePositiveInt("noteNumber", e);
34556      }
34557      if (element.hasAdjudication()) { 
34558        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
34559          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
34560      }
34561      if (element.hasDetail()) { 
34562        for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
34563          composeExplanationOfBenefitDetailComponent("detail", e);
34564      }
34565  }
34566
34567  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
34568    if (element != null) {
34569      composeElementAttributes(element);
34570      xml.enter(FHIR_NS, name);
34571      composeExplanationOfBenefitAdjudicationComponentElements(element);
34572      composeElementClose(element);
34573      xml.exit(FHIR_NS, name);
34574    }
34575  }
34576
34577  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
34578      composeBackboneElementElements(element);
34579      if (element.hasCategory()) {
34580        composeCodeableConcept("category", element.getCategory());
34581      }
34582      if (element.hasReason()) {
34583        composeCodeableConcept("reason", element.getReason());
34584      }
34585      if (element.hasAmount()) {
34586        composeMoney("amount", element.getAmount());
34587      }
34588      if (element.hasValueElement()) {
34589        composeDecimal("value", element.getValueElement());
34590      }
34591  }
34592
34593  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
34594    if (element != null) {
34595      composeElementAttributes(element);
34596      xml.enter(FHIR_NS, name);
34597      composeExplanationOfBenefitDetailComponentElements(element);
34598      composeElementClose(element);
34599      xml.exit(FHIR_NS, name);
34600    }
34601  }
34602
34603  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
34604      composeBackboneElementElements(element);
34605      if (element.hasSequenceElement()) {
34606        composePositiveInt("sequence", element.getSequenceElement());
34607      }
34608      if (element.hasRevenue()) {
34609        composeCodeableConcept("revenue", element.getRevenue());
34610      }
34611      if (element.hasCategory()) {
34612        composeCodeableConcept("category", element.getCategory());
34613      }
34614      if (element.hasBillcode()) {
34615        composeCodeableConcept("billcode", element.getBillcode());
34616      }
34617      if (element.hasModifier()) { 
34618        for (CodeableConcept e : element.getModifier()) 
34619          composeCodeableConcept("modifier", e);
34620      }
34621      if (element.hasProgramCode()) { 
34622        for (CodeableConcept e : element.getProgramCode()) 
34623          composeCodeableConcept("programCode", e);
34624      }
34625      if (element.hasQuantity()) {
34626        composeQuantity("quantity", element.getQuantity());
34627      }
34628      if (element.hasUnitPrice()) {
34629        composeMoney("unitPrice", element.getUnitPrice());
34630      }
34631      if (element.hasFactorElement()) {
34632        composeDecimal("factor", element.getFactorElement());
34633      }
34634      if (element.hasNet()) {
34635        composeMoney("net", element.getNet());
34636      }
34637      if (element.hasUdi()) { 
34638        for (Reference e : element.getUdi()) 
34639          composeReference("udi", e);
34640      }
34641      if (element.hasNoteNumber()) { 
34642        for (PositiveIntType e : element.getNoteNumber()) 
34643          composePositiveInt("noteNumber", e);
34644      }
34645      if (element.hasAdjudication()) { 
34646        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
34647          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
34648      }
34649      if (element.hasSubDetail()) { 
34650        for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
34651          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
34652      }
34653  }
34654
34655  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
34656    if (element != null) {
34657      composeElementAttributes(element);
34658      xml.enter(FHIR_NS, name);
34659      composeExplanationOfBenefitSubDetailComponentElements(element);
34660      composeElementClose(element);
34661      xml.exit(FHIR_NS, name);
34662    }
34663  }
34664
34665  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
34666      composeBackboneElementElements(element);
34667      if (element.hasSequenceElement()) {
34668        composePositiveInt("sequence", element.getSequenceElement());
34669      }
34670      if (element.hasRevenue()) {
34671        composeCodeableConcept("revenue", element.getRevenue());
34672      }
34673      if (element.hasCategory()) {
34674        composeCodeableConcept("category", element.getCategory());
34675      }
34676      if (element.hasBillcode()) {
34677        composeCodeableConcept("billcode", element.getBillcode());
34678      }
34679      if (element.hasModifier()) { 
34680        for (CodeableConcept e : element.getModifier()) 
34681          composeCodeableConcept("modifier", e);
34682      }
34683      if (element.hasProgramCode()) { 
34684        for (CodeableConcept e : element.getProgramCode()) 
34685          composeCodeableConcept("programCode", e);
34686      }
34687      if (element.hasQuantity()) {
34688        composeQuantity("quantity", element.getQuantity());
34689      }
34690      if (element.hasUnitPrice()) {
34691        composeMoney("unitPrice", element.getUnitPrice());
34692      }
34693      if (element.hasFactorElement()) {
34694        composeDecimal("factor", element.getFactorElement());
34695      }
34696      if (element.hasNet()) {
34697        composeMoney("net", element.getNet());
34698      }
34699      if (element.hasUdi()) { 
34700        for (Reference e : element.getUdi()) 
34701          composeReference("udi", e);
34702      }
34703      if (element.hasNoteNumber()) { 
34704        for (PositiveIntType e : element.getNoteNumber()) 
34705          composePositiveInt("noteNumber", e);
34706      }
34707      if (element.hasAdjudication()) { 
34708        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
34709          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
34710      }
34711  }
34712
34713  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
34714    if (element != null) {
34715      composeElementAttributes(element);
34716      xml.enter(FHIR_NS, name);
34717      composeExplanationOfBenefitAddedItemComponentElements(element);
34718      composeElementClose(element);
34719      xml.exit(FHIR_NS, name);
34720    }
34721  }
34722
34723  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
34724      composeBackboneElementElements(element);
34725      if (element.hasItemSequence()) { 
34726        for (PositiveIntType e : element.getItemSequence()) 
34727          composePositiveInt("itemSequence", e);
34728      }
34729      if (element.hasDetailSequence()) { 
34730        for (PositiveIntType e : element.getDetailSequence()) 
34731          composePositiveInt("detailSequence", e);
34732      }
34733      if (element.hasSubDetailSequence()) { 
34734        for (PositiveIntType e : element.getSubDetailSequence()) 
34735          composePositiveInt("subDetailSequence", e);
34736      }
34737      if (element.hasProvider()) { 
34738        for (Reference e : element.getProvider()) 
34739          composeReference("provider", e);
34740      }
34741      if (element.hasBillcode()) {
34742        composeCodeableConcept("billcode", element.getBillcode());
34743      }
34744      if (element.hasModifier()) { 
34745        for (CodeableConcept e : element.getModifier()) 
34746          composeCodeableConcept("modifier", e);
34747      }
34748      if (element.hasProgramCode()) { 
34749        for (CodeableConcept e : element.getProgramCode()) 
34750          composeCodeableConcept("programCode", e);
34751      }
34752      if (element.hasServiced()) {
34753        composeType("serviced", element.getServiced());
34754      }      if (element.hasLocation()) {
34755        composeType("location", element.getLocation());
34756      }      if (element.hasQuantity()) {
34757        composeQuantity("quantity", element.getQuantity());
34758      }
34759      if (element.hasUnitPrice()) {
34760        composeMoney("unitPrice", element.getUnitPrice());
34761      }
34762      if (element.hasFactorElement()) {
34763        composeDecimal("factor", element.getFactorElement());
34764      }
34765      if (element.hasNet()) {
34766        composeMoney("net", element.getNet());
34767      }
34768      if (element.hasBodySite()) {
34769        composeCodeableConcept("bodySite", element.getBodySite());
34770      }
34771      if (element.hasSubSite()) { 
34772        for (CodeableConcept e : element.getSubSite()) 
34773          composeCodeableConcept("subSite", e);
34774      }
34775      if (element.hasNoteNumber()) { 
34776        for (PositiveIntType e : element.getNoteNumber()) 
34777          composePositiveInt("noteNumber", e);
34778      }
34779      if (element.hasAdjudication()) { 
34780        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
34781          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
34782      }
34783      if (element.hasDetail()) { 
34784        for (ExplanationOfBenefit.AddedItemDetailComponent e : element.getDetail()) 
34785          composeExplanationOfBenefitAddedItemDetailComponent("detail", e);
34786      }
34787  }
34788
34789  protected void composeExplanationOfBenefitAddedItemDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
34790    if (element != null) {
34791      composeElementAttributes(element);
34792      xml.enter(FHIR_NS, name);
34793      composeExplanationOfBenefitAddedItemDetailComponentElements(element);
34794      composeElementClose(element);
34795      xml.exit(FHIR_NS, name);
34796    }
34797  }
34798
34799  protected void composeExplanationOfBenefitAddedItemDetailComponentElements(ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
34800      composeBackboneElementElements(element);
34801      if (element.hasBillcode()) {
34802        composeCodeableConcept("billcode", element.getBillcode());
34803      }
34804      if (element.hasModifier()) { 
34805        for (CodeableConcept e : element.getModifier()) 
34806          composeCodeableConcept("modifier", e);
34807      }
34808      if (element.hasQuantity()) {
34809        composeQuantity("quantity", element.getQuantity());
34810      }
34811      if (element.hasUnitPrice()) {
34812        composeMoney("unitPrice", element.getUnitPrice());
34813      }
34814      if (element.hasFactorElement()) {
34815        composeDecimal("factor", element.getFactorElement());
34816      }
34817      if (element.hasNet()) {
34818        composeMoney("net", element.getNet());
34819      }
34820      if (element.hasNoteNumber()) { 
34821        for (PositiveIntType e : element.getNoteNumber()) 
34822          composePositiveInt("noteNumber", e);
34823      }
34824      if (element.hasAdjudication()) { 
34825        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
34826          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
34827      }
34828      if (element.hasSubDetail()) { 
34829        for (ExplanationOfBenefit.AddedItemDetailSubDetailComponent e : element.getSubDetail()) 
34830          composeExplanationOfBenefitAddedItemDetailSubDetailComponent("subDetail", e);
34831      }
34832  }
34833
34834  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
34835    if (element != null) {
34836      composeElementAttributes(element);
34837      xml.enter(FHIR_NS, name);
34838      composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(element);
34839      composeElementClose(element);
34840      xml.exit(FHIR_NS, name);
34841    }
34842  }
34843
34844  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
34845      composeBackboneElementElements(element);
34846      if (element.hasBillcode()) {
34847        composeCodeableConcept("billcode", element.getBillcode());
34848      }
34849      if (element.hasModifier()) { 
34850        for (CodeableConcept e : element.getModifier()) 
34851          composeCodeableConcept("modifier", e);
34852      }
34853      if (element.hasQuantity()) {
34854        composeQuantity("quantity", element.getQuantity());
34855      }
34856      if (element.hasUnitPrice()) {
34857        composeMoney("unitPrice", element.getUnitPrice());
34858      }
34859      if (element.hasFactorElement()) {
34860        composeDecimal("factor", element.getFactorElement());
34861      }
34862      if (element.hasNet()) {
34863        composeMoney("net", element.getNet());
34864      }
34865      if (element.hasNoteNumber()) { 
34866        for (PositiveIntType e : element.getNoteNumber()) 
34867          composePositiveInt("noteNumber", e);
34868      }
34869      if (element.hasAdjudication()) { 
34870        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
34871          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
34872      }
34873  }
34874
34875  protected void composeExplanationOfBenefitTotalComponent(String name, ExplanationOfBenefit.TotalComponent element) throws IOException {
34876    if (element != null) {
34877      composeElementAttributes(element);
34878      xml.enter(FHIR_NS, name);
34879      composeExplanationOfBenefitTotalComponentElements(element);
34880      composeElementClose(element);
34881      xml.exit(FHIR_NS, name);
34882    }
34883  }
34884
34885  protected void composeExplanationOfBenefitTotalComponentElements(ExplanationOfBenefit.TotalComponent element) throws IOException {
34886      composeBackboneElementElements(element);
34887      if (element.hasCategory()) {
34888        composeCodeableConcept("category", element.getCategory());
34889      }
34890      if (element.hasAmount()) {
34891        composeMoney("amount", element.getAmount());
34892      }
34893  }
34894
34895  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
34896    if (element != null) {
34897      composeElementAttributes(element);
34898      xml.enter(FHIR_NS, name);
34899      composeExplanationOfBenefitPaymentComponentElements(element);
34900      composeElementClose(element);
34901      xml.exit(FHIR_NS, name);
34902    }
34903  }
34904
34905  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
34906      composeBackboneElementElements(element);
34907      if (element.hasType()) {
34908        composeCodeableConcept("type", element.getType());
34909      }
34910      if (element.hasAdjustment()) {
34911        composeMoney("adjustment", element.getAdjustment());
34912      }
34913      if (element.hasAdjustmentReason()) {
34914        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
34915      }
34916      if (element.hasDateElement()) {
34917        composeDate("date", element.getDateElement());
34918      }
34919      if (element.hasAmount()) {
34920        composeMoney("amount", element.getAmount());
34921      }
34922      if (element.hasIdentifier()) {
34923        composeIdentifier("identifier", element.getIdentifier());
34924      }
34925  }
34926
34927  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
34928    if (element != null) {
34929      composeElementAttributes(element);
34930      xml.enter(FHIR_NS, name);
34931      composeExplanationOfBenefitNoteComponentElements(element);
34932      composeElementClose(element);
34933      xml.exit(FHIR_NS, name);
34934    }
34935  }
34936
34937  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
34938      composeBackboneElementElements(element);
34939      if (element.hasNumberElement()) {
34940        composePositiveInt("number", element.getNumberElement());
34941      }
34942      if (element.hasTypeElement())
34943        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
34944      if (element.hasTextElement()) {
34945        composeString("text", element.getTextElement());
34946      }
34947      if (element.hasLanguage()) {
34948        composeCodeableConcept("language", element.getLanguage());
34949      }
34950  }
34951
34952  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
34953    if (element != null) {
34954      composeElementAttributes(element);
34955      xml.enter(FHIR_NS, name);
34956      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
34957      composeElementClose(element);
34958      xml.exit(FHIR_NS, name);
34959    }
34960  }
34961
34962  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
34963      composeBackboneElementElements(element);
34964      if (element.hasCategory()) {
34965        composeCodeableConcept("category", element.getCategory());
34966      }
34967      if (element.hasExcludedElement()) {
34968        composeBoolean("excluded", element.getExcludedElement());
34969      }
34970      if (element.hasNameElement()) {
34971        composeString("name", element.getNameElement());
34972      }
34973      if (element.hasDescriptionElement()) {
34974        composeString("description", element.getDescriptionElement());
34975      }
34976      if (element.hasNetwork()) {
34977        composeCodeableConcept("network", element.getNetwork());
34978      }
34979      if (element.hasUnit()) {
34980        composeCodeableConcept("unit", element.getUnit());
34981      }
34982      if (element.hasTerm()) {
34983        composeCodeableConcept("term", element.getTerm());
34984      }
34985      if (element.hasFinancial()) { 
34986        for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
34987          composeExplanationOfBenefitBenefitComponent("financial", e);
34988      }
34989  }
34990
34991  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
34992    if (element != null) {
34993      composeElementAttributes(element);
34994      xml.enter(FHIR_NS, name);
34995      composeExplanationOfBenefitBenefitComponentElements(element);
34996      composeElementClose(element);
34997      xml.exit(FHIR_NS, name);
34998    }
34999  }
35000
35001  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
35002      composeBackboneElementElements(element);
35003      if (element.hasType()) {
35004        composeCodeableConcept("type", element.getType());
35005      }
35006      if (element.hasAllowed()) {
35007        composeType("allowed", element.getAllowed());
35008      }      if (element.hasUsed()) {
35009        composeType("used", element.getUsed());
35010      }  }
35011
35012  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
35013    if (element != null) {
35014      composeDomainResourceAttributes(element);
35015      xml.enter(FHIR_NS, name);
35016      composeFamilyMemberHistoryElements(element);
35017      composeElementClose(element);
35018      xml.exit(FHIR_NS, name);
35019    }
35020  }
35021
35022  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
35023      composeDomainResourceElements(element);
35024      if (element.hasIdentifier()) { 
35025        for (Identifier e : element.getIdentifier()) 
35026          composeIdentifier("identifier", e);
35027      }
35028      if (element.hasInstantiatesCanonical()) { 
35029        for (CanonicalType e : element.getInstantiatesCanonical()) 
35030          composeCanonical("instantiatesCanonical", e);
35031      }
35032      if (element.hasInstantiatesUri()) { 
35033        for (UriType e : element.getInstantiatesUri()) 
35034          composeUri("instantiatesUri", e);
35035      }
35036      if (element.hasStatusElement())
35037        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
35038      if (element.hasDataAbsentReason()) {
35039        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
35040      }
35041      if (element.hasPatient()) {
35042        composeReference("patient", element.getPatient());
35043      }
35044      if (element.hasDateElement()) {
35045        composeDateTime("date", element.getDateElement());
35046      }
35047      if (element.hasNameElement()) {
35048        composeString("name", element.getNameElement());
35049      }
35050      if (element.hasRelationship()) {
35051        composeCodeableConcept("relationship", element.getRelationship());
35052      }
35053      if (element.hasGender()) {
35054        composeCodeableConcept("gender", element.getGender());
35055      }
35056      if (element.hasBorn()) {
35057        composeType("born", element.getBorn());
35058      }      if (element.hasAge()) {
35059        composeType("age", element.getAge());
35060      }      if (element.hasEstimatedAgeElement()) {
35061        composeBoolean("estimatedAge", element.getEstimatedAgeElement());
35062      }
35063      if (element.hasDeceased()) {
35064        composeType("deceased", element.getDeceased());
35065      }      if (element.hasReasonCode()) { 
35066        for (CodeableConcept e : element.getReasonCode()) 
35067          composeCodeableConcept("reasonCode", e);
35068      }
35069      if (element.hasReasonReference()) { 
35070        for (Reference e : element.getReasonReference()) 
35071          composeReference("reasonReference", e);
35072      }
35073      if (element.hasNote()) { 
35074        for (Annotation e : element.getNote()) 
35075          composeAnnotation("note", e);
35076      }
35077      if (element.hasCondition()) { 
35078        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
35079          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
35080      }
35081  }
35082
35083  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
35084    if (element != null) {
35085      composeElementAttributes(element);
35086      xml.enter(FHIR_NS, name);
35087      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(element);
35088      composeElementClose(element);
35089      xml.exit(FHIR_NS, name);
35090    }
35091  }
35092
35093  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
35094      composeBackboneElementElements(element);
35095      if (element.hasCode()) {
35096        composeCodeableConcept("code", element.getCode());
35097      }
35098      if (element.hasOutcome()) {
35099        composeCodeableConcept("outcome", element.getOutcome());
35100      }
35101      if (element.hasOnset()) {
35102        composeType("onset", element.getOnset());
35103      }      if (element.hasNote()) { 
35104        for (Annotation e : element.getNote()) 
35105          composeAnnotation("note", e);
35106      }
35107  }
35108
35109  protected void composeFlag(String name, Flag element) throws IOException {
35110    if (element != null) {
35111      composeDomainResourceAttributes(element);
35112      xml.enter(FHIR_NS, name);
35113      composeFlagElements(element);
35114      composeElementClose(element);
35115      xml.exit(FHIR_NS, name);
35116    }
35117  }
35118
35119  protected void composeFlagElements(Flag element) throws IOException {
35120      composeDomainResourceElements(element);
35121      if (element.hasIdentifier()) { 
35122        for (Identifier e : element.getIdentifier()) 
35123          composeIdentifier("identifier", e);
35124      }
35125      if (element.hasStatusElement())
35126        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
35127      if (element.hasCategory()) { 
35128        for (CodeableConcept e : element.getCategory()) 
35129          composeCodeableConcept("category", e);
35130      }
35131      if (element.hasCode()) {
35132        composeCodeableConcept("code", element.getCode());
35133      }
35134      if (element.hasSubject()) {
35135        composeReference("subject", element.getSubject());
35136      }
35137      if (element.hasPeriod()) {
35138        composePeriod("period", element.getPeriod());
35139      }
35140      if (element.hasEncounter()) {
35141        composeReference("encounter", element.getEncounter());
35142      }
35143      if (element.hasAuthor()) {
35144        composeReference("author", element.getAuthor());
35145      }
35146  }
35147
35148  protected void composeGoal(String name, Goal element) throws IOException {
35149    if (element != null) {
35150      composeDomainResourceAttributes(element);
35151      xml.enter(FHIR_NS, name);
35152      composeGoalElements(element);
35153      composeElementClose(element);
35154      xml.exit(FHIR_NS, name);
35155    }
35156  }
35157
35158  protected void composeGoalElements(Goal element) throws IOException {
35159      composeDomainResourceElements(element);
35160      if (element.hasIdentifier()) { 
35161        for (Identifier e : element.getIdentifier()) 
35162          composeIdentifier("identifier", e);
35163      }
35164      if (element.hasStatusElement())
35165        composeEnumeration("status", element.getStatusElement(), new Goal.GoalStatusEnumFactory());
35166      if (element.hasCategory()) { 
35167        for (CodeableConcept e : element.getCategory()) 
35168          composeCodeableConcept("category", e);
35169      }
35170      if (element.hasPriority()) {
35171        composeCodeableConcept("priority", element.getPriority());
35172      }
35173      if (element.hasDescription()) {
35174        composeCodeableConcept("description", element.getDescription());
35175      }
35176      if (element.hasSubject()) {
35177        composeReference("subject", element.getSubject());
35178      }
35179      if (element.hasStart()) {
35180        composeType("start", element.getStart());
35181      }      if (element.hasTarget()) {
35182        composeGoalGoalTargetComponent("target", element.getTarget());
35183      }
35184      if (element.hasStatusDateElement()) {
35185        composeDate("statusDate", element.getStatusDateElement());
35186      }
35187      if (element.hasStatusReasonElement()) {
35188        composeString("statusReason", element.getStatusReasonElement());
35189      }
35190      if (element.hasExpressedBy()) {
35191        composeReference("expressedBy", element.getExpressedBy());
35192      }
35193      if (element.hasAddresses()) { 
35194        for (Reference e : element.getAddresses()) 
35195          composeReference("addresses", e);
35196      }
35197      if (element.hasNote()) { 
35198        for (Annotation e : element.getNote()) 
35199          composeAnnotation("note", e);
35200      }
35201      if (element.hasOutcomeCode()) { 
35202        for (CodeableConcept e : element.getOutcomeCode()) 
35203          composeCodeableConcept("outcomeCode", e);
35204      }
35205      if (element.hasOutcomeReference()) { 
35206        for (Reference e : element.getOutcomeReference()) 
35207          composeReference("outcomeReference", e);
35208      }
35209  }
35210
35211  protected void composeGoalGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
35212    if (element != null) {
35213      composeElementAttributes(element);
35214      xml.enter(FHIR_NS, name);
35215      composeGoalGoalTargetComponentElements(element);
35216      composeElementClose(element);
35217      xml.exit(FHIR_NS, name);
35218    }
35219  }
35220
35221  protected void composeGoalGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
35222      composeBackboneElementElements(element);
35223      if (element.hasMeasure()) {
35224        composeCodeableConcept("measure", element.getMeasure());
35225      }
35226      if (element.hasDetail()) {
35227        composeType("detail", element.getDetail());
35228      }      if (element.hasDue()) {
35229        composeType("due", element.getDue());
35230      }  }
35231
35232  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
35233    if (element != null) {
35234      composeDomainResourceAttributes(element);
35235      xml.enter(FHIR_NS, name);
35236      composeGraphDefinitionElements(element);
35237      composeElementClose(element);
35238      xml.exit(FHIR_NS, name);
35239    }
35240  }
35241
35242  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
35243      composeDomainResourceElements(element);
35244      if (element.hasUrlElement()) {
35245        composeUri("url", element.getUrlElement());
35246      }
35247      if (element.hasVersionElement()) {
35248        composeString("version", element.getVersionElement());
35249      }
35250      if (element.hasNameElement()) {
35251        composeString("name", element.getNameElement());
35252      }
35253      if (element.hasStatusElement())
35254        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
35255      if (element.hasExperimentalElement()) {
35256        composeBoolean("experimental", element.getExperimentalElement());
35257      }
35258      if (element.hasDateElement()) {
35259        composeDateTime("date", element.getDateElement());
35260      }
35261      if (element.hasPublisherElement()) {
35262        composeString("publisher", element.getPublisherElement());
35263      }
35264      if (element.hasContact()) { 
35265        for (ContactDetail e : element.getContact()) 
35266          composeContactDetail("contact", e);
35267      }
35268      if (element.hasDescriptionElement()) {
35269        composeMarkdown("description", element.getDescriptionElement());
35270      }
35271      if (element.hasUseContext()) { 
35272        for (UsageContext e : element.getUseContext()) 
35273          composeUsageContext("useContext", e);
35274      }
35275      if (element.hasJurisdiction()) { 
35276        for (CodeableConcept e : element.getJurisdiction()) 
35277          composeCodeableConcept("jurisdiction", e);
35278      }
35279      if (element.hasPurposeElement()) {
35280        composeMarkdown("purpose", element.getPurposeElement());
35281      }
35282      if (element.hasStartElement()) {
35283        composeCode("start", element.getStartElement());
35284      }
35285      if (element.hasProfileElement()) {
35286        composeCanonical("profile", element.getProfileElement());
35287      }
35288      if (element.hasLink()) { 
35289        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
35290          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
35291      }
35292  }
35293
35294  protected void composeGraphDefinitionGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
35295    if (element != null) {
35296      composeElementAttributes(element);
35297      xml.enter(FHIR_NS, name);
35298      composeGraphDefinitionGraphDefinitionLinkComponentElements(element);
35299      composeElementClose(element);
35300      xml.exit(FHIR_NS, name);
35301    }
35302  }
35303
35304  protected void composeGraphDefinitionGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
35305      composeBackboneElementElements(element);
35306      if (element.hasPathElement()) {
35307        composeString("path", element.getPathElement());
35308      }
35309      if (element.hasSliceNameElement()) {
35310        composeString("sliceName", element.getSliceNameElement());
35311      }
35312      if (element.hasMinElement()) {
35313        composeInteger("min", element.getMinElement());
35314      }
35315      if (element.hasMaxElement()) {
35316        composeString("max", element.getMaxElement());
35317      }
35318      if (element.hasDescriptionElement()) {
35319        composeString("description", element.getDescriptionElement());
35320      }
35321      if (element.hasTarget()) { 
35322        for (GraphDefinition.GraphDefinitionLinkTargetComponent e : element.getTarget()) 
35323          composeGraphDefinitionGraphDefinitionLinkTargetComponent("target", e);
35324      }
35325  }
35326
35327  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(String name, GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
35328    if (element != null) {
35329      composeElementAttributes(element);
35330      xml.enter(FHIR_NS, name);
35331      composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(element);
35332      composeElementClose(element);
35333      xml.exit(FHIR_NS, name);
35334    }
35335  }
35336
35337  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
35338      composeBackboneElementElements(element);
35339      if (element.hasTypeElement()) {
35340        composeCode("type", element.getTypeElement());
35341      }
35342      if (element.hasParamsElement()) {
35343        composeString("params", element.getParamsElement());
35344      }
35345      if (element.hasProfileElement()) {
35346        composeCanonical("profile", element.getProfileElement());
35347      }
35348      if (element.hasCompartment()) { 
35349        for (GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent e : element.getCompartment()) 
35350          composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent("compartment", e);
35351      }
35352      if (element.hasLink()) { 
35353        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
35354          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
35355      }
35356  }
35357
35358  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
35359    if (element != null) {
35360      composeElementAttributes(element);
35361      xml.enter(FHIR_NS, name);
35362      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(element);
35363      composeElementClose(element);
35364      xml.exit(FHIR_NS, name);
35365    }
35366  }
35367
35368  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
35369      composeBackboneElementElements(element);
35370      if (element.hasUseElement())
35371        composeEnumeration("use", element.getUseElement(), new GraphDefinition.GraphCompartmentUseEnumFactory());
35372      if (element.hasCodeElement())
35373        composeEnumeration("code", element.getCodeElement(), new GraphDefinition.CompartmentCodeEnumFactory());
35374      if (element.hasRuleElement())
35375        composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
35376      if (element.hasExpressionElement()) {
35377        composeString("expression", element.getExpressionElement());
35378      }
35379      if (element.hasDescriptionElement()) {
35380        composeString("description", element.getDescriptionElement());
35381      }
35382  }
35383
35384  protected void composeGroup(String name, Group element) throws IOException {
35385    if (element != null) {
35386      composeDomainResourceAttributes(element);
35387      xml.enter(FHIR_NS, name);
35388      composeGroupElements(element);
35389      composeElementClose(element);
35390      xml.exit(FHIR_NS, name);
35391    }
35392  }
35393
35394  protected void composeGroupElements(Group element) throws IOException {
35395      composeDomainResourceElements(element);
35396      if (element.hasIdentifier()) { 
35397        for (Identifier e : element.getIdentifier()) 
35398          composeIdentifier("identifier", e);
35399      }
35400      if (element.hasActiveElement()) {
35401        composeBoolean("active", element.getActiveElement());
35402      }
35403      if (element.hasTypeElement())
35404        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
35405      if (element.hasActualElement()) {
35406        composeBoolean("actual", element.getActualElement());
35407      }
35408      if (element.hasCode()) {
35409        composeCodeableConcept("code", element.getCode());
35410      }
35411      if (element.hasNameElement()) {
35412        composeString("name", element.getNameElement());
35413      }
35414      if (element.hasQuantityElement()) {
35415        composeUnsignedInt("quantity", element.getQuantityElement());
35416      }
35417      if (element.hasCharacteristic()) { 
35418        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
35419          composeGroupGroupCharacteristicComponent("characteristic", e);
35420      }
35421      if (element.hasMember()) { 
35422        for (Group.GroupMemberComponent e : element.getMember()) 
35423          composeGroupGroupMemberComponent("member", e);
35424      }
35425  }
35426
35427  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
35428    if (element != null) {
35429      composeElementAttributes(element);
35430      xml.enter(FHIR_NS, name);
35431      composeGroupGroupCharacteristicComponentElements(element);
35432      composeElementClose(element);
35433      xml.exit(FHIR_NS, name);
35434    }
35435  }
35436
35437  protected void composeGroupGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
35438      composeBackboneElementElements(element);
35439      if (element.hasCode()) {
35440        composeCodeableConcept("code", element.getCode());
35441      }
35442      if (element.hasValue()) {
35443        composeType("value", element.getValue());
35444      }      if (element.hasExcludeElement()) {
35445        composeBoolean("exclude", element.getExcludeElement());
35446      }
35447      if (element.hasPeriod()) {
35448        composePeriod("period", element.getPeriod());
35449      }
35450  }
35451
35452  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
35453    if (element != null) {
35454      composeElementAttributes(element);
35455      xml.enter(FHIR_NS, name);
35456      composeGroupGroupMemberComponentElements(element);
35457      composeElementClose(element);
35458      xml.exit(FHIR_NS, name);
35459    }
35460  }
35461
35462  protected void composeGroupGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
35463      composeBackboneElementElements(element);
35464      if (element.hasEntity()) {
35465        composeReference("entity", element.getEntity());
35466      }
35467      if (element.hasPeriod()) {
35468        composePeriod("period", element.getPeriod());
35469      }
35470      if (element.hasInactiveElement()) {
35471        composeBoolean("inactive", element.getInactiveElement());
35472      }
35473  }
35474
35475  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
35476    if (element != null) {
35477      composeDomainResourceAttributes(element);
35478      xml.enter(FHIR_NS, name);
35479      composeGuidanceResponseElements(element);
35480      composeElementClose(element);
35481      xml.exit(FHIR_NS, name);
35482    }
35483  }
35484
35485  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
35486      composeDomainResourceElements(element);
35487      if (element.hasRequestIdentifier()) {
35488        composeIdentifier("requestIdentifier", element.getRequestIdentifier());
35489      }
35490      if (element.hasIdentifier()) { 
35491        for (Identifier e : element.getIdentifier()) 
35492          composeIdentifier("identifier", e);
35493      }
35494      if (element.hasModule()) {
35495        composeType("module", element.getModule());
35496      }      if (element.hasStatusElement())
35497        composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
35498      if (element.hasSubject()) {
35499        composeReference("subject", element.getSubject());
35500      }
35501      if (element.hasContext()) {
35502        composeReference("context", element.getContext());
35503      }
35504      if (element.hasOccurrenceDateTimeElement()) {
35505        composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
35506      }
35507      if (element.hasPerformer()) {
35508        composeReference("performer", element.getPerformer());
35509      }
35510      if (element.hasReasonCode()) { 
35511        for (CodeableConcept e : element.getReasonCode()) 
35512          composeCodeableConcept("reasonCode", e);
35513      }
35514      if (element.hasReasonReference()) { 
35515        for (Reference e : element.getReasonReference()) 
35516          composeReference("reasonReference", e);
35517      }
35518      if (element.hasNote()) { 
35519        for (Annotation e : element.getNote()) 
35520          composeAnnotation("note", e);
35521      }
35522      if (element.hasEvaluationMessage()) { 
35523        for (Reference e : element.getEvaluationMessage()) 
35524          composeReference("evaluationMessage", e);
35525      }
35526      if (element.hasOutputParameters()) {
35527        composeReference("outputParameters", element.getOutputParameters());
35528      }
35529      if (element.hasResult()) {
35530        composeReference("result", element.getResult());
35531      }
35532      if (element.hasDataRequirement()) { 
35533        for (DataRequirement e : element.getDataRequirement()) 
35534          composeDataRequirement("dataRequirement", e);
35535      }
35536  }
35537
35538  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
35539    if (element != null) {
35540      composeDomainResourceAttributes(element);
35541      xml.enter(FHIR_NS, name);
35542      composeHealthcareServiceElements(element);
35543      composeElementClose(element);
35544      xml.exit(FHIR_NS, name);
35545    }
35546  }
35547
35548  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
35549      composeDomainResourceElements(element);
35550      if (element.hasIdentifier()) { 
35551        for (Identifier e : element.getIdentifier()) 
35552          composeIdentifier("identifier", e);
35553      }
35554      if (element.hasActiveElement()) {
35555        composeBoolean("active", element.getActiveElement());
35556      }
35557      if (element.hasProvidedBy()) {
35558        composeReference("providedBy", element.getProvidedBy());
35559      }
35560      if (element.hasCategory()) { 
35561        for (CodeableConcept e : element.getCategory()) 
35562          composeCodeableConcept("category", e);
35563      }
35564      if (element.hasType()) { 
35565        for (CodeableConcept e : element.getType()) 
35566          composeCodeableConcept("type", e);
35567      }
35568      if (element.hasSpecialty()) { 
35569        for (CodeableConcept e : element.getSpecialty()) 
35570          composeCodeableConcept("specialty", e);
35571      }
35572      if (element.hasLocation()) { 
35573        for (Reference e : element.getLocation()) 
35574          composeReference("location", e);
35575      }
35576      if (element.hasNameElement()) {
35577        composeString("name", element.getNameElement());
35578      }
35579      if (element.hasCommentElement()) {
35580        composeString("comment", element.getCommentElement());
35581      }
35582      if (element.hasExtraDetailsElement()) {
35583        composeString("extraDetails", element.getExtraDetailsElement());
35584      }
35585      if (element.hasPhoto()) {
35586        composeAttachment("photo", element.getPhoto());
35587      }
35588      if (element.hasTelecom()) { 
35589        for (ContactPoint e : element.getTelecom()) 
35590          composeContactPoint("telecom", e);
35591      }
35592      if (element.hasCoverageArea()) { 
35593        for (Reference e : element.getCoverageArea()) 
35594          composeReference("coverageArea", e);
35595      }
35596      if (element.hasServiceProvisionCode()) { 
35597        for (CodeableConcept e : element.getServiceProvisionCode()) 
35598          composeCodeableConcept("serviceProvisionCode", e);
35599      }
35600      if (element.hasEligibility()) {
35601        composeCodeableConcept("eligibility", element.getEligibility());
35602      }
35603      if (element.hasEligibilityNoteElement()) {
35604        composeString("eligibilityNote", element.getEligibilityNoteElement());
35605      }
35606      if (element.hasProgramName()) { 
35607        for (StringType e : element.getProgramName()) 
35608          composeString("programName", e);
35609      }
35610      if (element.hasCharacteristic()) { 
35611        for (CodeableConcept e : element.getCharacteristic()) 
35612          composeCodeableConcept("characteristic", e);
35613      }
35614      if (element.hasReferralMethod()) { 
35615        for (CodeableConcept e : element.getReferralMethod()) 
35616          composeCodeableConcept("referralMethod", e);
35617      }
35618      if (element.hasAppointmentRequiredElement()) {
35619        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
35620      }
35621      if (element.hasAvailableTime()) { 
35622        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
35623          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
35624      }
35625      if (element.hasNotAvailable()) { 
35626        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
35627          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
35628      }
35629      if (element.hasAvailabilityExceptionsElement()) {
35630        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
35631      }
35632      if (element.hasEndpoint()) { 
35633        for (Reference e : element.getEndpoint()) 
35634          composeReference("endpoint", e);
35635      }
35636  }
35637
35638  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
35639    if (element != null) {
35640      composeElementAttributes(element);
35641      xml.enter(FHIR_NS, name);
35642      composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(element);
35643      composeElementClose(element);
35644      xml.exit(FHIR_NS, name);
35645    }
35646  }
35647
35648  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
35649      composeBackboneElementElements(element);
35650        if (element.hasDaysOfWeek()) 
35651          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
35652            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
35653      if (element.hasAllDayElement()) {
35654        composeBoolean("allDay", element.getAllDayElement());
35655      }
35656      if (element.hasAvailableStartTimeElement()) {
35657        composeTime("availableStartTime", element.getAvailableStartTimeElement());
35658      }
35659      if (element.hasAvailableEndTimeElement()) {
35660        composeTime("availableEndTime", element.getAvailableEndTimeElement());
35661      }
35662  }
35663
35664  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
35665    if (element != null) {
35666      composeElementAttributes(element);
35667      xml.enter(FHIR_NS, name);
35668      composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(element);
35669      composeElementClose(element);
35670      xml.exit(FHIR_NS, name);
35671    }
35672  }
35673
35674  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
35675      composeBackboneElementElements(element);
35676      if (element.hasDescriptionElement()) {
35677        composeString("description", element.getDescriptionElement());
35678      }
35679      if (element.hasDuring()) {
35680        composePeriod("during", element.getDuring());
35681      }
35682  }
35683
35684  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
35685    if (element != null) {
35686      composeDomainResourceAttributes(element);
35687      xml.enter(FHIR_NS, name);
35688      composeImagingStudyElements(element);
35689      composeElementClose(element);
35690      xml.exit(FHIR_NS, name);
35691    }
35692  }
35693
35694  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
35695      composeDomainResourceElements(element);
35696      if (element.hasIdentifier()) { 
35697        for (Identifier e : element.getIdentifier()) 
35698          composeIdentifier("identifier", e);
35699      }
35700      if (element.hasStatusElement())
35701        composeEnumeration("status", element.getStatusElement(), new ImagingStudy.ImagingStudyStatusEnumFactory());
35702      if (element.hasModality()) { 
35703        for (Coding e : element.getModality()) 
35704          composeCoding("modality", e);
35705      }
35706      if (element.hasSubject()) {
35707        composeReference("subject", element.getSubject());
35708      }
35709      if (element.hasContext()) {
35710        composeReference("context", element.getContext());
35711      }
35712      if (element.hasStartedElement()) {
35713        composeDateTime("started", element.getStartedElement());
35714      }
35715      if (element.hasBasedOn()) { 
35716        for (Reference e : element.getBasedOn()) 
35717          composeReference("basedOn", e);
35718      }
35719      if (element.hasReferrer()) {
35720        composeReference("referrer", element.getReferrer());
35721      }
35722      if (element.hasInterpreter()) { 
35723        for (Reference e : element.getInterpreter()) 
35724          composeReference("interpreter", e);
35725      }
35726      if (element.hasEndpoint()) { 
35727        for (Reference e : element.getEndpoint()) 
35728          composeReference("endpoint", e);
35729      }
35730      if (element.hasNumberOfSeriesElement()) {
35731        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
35732      }
35733      if (element.hasNumberOfInstancesElement()) {
35734        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
35735      }
35736      if (element.hasProcedureReference()) {
35737        composeReference("procedureReference", element.getProcedureReference());
35738      }
35739      if (element.hasProcedureCode()) { 
35740        for (CodeableConcept e : element.getProcedureCode()) 
35741          composeCodeableConcept("procedureCode", e);
35742      }
35743      if (element.hasLocation()) {
35744        composeReference("location", element.getLocation());
35745      }
35746      if (element.hasReasonCode()) { 
35747        for (CodeableConcept e : element.getReasonCode()) 
35748          composeCodeableConcept("reasonCode", e);
35749      }
35750      if (element.hasReasonReference()) { 
35751        for (Reference e : element.getReasonReference()) 
35752          composeReference("reasonReference", e);
35753      }
35754      if (element.hasNote()) { 
35755        for (Annotation e : element.getNote()) 
35756          composeAnnotation("note", e);
35757      }
35758      if (element.hasDescriptionElement()) {
35759        composeString("description", element.getDescriptionElement());
35760      }
35761      if (element.hasSeries()) { 
35762        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
35763          composeImagingStudyImagingStudySeriesComponent("series", e);
35764      }
35765  }
35766
35767  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
35768    if (element != null) {
35769      composeElementAttributes(element);
35770      xml.enter(FHIR_NS, name);
35771      composeImagingStudyImagingStudySeriesComponentElements(element);
35772      composeElementClose(element);
35773      xml.exit(FHIR_NS, name);
35774    }
35775  }
35776
35777  protected void composeImagingStudyImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
35778      composeBackboneElementElements(element);
35779      if (element.hasIdentifier()) {
35780        composeIdentifier("identifier", element.getIdentifier());
35781      }
35782      if (element.hasNumberElement()) {
35783        composeUnsignedInt("number", element.getNumberElement());
35784      }
35785      if (element.hasModality()) {
35786        composeCoding("modality", element.getModality());
35787      }
35788      if (element.hasDescriptionElement()) {
35789        composeString("description", element.getDescriptionElement());
35790      }
35791      if (element.hasNumberOfInstancesElement()) {
35792        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
35793      }
35794      if (element.hasEndpoint()) { 
35795        for (Reference e : element.getEndpoint()) 
35796          composeReference("endpoint", e);
35797      }
35798      if (element.hasBodySite()) {
35799        composeCoding("bodySite", element.getBodySite());
35800      }
35801      if (element.hasLaterality()) {
35802        composeCoding("laterality", element.getLaterality());
35803      }
35804      if (element.hasSpecimen()) { 
35805        for (Reference e : element.getSpecimen()) 
35806          composeReference("specimen", e);
35807      }
35808      if (element.hasStartedElement()) {
35809        composeDateTime("started", element.getStartedElement());
35810      }
35811      if (element.hasPerformer()) { 
35812        for (ImagingStudy.ImagingStudySeriesPerformerComponent e : element.getPerformer()) 
35813          composeImagingStudyImagingStudySeriesPerformerComponent("performer", e);
35814      }
35815      if (element.hasInstance()) { 
35816        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
35817          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
35818      }
35819  }
35820
35821  protected void composeImagingStudyImagingStudySeriesPerformerComponent(String name, ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
35822    if (element != null) {
35823      composeElementAttributes(element);
35824      xml.enter(FHIR_NS, name);
35825      composeImagingStudyImagingStudySeriesPerformerComponentElements(element);
35826      composeElementClose(element);
35827      xml.exit(FHIR_NS, name);
35828    }
35829  }
35830
35831  protected void composeImagingStudyImagingStudySeriesPerformerComponentElements(ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
35832      composeBackboneElementElements(element);
35833      if (element.hasFunction()) {
35834        composeCodeableConcept("function", element.getFunction());
35835      }
35836      if (element.hasActor()) {
35837        composeReference("actor", element.getActor());
35838      }
35839  }
35840
35841  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
35842    if (element != null) {
35843      composeElementAttributes(element);
35844      xml.enter(FHIR_NS, name);
35845      composeImagingStudyImagingStudySeriesInstanceComponentElements(element);
35846      composeElementClose(element);
35847      xml.exit(FHIR_NS, name);
35848    }
35849  }
35850
35851  protected void composeImagingStudyImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
35852      composeBackboneElementElements(element);
35853      if (element.hasIdentifier()) {
35854        composeIdentifier("identifier", element.getIdentifier());
35855      }
35856      if (element.hasNumberElement()) {
35857        composeUnsignedInt("number", element.getNumberElement());
35858      }
35859      if (element.hasSopClass()) {
35860        composeCoding("sopClass", element.getSopClass());
35861      }
35862      if (element.hasTitleElement()) {
35863        composeString("title", element.getTitleElement());
35864      }
35865  }
35866
35867  protected void composeImmunization(String name, Immunization element) throws IOException {
35868    if (element != null) {
35869      composeDomainResourceAttributes(element);
35870      xml.enter(FHIR_NS, name);
35871      composeImmunizationElements(element);
35872      composeElementClose(element);
35873      xml.exit(FHIR_NS, name);
35874    }
35875  }
35876
35877  protected void composeImmunizationElements(Immunization element) throws IOException {
35878      composeDomainResourceElements(element);
35879      if (element.hasIdentifier()) { 
35880        for (Identifier e : element.getIdentifier()) 
35881          composeIdentifier("identifier", e);
35882      }
35883      if (element.hasStatusElement())
35884        composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusEnumFactory());
35885      if (element.hasStatusReason()) {
35886        composeCodeableConcept("statusReason", element.getStatusReason());
35887      }
35888      if (element.hasVaccineCode()) {
35889        composeCodeableConcept("vaccineCode", element.getVaccineCode());
35890      }
35891      if (element.hasPatient()) {
35892        composeReference("patient", element.getPatient());
35893      }
35894      if (element.hasEncounter()) {
35895        composeReference("encounter", element.getEncounter());
35896      }
35897      if (element.hasOccurrence()) {
35898        composeType("occurrence", element.getOccurrence());
35899      }      if (element.hasRecordedElement()) {
35900        composeDateTime("recorded", element.getRecordedElement());
35901      }
35902      if (element.hasPrimarySourceElement()) {
35903        composeBoolean("primarySource", element.getPrimarySourceElement());
35904      }
35905      if (element.hasReportOrigin()) {
35906        composeCodeableConcept("reportOrigin", element.getReportOrigin());
35907      }
35908      if (element.hasLocation()) {
35909        composeReference("location", element.getLocation());
35910      }
35911      if (element.hasManufacturer()) {
35912        composeReference("manufacturer", element.getManufacturer());
35913      }
35914      if (element.hasLotNumberElement()) {
35915        composeString("lotNumber", element.getLotNumberElement());
35916      }
35917      if (element.hasExpirationDateElement()) {
35918        composeDate("expirationDate", element.getExpirationDateElement());
35919      }
35920      if (element.hasSite()) {
35921        composeCodeableConcept("site", element.getSite());
35922      }
35923      if (element.hasRoute()) {
35924        composeCodeableConcept("route", element.getRoute());
35925      }
35926      if (element.hasDoseQuantity()) {
35927        composeQuantity("doseQuantity", element.getDoseQuantity());
35928      }
35929      if (element.hasPerformer()) { 
35930        for (Immunization.ImmunizationPerformerComponent e : element.getPerformer()) 
35931          composeImmunizationImmunizationPerformerComponent("performer", e);
35932      }
35933      if (element.hasNote()) { 
35934        for (Annotation e : element.getNote()) 
35935          composeAnnotation("note", e);
35936      }
35937      if (element.hasReasonCode()) { 
35938        for (CodeableConcept e : element.getReasonCode()) 
35939          composeCodeableConcept("reasonCode", e);
35940      }
35941      if (element.hasReasonReference()) { 
35942        for (Reference e : element.getReasonReference()) 
35943          composeReference("reasonReference", e);
35944      }
35945      if (element.hasIsSubpotentElement()) {
35946        composeBoolean("isSubpotent", element.getIsSubpotentElement());
35947      }
35948      if (element.hasSubpotentReason()) { 
35949        for (CodeableConcept e : element.getSubpotentReason()) 
35950          composeCodeableConcept("subpotentReason", e);
35951      }
35952      if (element.hasEducation()) { 
35953        for (Immunization.ImmunizationEducationComponent e : element.getEducation()) 
35954          composeImmunizationImmunizationEducationComponent("education", e);
35955      }
35956      if (element.hasProgramEligibility()) { 
35957        for (CodeableConcept e : element.getProgramEligibility()) 
35958          composeCodeableConcept("programEligibility", e);
35959      }
35960      if (element.hasFundingSource()) {
35961        composeCodeableConcept("fundingSource", element.getFundingSource());
35962      }
35963      if (element.hasProtocolApplied()) { 
35964        for (Immunization.ImmunizationProtocolAppliedComponent e : element.getProtocolApplied()) 
35965          composeImmunizationImmunizationProtocolAppliedComponent("protocolApplied", e);
35966      }
35967  }
35968
35969  protected void composeImmunizationImmunizationPerformerComponent(String name, Immunization.ImmunizationPerformerComponent element) throws IOException {
35970    if (element != null) {
35971      composeElementAttributes(element);
35972      xml.enter(FHIR_NS, name);
35973      composeImmunizationImmunizationPerformerComponentElements(element);
35974      composeElementClose(element);
35975      xml.exit(FHIR_NS, name);
35976    }
35977  }
35978
35979  protected void composeImmunizationImmunizationPerformerComponentElements(Immunization.ImmunizationPerformerComponent element) throws IOException {
35980      composeBackboneElementElements(element);
35981      if (element.hasFunction()) {
35982        composeCodeableConcept("function", element.getFunction());
35983      }
35984      if (element.hasActor()) {
35985        composeReference("actor", element.getActor());
35986      }
35987  }
35988
35989  protected void composeImmunizationImmunizationEducationComponent(String name, Immunization.ImmunizationEducationComponent element) throws IOException {
35990    if (element != null) {
35991      composeElementAttributes(element);
35992      xml.enter(FHIR_NS, name);
35993      composeImmunizationImmunizationEducationComponentElements(element);
35994      composeElementClose(element);
35995      xml.exit(FHIR_NS, name);
35996    }
35997  }
35998
35999  protected void composeImmunizationImmunizationEducationComponentElements(Immunization.ImmunizationEducationComponent element) throws IOException {
36000      composeBackboneElementElements(element);
36001      if (element.hasDocumentTypeElement()) {
36002        composeString("documentType", element.getDocumentTypeElement());
36003      }
36004      if (element.hasReferenceElement()) {
36005        composeUri("reference", element.getReferenceElement());
36006      }
36007      if (element.hasPublicationDateElement()) {
36008        composeDateTime("publicationDate", element.getPublicationDateElement());
36009      }
36010      if (element.hasPresentationDateElement()) {
36011        composeDateTime("presentationDate", element.getPresentationDateElement());
36012      }
36013  }
36014
36015  protected void composeImmunizationImmunizationProtocolAppliedComponent(String name, Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
36016    if (element != null) {
36017      composeElementAttributes(element);
36018      xml.enter(FHIR_NS, name);
36019      composeImmunizationImmunizationProtocolAppliedComponentElements(element);
36020      composeElementClose(element);
36021      xml.exit(FHIR_NS, name);
36022    }
36023  }
36024
36025  protected void composeImmunizationImmunizationProtocolAppliedComponentElements(Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
36026      composeBackboneElementElements(element);
36027      if (element.hasSeriesElement()) {
36028        composeString("series", element.getSeriesElement());
36029      }
36030      if (element.hasAuthority()) {
36031        composeReference("authority", element.getAuthority());
36032      }
36033      if (element.hasTargetDisease()) {
36034        composeCodeableConcept("targetDisease", element.getTargetDisease());
36035      }
36036      if (element.hasDoseNumber()) {
36037        composeType("doseNumber", element.getDoseNumber());
36038      }  }
36039
36040  protected void composeImmunizationEvaluation(String name, ImmunizationEvaluation element) throws IOException {
36041    if (element != null) {
36042      composeDomainResourceAttributes(element);
36043      xml.enter(FHIR_NS, name);
36044      composeImmunizationEvaluationElements(element);
36045      composeElementClose(element);
36046      xml.exit(FHIR_NS, name);
36047    }
36048  }
36049
36050  protected void composeImmunizationEvaluationElements(ImmunizationEvaluation element) throws IOException {
36051      composeDomainResourceElements(element);
36052      if (element.hasIdentifier()) { 
36053        for (Identifier e : element.getIdentifier()) 
36054          composeIdentifier("identifier", e);
36055      }
36056      if (element.hasStatusElement())
36057        composeEnumeration("status", element.getStatusElement(), new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory());
36058      if (element.hasPatient()) {
36059        composeReference("patient", element.getPatient());
36060      }
36061      if (element.hasDateElement()) {
36062        composeDateTime("date", element.getDateElement());
36063      }
36064      if (element.hasAuthority()) {
36065        composeReference("authority", element.getAuthority());
36066      }
36067      if (element.hasTargetDisease()) {
36068        composeCodeableConcept("targetDisease", element.getTargetDisease());
36069      }
36070      if (element.hasImmunizationEvent()) {
36071        composeReference("immunizationEvent", element.getImmunizationEvent());
36072      }
36073      if (element.hasDoseStatus()) {
36074        composeCodeableConcept("doseStatus", element.getDoseStatus());
36075      }
36076      if (element.hasDoseStatusReason()) { 
36077        for (CodeableConcept e : element.getDoseStatusReason()) 
36078          composeCodeableConcept("doseStatusReason", e);
36079      }
36080      if (element.hasDescriptionElement()) {
36081        composeString("description", element.getDescriptionElement());
36082      }
36083      if (element.hasSeriesElement()) {
36084        composeString("series", element.getSeriesElement());
36085      }
36086      if (element.hasDoseNumber()) {
36087        composeType("doseNumber", element.getDoseNumber());
36088      }      if (element.hasSeriesDoses()) {
36089        composeType("seriesDoses", element.getSeriesDoses());
36090      }  }
36091
36092  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
36093    if (element != null) {
36094      composeDomainResourceAttributes(element);
36095      xml.enter(FHIR_NS, name);
36096      composeImmunizationRecommendationElements(element);
36097      composeElementClose(element);
36098      xml.exit(FHIR_NS, name);
36099    }
36100  }
36101
36102  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
36103      composeDomainResourceElements(element);
36104      if (element.hasIdentifier()) { 
36105        for (Identifier e : element.getIdentifier()) 
36106          composeIdentifier("identifier", e);
36107      }
36108      if (element.hasPatient()) {
36109        composeReference("patient", element.getPatient());
36110      }
36111      if (element.hasDateElement()) {
36112        composeDateTime("date", element.getDateElement());
36113      }
36114      if (element.hasAuthority()) {
36115        composeReference("authority", element.getAuthority());
36116      }
36117      if (element.hasRecommendation()) { 
36118        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
36119          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
36120      }
36121  }
36122
36123  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
36124    if (element != null) {
36125      composeElementAttributes(element);
36126      xml.enter(FHIR_NS, name);
36127      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(element);
36128      composeElementClose(element);
36129      xml.exit(FHIR_NS, name);
36130    }
36131  }
36132
36133  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
36134      composeBackboneElementElements(element);
36135      if (element.hasVaccineCode()) { 
36136        for (CodeableConcept e : element.getVaccineCode()) 
36137          composeCodeableConcept("vaccineCode", e);
36138      }
36139      if (element.hasTargetDisease()) {
36140        composeCodeableConcept("targetDisease", element.getTargetDisease());
36141      }
36142      if (element.hasContraindicatedVaccineCode()) { 
36143        for (CodeableConcept e : element.getContraindicatedVaccineCode()) 
36144          composeCodeableConcept("contraindicatedVaccineCode", e);
36145      }
36146      if (element.hasForecastStatus()) {
36147        composeCodeableConcept("forecastStatus", element.getForecastStatus());
36148      }
36149      if (element.hasForecastReason()) { 
36150        for (CodeableConcept e : element.getForecastReason()) 
36151          composeCodeableConcept("forecastReason", e);
36152      }
36153      if (element.hasDateCriterion()) { 
36154        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
36155          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
36156      }
36157      if (element.hasDescriptionElement()) {
36158        composeString("description", element.getDescriptionElement());
36159      }
36160      if (element.hasSeriesElement()) {
36161        composeString("series", element.getSeriesElement());
36162      }
36163      if (element.hasDoseNumber()) {
36164        composeType("doseNumber", element.getDoseNumber());
36165      }      if (element.hasSeriesDoses()) {
36166        composeType("seriesDoses", element.getSeriesDoses());
36167      }      if (element.hasSupportingImmunization()) { 
36168        for (Reference e : element.getSupportingImmunization()) 
36169          composeReference("supportingImmunization", e);
36170      }
36171      if (element.hasSupportingPatientInformation()) { 
36172        for (Reference e : element.getSupportingPatientInformation()) 
36173          composeReference("supportingPatientInformation", e);
36174      }
36175  }
36176
36177  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
36178    if (element != null) {
36179      composeElementAttributes(element);
36180      xml.enter(FHIR_NS, name);
36181      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
36182      composeElementClose(element);
36183      xml.exit(FHIR_NS, name);
36184    }
36185  }
36186
36187  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
36188      composeBackboneElementElements(element);
36189      if (element.hasCode()) {
36190        composeCodeableConcept("code", element.getCode());
36191      }
36192      if (element.hasValueElement()) {
36193        composeDateTime("value", element.getValueElement());
36194      }
36195  }
36196
36197  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
36198    if (element != null) {
36199      composeDomainResourceAttributes(element);
36200      xml.enter(FHIR_NS, name);
36201      composeImplementationGuideElements(element);
36202      composeElementClose(element);
36203      xml.exit(FHIR_NS, name);
36204    }
36205  }
36206
36207  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
36208      composeDomainResourceElements(element);
36209      if (element.hasUrlElement()) {
36210        composeUri("url", element.getUrlElement());
36211      }
36212      if (element.hasVersionElement()) {
36213        composeString("version", element.getVersionElement());
36214      }
36215      if (element.hasNameElement()) {
36216        composeString("name", element.getNameElement());
36217      }
36218      if (element.hasTitleElement()) {
36219        composeString("title", element.getTitleElement());
36220      }
36221      if (element.hasStatusElement())
36222        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36223      if (element.hasExperimentalElement()) {
36224        composeBoolean("experimental", element.getExperimentalElement());
36225      }
36226      if (element.hasDateElement()) {
36227        composeDateTime("date", element.getDateElement());
36228      }
36229      if (element.hasPublisherElement()) {
36230        composeString("publisher", element.getPublisherElement());
36231      }
36232      if (element.hasContact()) { 
36233        for (ContactDetail e : element.getContact()) 
36234          composeContactDetail("contact", e);
36235      }
36236      if (element.hasDescriptionElement()) {
36237        composeMarkdown("description", element.getDescriptionElement());
36238      }
36239      if (element.hasUseContext()) { 
36240        for (UsageContext e : element.getUseContext()) 
36241          composeUsageContext("useContext", e);
36242      }
36243      if (element.hasJurisdiction()) { 
36244        for (CodeableConcept e : element.getJurisdiction()) 
36245          composeCodeableConcept("jurisdiction", e);
36246      }
36247      if (element.hasCopyrightElement()) {
36248        composeMarkdown("copyright", element.getCopyrightElement());
36249      }
36250      if (element.hasPackageIdElement()) {
36251        composeId("packageId", element.getPackageIdElement());
36252      }
36253      if (element.hasLicenseElement())
36254        composeEnumeration("license", element.getLicenseElement(), new ImplementationGuide.SPDXLicenseEnumFactory());
36255      if (element.hasFhirVersionElement()) {
36256        composeId("fhirVersion", element.getFhirVersionElement());
36257      }
36258      if (element.hasDependsOn()) { 
36259        for (ImplementationGuide.ImplementationGuideDependsOnComponent e : element.getDependsOn()) 
36260          composeImplementationGuideImplementationGuideDependsOnComponent("dependsOn", e);
36261      }
36262      if (element.hasGlobal()) { 
36263        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
36264          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
36265      }
36266      if (element.hasDefinition()) {
36267        composeImplementationGuideImplementationGuideDefinitionComponent("definition", element.getDefinition());
36268      }
36269      if (element.hasManifest()) {
36270        composeImplementationGuideImplementationGuideManifestComponent("manifest", element.getManifest());
36271      }
36272  }
36273
36274  protected void composeImplementationGuideImplementationGuideDependsOnComponent(String name, ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
36275    if (element != null) {
36276      composeElementAttributes(element);
36277      xml.enter(FHIR_NS, name);
36278      composeImplementationGuideImplementationGuideDependsOnComponentElements(element);
36279      composeElementClose(element);
36280      xml.exit(FHIR_NS, name);
36281    }
36282  }
36283
36284  protected void composeImplementationGuideImplementationGuideDependsOnComponentElements(ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
36285      composeBackboneElementElements(element);
36286      if (element.hasUriElement()) {
36287        composeCanonical("uri", element.getUriElement());
36288      }
36289      if (element.hasPackageIdElement()) {
36290        composeId("packageId", element.getPackageIdElement());
36291      }
36292      if (element.hasVersionElement()) {
36293        composeString("version", element.getVersionElement());
36294      }
36295  }
36296
36297  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
36298    if (element != null) {
36299      composeElementAttributes(element);
36300      xml.enter(FHIR_NS, name);
36301      composeImplementationGuideImplementationGuideGlobalComponentElements(element);
36302      composeElementClose(element);
36303      xml.exit(FHIR_NS, name);
36304    }
36305  }
36306
36307  protected void composeImplementationGuideImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
36308      composeBackboneElementElements(element);
36309      if (element.hasTypeElement()) {
36310        composeCode("type", element.getTypeElement());
36311      }
36312      if (element.hasProfileElement()) {
36313        composeCanonical("profile", element.getProfileElement());
36314      }
36315  }
36316
36317  protected void composeImplementationGuideImplementationGuideDefinitionComponent(String name, ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
36318    if (element != null) {
36319      composeElementAttributes(element);
36320      xml.enter(FHIR_NS, name);
36321      composeImplementationGuideImplementationGuideDefinitionComponentElements(element);
36322      composeElementClose(element);
36323      xml.exit(FHIR_NS, name);
36324    }
36325  }
36326
36327  protected void composeImplementationGuideImplementationGuideDefinitionComponentElements(ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
36328      composeBackboneElementElements(element);
36329      if (element.hasPackage()) { 
36330        for (ImplementationGuide.ImplementationGuideDefinitionPackageComponent e : element.getPackage()) 
36331          composeImplementationGuideImplementationGuideDefinitionPackageComponent("package", e);
36332      }
36333      if (element.hasResource()) { 
36334        for (ImplementationGuide.ImplementationGuideDefinitionResourceComponent e : element.getResource()) 
36335          composeImplementationGuideImplementationGuideDefinitionResourceComponent("resource", e);
36336      }
36337      if (element.hasPage()) {
36338        composeImplementationGuideImplementationGuideDefinitionPageComponent("page", element.getPage());
36339      }
36340      if (element.hasParameter()) { 
36341        for (ImplementationGuide.ImplementationGuideDefinitionParameterComponent e : element.getParameter()) 
36342          composeImplementationGuideImplementationGuideDefinitionParameterComponent("parameter", e);
36343      }
36344      if (element.hasTemplate()) { 
36345        for (ImplementationGuide.ImplementationGuideDefinitionTemplateComponent e : element.getTemplate()) 
36346          composeImplementationGuideImplementationGuideDefinitionTemplateComponent("template", e);
36347      }
36348  }
36349
36350  protected void composeImplementationGuideImplementationGuideDefinitionPackageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPackageComponent element) throws IOException {
36351    if (element != null) {
36352      composeElementAttributes(element);
36353      xml.enter(FHIR_NS, name);
36354      composeImplementationGuideImplementationGuideDefinitionPackageComponentElements(element);
36355      composeElementClose(element);
36356      xml.exit(FHIR_NS, name);
36357    }
36358  }
36359
36360  protected void composeImplementationGuideImplementationGuideDefinitionPackageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPackageComponent element) throws IOException {
36361      composeBackboneElementElements(element);
36362      if (element.hasNameElement()) {
36363        composeString("name", element.getNameElement());
36364      }
36365      if (element.hasDescriptionElement()) {
36366        composeString("description", element.getDescriptionElement());
36367      }
36368  }
36369
36370  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponent(String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
36371    if (element != null) {
36372      composeElementAttributes(element);
36373      xml.enter(FHIR_NS, name);
36374      composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(element);
36375      composeElementClose(element);
36376      xml.exit(FHIR_NS, name);
36377    }
36378  }
36379
36380  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
36381      composeBackboneElementElements(element);
36382      if (element.hasReference()) {
36383        composeReference("reference", element.getReference());
36384      }
36385      if (element.hasNameElement()) {
36386        composeString("name", element.getNameElement());
36387      }
36388      if (element.hasDescriptionElement()) {
36389        composeString("description", element.getDescriptionElement());
36390      }
36391      if (element.hasExample()) {
36392        composeType("example", element.getExample());
36393      }      if (element.hasPackageElement()) {
36394        composeId("package", element.getPackageElement());
36395      }
36396  }
36397
36398  protected void composeImplementationGuideImplementationGuideDefinitionPageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
36399    if (element != null) {
36400      composeElementAttributes(element);
36401      xml.enter(FHIR_NS, name);
36402      composeImplementationGuideImplementationGuideDefinitionPageComponentElements(element);
36403      composeElementClose(element);
36404      xml.exit(FHIR_NS, name);
36405    }
36406  }
36407
36408  protected void composeImplementationGuideImplementationGuideDefinitionPageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
36409      composeBackboneElementElements(element);
36410      if (element.hasName()) {
36411        composeType("name", element.getName());
36412      }      if (element.hasTitleElement()) {
36413        composeString("title", element.getTitleElement());
36414      }
36415      if (element.hasGenerationElement())
36416        composeEnumeration("generation", element.getGenerationElement(), new ImplementationGuide.GuidePageGenerationEnumFactory());
36417      if (element.hasPage()) { 
36418        for (ImplementationGuide.ImplementationGuideDefinitionPageComponent e : element.getPage()) 
36419          composeImplementationGuideImplementationGuideDefinitionPageComponent("page", e);
36420      }
36421  }
36422
36423  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponent(String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
36424    if (element != null) {
36425      composeElementAttributes(element);
36426      xml.enter(FHIR_NS, name);
36427      composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(element);
36428      composeElementClose(element);
36429      xml.exit(FHIR_NS, name);
36430    }
36431  }
36432
36433  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
36434      composeBackboneElementElements(element);
36435      if (element.hasCodeElement())
36436        composeEnumeration("code", element.getCodeElement(), new ImplementationGuide.GuideParameterCodeEnumFactory());
36437      if (element.hasValueElement()) {
36438        composeString("value", element.getValueElement());
36439      }
36440  }
36441
36442  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponent(String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
36443    if (element != null) {
36444      composeElementAttributes(element);
36445      xml.enter(FHIR_NS, name);
36446      composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(element);
36447      composeElementClose(element);
36448      xml.exit(FHIR_NS, name);
36449    }
36450  }
36451
36452  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
36453      composeBackboneElementElements(element);
36454      if (element.hasCodeElement()) {
36455        composeCode("code", element.getCodeElement());
36456      }
36457      if (element.hasSourceElement()) {
36458        composeString("source", element.getSourceElement());
36459      }
36460      if (element.hasScopeElement()) {
36461        composeString("scope", element.getScopeElement());
36462      }
36463  }
36464
36465  protected void composeImplementationGuideImplementationGuideManifestComponent(String name, ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
36466    if (element != null) {
36467      composeElementAttributes(element);
36468      xml.enter(FHIR_NS, name);
36469      composeImplementationGuideImplementationGuideManifestComponentElements(element);
36470      composeElementClose(element);
36471      xml.exit(FHIR_NS, name);
36472    }
36473  }
36474
36475  protected void composeImplementationGuideImplementationGuideManifestComponentElements(ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
36476      composeBackboneElementElements(element);
36477      if (element.hasRenderingElement()) {
36478        composeUrl("rendering", element.getRenderingElement());
36479      }
36480      if (element.hasResource()) { 
36481        for (ImplementationGuide.ManifestResourceComponent e : element.getResource()) 
36482          composeImplementationGuideManifestResourceComponent("resource", e);
36483      }
36484      if (element.hasPage()) { 
36485        for (ImplementationGuide.ManifestPageComponent e : element.getPage()) 
36486          composeImplementationGuideManifestPageComponent("page", e);
36487      }
36488      if (element.hasImage()) { 
36489        for (StringType e : element.getImage()) 
36490          composeString("image", e);
36491      }
36492      if (element.hasOther()) { 
36493        for (StringType e : element.getOther()) 
36494          composeString("other", e);
36495      }
36496  }
36497
36498  protected void composeImplementationGuideManifestResourceComponent(String name, ImplementationGuide.ManifestResourceComponent element) throws IOException {
36499    if (element != null) {
36500      composeElementAttributes(element);
36501      xml.enter(FHIR_NS, name);
36502      composeImplementationGuideManifestResourceComponentElements(element);
36503      composeElementClose(element);
36504      xml.exit(FHIR_NS, name);
36505    }
36506  }
36507
36508  protected void composeImplementationGuideManifestResourceComponentElements(ImplementationGuide.ManifestResourceComponent element) throws IOException {
36509      composeBackboneElementElements(element);
36510      if (element.hasReference()) {
36511        composeReference("reference", element.getReference());
36512      }
36513      if (element.hasExample()) {
36514        composeType("example", element.getExample());
36515      }      if (element.hasRelativePathElement()) {
36516        composeUrl("relativePath", element.getRelativePathElement());
36517      }
36518  }
36519
36520  protected void composeImplementationGuideManifestPageComponent(String name, ImplementationGuide.ManifestPageComponent element) throws IOException {
36521    if (element != null) {
36522      composeElementAttributes(element);
36523      xml.enter(FHIR_NS, name);
36524      composeImplementationGuideManifestPageComponentElements(element);
36525      composeElementClose(element);
36526      xml.exit(FHIR_NS, name);
36527    }
36528  }
36529
36530  protected void composeImplementationGuideManifestPageComponentElements(ImplementationGuide.ManifestPageComponent element) throws IOException {
36531      composeBackboneElementElements(element);
36532      if (element.hasNameElement()) {
36533        composeString("name", element.getNameElement());
36534      }
36535      if (element.hasTitleElement()) {
36536        composeString("title", element.getTitleElement());
36537      }
36538      if (element.hasAnchor()) { 
36539        for (StringType e : element.getAnchor()) 
36540          composeString("anchor", e);
36541      }
36542  }
36543
36544  protected void composeInsurancePlan(String name, InsurancePlan element) throws IOException {
36545    if (element != null) {
36546      composeDomainResourceAttributes(element);
36547      xml.enter(FHIR_NS, name);
36548      composeInsurancePlanElements(element);
36549      composeElementClose(element);
36550      xml.exit(FHIR_NS, name);
36551    }
36552  }
36553
36554  protected void composeInsurancePlanElements(InsurancePlan element) throws IOException {
36555      composeDomainResourceElements(element);
36556      if (element.hasIdentifier()) { 
36557        for (Identifier e : element.getIdentifier()) 
36558          composeIdentifier("identifier", e);
36559      }
36560      if (element.hasStatusElement())
36561        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36562      if (element.hasType()) { 
36563        for (CodeableConcept e : element.getType()) 
36564          composeCodeableConcept("type", e);
36565      }
36566      if (element.hasNameElement()) {
36567        composeString("name", element.getNameElement());
36568      }
36569      if (element.hasAlias()) { 
36570        for (StringType e : element.getAlias()) 
36571          composeString("alias", e);
36572      }
36573      if (element.hasPeriod()) {
36574        composePeriod("period", element.getPeriod());
36575      }
36576      if (element.hasOwnedBy()) {
36577        composeReference("ownedBy", element.getOwnedBy());
36578      }
36579      if (element.hasAdministeredBy()) {
36580        composeReference("administeredBy", element.getAdministeredBy());
36581      }
36582      if (element.hasCoverageArea()) { 
36583        for (Reference e : element.getCoverageArea()) 
36584          composeReference("coverageArea", e);
36585      }
36586      if (element.hasContact()) { 
36587        for (InsurancePlan.InsurancePlanContactComponent e : element.getContact()) 
36588          composeInsurancePlanInsurancePlanContactComponent("contact", e);
36589      }
36590      if (element.hasEndpoint()) { 
36591        for (Reference e : element.getEndpoint()) 
36592          composeReference("endpoint", e);
36593      }
36594      if (element.hasNetwork()) { 
36595        for (Reference e : element.getNetwork()) 
36596          composeReference("network", e);
36597      }
36598      if (element.hasCoverage()) { 
36599        for (InsurancePlan.InsurancePlanCoverageComponent e : element.getCoverage()) 
36600          composeInsurancePlanInsurancePlanCoverageComponent("coverage", e);
36601      }
36602      if (element.hasPlan()) { 
36603        for (InsurancePlan.InsurancePlanPlanComponent e : element.getPlan()) 
36604          composeInsurancePlanInsurancePlanPlanComponent("plan", e);
36605      }
36606  }
36607
36608  protected void composeInsurancePlanInsurancePlanContactComponent(String name, InsurancePlan.InsurancePlanContactComponent element) throws IOException {
36609    if (element != null) {
36610      composeElementAttributes(element);
36611      xml.enter(FHIR_NS, name);
36612      composeInsurancePlanInsurancePlanContactComponentElements(element);
36613      composeElementClose(element);
36614      xml.exit(FHIR_NS, name);
36615    }
36616  }
36617
36618  protected void composeInsurancePlanInsurancePlanContactComponentElements(InsurancePlan.InsurancePlanContactComponent element) throws IOException {
36619      composeBackboneElementElements(element);
36620      if (element.hasPurpose()) {
36621        composeCodeableConcept("purpose", element.getPurpose());
36622      }
36623      if (element.hasName()) {
36624        composeHumanName("name", element.getName());
36625      }
36626      if (element.hasTelecom()) { 
36627        for (ContactPoint e : element.getTelecom()) 
36628          composeContactPoint("telecom", e);
36629      }
36630      if (element.hasAddress()) {
36631        composeAddress("address", element.getAddress());
36632      }
36633  }
36634
36635  protected void composeInsurancePlanInsurancePlanCoverageComponent(String name, InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
36636    if (element != null) {
36637      composeElementAttributes(element);
36638      xml.enter(FHIR_NS, name);
36639      composeInsurancePlanInsurancePlanCoverageComponentElements(element);
36640      composeElementClose(element);
36641      xml.exit(FHIR_NS, name);
36642    }
36643  }
36644
36645  protected void composeInsurancePlanInsurancePlanCoverageComponentElements(InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
36646      composeBackboneElementElements(element);
36647      if (element.hasType()) {
36648        composeCodeableConcept("type", element.getType());
36649      }
36650      if (element.hasNetwork()) { 
36651        for (Reference e : element.getNetwork()) 
36652          composeReference("network", e);
36653      }
36654      if (element.hasBenefit()) { 
36655        for (InsurancePlan.CoverageBenefitComponent e : element.getBenefit()) 
36656          composeInsurancePlanCoverageBenefitComponent("benefit", e);
36657      }
36658  }
36659
36660  protected void composeInsurancePlanCoverageBenefitComponent(String name, InsurancePlan.CoverageBenefitComponent element) throws IOException {
36661    if (element != null) {
36662      composeElementAttributes(element);
36663      xml.enter(FHIR_NS, name);
36664      composeInsurancePlanCoverageBenefitComponentElements(element);
36665      composeElementClose(element);
36666      xml.exit(FHIR_NS, name);
36667    }
36668  }
36669
36670  protected void composeInsurancePlanCoverageBenefitComponentElements(InsurancePlan.CoverageBenefitComponent element) throws IOException {
36671      composeBackboneElementElements(element);
36672      if (element.hasType()) {
36673        composeCodeableConcept("type", element.getType());
36674      }
36675      if (element.hasRequirementElement()) {
36676        composeString("requirement", element.getRequirementElement());
36677      }
36678      if (element.hasLimit()) { 
36679        for (InsurancePlan.CoverageBenefitLimitComponent e : element.getLimit()) 
36680          composeInsurancePlanCoverageBenefitLimitComponent("limit", e);
36681      }
36682  }
36683
36684  protected void composeInsurancePlanCoverageBenefitLimitComponent(String name, InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
36685    if (element != null) {
36686      composeElementAttributes(element);
36687      xml.enter(FHIR_NS, name);
36688      composeInsurancePlanCoverageBenefitLimitComponentElements(element);
36689      composeElementClose(element);
36690      xml.exit(FHIR_NS, name);
36691    }
36692  }
36693
36694  protected void composeInsurancePlanCoverageBenefitLimitComponentElements(InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
36695      composeBackboneElementElements(element);
36696      if (element.hasValue()) {
36697        composeQuantity("value", element.getValue());
36698      }
36699      if (element.hasCode()) {
36700        composeCodeableConcept("code", element.getCode());
36701      }
36702  }
36703
36704  protected void composeInsurancePlanInsurancePlanPlanComponent(String name, InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
36705    if (element != null) {
36706      composeElementAttributes(element);
36707      xml.enter(FHIR_NS, name);
36708      composeInsurancePlanInsurancePlanPlanComponentElements(element);
36709      composeElementClose(element);
36710      xml.exit(FHIR_NS, name);
36711    }
36712  }
36713
36714  protected void composeInsurancePlanInsurancePlanPlanComponentElements(InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
36715      composeBackboneElementElements(element);
36716      if (element.hasIdentifier()) { 
36717        for (Identifier e : element.getIdentifier()) 
36718          composeIdentifier("identifier", e);
36719      }
36720      if (element.hasType()) {
36721        composeCodeableConcept("type", element.getType());
36722      }
36723      if (element.hasCoverageArea()) { 
36724        for (Reference e : element.getCoverageArea()) 
36725          composeReference("coverageArea", e);
36726      }
36727      if (element.hasNetwork()) { 
36728        for (Reference e : element.getNetwork()) 
36729          composeReference("network", e);
36730      }
36731      if (element.hasGeneralCost()) { 
36732        for (InsurancePlan.InsurancePlanPlanGeneralCostComponent e : element.getGeneralCost()) 
36733          composeInsurancePlanInsurancePlanPlanGeneralCostComponent("generalCost", e);
36734      }
36735      if (element.hasSpecificCost()) { 
36736        for (InsurancePlan.InsurancePlanPlanSpecificCostComponent e : element.getSpecificCost()) 
36737          composeInsurancePlanInsurancePlanPlanSpecificCostComponent("specificCost", e);
36738      }
36739  }
36740
36741  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponent(String name, InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
36742    if (element != null) {
36743      composeElementAttributes(element);
36744      xml.enter(FHIR_NS, name);
36745      composeInsurancePlanInsurancePlanPlanGeneralCostComponentElements(element);
36746      composeElementClose(element);
36747      xml.exit(FHIR_NS, name);
36748    }
36749  }
36750
36751  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponentElements(InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
36752      composeBackboneElementElements(element);
36753      if (element.hasType()) {
36754        composeCodeableConcept("type", element.getType());
36755      }
36756      if (element.hasGroupSizeElement()) {
36757        composePositiveInt("groupSize", element.getGroupSizeElement());
36758      }
36759      if (element.hasCost()) {
36760        composeMoney("cost", element.getCost());
36761      }
36762      if (element.hasCommentElement()) {
36763        composeString("comment", element.getCommentElement());
36764      }
36765  }
36766
36767  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponent(String name, InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
36768    if (element != null) {
36769      composeElementAttributes(element);
36770      xml.enter(FHIR_NS, name);
36771      composeInsurancePlanInsurancePlanPlanSpecificCostComponentElements(element);
36772      composeElementClose(element);
36773      xml.exit(FHIR_NS, name);
36774    }
36775  }
36776
36777  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponentElements(InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
36778      composeBackboneElementElements(element);
36779      if (element.hasCategory()) {
36780        composeCodeableConcept("category", element.getCategory());
36781      }
36782      if (element.hasBenefit()) { 
36783        for (InsurancePlan.PlanBenefitComponent e : element.getBenefit()) 
36784          composeInsurancePlanPlanBenefitComponent("benefit", e);
36785      }
36786  }
36787
36788  protected void composeInsurancePlanPlanBenefitComponent(String name, InsurancePlan.PlanBenefitComponent element) throws IOException {
36789    if (element != null) {
36790      composeElementAttributes(element);
36791      xml.enter(FHIR_NS, name);
36792      composeInsurancePlanPlanBenefitComponentElements(element);
36793      composeElementClose(element);
36794      xml.exit(FHIR_NS, name);
36795    }
36796  }
36797
36798  protected void composeInsurancePlanPlanBenefitComponentElements(InsurancePlan.PlanBenefitComponent element) throws IOException {
36799      composeBackboneElementElements(element);
36800      if (element.hasType()) {
36801        composeCodeableConcept("type", element.getType());
36802      }
36803      if (element.hasCost()) { 
36804        for (InsurancePlan.PlanBenefitCostComponent e : element.getCost()) 
36805          composeInsurancePlanPlanBenefitCostComponent("cost", e);
36806      }
36807  }
36808
36809  protected void composeInsurancePlanPlanBenefitCostComponent(String name, InsurancePlan.PlanBenefitCostComponent element) throws IOException {
36810    if (element != null) {
36811      composeElementAttributes(element);
36812      xml.enter(FHIR_NS, name);
36813      composeInsurancePlanPlanBenefitCostComponentElements(element);
36814      composeElementClose(element);
36815      xml.exit(FHIR_NS, name);
36816    }
36817  }
36818
36819  protected void composeInsurancePlanPlanBenefitCostComponentElements(InsurancePlan.PlanBenefitCostComponent element) throws IOException {
36820      composeBackboneElementElements(element);
36821      if (element.hasType()) {
36822        composeCodeableConcept("type", element.getType());
36823      }
36824      if (element.hasApplicability()) {
36825        composeCodeableConcept("applicability", element.getApplicability());
36826      }
36827      if (element.hasQualifiers()) { 
36828        for (CodeableConcept e : element.getQualifiers()) 
36829          composeCodeableConcept("qualifiers", e);
36830      }
36831      if (element.hasValue()) {
36832        composeQuantity("value", element.getValue());
36833      }
36834  }
36835
36836  protected void composeInvoice(String name, Invoice element) throws IOException {
36837    if (element != null) {
36838      composeDomainResourceAttributes(element);
36839      xml.enter(FHIR_NS, name);
36840      composeInvoiceElements(element);
36841      composeElementClose(element);
36842      xml.exit(FHIR_NS, name);
36843    }
36844  }
36845
36846  protected void composeInvoiceElements(Invoice element) throws IOException {
36847      composeDomainResourceElements(element);
36848      if (element.hasIdentifier()) { 
36849        for (Identifier e : element.getIdentifier()) 
36850          composeIdentifier("identifier", e);
36851      }
36852      if (element.hasStatusElement())
36853        composeEnumeration("status", element.getStatusElement(), new Invoice.InvoiceStatusEnumFactory());
36854      if (element.hasCancelledReasonElement()) {
36855        composeString("cancelledReason", element.getCancelledReasonElement());
36856      }
36857      if (element.hasType()) {
36858        composeCodeableConcept("type", element.getType());
36859      }
36860      if (element.hasSubject()) {
36861        composeReference("subject", element.getSubject());
36862      }
36863      if (element.hasRecipient()) {
36864        composeReference("recipient", element.getRecipient());
36865      }
36866      if (element.hasDateElement()) {
36867        composeDateTime("date", element.getDateElement());
36868      }
36869      if (element.hasParticipant()) { 
36870        for (Invoice.InvoiceParticipantComponent e : element.getParticipant()) 
36871          composeInvoiceInvoiceParticipantComponent("participant", e);
36872      }
36873      if (element.hasIssuer()) {
36874        composeReference("issuer", element.getIssuer());
36875      }
36876      if (element.hasAccount()) {
36877        composeReference("account", element.getAccount());
36878      }
36879      if (element.hasLineItem()) { 
36880        for (Invoice.InvoiceLineItemComponent e : element.getLineItem()) 
36881          composeInvoiceInvoiceLineItemComponent("lineItem", e);
36882      }
36883      if (element.hasTotalPriceComponent()) { 
36884        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getTotalPriceComponent()) 
36885          composeInvoiceInvoiceLineItemPriceComponentComponent("totalPriceComponent", e);
36886      }
36887      if (element.hasTotalNet()) {
36888        composeMoney("totalNet", element.getTotalNet());
36889      }
36890      if (element.hasTotalGross()) {
36891        composeMoney("totalGross", element.getTotalGross());
36892      }
36893      if (element.hasPaymentTermsElement()) {
36894        composeMarkdown("paymentTerms", element.getPaymentTermsElement());
36895      }
36896      if (element.hasNote()) { 
36897        for (Annotation e : element.getNote()) 
36898          composeAnnotation("note", e);
36899      }
36900  }
36901
36902  protected void composeInvoiceInvoiceParticipantComponent(String name, Invoice.InvoiceParticipantComponent element) throws IOException {
36903    if (element != null) {
36904      composeElementAttributes(element);
36905      xml.enter(FHIR_NS, name);
36906      composeInvoiceInvoiceParticipantComponentElements(element);
36907      composeElementClose(element);
36908      xml.exit(FHIR_NS, name);
36909    }
36910  }
36911
36912  protected void composeInvoiceInvoiceParticipantComponentElements(Invoice.InvoiceParticipantComponent element) throws IOException {
36913      composeBackboneElementElements(element);
36914      if (element.hasRole()) {
36915        composeCodeableConcept("role", element.getRole());
36916      }
36917      if (element.hasActor()) {
36918        composeReference("actor", element.getActor());
36919      }
36920  }
36921
36922  protected void composeInvoiceInvoiceLineItemComponent(String name, Invoice.InvoiceLineItemComponent element) throws IOException {
36923    if (element != null) {
36924      composeElementAttributes(element);
36925      xml.enter(FHIR_NS, name);
36926      composeInvoiceInvoiceLineItemComponentElements(element);
36927      composeElementClose(element);
36928      xml.exit(FHIR_NS, name);
36929    }
36930  }
36931
36932  protected void composeInvoiceInvoiceLineItemComponentElements(Invoice.InvoiceLineItemComponent element) throws IOException {
36933      composeBackboneElementElements(element);
36934      if (element.hasSequenceElement()) {
36935        composePositiveInt("sequence", element.getSequenceElement());
36936      }
36937      if (element.hasChargeItem()) {
36938        composeType("chargeItem", element.getChargeItem());
36939      }      if (element.hasPriceComponent()) { 
36940        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getPriceComponent()) 
36941          composeInvoiceInvoiceLineItemPriceComponentComponent("priceComponent", e);
36942      }
36943  }
36944
36945  protected void composeInvoiceInvoiceLineItemPriceComponentComponent(String name, Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
36946    if (element != null) {
36947      composeElementAttributes(element);
36948      xml.enter(FHIR_NS, name);
36949      composeInvoiceInvoiceLineItemPriceComponentComponentElements(element);
36950      composeElementClose(element);
36951      xml.exit(FHIR_NS, name);
36952    }
36953  }
36954
36955  protected void composeInvoiceInvoiceLineItemPriceComponentComponentElements(Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
36956      composeBackboneElementElements(element);
36957      if (element.hasTypeElement())
36958        composeEnumeration("type", element.getTypeElement(), new Invoice.InvoicePriceComponentTypeEnumFactory());
36959      if (element.hasCode()) {
36960        composeCodeableConcept("code", element.getCode());
36961      }
36962      if (element.hasFactorElement()) {
36963        composeDecimal("factor", element.getFactorElement());
36964      }
36965      if (element.hasAmount()) {
36966        composeMoney("amount", element.getAmount());
36967      }
36968  }
36969
36970  protected void composeItemInstance(String name, ItemInstance element) throws IOException {
36971    if (element != null) {
36972      composeDomainResourceAttributes(element);
36973      xml.enter(FHIR_NS, name);
36974      composeItemInstanceElements(element);
36975      composeElementClose(element);
36976      xml.exit(FHIR_NS, name);
36977    }
36978  }
36979
36980  protected void composeItemInstanceElements(ItemInstance element) throws IOException {
36981      composeDomainResourceElements(element);
36982      if (element.hasCountElement()) {
36983        composeInteger("count", element.getCountElement());
36984      }
36985      if (element.hasLocation()) {
36986        composeReference("location", element.getLocation());
36987      }
36988      if (element.hasSubject()) {
36989        composeReference("subject", element.getSubject());
36990      }
36991      if (element.hasManufactureDateElement()) {
36992        composeDateTime("manufactureDate", element.getManufactureDateElement());
36993      }
36994      if (element.hasExpiryDateElement()) {
36995        composeDateTime("expiryDate", element.getExpiryDateElement());
36996      }
36997      if (element.hasCurrentSWVersionElement()) {
36998        composeString("currentSWVersion", element.getCurrentSWVersionElement());
36999      }
37000      if (element.hasLotNumberElement()) {
37001        composeString("lotNumber", element.getLotNumberElement());
37002      }
37003      if (element.hasSerialNumberElement()) {
37004        composeString("serialNumber", element.getSerialNumberElement());
37005      }
37006      if (element.hasCarrierAIDCElement()) {
37007        composeString("carrierAIDC", element.getCarrierAIDCElement());
37008      }
37009      if (element.hasCarrierHRFElement()) {
37010        composeString("carrierHRF", element.getCarrierHRFElement());
37011      }
37012  }
37013
37014  protected void composeLibrary(String name, Library element) throws IOException {
37015    if (element != null) {
37016      composeDomainResourceAttributes(element);
37017      xml.enter(FHIR_NS, name);
37018      composeLibraryElements(element);
37019      composeElementClose(element);
37020      xml.exit(FHIR_NS, name);
37021    }
37022  }
37023
37024  protected void composeLibraryElements(Library element) throws IOException {
37025      composeDomainResourceElements(element);
37026      if (element.hasUrlElement()) {
37027        composeUri("url", element.getUrlElement());
37028      }
37029      if (element.hasIdentifier()) { 
37030        for (Identifier e : element.getIdentifier()) 
37031          composeIdentifier("identifier", e);
37032      }
37033      if (element.hasVersionElement()) {
37034        composeString("version", element.getVersionElement());
37035      }
37036      if (element.hasNameElement()) {
37037        composeString("name", element.getNameElement());
37038      }
37039      if (element.hasTitleElement()) {
37040        composeString("title", element.getTitleElement());
37041      }
37042      if (element.hasSubtitleElement()) {
37043        composeString("subtitle", element.getSubtitleElement());
37044      }
37045      if (element.hasStatusElement())
37046        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37047      if (element.hasExperimentalElement()) {
37048        composeBoolean("experimental", element.getExperimentalElement());
37049      }
37050      if (element.hasType()) {
37051        composeCodeableConcept("type", element.getType());
37052      }
37053      if (element.hasSubject()) {
37054        composeType("subject", element.getSubject());
37055      }      if (element.hasDateElement()) {
37056        composeDateTime("date", element.getDateElement());
37057      }
37058      if (element.hasPublisherElement()) {
37059        composeString("publisher", element.getPublisherElement());
37060      }
37061      if (element.hasContact()) { 
37062        for (ContactDetail e : element.getContact()) 
37063          composeContactDetail("contact", e);
37064      }
37065      if (element.hasDescriptionElement()) {
37066        composeMarkdown("description", element.getDescriptionElement());
37067      }
37068      if (element.hasUseContext()) { 
37069        for (UsageContext e : element.getUseContext()) 
37070          composeUsageContext("useContext", e);
37071      }
37072      if (element.hasJurisdiction()) { 
37073        for (CodeableConcept e : element.getJurisdiction()) 
37074          composeCodeableConcept("jurisdiction", e);
37075      }
37076      if (element.hasPurposeElement()) {
37077        composeMarkdown("purpose", element.getPurposeElement());
37078      }
37079      if (element.hasUsageElement()) {
37080        composeString("usage", element.getUsageElement());
37081      }
37082      if (element.hasCopyrightElement()) {
37083        composeMarkdown("copyright", element.getCopyrightElement());
37084      }
37085      if (element.hasApprovalDateElement()) {
37086        composeDate("approvalDate", element.getApprovalDateElement());
37087      }
37088      if (element.hasLastReviewDateElement()) {
37089        composeDate("lastReviewDate", element.getLastReviewDateElement());
37090      }
37091      if (element.hasEffectivePeriod()) {
37092        composePeriod("effectivePeriod", element.getEffectivePeriod());
37093      }
37094      if (element.hasTopic()) { 
37095        for (CodeableConcept e : element.getTopic()) 
37096          composeCodeableConcept("topic", e);
37097      }
37098      if (element.hasAuthor()) { 
37099        for (ContactDetail e : element.getAuthor()) 
37100          composeContactDetail("author", e);
37101      }
37102      if (element.hasEditor()) { 
37103        for (ContactDetail e : element.getEditor()) 
37104          composeContactDetail("editor", e);
37105      }
37106      if (element.hasReviewer()) { 
37107        for (ContactDetail e : element.getReviewer()) 
37108          composeContactDetail("reviewer", e);
37109      }
37110      if (element.hasEndorser()) { 
37111        for (ContactDetail e : element.getEndorser()) 
37112          composeContactDetail("endorser", e);
37113      }
37114      if (element.hasRelatedArtifact()) { 
37115        for (RelatedArtifact e : element.getRelatedArtifact()) 
37116          composeRelatedArtifact("relatedArtifact", e);
37117      }
37118      if (element.hasParameter()) { 
37119        for (ParameterDefinition e : element.getParameter()) 
37120          composeParameterDefinition("parameter", e);
37121      }
37122      if (element.hasDataRequirement()) { 
37123        for (DataRequirement e : element.getDataRequirement()) 
37124          composeDataRequirement("dataRequirement", e);
37125      }
37126      if (element.hasContent()) { 
37127        for (Attachment e : element.getContent()) 
37128          composeAttachment("content", e);
37129      }
37130  }
37131
37132  protected void composeLinkage(String name, Linkage element) throws IOException {
37133    if (element != null) {
37134      composeDomainResourceAttributes(element);
37135      xml.enter(FHIR_NS, name);
37136      composeLinkageElements(element);
37137      composeElementClose(element);
37138      xml.exit(FHIR_NS, name);
37139    }
37140  }
37141
37142  protected void composeLinkageElements(Linkage element) throws IOException {
37143      composeDomainResourceElements(element);
37144      if (element.hasActiveElement()) {
37145        composeBoolean("active", element.getActiveElement());
37146      }
37147      if (element.hasAuthor()) {
37148        composeReference("author", element.getAuthor());
37149      }
37150      if (element.hasItem()) { 
37151        for (Linkage.LinkageItemComponent e : element.getItem()) 
37152          composeLinkageLinkageItemComponent("item", e);
37153      }
37154  }
37155
37156  protected void composeLinkageLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
37157    if (element != null) {
37158      composeElementAttributes(element);
37159      xml.enter(FHIR_NS, name);
37160      composeLinkageLinkageItemComponentElements(element);
37161      composeElementClose(element);
37162      xml.exit(FHIR_NS, name);
37163    }
37164  }
37165
37166  protected void composeLinkageLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
37167      composeBackboneElementElements(element);
37168      if (element.hasTypeElement())
37169        composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
37170      if (element.hasResource()) {
37171        composeReference("resource", element.getResource());
37172      }
37173  }
37174
37175  protected void composeListResource(String name, ListResource element) throws IOException {
37176    if (element != null) {
37177      composeDomainResourceAttributes(element);
37178      xml.enter(FHIR_NS, name);
37179      composeListResourceElements(element);
37180      composeElementClose(element);
37181      xml.exit(FHIR_NS, name);
37182    }
37183  }
37184
37185  protected void composeListResourceElements(ListResource element) throws IOException {
37186      composeDomainResourceElements(element);
37187      if (element.hasIdentifier()) { 
37188        for (Identifier e : element.getIdentifier()) 
37189          composeIdentifier("identifier", e);
37190      }
37191      if (element.hasStatusElement())
37192        composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
37193      if (element.hasModeElement())
37194        composeEnumeration("mode", element.getModeElement(), new ListResource.ListModeEnumFactory());
37195      if (element.hasTitleElement()) {
37196        composeString("title", element.getTitleElement());
37197      }
37198      if (element.hasCode()) {
37199        composeCodeableConcept("code", element.getCode());
37200      }
37201      if (element.hasSubject()) {
37202        composeReference("subject", element.getSubject());
37203      }
37204      if (element.hasEncounter()) {
37205        composeReference("encounter", element.getEncounter());
37206      }
37207      if (element.hasDateElement()) {
37208        composeDateTime("date", element.getDateElement());
37209      }
37210      if (element.hasSource()) {
37211        composeReference("source", element.getSource());
37212      }
37213      if (element.hasOrderedBy()) {
37214        composeCodeableConcept("orderedBy", element.getOrderedBy());
37215      }
37216      if (element.hasNote()) { 
37217        for (Annotation e : element.getNote()) 
37218          composeAnnotation("note", e);
37219      }
37220      if (element.hasEntry()) { 
37221        for (ListResource.ListEntryComponent e : element.getEntry()) 
37222          composeListResourceListEntryComponent("entry", e);
37223      }
37224      if (element.hasEmptyReason()) {
37225        composeCodeableConcept("emptyReason", element.getEmptyReason());
37226      }
37227  }
37228
37229  protected void composeListResourceListEntryComponent(String name, ListResource.ListEntryComponent element) throws IOException {
37230    if (element != null) {
37231      composeElementAttributes(element);
37232      xml.enter(FHIR_NS, name);
37233      composeListResourceListEntryComponentElements(element);
37234      composeElementClose(element);
37235      xml.exit(FHIR_NS, name);
37236    }
37237  }
37238
37239  protected void composeListResourceListEntryComponentElements(ListResource.ListEntryComponent element) throws IOException {
37240      composeBackboneElementElements(element);
37241      if (element.hasFlag()) {
37242        composeCodeableConcept("flag", element.getFlag());
37243      }
37244      if (element.hasDeletedElement()) {
37245        composeBoolean("deleted", element.getDeletedElement());
37246      }
37247      if (element.hasDateElement()) {
37248        composeDateTime("date", element.getDateElement());
37249      }
37250      if (element.hasItem()) {
37251        composeReference("item", element.getItem());
37252      }
37253  }
37254
37255  protected void composeLocation(String name, Location element) throws IOException {
37256    if (element != null) {
37257      composeDomainResourceAttributes(element);
37258      xml.enter(FHIR_NS, name);
37259      composeLocationElements(element);
37260      composeElementClose(element);
37261      xml.exit(FHIR_NS, name);
37262    }
37263  }
37264
37265  protected void composeLocationElements(Location element) throws IOException {
37266      composeDomainResourceElements(element);
37267      if (element.hasIdentifier()) { 
37268        for (Identifier e : element.getIdentifier()) 
37269          composeIdentifier("identifier", e);
37270      }
37271      if (element.hasStatusElement())
37272        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
37273      if (element.hasOperationalStatus()) {
37274        composeCoding("operationalStatus", element.getOperationalStatus());
37275      }
37276      if (element.hasNameElement()) {
37277        composeString("name", element.getNameElement());
37278      }
37279      if (element.hasAlias()) { 
37280        for (StringType e : element.getAlias()) 
37281          composeString("alias", e);
37282      }
37283      if (element.hasDescriptionElement()) {
37284        composeString("description", element.getDescriptionElement());
37285      }
37286      if (element.hasModeElement())
37287        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
37288      if (element.hasType()) { 
37289        for (CodeableConcept e : element.getType()) 
37290          composeCodeableConcept("type", e);
37291      }
37292      if (element.hasTelecom()) { 
37293        for (ContactPoint e : element.getTelecom()) 
37294          composeContactPoint("telecom", e);
37295      }
37296      if (element.hasAddress()) {
37297        composeAddress("address", element.getAddress());
37298      }
37299      if (element.hasPhysicalType()) {
37300        composeCodeableConcept("physicalType", element.getPhysicalType());
37301      }
37302      if (element.hasPosition()) {
37303        composeLocationLocationPositionComponent("position", element.getPosition());
37304      }
37305      if (element.hasManagingOrganization()) {
37306        composeReference("managingOrganization", element.getManagingOrganization());
37307      }
37308      if (element.hasPartOf()) {
37309        composeReference("partOf", element.getPartOf());
37310      }
37311      if (element.hasHoursOfOperation()) { 
37312        for (Location.LocationHoursOfOperationComponent e : element.getHoursOfOperation()) 
37313          composeLocationLocationHoursOfOperationComponent("hoursOfOperation", e);
37314      }
37315      if (element.hasAvailabilityExceptionsElement()) {
37316        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
37317      }
37318      if (element.hasEndpoint()) { 
37319        for (Reference e : element.getEndpoint()) 
37320          composeReference("endpoint", e);
37321      }
37322  }
37323
37324  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
37325    if (element != null) {
37326      composeElementAttributes(element);
37327      xml.enter(FHIR_NS, name);
37328      composeLocationLocationPositionComponentElements(element);
37329      composeElementClose(element);
37330      xml.exit(FHIR_NS, name);
37331    }
37332  }
37333
37334  protected void composeLocationLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
37335      composeBackboneElementElements(element);
37336      if (element.hasLongitudeElement()) {
37337        composeDecimal("longitude", element.getLongitudeElement());
37338      }
37339      if (element.hasLatitudeElement()) {
37340        composeDecimal("latitude", element.getLatitudeElement());
37341      }
37342      if (element.hasAltitudeElement()) {
37343        composeDecimal("altitude", element.getAltitudeElement());
37344      }
37345  }
37346
37347  protected void composeLocationLocationHoursOfOperationComponent(String name, Location.LocationHoursOfOperationComponent element) throws IOException {
37348    if (element != null) {
37349      composeElementAttributes(element);
37350      xml.enter(FHIR_NS, name);
37351      composeLocationLocationHoursOfOperationComponentElements(element);
37352      composeElementClose(element);
37353      xml.exit(FHIR_NS, name);
37354    }
37355  }
37356
37357  protected void composeLocationLocationHoursOfOperationComponentElements(Location.LocationHoursOfOperationComponent element) throws IOException {
37358      composeBackboneElementElements(element);
37359        if (element.hasDaysOfWeek()) 
37360          for (Enumeration<Location.DaysOfWeek> e : element.getDaysOfWeek()) 
37361            composeEnumeration("daysOfWeek", e, new Location.DaysOfWeekEnumFactory());
37362      if (element.hasAllDayElement()) {
37363        composeBoolean("allDay", element.getAllDayElement());
37364      }
37365      if (element.hasOpeningTimeElement()) {
37366        composeTime("openingTime", element.getOpeningTimeElement());
37367      }
37368      if (element.hasClosingTimeElement()) {
37369        composeTime("closingTime", element.getClosingTimeElement());
37370      }
37371  }
37372
37373  protected void composeMeasure(String name, Measure element) throws IOException {
37374    if (element != null) {
37375      composeDomainResourceAttributes(element);
37376      xml.enter(FHIR_NS, name);
37377      composeMeasureElements(element);
37378      composeElementClose(element);
37379      xml.exit(FHIR_NS, name);
37380    }
37381  }
37382
37383  protected void composeMeasureElements(Measure element) throws IOException {
37384      composeDomainResourceElements(element);
37385      if (element.hasUrlElement()) {
37386        composeUri("url", element.getUrlElement());
37387      }
37388      if (element.hasIdentifier()) { 
37389        for (Identifier e : element.getIdentifier()) 
37390          composeIdentifier("identifier", e);
37391      }
37392      if (element.hasVersionElement()) {
37393        composeString("version", element.getVersionElement());
37394      }
37395      if (element.hasNameElement()) {
37396        composeString("name", element.getNameElement());
37397      }
37398      if (element.hasTitleElement()) {
37399        composeString("title", element.getTitleElement());
37400      }
37401      if (element.hasSubtitleElement()) {
37402        composeString("subtitle", element.getSubtitleElement());
37403      }
37404      if (element.hasStatusElement())
37405        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37406      if (element.hasExperimentalElement()) {
37407        composeBoolean("experimental", element.getExperimentalElement());
37408      }
37409      if (element.hasSubject()) {
37410        composeType("subject", element.getSubject());
37411      }      if (element.hasDateElement()) {
37412        composeDateTime("date", element.getDateElement());
37413      }
37414      if (element.hasPublisherElement()) {
37415        composeString("publisher", element.getPublisherElement());
37416      }
37417      if (element.hasContact()) { 
37418        for (ContactDetail e : element.getContact()) 
37419          composeContactDetail("contact", e);
37420      }
37421      if (element.hasDescriptionElement()) {
37422        composeMarkdown("description", element.getDescriptionElement());
37423      }
37424      if (element.hasUseContext()) { 
37425        for (UsageContext e : element.getUseContext()) 
37426          composeUsageContext("useContext", e);
37427      }
37428      if (element.hasJurisdiction()) { 
37429        for (CodeableConcept e : element.getJurisdiction()) 
37430          composeCodeableConcept("jurisdiction", e);
37431      }
37432      if (element.hasPurposeElement()) {
37433        composeMarkdown("purpose", element.getPurposeElement());
37434      }
37435      if (element.hasUsageElement()) {
37436        composeString("usage", element.getUsageElement());
37437      }
37438      if (element.hasCopyrightElement()) {
37439        composeMarkdown("copyright", element.getCopyrightElement());
37440      }
37441      if (element.hasApprovalDateElement()) {
37442        composeDate("approvalDate", element.getApprovalDateElement());
37443      }
37444      if (element.hasLastReviewDateElement()) {
37445        composeDate("lastReviewDate", element.getLastReviewDateElement());
37446      }
37447      if (element.hasEffectivePeriod()) {
37448        composePeriod("effectivePeriod", element.getEffectivePeriod());
37449      }
37450      if (element.hasTopic()) { 
37451        for (CodeableConcept e : element.getTopic()) 
37452          composeCodeableConcept("topic", e);
37453      }
37454      if (element.hasAuthor()) { 
37455        for (ContactDetail e : element.getAuthor()) 
37456          composeContactDetail("author", e);
37457      }
37458      if (element.hasEditor()) { 
37459        for (ContactDetail e : element.getEditor()) 
37460          composeContactDetail("editor", e);
37461      }
37462      if (element.hasReviewer()) { 
37463        for (ContactDetail e : element.getReviewer()) 
37464          composeContactDetail("reviewer", e);
37465      }
37466      if (element.hasEndorser()) { 
37467        for (ContactDetail e : element.getEndorser()) 
37468          composeContactDetail("endorser", e);
37469      }
37470      if (element.hasRelatedArtifact()) { 
37471        for (RelatedArtifact e : element.getRelatedArtifact()) 
37472          composeRelatedArtifact("relatedArtifact", e);
37473      }
37474      if (element.hasLibrary()) { 
37475        for (CanonicalType e : element.getLibrary()) 
37476          composeCanonical("library", e);
37477      }
37478      if (element.hasDisclaimerElement()) {
37479        composeMarkdown("disclaimer", element.getDisclaimerElement());
37480      }
37481      if (element.hasScoring()) {
37482        composeCodeableConcept("scoring", element.getScoring());
37483      }
37484      if (element.hasCompositeScoring()) {
37485        composeCodeableConcept("compositeScoring", element.getCompositeScoring());
37486      }
37487      if (element.hasType()) { 
37488        for (CodeableConcept e : element.getType()) 
37489          composeCodeableConcept("type", e);
37490      }
37491      if (element.hasRiskAdjustmentElement()) {
37492        composeString("riskAdjustment", element.getRiskAdjustmentElement());
37493      }
37494      if (element.hasRateAggregationElement()) {
37495        composeString("rateAggregation", element.getRateAggregationElement());
37496      }
37497      if (element.hasRationaleElement()) {
37498        composeMarkdown("rationale", element.getRationaleElement());
37499      }
37500      if (element.hasClinicalRecommendationStatementElement()) {
37501        composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
37502      }
37503      if (element.hasImprovementNotationElement())
37504        composeEnumeration("improvementNotation", element.getImprovementNotationElement(), new Measure.MeasureImprovementNotationEnumFactory());
37505      if (element.hasDefinition()) { 
37506        for (MarkdownType e : element.getDefinition()) 
37507          composeMarkdown("definition", e);
37508      }
37509      if (element.hasGuidanceElement()) {
37510        composeMarkdown("guidance", element.getGuidanceElement());
37511      }
37512      if (element.hasGroup()) { 
37513        for (Measure.MeasureGroupComponent e : element.getGroup()) 
37514          composeMeasureMeasureGroupComponent("group", e);
37515      }
37516      if (element.hasSupplementalData()) { 
37517        for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
37518          composeMeasureMeasureSupplementalDataComponent("supplementalData", e);
37519      }
37520  }
37521
37522  protected void composeMeasureMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
37523    if (element != null) {
37524      composeElementAttributes(element);
37525      xml.enter(FHIR_NS, name);
37526      composeMeasureMeasureGroupComponentElements(element);
37527      composeElementClose(element);
37528      xml.exit(FHIR_NS, name);
37529    }
37530  }
37531
37532  protected void composeMeasureMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
37533      composeBackboneElementElements(element);
37534      if (element.hasCode()) {
37535        composeCodeableConcept("code", element.getCode());
37536      }
37537      if (element.hasDescriptionElement()) {
37538        composeString("description", element.getDescriptionElement());
37539      }
37540      if (element.hasPopulation()) { 
37541        for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
37542          composeMeasureMeasureGroupPopulationComponent("population", e);
37543      }
37544      if (element.hasStratifier()) { 
37545        for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
37546          composeMeasureMeasureGroupStratifierComponent("stratifier", e);
37547      }
37548  }
37549
37550  protected void composeMeasureMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
37551    if (element != null) {
37552      composeElementAttributes(element);
37553      xml.enter(FHIR_NS, name);
37554      composeMeasureMeasureGroupPopulationComponentElements(element);
37555      composeElementClose(element);
37556      xml.exit(FHIR_NS, name);
37557    }
37558  }
37559
37560  protected void composeMeasureMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
37561      composeBackboneElementElements(element);
37562      if (element.hasCode()) {
37563        composeCodeableConcept("code", element.getCode());
37564      }
37565      if (element.hasDescriptionElement()) {
37566        composeString("description", element.getDescriptionElement());
37567      }
37568      if (element.hasCriteria()) {
37569        composeExpression("criteria", element.getCriteria());
37570      }
37571  }
37572
37573  protected void composeMeasureMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
37574    if (element != null) {
37575      composeElementAttributes(element);
37576      xml.enter(FHIR_NS, name);
37577      composeMeasureMeasureGroupStratifierComponentElements(element);
37578      composeElementClose(element);
37579      xml.exit(FHIR_NS, name);
37580    }
37581  }
37582
37583  protected void composeMeasureMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
37584      composeBackboneElementElements(element);
37585      if (element.hasCode()) {
37586        composeCodeableConcept("code", element.getCode());
37587      }
37588      if (element.hasDescriptionElement()) {
37589        composeString("description", element.getDescriptionElement());
37590      }
37591      if (element.hasCriteria()) {
37592        composeExpression("criteria", element.getCriteria());
37593      }
37594  }
37595
37596  protected void composeMeasureMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
37597    if (element != null) {
37598      composeElementAttributes(element);
37599      xml.enter(FHIR_NS, name);
37600      composeMeasureMeasureSupplementalDataComponentElements(element);
37601      composeElementClose(element);
37602      xml.exit(FHIR_NS, name);
37603    }
37604  }
37605
37606  protected void composeMeasureMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
37607      composeBackboneElementElements(element);
37608      if (element.hasCode()) {
37609        composeCodeableConcept("code", element.getCode());
37610      }
37611      if (element.hasUsage()) { 
37612        for (CodeableConcept e : element.getUsage()) 
37613          composeCodeableConcept("usage", e);
37614      }
37615      if (element.hasDescriptionElement()) {
37616        composeString("description", element.getDescriptionElement());
37617      }
37618      if (element.hasCriteria()) {
37619        composeExpression("criteria", element.getCriteria());
37620      }
37621  }
37622
37623  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
37624    if (element != null) {
37625      composeDomainResourceAttributes(element);
37626      xml.enter(FHIR_NS, name);
37627      composeMeasureReportElements(element);
37628      composeElementClose(element);
37629      xml.exit(FHIR_NS, name);
37630    }
37631  }
37632
37633  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
37634      composeDomainResourceElements(element);
37635      if (element.hasIdentifier()) { 
37636        for (Identifier e : element.getIdentifier()) 
37637          composeIdentifier("identifier", e);
37638      }
37639      if (element.hasStatusElement())
37640        composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
37641      if (element.hasTypeElement())
37642        composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
37643      if (element.hasMeasureElement()) {
37644        composeCanonical("measure", element.getMeasureElement());
37645      }
37646      if (element.hasSubject()) {
37647        composeReference("subject", element.getSubject());
37648      }
37649      if (element.hasDateElement()) {
37650        composeDateTime("date", element.getDateElement());
37651      }
37652      if (element.hasReporter()) {
37653        composeReference("reporter", element.getReporter());
37654      }
37655      if (element.hasPeriod()) {
37656        composePeriod("period", element.getPeriod());
37657      }
37658      if (element.hasImprovementNotationElement())
37659        composeEnumeration("improvementNotation", element.getImprovementNotationElement(), new MeasureReport.MeasureImprovementNotationEnumFactory());
37660      if (element.hasGroup()) { 
37661        for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
37662          composeMeasureReportMeasureReportGroupComponent("group", e);
37663      }
37664      if (element.hasEvaluatedResource()) { 
37665        for (Reference e : element.getEvaluatedResource()) 
37666          composeReference("evaluatedResource", e);
37667      }
37668  }
37669
37670  protected void composeMeasureReportMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
37671    if (element != null) {
37672      composeElementAttributes(element);
37673      xml.enter(FHIR_NS, name);
37674      composeMeasureReportMeasureReportGroupComponentElements(element);
37675      composeElementClose(element);
37676      xml.exit(FHIR_NS, name);
37677    }
37678  }
37679
37680  protected void composeMeasureReportMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
37681      composeBackboneElementElements(element);
37682      if (element.hasCode()) {
37683        composeCodeableConcept("code", element.getCode());
37684      }
37685      if (element.hasPopulation()) { 
37686        for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
37687          composeMeasureReportMeasureReportGroupPopulationComponent("population", e);
37688      }
37689      if (element.hasMeasureScore()) {
37690        composeQuantity("measureScore", element.getMeasureScore());
37691      }
37692      if (element.hasStratifier()) { 
37693        for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
37694          composeMeasureReportMeasureReportGroupStratifierComponent("stratifier", e);
37695      }
37696  }
37697
37698  protected void composeMeasureReportMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
37699    if (element != null) {
37700      composeElementAttributes(element);
37701      xml.enter(FHIR_NS, name);
37702      composeMeasureReportMeasureReportGroupPopulationComponentElements(element);
37703      composeElementClose(element);
37704      xml.exit(FHIR_NS, name);
37705    }
37706  }
37707
37708  protected void composeMeasureReportMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
37709      composeBackboneElementElements(element);
37710      if (element.hasCode()) {
37711        composeCodeableConcept("code", element.getCode());
37712      }
37713      if (element.hasCountElement()) {
37714        composeInteger("count", element.getCountElement());
37715      }
37716      if (element.hasSubjectResults()) {
37717        composeReference("subjectResults", element.getSubjectResults());
37718      }
37719  }
37720
37721  protected void composeMeasureReportMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
37722    if (element != null) {
37723      composeElementAttributes(element);
37724      xml.enter(FHIR_NS, name);
37725      composeMeasureReportMeasureReportGroupStratifierComponentElements(element);
37726      composeElementClose(element);
37727      xml.exit(FHIR_NS, name);
37728    }
37729  }
37730
37731  protected void composeMeasureReportMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
37732      composeBackboneElementElements(element);
37733      if (element.hasCode()) {
37734        composeCodeableConcept("code", element.getCode());
37735      }
37736      if (element.hasStratum()) { 
37737        for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
37738          composeMeasureReportStratifierGroupComponent("stratum", e);
37739      }
37740  }
37741
37742  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
37743    if (element != null) {
37744      composeElementAttributes(element);
37745      xml.enter(FHIR_NS, name);
37746      composeMeasureReportStratifierGroupComponentElements(element);
37747      composeElementClose(element);
37748      xml.exit(FHIR_NS, name);
37749    }
37750  }
37751
37752  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
37753      composeBackboneElementElements(element);
37754      if (element.hasValue()) {
37755        composeCodeableConcept("value", element.getValue());
37756      }
37757      if (element.hasPopulation()) { 
37758        for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
37759          composeMeasureReportStratifierGroupPopulationComponent("population", e);
37760      }
37761      if (element.hasMeasureScore()) {
37762        composeQuantity("measureScore", element.getMeasureScore());
37763      }
37764  }
37765
37766  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
37767    if (element != null) {
37768      composeElementAttributes(element);
37769      xml.enter(FHIR_NS, name);
37770      composeMeasureReportStratifierGroupPopulationComponentElements(element);
37771      composeElementClose(element);
37772      xml.exit(FHIR_NS, name);
37773    }
37774  }
37775
37776  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
37777      composeBackboneElementElements(element);
37778      if (element.hasCode()) {
37779        composeCodeableConcept("code", element.getCode());
37780      }
37781      if (element.hasCountElement()) {
37782        composeInteger("count", element.getCountElement());
37783      }
37784      if (element.hasSubjectResults()) {
37785        composeReference("subjectResults", element.getSubjectResults());
37786      }
37787  }
37788
37789  protected void composeMedia(String name, Media element) throws IOException {
37790    if (element != null) {
37791      composeDomainResourceAttributes(element);
37792      xml.enter(FHIR_NS, name);
37793      composeMediaElements(element);
37794      composeElementClose(element);
37795      xml.exit(FHIR_NS, name);
37796    }
37797  }
37798
37799  protected void composeMediaElements(Media element) throws IOException {
37800      composeDomainResourceElements(element);
37801      if (element.hasIdentifier()) { 
37802        for (Identifier e : element.getIdentifier()) 
37803          composeIdentifier("identifier", e);
37804      }
37805      if (element.hasBasedOn()) { 
37806        for (Reference e : element.getBasedOn()) 
37807          composeReference("basedOn", e);
37808      }
37809      if (element.hasPartOf()) { 
37810        for (Reference e : element.getPartOf()) 
37811          composeReference("partOf", e);
37812      }
37813      if (element.hasStatusElement())
37814        composeEnumeration("status", element.getStatusElement(), new Media.MediaStatusEnumFactory());
37815      if (element.hasType()) {
37816        composeCodeableConcept("type", element.getType());
37817      }
37818      if (element.hasModality()) {
37819        composeCodeableConcept("modality", element.getModality());
37820      }
37821      if (element.hasView()) {
37822        composeCodeableConcept("view", element.getView());
37823      }
37824      if (element.hasSubject()) {
37825        composeReference("subject", element.getSubject());
37826      }
37827      if (element.hasContext()) {
37828        composeReference("context", element.getContext());
37829      }
37830      if (element.hasCreated()) {
37831        composeType("created", element.getCreated());
37832      }      if (element.hasIssuedElement()) {
37833        composeInstant("issued", element.getIssuedElement());
37834      }
37835      if (element.hasOperator()) {
37836        composeReference("operator", element.getOperator());
37837      }
37838      if (element.hasReasonCode()) { 
37839        for (CodeableConcept e : element.getReasonCode()) 
37840          composeCodeableConcept("reasonCode", e);
37841      }
37842      if (element.hasBodySite()) {
37843        composeCodeableConcept("bodySite", element.getBodySite());
37844      }
37845      if (element.hasDeviceNameElement()) {
37846        composeString("deviceName", element.getDeviceNameElement());
37847      }
37848      if (element.hasDevice()) {
37849        composeReference("device", element.getDevice());
37850      }
37851      if (element.hasHeightElement()) {
37852        composePositiveInt("height", element.getHeightElement());
37853      }
37854      if (element.hasWidthElement()) {
37855        composePositiveInt("width", element.getWidthElement());
37856      }
37857      if (element.hasFramesElement()) {
37858        composePositiveInt("frames", element.getFramesElement());
37859      }
37860      if (element.hasDurationElement()) {
37861        composeDecimal("duration", element.getDurationElement());
37862      }
37863      if (element.hasContent()) {
37864        composeAttachment("content", element.getContent());
37865      }
37866      if (element.hasNote()) { 
37867        for (Annotation e : element.getNote()) 
37868          composeAnnotation("note", e);
37869      }
37870  }
37871
37872  protected void composeMedication(String name, Medication element) throws IOException {
37873    if (element != null) {
37874      composeDomainResourceAttributes(element);
37875      xml.enter(FHIR_NS, name);
37876      composeMedicationElements(element);
37877      composeElementClose(element);
37878      xml.exit(FHIR_NS, name);
37879    }
37880  }
37881
37882  protected void composeMedicationElements(Medication element) throws IOException {
37883      composeDomainResourceElements(element);
37884      if (element.hasCode()) {
37885        composeCodeableConcept("code", element.getCode());
37886      }
37887      if (element.hasStatusElement())
37888        composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusEnumFactory());
37889      if (element.hasManufacturer()) {
37890        composeReference("manufacturer", element.getManufacturer());
37891      }
37892      if (element.hasForm()) {
37893        composeCodeableConcept("form", element.getForm());
37894      }
37895      if (element.hasAmount()) {
37896        composeQuantity("amount", element.getAmount());
37897      }
37898      if (element.hasIngredient()) { 
37899        for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
37900          composeMedicationMedicationIngredientComponent("ingredient", e);
37901      }
37902      if (element.hasBatch()) {
37903        composeMedicationMedicationBatchComponent("batch", element.getBatch());
37904      }
37905  }
37906
37907  protected void composeMedicationMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
37908    if (element != null) {
37909      composeElementAttributes(element);
37910      xml.enter(FHIR_NS, name);
37911      composeMedicationMedicationIngredientComponentElements(element);
37912      composeElementClose(element);
37913      xml.exit(FHIR_NS, name);
37914    }
37915  }
37916
37917  protected void composeMedicationMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
37918      composeBackboneElementElements(element);
37919      if (element.hasItem()) {
37920        composeType("item", element.getItem());
37921      }      if (element.hasIsActiveElement()) {
37922        composeBoolean("isActive", element.getIsActiveElement());
37923      }
37924      if (element.hasAmount()) {
37925        composeRatio("amount", element.getAmount());
37926      }
37927  }
37928
37929  protected void composeMedicationMedicationBatchComponent(String name, Medication.MedicationBatchComponent element) throws IOException {
37930    if (element != null) {
37931      composeElementAttributes(element);
37932      xml.enter(FHIR_NS, name);
37933      composeMedicationMedicationBatchComponentElements(element);
37934      composeElementClose(element);
37935      xml.exit(FHIR_NS, name);
37936    }
37937  }
37938
37939  protected void composeMedicationMedicationBatchComponentElements(Medication.MedicationBatchComponent element) throws IOException {
37940      composeBackboneElementElements(element);
37941      if (element.hasLotNumberElement()) {
37942        composeString("lotNumber", element.getLotNumberElement());
37943      }
37944      if (element.hasExpirationDateElement()) {
37945        composeDateTime("expirationDate", element.getExpirationDateElement());
37946      }
37947      if (element.hasSerialNumberElement()) {
37948        composeString("serialNumber", element.getSerialNumberElement());
37949      }
37950  }
37951
37952  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
37953    if (element != null) {
37954      composeDomainResourceAttributes(element);
37955      xml.enter(FHIR_NS, name);
37956      composeMedicationAdministrationElements(element);
37957      composeElementClose(element);
37958      xml.exit(FHIR_NS, name);
37959    }
37960  }
37961
37962  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
37963      composeDomainResourceElements(element);
37964      if (element.hasIdentifier()) { 
37965        for (Identifier e : element.getIdentifier()) 
37966          composeIdentifier("identifier", e);
37967      }
37968      if (element.hasInstantiates()) { 
37969        for (UriType e : element.getInstantiates()) 
37970          composeUri("instantiates", e);
37971      }
37972      if (element.hasPartOf()) { 
37973        for (Reference e : element.getPartOf()) 
37974          composeReference("partOf", e);
37975      }
37976      if (element.hasStatusElement())
37977        composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusEnumFactory());
37978      if (element.hasCategory()) {
37979        composeCodeableConcept("category", element.getCategory());
37980      }
37981      if (element.hasMedication()) {
37982        composeType("medication", element.getMedication());
37983      }      if (element.hasSubject()) {
37984        composeReference("subject", element.getSubject());
37985      }
37986      if (element.hasContext()) {
37987        composeReference("context", element.getContext());
37988      }
37989      if (element.hasSupportingInformation()) { 
37990        for (Reference e : element.getSupportingInformation()) 
37991          composeReference("supportingInformation", e);
37992      }
37993      if (element.hasEffective()) {
37994        composeType("effective", element.getEffective());
37995      }      if (element.hasPerformer()) { 
37996        for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
37997          composeMedicationAdministrationMedicationAdministrationPerformerComponent("performer", e);
37998      }
37999      if (element.hasStatusReason()) { 
38000        for (CodeableConcept e : element.getStatusReason()) 
38001          composeCodeableConcept("statusReason", e);
38002      }
38003      if (element.hasReasonCode()) { 
38004        for (CodeableConcept e : element.getReasonCode()) 
38005          composeCodeableConcept("reasonCode", e);
38006      }
38007      if (element.hasReasonReference()) { 
38008        for (Reference e : element.getReasonReference()) 
38009          composeReference("reasonReference", e);
38010      }
38011      if (element.hasRequest()) {
38012        composeReference("request", element.getRequest());
38013      }
38014      if (element.hasDevice()) { 
38015        for (Reference e : element.getDevice()) 
38016          composeReference("device", e);
38017      }
38018      if (element.hasNote()) { 
38019        for (Annotation e : element.getNote()) 
38020          composeAnnotation("note", e);
38021      }
38022      if (element.hasDosage()) {
38023        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
38024      }
38025      if (element.hasEventHistory()) { 
38026        for (Reference e : element.getEventHistory()) 
38027          composeReference("eventHistory", e);
38028      }
38029  }
38030
38031  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
38032    if (element != null) {
38033      composeElementAttributes(element);
38034      xml.enter(FHIR_NS, name);
38035      composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(element);
38036      composeElementClose(element);
38037      xml.exit(FHIR_NS, name);
38038    }
38039  }
38040
38041  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
38042      composeBackboneElementElements(element);
38043      if (element.hasFunction()) {
38044        composeCodeableConcept("function", element.getFunction());
38045      }
38046      if (element.hasActor()) {
38047        composeReference("actor", element.getActor());
38048      }
38049  }
38050
38051  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
38052    if (element != null) {
38053      composeElementAttributes(element);
38054      xml.enter(FHIR_NS, name);
38055      composeMedicationAdministrationMedicationAdministrationDosageComponentElements(element);
38056      composeElementClose(element);
38057      xml.exit(FHIR_NS, name);
38058    }
38059  }
38060
38061  protected void composeMedicationAdministrationMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
38062      composeBackboneElementElements(element);
38063      if (element.hasTextElement()) {
38064        composeString("text", element.getTextElement());
38065      }
38066      if (element.hasSite()) {
38067        composeCodeableConcept("site", element.getSite());
38068      }
38069      if (element.hasRoute()) {
38070        composeCodeableConcept("route", element.getRoute());
38071      }
38072      if (element.hasMethod()) {
38073        composeCodeableConcept("method", element.getMethod());
38074      }
38075      if (element.hasDose()) {
38076        composeQuantity("dose", element.getDose());
38077      }
38078      if (element.hasRate()) {
38079        composeType("rate", element.getRate());
38080      }  }
38081
38082  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
38083    if (element != null) {
38084      composeDomainResourceAttributes(element);
38085      xml.enter(FHIR_NS, name);
38086      composeMedicationDispenseElements(element);
38087      composeElementClose(element);
38088      xml.exit(FHIR_NS, name);
38089    }
38090  }
38091
38092  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
38093      composeDomainResourceElements(element);
38094      if (element.hasIdentifier()) { 
38095        for (Identifier e : element.getIdentifier()) 
38096          composeIdentifier("identifier", e);
38097      }
38098      if (element.hasPartOf()) { 
38099        for (Reference e : element.getPartOf()) 
38100          composeReference("partOf", e);
38101      }
38102      if (element.hasStatusElement())
38103        composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusEnumFactory());
38104      if (element.hasCategory()) {
38105        composeCodeableConcept("category", element.getCategory());
38106      }
38107      if (element.hasMedication()) {
38108        composeType("medication", element.getMedication());
38109      }      if (element.hasSubject()) {
38110        composeReference("subject", element.getSubject());
38111      }
38112      if (element.hasContext()) {
38113        composeReference("context", element.getContext());
38114      }
38115      if (element.hasSupportingInformation()) { 
38116        for (Reference e : element.getSupportingInformation()) 
38117          composeReference("supportingInformation", e);
38118      }
38119      if (element.hasPerformer()) { 
38120        for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
38121          composeMedicationDispenseMedicationDispensePerformerComponent("performer", e);
38122      }
38123      if (element.hasLocation()) {
38124        composeReference("location", element.getLocation());
38125      }
38126      if (element.hasAuthorizingPrescription()) { 
38127        for (Reference e : element.getAuthorizingPrescription()) 
38128          composeReference("authorizingPrescription", e);
38129      }
38130      if (element.hasType()) {
38131        composeCodeableConcept("type", element.getType());
38132      }
38133      if (element.hasQuantity()) {
38134        composeQuantity("quantity", element.getQuantity());
38135      }
38136      if (element.hasDaysSupply()) {
38137        composeQuantity("daysSupply", element.getDaysSupply());
38138      }
38139      if (element.hasWhenPreparedElement()) {
38140        composeDateTime("whenPrepared", element.getWhenPreparedElement());
38141      }
38142      if (element.hasWhenHandedOverElement()) {
38143        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
38144      }
38145      if (element.hasDestination()) {
38146        composeReference("destination", element.getDestination());
38147      }
38148      if (element.hasReceiver()) { 
38149        for (Reference e : element.getReceiver()) 
38150          composeReference("receiver", e);
38151      }
38152      if (element.hasNote()) { 
38153        for (Annotation e : element.getNote()) 
38154          composeAnnotation("note", e);
38155      }
38156      if (element.hasDosageInstruction()) { 
38157        for (Dosage e : element.getDosageInstruction()) 
38158          composeDosage("dosageInstruction", e);
38159      }
38160      if (element.hasSubstitution()) {
38161        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
38162      }
38163      if (element.hasDetectedIssue()) { 
38164        for (Reference e : element.getDetectedIssue()) 
38165          composeReference("detectedIssue", e);
38166      }
38167      if (element.hasStatusReason()) {
38168        composeType("statusReason", element.getStatusReason());
38169      }      if (element.hasEventHistory()) { 
38170        for (Reference e : element.getEventHistory()) 
38171          composeReference("eventHistory", e);
38172      }
38173  }
38174
38175  protected void composeMedicationDispenseMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
38176    if (element != null) {
38177      composeElementAttributes(element);
38178      xml.enter(FHIR_NS, name);
38179      composeMedicationDispenseMedicationDispensePerformerComponentElements(element);
38180      composeElementClose(element);
38181      xml.exit(FHIR_NS, name);
38182    }
38183  }
38184
38185  protected void composeMedicationDispenseMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
38186      composeBackboneElementElements(element);
38187      if (element.hasFunction()) {
38188        composeCodeableConcept("function", element.getFunction());
38189      }
38190      if (element.hasActor()) {
38191        composeReference("actor", element.getActor());
38192      }
38193  }
38194
38195  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
38196    if (element != null) {
38197      composeElementAttributes(element);
38198      xml.enter(FHIR_NS, name);
38199      composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(element);
38200      composeElementClose(element);
38201      xml.exit(FHIR_NS, name);
38202    }
38203  }
38204
38205  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
38206      composeBackboneElementElements(element);
38207      if (element.hasWasSubstitutedElement()) {
38208        composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
38209      }
38210      if (element.hasType()) {
38211        composeCodeableConcept("type", element.getType());
38212      }
38213      if (element.hasReason()) { 
38214        for (CodeableConcept e : element.getReason()) 
38215          composeCodeableConcept("reason", e);
38216      }
38217      if (element.hasResponsibleParty()) { 
38218        for (Reference e : element.getResponsibleParty()) 
38219          composeReference("responsibleParty", e);
38220      }
38221  }
38222
38223  protected void composeMedicationKnowledge(String name, MedicationKnowledge element) throws IOException {
38224    if (element != null) {
38225      composeDomainResourceAttributes(element);
38226      xml.enter(FHIR_NS, name);
38227      composeMedicationKnowledgeElements(element);
38228      composeElementClose(element);
38229      xml.exit(FHIR_NS, name);
38230    }
38231  }
38232
38233  protected void composeMedicationKnowledgeElements(MedicationKnowledge element) throws IOException {
38234      composeDomainResourceElements(element);
38235      if (element.hasCode()) {
38236        composeCodeableConcept("code", element.getCode());
38237      }
38238      if (element.hasStatusElement())
38239        composeEnumeration("status", element.getStatusElement(), new MedicationKnowledge.MedicationKnowledgeStatusEnumFactory());
38240      if (element.hasManufacturer()) {
38241        composeReference("manufacturer", element.getManufacturer());
38242      }
38243      if (element.hasDoseForm()) {
38244        composeCodeableConcept("doseForm", element.getDoseForm());
38245      }
38246      if (element.hasAmount()) {
38247        composeQuantity("amount", element.getAmount());
38248      }
38249      if (element.hasSynonym()) { 
38250        for (StringType e : element.getSynonym()) 
38251          composeString("synonym", e);
38252      }
38253      if (element.hasRelatedMedicationKnowledge()) { 
38254        for (MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent e : element.getRelatedMedicationKnowledge()) 
38255          composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent("relatedMedicationKnowledge", e);
38256      }
38257      if (element.hasAssociatedMedication()) { 
38258        for (Reference e : element.getAssociatedMedication()) 
38259          composeReference("associatedMedication", e);
38260      }
38261      if (element.hasProductType()) { 
38262        for (CodeableConcept e : element.getProductType()) 
38263          composeCodeableConcept("productType", e);
38264      }
38265      if (element.hasMonograph()) { 
38266        for (MedicationKnowledge.MedicationKnowledgeMonographComponent e : element.getMonograph()) 
38267          composeMedicationKnowledgeMedicationKnowledgeMonographComponent("monograph", e);
38268      }
38269      if (element.hasIngredient()) { 
38270        for (MedicationKnowledge.MedicationKnowledgeIngredientComponent e : element.getIngredient()) 
38271          composeMedicationKnowledgeMedicationKnowledgeIngredientComponent("ingredient", e);
38272      }
38273      if (element.hasPreparationInstructionElement()) {
38274        composeMarkdown("preparationInstruction", element.getPreparationInstructionElement());
38275      }
38276      if (element.hasIntendedRoute()) { 
38277        for (CodeableConcept e : element.getIntendedRoute()) 
38278          composeCodeableConcept("intendedRoute", e);
38279      }
38280      if (element.hasCost()) { 
38281        for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
38282          composeMedicationKnowledgeMedicationKnowledgeCostComponent("cost", e);
38283      }
38284      if (element.hasMonitoringProgram()) { 
38285        for (MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent e : element.getMonitoringProgram()) 
38286          composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent("monitoringProgram", e);
38287      }
38288      if (element.hasAdministrationGuidelines()) { 
38289        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent e : element.getAdministrationGuidelines()) 
38290          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent("administrationGuidelines", e);
38291      }
38292      if (element.hasMedicineClassification()) { 
38293        for (MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent e : element.getMedicineClassification()) 
38294          composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent("medicineClassification", e);
38295      }
38296      if (element.hasPackaging()) {
38297        composeMedicationKnowledgeMedicationKnowledgePackagingComponent("packaging", element.getPackaging());
38298      }
38299      if (element.hasDrugCharacteristic()) { 
38300        for (MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent e : element.getDrugCharacteristic()) 
38301          composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent("drugCharacteristic", e);
38302      }
38303      if (element.hasContraindication()) { 
38304        for (Reference e : element.getContraindication()) 
38305          composeReference("contraindication", e);
38306      }
38307      if (element.hasRegulatory()) { 
38308        for (MedicationKnowledge.MedicationKnowledgeRegulatoryComponent e : element.getRegulatory()) 
38309          composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent("regulatory", e);
38310      }
38311      if (element.hasKinetics()) { 
38312        for (MedicationKnowledge.MedicationKnowledgeKineticsComponent e : element.getKinetics()) 
38313          composeMedicationKnowledgeMedicationKnowledgeKineticsComponent("kinetics", e);
38314      }
38315  }
38316
38317  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(String name, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
38318    if (element != null) {
38319      composeElementAttributes(element);
38320      xml.enter(FHIR_NS, name);
38321      composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(element);
38322      composeElementClose(element);
38323      xml.exit(FHIR_NS, name);
38324    }
38325  }
38326
38327  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
38328      composeBackboneElementElements(element);
38329      if (element.hasType()) {
38330        composeCodeableConcept("type", element.getType());
38331      }
38332      if (element.hasReference()) { 
38333        for (Reference e : element.getReference()) 
38334          composeReference("reference", e);
38335      }
38336  }
38337
38338  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponent(String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
38339    if (element != null) {
38340      composeElementAttributes(element);
38341      xml.enter(FHIR_NS, name);
38342      composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(element);
38343      composeElementClose(element);
38344      xml.exit(FHIR_NS, name);
38345    }
38346  }
38347
38348  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
38349      composeBackboneElementElements(element);
38350      if (element.hasType()) {
38351        composeCodeableConcept("type", element.getType());
38352      }
38353      if (element.hasSource()) {
38354        composeReference("source", element.getSource());
38355      }
38356  }
38357
38358  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponent(String name, MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
38359    if (element != null) {
38360      composeElementAttributes(element);
38361      xml.enter(FHIR_NS, name);
38362      composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(element);
38363      composeElementClose(element);
38364      xml.exit(FHIR_NS, name);
38365    }
38366  }
38367
38368  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
38369      composeBackboneElementElements(element);
38370      if (element.hasItem()) {
38371        composeType("item", element.getItem());
38372      }      if (element.hasIsActiveElement()) {
38373        composeBoolean("isActive", element.getIsActiveElement());
38374      }
38375      if (element.hasStrength()) {
38376        composeRatio("strength", element.getStrength());
38377      }
38378  }
38379
38380  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponent(String name, MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
38381    if (element != null) {
38382      composeElementAttributes(element);
38383      xml.enter(FHIR_NS, name);
38384      composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(element);
38385      composeElementClose(element);
38386      xml.exit(FHIR_NS, name);
38387    }
38388  }
38389
38390  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
38391      composeBackboneElementElements(element);
38392      if (element.hasType()) {
38393        composeCodeableConcept("type", element.getType());
38394      }
38395      if (element.hasSourceElement()) {
38396        composeString("source", element.getSourceElement());
38397      }
38398      if (element.hasCost()) {
38399        composeMoney("cost", element.getCost());
38400      }
38401  }
38402
38403  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
38404    if (element != null) {
38405      composeElementAttributes(element);
38406      xml.enter(FHIR_NS, name);
38407      composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(element);
38408      composeElementClose(element);
38409      xml.exit(FHIR_NS, name);
38410    }
38411  }
38412
38413  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
38414      composeBackboneElementElements(element);
38415      if (element.hasType()) {
38416        composeCodeableConcept("type", element.getType());
38417      }
38418      if (element.hasNameElement()) {
38419        composeString("name", element.getNameElement());
38420      }
38421  }
38422
38423  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
38424    if (element != null) {
38425      composeElementAttributes(element);
38426      xml.enter(FHIR_NS, name);
38427      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(element);
38428      composeElementClose(element);
38429      xml.exit(FHIR_NS, name);
38430    }
38431  }
38432
38433  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
38434      composeBackboneElementElements(element);
38435      if (element.hasDosage()) { 
38436        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent e : element.getDosage()) 
38437          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent("dosage", e);
38438      }
38439      if (element.hasIndication()) {
38440        composeType("indication", element.getIndication());
38441      }      if (element.hasPatientCharacteristics()) { 
38442        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent e : element.getPatientCharacteristics()) 
38443          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent("patientCharacteristics", e);
38444      }
38445  }
38446
38447  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
38448    if (element != null) {
38449      composeElementAttributes(element);
38450      xml.enter(FHIR_NS, name);
38451      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(element);
38452      composeElementClose(element);
38453      xml.exit(FHIR_NS, name);
38454    }
38455  }
38456
38457  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
38458      composeBackboneElementElements(element);
38459      if (element.hasType()) {
38460        composeCodeableConcept("type", element.getType());
38461      }
38462      if (element.hasDosage()) { 
38463        for (Dosage e : element.getDosage()) 
38464          composeDosage("dosage", e);
38465      }
38466  }
38467
38468  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
38469    if (element != null) {
38470      composeElementAttributes(element);
38471      xml.enter(FHIR_NS, name);
38472      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(element);
38473      composeElementClose(element);
38474      xml.exit(FHIR_NS, name);
38475    }
38476  }
38477
38478  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
38479      composeBackboneElementElements(element);
38480      if (element.hasCharacteristic()) {
38481        composeType("characteristic", element.getCharacteristic());
38482      }      if (element.hasValue()) { 
38483        for (StringType e : element.getValue()) 
38484          composeString("value", e);
38485      }
38486  }
38487
38488  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
38489    if (element != null) {
38490      composeElementAttributes(element);
38491      xml.enter(FHIR_NS, name);
38492      composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(element);
38493      composeElementClose(element);
38494      xml.exit(FHIR_NS, name);
38495    }
38496  }
38497
38498  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
38499      composeBackboneElementElements(element);
38500      if (element.hasType()) {
38501        composeCodeableConcept("type", element.getType());
38502      }
38503      if (element.hasClassification()) { 
38504        for (CodeableConcept e : element.getClassification()) 
38505          composeCodeableConcept("classification", e);
38506      }
38507  }
38508
38509  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponent(String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
38510    if (element != null) {
38511      composeElementAttributes(element);
38512      xml.enter(FHIR_NS, name);
38513      composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(element);
38514      composeElementClose(element);
38515      xml.exit(FHIR_NS, name);
38516    }
38517  }
38518
38519  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
38520      composeBackboneElementElements(element);
38521      if (element.hasType()) {
38522        composeCodeableConcept("type", element.getType());
38523      }
38524      if (element.hasQuantity()) {
38525        composeQuantity("quantity", element.getQuantity());
38526      }
38527  }
38528
38529  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
38530    if (element != null) {
38531      composeElementAttributes(element);
38532      xml.enter(FHIR_NS, name);
38533      composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(element);
38534      composeElementClose(element);
38535      xml.exit(FHIR_NS, name);
38536    }
38537  }
38538
38539  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
38540      composeBackboneElementElements(element);
38541      if (element.hasType()) {
38542        composeCodeableConcept("type", element.getType());
38543      }
38544      if (element.hasValue()) {
38545        composeType("value", element.getValue());
38546      }  }
38547
38548  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
38549    if (element != null) {
38550      composeElementAttributes(element);
38551      xml.enter(FHIR_NS, name);
38552      composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponentElements(element);
38553      composeElementClose(element);
38554      xml.exit(FHIR_NS, name);
38555    }
38556  }
38557
38558  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
38559      composeBackboneElementElements(element);
38560      if (element.hasRegulatoryAuthority()) {
38561        composeReference("regulatoryAuthority", element.getRegulatoryAuthority());
38562      }
38563      if (element.hasSubstitution()) { 
38564        for (MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent e : element.getSubstitution()) 
38565          composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent("substitution", e);
38566      }
38567      if (element.hasSchedule()) { 
38568        for (MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent e : element.getSchedule()) 
38569          composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent("schedule", e);
38570      }
38571      if (element.hasMaxDispense()) {
38572        composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent("maxDispense", element.getMaxDispense());
38573      }
38574  }
38575
38576  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
38577    if (element != null) {
38578      composeElementAttributes(element);
38579      xml.enter(FHIR_NS, name);
38580      composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentElements(element);
38581      composeElementClose(element);
38582      xml.exit(FHIR_NS, name);
38583    }
38584  }
38585
38586  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
38587      composeBackboneElementElements(element);
38588      if (element.hasType()) {
38589        composeCodeableConcept("type", element.getType());
38590      }
38591      if (element.hasAllowedElement()) {
38592        composeBoolean("allowed", element.getAllowedElement());
38593      }
38594  }
38595
38596  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
38597    if (element != null) {
38598      composeElementAttributes(element);
38599      xml.enter(FHIR_NS, name);
38600      composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentElements(element);
38601      composeElementClose(element);
38602      xml.exit(FHIR_NS, name);
38603    }
38604  }
38605
38606  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
38607      composeBackboneElementElements(element);
38608      if (element.hasSchedule()) {
38609        composeCodeableConcept("schedule", element.getSchedule());
38610      }
38611  }
38612
38613  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
38614    if (element != null) {
38615      composeElementAttributes(element);
38616      xml.enter(FHIR_NS, name);
38617      composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(element);
38618      composeElementClose(element);
38619      xml.exit(FHIR_NS, name);
38620    }
38621  }
38622
38623  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
38624      composeBackboneElementElements(element);
38625      if (element.hasQuantity()) {
38626        composeQuantity("quantity", element.getQuantity());
38627      }
38628      if (element.hasPeriod()) {
38629        composeDuration("period", element.getPeriod());
38630      }
38631  }
38632
38633  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponent(String name, MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
38634    if (element != null) {
38635      composeElementAttributes(element);
38636      xml.enter(FHIR_NS, name);
38637      composeMedicationKnowledgeMedicationKnowledgeKineticsComponentElements(element);
38638      composeElementClose(element);
38639      xml.exit(FHIR_NS, name);
38640    }
38641  }
38642
38643  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponentElements(MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
38644      composeBackboneElementElements(element);
38645      if (element.hasAreaUnderCurve()) { 
38646        for (Quantity e : element.getAreaUnderCurve()) 
38647          composeQuantity("areaUnderCurve", e);
38648      }
38649      if (element.hasLethalDose50()) { 
38650        for (Quantity e : element.getLethalDose50()) 
38651          composeQuantity("lethalDose50", e);
38652      }
38653      if (element.hasHalfLifePeriod()) {
38654        composeDuration("halfLifePeriod", element.getHalfLifePeriod());
38655      }
38656  }
38657
38658  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
38659    if (element != null) {
38660      composeDomainResourceAttributes(element);
38661      xml.enter(FHIR_NS, name);
38662      composeMedicationRequestElements(element);
38663      composeElementClose(element);
38664      xml.exit(FHIR_NS, name);
38665    }
38666  }
38667
38668  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
38669      composeDomainResourceElements(element);
38670      if (element.hasIdentifier()) { 
38671        for (Identifier e : element.getIdentifier()) 
38672          composeIdentifier("identifier", e);
38673      }
38674      if (element.hasStatusElement())
38675        composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationRequestStatusEnumFactory());
38676      if (element.hasIntentElement())
38677        composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
38678      if (element.hasCategory()) { 
38679        for (CodeableConcept e : element.getCategory()) 
38680          composeCodeableConcept("category", e);
38681      }
38682      if (element.hasPriorityElement())
38683        composeEnumeration("priority", element.getPriorityElement(), new MedicationRequest.MedicationRequestPriorityEnumFactory());
38684      if (element.hasDoNotPerformElement()) {
38685        composeBoolean("doNotPerform", element.getDoNotPerformElement());
38686      }
38687      if (element.hasMedication()) {
38688        composeType("medication", element.getMedication());
38689      }      if (element.hasSubject()) {
38690        composeReference("subject", element.getSubject());
38691      }
38692      if (element.hasContext()) {
38693        composeReference("context", element.getContext());
38694      }
38695      if (element.hasSupportingInformation()) { 
38696        for (Reference e : element.getSupportingInformation()) 
38697          composeReference("supportingInformation", e);
38698      }
38699      if (element.hasAuthoredOnElement()) {
38700        composeDateTime("authoredOn", element.getAuthoredOnElement());
38701      }
38702      if (element.hasRequester()) {
38703        composeReference("requester", element.getRequester());
38704      }
38705      if (element.hasPerformer()) {
38706        composeReference("performer", element.getPerformer());
38707      }
38708      if (element.hasPerformerType()) {
38709        composeCodeableConcept("performerType", element.getPerformerType());
38710      }
38711      if (element.hasRecorder()) {
38712        composeReference("recorder", element.getRecorder());
38713      }
38714      if (element.hasReasonCode()) { 
38715        for (CodeableConcept e : element.getReasonCode()) 
38716          composeCodeableConcept("reasonCode", e);
38717      }
38718      if (element.hasReasonReference()) { 
38719        for (Reference e : element.getReasonReference()) 
38720          composeReference("reasonReference", e);
38721      }
38722      if (element.hasInstantiates()) { 
38723        for (UriType e : element.getInstantiates()) 
38724          composeUri("instantiates", e);
38725      }
38726      if (element.hasBasedOn()) { 
38727        for (Reference e : element.getBasedOn()) 
38728          composeReference("basedOn", e);
38729      }
38730      if (element.hasGroupIdentifier()) {
38731        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
38732      }
38733      if (element.hasStatusReason()) {
38734        composeCodeableConcept("statusReason", element.getStatusReason());
38735      }
38736      if (element.hasCourseOfTherapyType()) {
38737        composeCodeableConcept("courseOfTherapyType", element.getCourseOfTherapyType());
38738      }
38739      if (element.hasInsurance()) { 
38740        for (Reference e : element.getInsurance()) 
38741          composeReference("insurance", e);
38742      }
38743      if (element.hasNote()) { 
38744        for (Annotation e : element.getNote()) 
38745          composeAnnotation("note", e);
38746      }
38747      if (element.hasDosageInstruction()) { 
38748        for (Dosage e : element.getDosageInstruction()) 
38749          composeDosage("dosageInstruction", e);
38750      }
38751      if (element.hasDispenseRequest()) {
38752        composeMedicationRequestMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
38753      }
38754      if (element.hasSubstitution()) {
38755        composeMedicationRequestMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
38756      }
38757      if (element.hasPriorPrescription()) {
38758        composeReference("priorPrescription", element.getPriorPrescription());
38759      }
38760      if (element.hasDetectedIssue()) { 
38761        for (Reference e : element.getDetectedIssue()) 
38762          composeReference("detectedIssue", e);
38763      }
38764      if (element.hasEventHistory()) { 
38765        for (Reference e : element.getEventHistory()) 
38766          composeReference("eventHistory", e);
38767      }
38768  }
38769
38770  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
38771    if (element != null) {
38772      composeElementAttributes(element);
38773      xml.enter(FHIR_NS, name);
38774      composeMedicationRequestMedicationRequestDispenseRequestComponentElements(element);
38775      composeElementClose(element);
38776      xml.exit(FHIR_NS, name);
38777    }
38778  }
38779
38780  protected void composeMedicationRequestMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
38781      composeBackboneElementElements(element);
38782      if (element.hasInitialFill()) {
38783        composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent("initialFill", element.getInitialFill());
38784      }
38785      if (element.hasDispenseInterval()) {
38786        composeDuration("dispenseInterval", element.getDispenseInterval());
38787      }
38788      if (element.hasValidityPeriod()) {
38789        composePeriod("validityPeriod", element.getValidityPeriod());
38790      }
38791      if (element.hasNumberOfRepeatsAllowedElement()) {
38792        composeUnsignedInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
38793      }
38794      if (element.hasQuantity()) {
38795        composeQuantity("quantity", element.getQuantity());
38796      }
38797      if (element.hasExpectedSupplyDuration()) {
38798        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
38799      }
38800      if (element.hasPerformer()) {
38801        composeReference("performer", element.getPerformer());
38802      }
38803  }
38804
38805  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(String name, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
38806    if (element != null) {
38807      composeElementAttributes(element);
38808      xml.enter(FHIR_NS, name);
38809      composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponentElements(element);
38810      composeElementClose(element);
38811      xml.exit(FHIR_NS, name);
38812    }
38813  }
38814
38815  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponentElements(MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
38816      composeBackboneElementElements(element);
38817      if (element.hasQuantity()) {
38818        composeQuantity("quantity", element.getQuantity());
38819      }
38820      if (element.hasDuration()) {
38821        composeDuration("duration", element.getDuration());
38822      }
38823  }
38824
38825  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
38826    if (element != null) {
38827      composeElementAttributes(element);
38828      xml.enter(FHIR_NS, name);
38829      composeMedicationRequestMedicationRequestSubstitutionComponentElements(element);
38830      composeElementClose(element);
38831      xml.exit(FHIR_NS, name);
38832    }
38833  }
38834
38835  protected void composeMedicationRequestMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
38836      composeBackboneElementElements(element);
38837      if (element.hasAllowedElement()) {
38838        composeBoolean("allowed", element.getAllowedElement());
38839      }
38840      if (element.hasReason()) {
38841        composeCodeableConcept("reason", element.getReason());
38842      }
38843  }
38844
38845  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
38846    if (element != null) {
38847      composeDomainResourceAttributes(element);
38848      xml.enter(FHIR_NS, name);
38849      composeMedicationStatementElements(element);
38850      composeElementClose(element);
38851      xml.exit(FHIR_NS, name);
38852    }
38853  }
38854
38855  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
38856      composeDomainResourceElements(element);
38857      if (element.hasIdentifier()) { 
38858        for (Identifier e : element.getIdentifier()) 
38859          composeIdentifier("identifier", e);
38860      }
38861      if (element.hasBasedOn()) { 
38862        for (Reference e : element.getBasedOn()) 
38863          composeReference("basedOn", e);
38864      }
38865      if (element.hasPartOf()) { 
38866        for (Reference e : element.getPartOf()) 
38867          composeReference("partOf", e);
38868      }
38869      if (element.hasStatusElement())
38870        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
38871      if (element.hasStatusReason()) { 
38872        for (CodeableConcept e : element.getStatusReason()) 
38873          composeCodeableConcept("statusReason", e);
38874      }
38875      if (element.hasCategory()) {
38876        composeCodeableConcept("category", element.getCategory());
38877      }
38878      if (element.hasMedication()) {
38879        composeType("medication", element.getMedication());
38880      }      if (element.hasSubject()) {
38881        composeReference("subject", element.getSubject());
38882      }
38883      if (element.hasContext()) {
38884        composeReference("context", element.getContext());
38885      }
38886      if (element.hasEffective()) {
38887        composeType("effective", element.getEffective());
38888      }      if (element.hasDateAssertedElement()) {
38889        composeDateTime("dateAsserted", element.getDateAssertedElement());
38890      }
38891      if (element.hasInformationSource()) {
38892        composeReference("informationSource", element.getInformationSource());
38893      }
38894      if (element.hasDerivedFrom()) { 
38895        for (Reference e : element.getDerivedFrom()) 
38896          composeReference("derivedFrom", e);
38897      }
38898      if (element.hasReasonCode()) { 
38899        for (CodeableConcept e : element.getReasonCode()) 
38900          composeCodeableConcept("reasonCode", e);
38901      }
38902      if (element.hasReasonReference()) { 
38903        for (Reference e : element.getReasonReference()) 
38904          composeReference("reasonReference", e);
38905      }
38906      if (element.hasNote()) { 
38907        for (Annotation e : element.getNote()) 
38908          composeAnnotation("note", e);
38909      }
38910      if (element.hasDosage()) { 
38911        for (Dosage e : element.getDosage()) 
38912          composeDosage("dosage", e);
38913      }
38914  }
38915
38916  protected void composeMedicinalProduct(String name, MedicinalProduct element) throws IOException {
38917    if (element != null) {
38918      composeDomainResourceAttributes(element);
38919      xml.enter(FHIR_NS, name);
38920      composeMedicinalProductElements(element);
38921      composeElementClose(element);
38922      xml.exit(FHIR_NS, name);
38923    }
38924  }
38925
38926  protected void composeMedicinalProductElements(MedicinalProduct element) throws IOException {
38927      composeDomainResourceElements(element);
38928      if (element.hasIdentifier()) { 
38929        for (Identifier e : element.getIdentifier()) 
38930          composeIdentifier("identifier", e);
38931      }
38932      if (element.hasType()) {
38933        composeCodeableConcept("type", element.getType());
38934      }
38935      if (element.hasDomain()) {
38936        composeCoding("domain", element.getDomain());
38937      }
38938      if (element.hasCombinedPharmaceuticalDoseForm()) {
38939        composeCodeableConcept("combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm());
38940      }
38941      if (element.hasAdditionalMonitoringIndicator()) {
38942        composeCodeableConcept("additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator());
38943      }
38944      if (element.hasSpecialMeasures()) { 
38945        for (StringType e : element.getSpecialMeasures()) 
38946          composeString("specialMeasures", e);
38947      }
38948      if (element.hasPaediatricUseIndicator()) {
38949        composeCodeableConcept("paediatricUseIndicator", element.getPaediatricUseIndicator());
38950      }
38951      if (element.hasProductClassification()) { 
38952        for (CodeableConcept e : element.getProductClassification()) 
38953          composeCodeableConcept("productClassification", e);
38954      }
38955      if (element.hasMarketingStatus()) { 
38956        for (MarketingStatus e : element.getMarketingStatus()) 
38957          composeMarketingStatus("marketingStatus", e);
38958      }
38959      if (element.hasMarketingAuthorization()) {
38960        composeReference("marketingAuthorization", element.getMarketingAuthorization());
38961      }
38962      if (element.hasPackagedMedicinalProduct()) { 
38963        for (Reference e : element.getPackagedMedicinalProduct()) 
38964          composeReference("packagedMedicinalProduct", e);
38965      }
38966      if (element.hasPharmaceuticalProduct()) { 
38967        for (Reference e : element.getPharmaceuticalProduct()) 
38968          composeReference("pharmaceuticalProduct", e);
38969      }
38970      if (element.hasContraindication()) { 
38971        for (Reference e : element.getContraindication()) 
38972          composeReference("contraindication", e);
38973      }
38974      if (element.hasInteraction()) { 
38975        for (Reference e : element.getInteraction()) 
38976          composeReference("interaction", e);
38977      }
38978      if (element.hasTherapeuticIndication()) { 
38979        for (Reference e : element.getTherapeuticIndication()) 
38980          composeReference("therapeuticIndication", e);
38981      }
38982      if (element.hasUndesirableEffect()) { 
38983        for (Reference e : element.getUndesirableEffect()) 
38984          composeReference("undesirableEffect", e);
38985      }
38986      if (element.hasAttachedDocument()) { 
38987        for (Reference e : element.getAttachedDocument()) 
38988          composeReference("attachedDocument", e);
38989      }
38990      if (element.hasMasterFile()) { 
38991        for (Reference e : element.getMasterFile()) 
38992          composeReference("masterFile", e);
38993      }
38994      if (element.hasContact()) { 
38995        for (Reference e : element.getContact()) 
38996          composeReference("contact", e);
38997      }
38998      if (element.hasClinicalTrial()) { 
38999        for (Reference e : element.getClinicalTrial()) 
39000          composeReference("clinicalTrial", e);
39001      }
39002      if (element.hasName()) { 
39003        for (MedicinalProduct.MedicinalProductNameComponent e : element.getName()) 
39004          composeMedicinalProductMedicinalProductNameComponent("name", e);
39005      }
39006      if (element.hasCrossReference()) { 
39007        for (Identifier e : element.getCrossReference()) 
39008          composeIdentifier("crossReference", e);
39009      }
39010      if (element.hasManufacturingBusinessOperation()) { 
39011        for (MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent e : element.getManufacturingBusinessOperation()) 
39012          composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent("manufacturingBusinessOperation", e);
39013      }
39014      if (element.hasSpecialDesignation()) { 
39015        for (MedicinalProduct.MedicinalProductSpecialDesignationComponent e : element.getSpecialDesignation()) 
39016          composeMedicinalProductMedicinalProductSpecialDesignationComponent("specialDesignation", e);
39017      }
39018  }
39019
39020  protected void composeMedicinalProductMedicinalProductNameComponent(String name, MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
39021    if (element != null) {
39022      composeElementAttributes(element);
39023      xml.enter(FHIR_NS, name);
39024      composeMedicinalProductMedicinalProductNameComponentElements(element);
39025      composeElementClose(element);
39026      xml.exit(FHIR_NS, name);
39027    }
39028  }
39029
39030  protected void composeMedicinalProductMedicinalProductNameComponentElements(MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
39031      composeBackboneElementElements(element);
39032      if (element.hasProductNameElement()) {
39033        composeString("productName", element.getProductNameElement());
39034      }
39035      if (element.hasNamePart()) { 
39036        for (MedicinalProduct.MedicinalProductNameNamePartComponent e : element.getNamePart()) 
39037          composeMedicinalProductMedicinalProductNameNamePartComponent("namePart", e);
39038      }
39039      if (element.hasCountryLanguage()) { 
39040        for (MedicinalProduct.MedicinalProductNameCountryLanguageComponent e : element.getCountryLanguage()) 
39041          composeMedicinalProductMedicinalProductNameCountryLanguageComponent("countryLanguage", e);
39042      }
39043  }
39044
39045  protected void composeMedicinalProductMedicinalProductNameNamePartComponent(String name, MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
39046    if (element != null) {
39047      composeElementAttributes(element);
39048      xml.enter(FHIR_NS, name);
39049      composeMedicinalProductMedicinalProductNameNamePartComponentElements(element);
39050      composeElementClose(element);
39051      xml.exit(FHIR_NS, name);
39052    }
39053  }
39054
39055  protected void composeMedicinalProductMedicinalProductNameNamePartComponentElements(MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
39056      composeBackboneElementElements(element);
39057      if (element.hasPartElement()) {
39058        composeString("part", element.getPartElement());
39059      }
39060      if (element.hasType()) {
39061        composeCoding("type", element.getType());
39062      }
39063  }
39064
39065  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponent(String name, MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
39066    if (element != null) {
39067      composeElementAttributes(element);
39068      xml.enter(FHIR_NS, name);
39069      composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(element);
39070      composeElementClose(element);
39071      xml.exit(FHIR_NS, name);
39072    }
39073  }
39074
39075  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
39076      composeBackboneElementElements(element);
39077      if (element.hasCountry()) {
39078        composeCodeableConcept("country", element.getCountry());
39079      }
39080      if (element.hasJurisdiction()) {
39081        composeCodeableConcept("jurisdiction", element.getJurisdiction());
39082      }
39083      if (element.hasLanguage()) {
39084        composeCodeableConcept("language", element.getLanguage());
39085      }
39086  }
39087
39088  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(String name, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
39089    if (element != null) {
39090      composeElementAttributes(element);
39091      xml.enter(FHIR_NS, name);
39092      composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(element);
39093      composeElementClose(element);
39094      xml.exit(FHIR_NS, name);
39095    }
39096  }
39097
39098  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
39099      composeBackboneElementElements(element);
39100      if (element.hasOperationType()) {
39101        composeCodeableConcept("operationType", element.getOperationType());
39102      }
39103      if (element.hasAuthorisationReferenceNumber()) {
39104        composeIdentifier("authorisationReferenceNumber", element.getAuthorisationReferenceNumber());
39105      }
39106      if (element.hasEffectiveDateElement()) {
39107        composeDateTime("effectiveDate", element.getEffectiveDateElement());
39108      }
39109      if (element.hasConfidentialityIndicator()) {
39110        composeCodeableConcept("confidentialityIndicator", element.getConfidentialityIndicator());
39111      }
39112      if (element.hasManufacturer()) { 
39113        for (Reference e : element.getManufacturer()) 
39114          composeReference("manufacturer", e);
39115      }
39116      if (element.hasRegulator()) {
39117        composeReference("regulator", element.getRegulator());
39118      }
39119  }
39120
39121  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponent(String name, MedicinalProduct.MedicinalProductSpecialDesignationComponent element) throws IOException {
39122    if (element != null) {
39123      composeElementAttributes(element);
39124      xml.enter(FHIR_NS, name);
39125      composeMedicinalProductMedicinalProductSpecialDesignationComponentElements(element);
39126      composeElementClose(element);
39127      xml.exit(FHIR_NS, name);
39128    }
39129  }
39130
39131  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponentElements(MedicinalProduct.MedicinalProductSpecialDesignationComponent element) throws IOException {
39132      composeBackboneElementElements(element);
39133      if (element.hasIdentifier()) { 
39134        for (Identifier e : element.getIdentifier()) 
39135          composeIdentifier("identifier", e);
39136      }
39137      if (element.hasIntendedUse()) {
39138        composeCodeableConcept("intendedUse", element.getIntendedUse());
39139      }
39140      if (element.hasIndication()) {
39141        composeCodeableConcept("indication", element.getIndication());
39142      }
39143      if (element.hasStatus()) {
39144        composeCodeableConcept("status", element.getStatus());
39145      }
39146      if (element.hasDateElement()) {
39147        composeDateTime("date", element.getDateElement());
39148      }
39149      if (element.hasSpecies()) {
39150        composeCodeableConcept("species", element.getSpecies());
39151      }
39152  }
39153
39154  protected void composeMedicinalProductAuthorization(String name, MedicinalProductAuthorization element) throws IOException {
39155    if (element != null) {
39156      composeDomainResourceAttributes(element);
39157      xml.enter(FHIR_NS, name);
39158      composeMedicinalProductAuthorizationElements(element);
39159      composeElementClose(element);
39160      xml.exit(FHIR_NS, name);
39161    }
39162  }
39163
39164  protected void composeMedicinalProductAuthorizationElements(MedicinalProductAuthorization element) throws IOException {
39165      composeDomainResourceElements(element);
39166      if (element.hasIdentifier()) { 
39167        for (Identifier e : element.getIdentifier()) 
39168          composeIdentifier("identifier", e);
39169      }
39170      if (element.hasSubject()) {
39171        composeReference("subject", element.getSubject());
39172      }
39173      if (element.hasCountry()) { 
39174        for (CodeableConcept e : element.getCountry()) 
39175          composeCodeableConcept("country", e);
39176      }
39177      if (element.hasJurisdiction()) { 
39178        for (CodeableConcept e : element.getJurisdiction()) 
39179          composeCodeableConcept("jurisdiction", e);
39180      }
39181      if (element.hasLegalStatusOfSupply()) {
39182        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
39183      }
39184      if (element.hasStatus()) {
39185        composeCodeableConcept("status", element.getStatus());
39186      }
39187      if (element.hasStatusDateElement()) {
39188        composeDateTime("statusDate", element.getStatusDateElement());
39189      }
39190      if (element.hasRestoreDateElement()) {
39191        composeDateTime("restoreDate", element.getRestoreDateElement());
39192      }
39193      if (element.hasValidityPeriod()) {
39194        composePeriod("validityPeriod", element.getValidityPeriod());
39195      }
39196      if (element.hasDataExclusivityPeriod()) {
39197        composePeriod("dataExclusivityPeriod", element.getDataExclusivityPeriod());
39198      }
39199      if (element.hasDateOfFirstAuthorizationElement()) {
39200        composeDateTime("dateOfFirstAuthorization", element.getDateOfFirstAuthorizationElement());
39201      }
39202      if (element.hasInternationalBirthDateElement()) {
39203        composeDateTime("internationalBirthDate", element.getInternationalBirthDateElement());
39204      }
39205      if (element.hasLegalBasis()) {
39206        composeCodeableConcept("legalBasis", element.getLegalBasis());
39207      }
39208      if (element.hasJurisdictionalAuthorization()) { 
39209        for (MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent e : element.getJurisdictionalAuthorization()) 
39210          composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent("jurisdictionalAuthorization", e);
39211      }
39212      if (element.hasHolder()) {
39213        composeReference("holder", element.getHolder());
39214      }
39215      if (element.hasRegulator()) {
39216        composeReference("regulator", element.getRegulator());
39217      }
39218      if (element.hasProcedure()) {
39219        composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent("procedure", element.getProcedure());
39220      }
39221  }
39222
39223  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
39224    if (element != null) {
39225      composeElementAttributes(element);
39226      xml.enter(FHIR_NS, name);
39227      composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(element);
39228      composeElementClose(element);
39229      xml.exit(FHIR_NS, name);
39230    }
39231  }
39232
39233  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
39234      composeBackboneElementElements(element);
39235      if (element.hasIdentifier()) { 
39236        for (Identifier e : element.getIdentifier()) 
39237          composeIdentifier("identifier", e);
39238      }
39239      if (element.hasCountry()) {
39240        composeCodeableConcept("country", element.getCountry());
39241      }
39242      if (element.hasJurisdiction()) { 
39243        for (CodeableConcept e : element.getJurisdiction()) 
39244          composeCodeableConcept("jurisdiction", e);
39245      }
39246      if (element.hasLegalStatusOfSupply()) {
39247        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
39248      }
39249      if (element.hasValidityPeriod()) {
39250        composePeriod("validityPeriod", element.getValidityPeriod());
39251      }
39252  }
39253
39254  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
39255    if (element != null) {
39256      composeElementAttributes(element);
39257      xml.enter(FHIR_NS, name);
39258      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(element);
39259      composeElementClose(element);
39260      xml.exit(FHIR_NS, name);
39261    }
39262  }
39263
39264  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
39265      composeBackboneElementElements(element);
39266      if (element.hasIdentifier()) {
39267        composeIdentifier("identifier", element.getIdentifier());
39268      }
39269      if (element.hasType()) {
39270        composeCodeableConcept("type", element.getType());
39271      }
39272      if (element.hasDate()) {
39273        composeType("date", element.getDate());
39274      }      if (element.hasApplication()) { 
39275        for (MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent e : element.getApplication()) 
39276          composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent("application", e);
39277      }
39278  }
39279
39280  protected void composeMedicinalProductClinicals(String name, MedicinalProductClinicals element) throws IOException {
39281    if (element != null) {
39282      composeDomainResourceAttributes(element);
39283      xml.enter(FHIR_NS, name);
39284      composeMedicinalProductClinicalsElements(element);
39285      composeElementClose(element);
39286      xml.exit(FHIR_NS, name);
39287    }
39288  }
39289
39290  protected void composeMedicinalProductClinicalsElements(MedicinalProductClinicals element) throws IOException {
39291      composeDomainResourceElements(element);
39292      if (element.hasUndesirableEffects()) { 
39293        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent e : element.getUndesirableEffects()) 
39294          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent("undesirableEffects", e);
39295      }
39296      if (element.hasTherapeuticIndication()) { 
39297        for (MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent e : element.getTherapeuticIndication()) 
39298          composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent("therapeuticIndication", e);
39299      }
39300      if (element.hasContraindication()) { 
39301        for (MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent e : element.getContraindication()) 
39302          composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent("contraindication", e);
39303      }
39304      if (element.hasInteractions()) { 
39305        for (MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent e : element.getInteractions()) 
39306          composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent("interactions", e);
39307      }
39308  }
39309
39310  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent element) throws IOException {
39311    if (element != null) {
39312      composeElementAttributes(element);
39313      xml.enter(FHIR_NS, name);
39314      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponentElements(element);
39315      composeElementClose(element);
39316      xml.exit(FHIR_NS, name);
39317    }
39318  }
39319
39320  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent element) throws IOException {
39321      composeBackboneElementElements(element);
39322      if (element.hasSymptomConditionEffect()) {
39323        composeCodeableConcept("symptomConditionEffect", element.getSymptomConditionEffect());
39324      }
39325      if (element.hasClassification()) {
39326        composeCodeableConcept("classification", element.getClassification());
39327      }
39328      if (element.hasFrequencyOfOccurrence()) {
39329        composeCodeableConcept("frequencyOfOccurrence", element.getFrequencyOfOccurrence());
39330      }
39331      if (element.hasPopulation()) { 
39332        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent e : element.getPopulation()) 
39333          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent("population", e);
39334      }
39335  }
39336
39337  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent element) throws IOException {
39338    if (element != null) {
39339      composeElementAttributes(element);
39340      xml.enter(FHIR_NS, name);
39341      composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponentElements(element);
39342      composeElementClose(element);
39343      xml.exit(FHIR_NS, name);
39344    }
39345  }
39346
39347  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent element) throws IOException {
39348      composeBackboneElementElements(element);
39349      if (element.hasAge()) {
39350        composeType("age", element.getAge());
39351      }      if (element.hasGender()) {
39352        composeCodeableConcept("gender", element.getGender());
39353      }
39354      if (element.hasRace()) {
39355        composeCodeableConcept("race", element.getRace());
39356      }
39357      if (element.hasPhysiologicalCondition()) {
39358        composeCodeableConcept("physiologicalCondition", element.getPhysiologicalCondition());
39359      }
39360  }
39361
39362  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent element) throws IOException {
39363    if (element != null) {
39364      composeElementAttributes(element);
39365      xml.enter(FHIR_NS, name);
39366      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponentElements(element);
39367      composeElementClose(element);
39368      xml.exit(FHIR_NS, name);
39369    }
39370  }
39371
39372  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent element) throws IOException {
39373      composeBackboneElementElements(element);
39374      if (element.hasDiseaseSymptomProcedure()) {
39375        composeCodeableConcept("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
39376      }
39377      if (element.hasDiseaseStatus()) {
39378        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
39379      }
39380      if (element.hasComorbidity()) { 
39381        for (CodeableConcept e : element.getComorbidity()) 
39382          composeCodeableConcept("comorbidity", e);
39383      }
39384      if (element.hasIntendedEffect()) {
39385        composeCodeableConcept("intendedEffect", element.getIntendedEffect());
39386      }
39387      if (element.hasDuration()) {
39388        composeQuantity("duration", element.getDuration());
39389      }
39390      if (element.hasUndesirableEffects()) { 
39391        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsComponent e : element.getUndesirableEffects()) 
39392          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsComponent("undesirableEffects", e);
39393      }
39394      if (element.hasOtherTherapy()) { 
39395        for (MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent e : element.getOtherTherapy()) 
39396          composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent("otherTherapy", e);
39397      }
39398      if (element.hasPopulation()) { 
39399        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent e : element.getPopulation()) 
39400          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent("population", e);
39401      }
39402  }
39403
39404  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent element) throws IOException {
39405    if (element != null) {
39406      composeElementAttributes(element);
39407      xml.enter(FHIR_NS, name);
39408      composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponentElements(element);
39409      composeElementClose(element);
39410      xml.exit(FHIR_NS, name);
39411    }
39412  }
39413
39414  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent element) throws IOException {
39415      composeBackboneElementElements(element);
39416      if (element.hasTherapyRelationshipType()) {
39417        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
39418      }
39419      if (element.hasMedication()) {
39420        composeType("medication", element.getMedication());
39421      }  }
39422
39423  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent element) throws IOException {
39424    if (element != null) {
39425      composeElementAttributes(element);
39426      xml.enter(FHIR_NS, name);
39427      composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponentElements(element);
39428      composeElementClose(element);
39429      xml.exit(FHIR_NS, name);
39430    }
39431  }
39432
39433  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsContraindicationComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsContraindicationComponent element) throws IOException {
39434      composeBackboneElementElements(element);
39435      if (element.hasDisease()) {
39436        composeCodeableConcept("disease", element.getDisease());
39437      }
39438      if (element.hasDiseaseStatus()) {
39439        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
39440      }
39441      if (element.hasComorbidity()) { 
39442        for (CodeableConcept e : element.getComorbidity()) 
39443          composeCodeableConcept("comorbidity", e);
39444      }
39445      if (element.hasTherapeuticIndication()) { 
39446        for (MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationComponent e : element.getTherapeuticIndication()) 
39447          composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationComponent("therapeuticIndication", e);
39448      }
39449      if (element.hasOtherTherapy()) { 
39450        for (MedicinalProductClinicals.MedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent e : element.getOtherTherapy()) 
39451          composeMedicinalProductClinicalsMedicinalProductClinicalsTherapeuticIndicationOtherTherapyComponent("otherTherapy", e);
39452      }
39453      if (element.hasPopulation()) { 
39454        for (MedicinalProductClinicals.MedicinalProductClinicalsUndesirableEffectsPopulationComponent e : element.getPopulation()) 
39455          composeMedicinalProductClinicalsMedicinalProductClinicalsUndesirableEffectsPopulationComponent("population", e);
39456      }
39457  }
39458
39459  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponent(String name, MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent element) throws IOException {
39460    if (element != null) {
39461      composeElementAttributes(element);
39462      xml.enter(FHIR_NS, name);
39463      composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponentElements(element);
39464      composeElementClose(element);
39465      xml.exit(FHIR_NS, name);
39466    }
39467  }
39468
39469  protected void composeMedicinalProductClinicalsMedicinalProductClinicalsInteractionsComponentElements(MedicinalProductClinicals.MedicinalProductClinicalsInteractionsComponent element) throws IOException {
39470      composeBackboneElementElements(element);
39471      if (element.hasInteractionElement()) {
39472        composeString("interaction", element.getInteractionElement());
39473      }
39474      if (element.hasInteractant()) { 
39475        for (CodeableConcept e : element.getInteractant()) 
39476          composeCodeableConcept("interactant", e);
39477      }
39478      if (element.hasType()) {
39479        composeCodeableConcept("type", element.getType());
39480      }
39481      if (element.hasEffect()) {
39482        composeCodeableConcept("effect", element.getEffect());
39483      }
39484      if (element.hasIncidence()) {
39485        composeCodeableConcept("incidence", element.getIncidence());
39486      }
39487      if (element.hasManagement()) {
39488        composeCodeableConcept("management", element.getManagement());
39489      }
39490  }
39491
39492  protected void composeMedicinalProductContraindication(String name, MedicinalProductContraindication element) throws IOException {
39493    if (element != null) {
39494      composeDomainResourceAttributes(element);
39495      xml.enter(FHIR_NS, name);
39496      composeMedicinalProductContraindicationElements(element);
39497      composeElementClose(element);
39498      xml.exit(FHIR_NS, name);
39499    }
39500  }
39501
39502  protected void composeMedicinalProductContraindicationElements(MedicinalProductContraindication element) throws IOException {
39503      composeDomainResourceElements(element);
39504      if (element.hasSubject()) { 
39505        for (Reference e : element.getSubject()) 
39506          composeReference("subject", e);
39507      }
39508      if (element.hasDisease()) {
39509        composeCodeableConcept("disease", element.getDisease());
39510      }
39511      if (element.hasDiseaseStatus()) {
39512        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
39513      }
39514      if (element.hasComorbidity()) { 
39515        for (CodeableConcept e : element.getComorbidity()) 
39516          composeCodeableConcept("comorbidity", e);
39517      }
39518      if (element.hasTherapeuticIndication()) { 
39519        for (Reference e : element.getTherapeuticIndication()) 
39520          composeReference("therapeuticIndication", e);
39521      }
39522      if (element.hasOtherTherapy()) { 
39523        for (MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
39524          composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent("otherTherapy", e);
39525      }
39526      if (element.hasPopulation()) { 
39527        for (MedicinalProductContraindication.MedicinalProductContraindicationPopulationComponent e : element.getPopulation()) 
39528          composeMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponent("population", e);
39529      }
39530  }
39531
39532  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(String name, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element) throws IOException {
39533    if (element != null) {
39534      composeElementAttributes(element);
39535      xml.enter(FHIR_NS, name);
39536      composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentElements(element);
39537      composeElementClose(element);
39538      xml.exit(FHIR_NS, name);
39539    }
39540  }
39541
39542  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentElements(MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element) throws IOException {
39543      composeBackboneElementElements(element);
39544      if (element.hasTherapyRelationshipType()) {
39545        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
39546      }
39547      if (element.hasMedication()) {
39548        composeType("medication", element.getMedication());
39549      }  }
39550
39551  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponent(String name, MedicinalProductContraindication.MedicinalProductContraindicationPopulationComponent element) throws IOException {
39552    if (element != null) {
39553      composeElementAttributes(element);
39554      xml.enter(FHIR_NS, name);
39555      composeMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponentElements(element);
39556      composeElementClose(element);
39557      xml.exit(FHIR_NS, name);
39558    }
39559  }
39560
39561  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationPopulationComponentElements(MedicinalProductContraindication.MedicinalProductContraindicationPopulationComponent element) throws IOException {
39562      composeBackboneElementElements(element);
39563      if (element.hasAge()) {
39564        composeType("age", element.getAge());
39565      }      if (element.hasGender()) {
39566        composeCodeableConcept("gender", element.getGender());
39567      }
39568      if (element.hasRace()) {
39569        composeCodeableConcept("race", element.getRace());
39570      }
39571      if (element.hasPhysiologicalCondition()) {
39572        composeCodeableConcept("physiologicalCondition", element.getPhysiologicalCondition());
39573      }
39574  }
39575
39576  protected void composeMedicinalProductDeviceSpec(String name, MedicinalProductDeviceSpec element) throws IOException {
39577    if (element != null) {
39578      composeDomainResourceAttributes(element);
39579      xml.enter(FHIR_NS, name);
39580      composeMedicinalProductDeviceSpecElements(element);
39581      composeElementClose(element);
39582      xml.exit(FHIR_NS, name);
39583    }
39584  }
39585
39586  protected void composeMedicinalProductDeviceSpecElements(MedicinalProductDeviceSpec element) throws IOException {
39587      composeDomainResourceElements(element);
39588      if (element.hasIdentifier()) {
39589        composeIdentifier("identifier", element.getIdentifier());
39590      }
39591      if (element.hasType()) {
39592        composeCodeableConcept("type", element.getType());
39593      }
39594      if (element.hasTradeNameElement()) {
39595        composeString("tradeName", element.getTradeNameElement());
39596      }
39597      if (element.hasQuantity()) {
39598        composeQuantity("quantity", element.getQuantity());
39599      }
39600      if (element.hasListingNumberElement()) {
39601        composeString("listingNumber", element.getListingNumberElement());
39602      }
39603      if (element.hasModelNumberElement()) {
39604        composeString("modelNumber", element.getModelNumberElement());
39605      }
39606      if (element.hasSterilityIndicator()) {
39607        composeCodeableConcept("sterilityIndicator", element.getSterilityIndicator());
39608      }
39609      if (element.hasSterilisationRequirement()) {
39610        composeCodeableConcept("sterilisationRequirement", element.getSterilisationRequirement());
39611      }
39612      if (element.hasUsage()) {
39613        composeCodeableConcept("usage", element.getUsage());
39614      }
39615      if (element.hasNomenclature()) { 
39616        for (CodeableConcept e : element.getNomenclature()) 
39617          composeCodeableConcept("nomenclature", e);
39618      }
39619      if (element.hasShelfLifeStorage()) { 
39620        for (ProductShelfLife e : element.getShelfLifeStorage()) 
39621          composeProductShelfLife("shelfLifeStorage", e);
39622      }
39623      if (element.hasPhysicalCharacteristics()) {
39624        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
39625      }
39626      if (element.hasOtherCharacteristics()) { 
39627        for (CodeableConcept e : element.getOtherCharacteristics()) 
39628          composeCodeableConcept("otherCharacteristics", e);
39629      }
39630      if (element.hasBatchIdentifier()) { 
39631        for (Identifier e : element.getBatchIdentifier()) 
39632          composeIdentifier("batchIdentifier", e);
39633      }
39634      if (element.hasManufacturer()) { 
39635        for (Reference e : element.getManufacturer()) 
39636          composeReference("manufacturer", e);
39637      }
39638      if (element.hasMaterial()) { 
39639        for (MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent e : element.getMaterial()) 
39640          composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent("material", e);
39641      }
39642  }
39643
39644  protected void composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponent(String name, MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent element) throws IOException {
39645    if (element != null) {
39646      composeElementAttributes(element);
39647      xml.enter(FHIR_NS, name);
39648      composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponentElements(element);
39649      composeElementClose(element);
39650      xml.exit(FHIR_NS, name);
39651    }
39652  }
39653
39654  protected void composeMedicinalProductDeviceSpecMedicinalProductDeviceSpecMaterialComponentElements(MedicinalProductDeviceSpec.MedicinalProductDeviceSpecMaterialComponent element) throws IOException {
39655      composeBackboneElementElements(element);
39656      if (element.hasSubstance()) {
39657        composeCodeableConcept("substance", element.getSubstance());
39658      }
39659      if (element.hasAlternateElement()) {
39660        composeBoolean("alternate", element.getAlternateElement());
39661      }
39662      if (element.hasAllergenicIndicatorElement()) {
39663        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
39664      }
39665  }
39666
39667  protected void composeMedicinalProductIndication(String name, MedicinalProductIndication element) throws IOException {
39668    if (element != null) {
39669      composeDomainResourceAttributes(element);
39670      xml.enter(FHIR_NS, name);
39671      composeMedicinalProductIndicationElements(element);
39672      composeElementClose(element);
39673      xml.exit(FHIR_NS, name);
39674    }
39675  }
39676
39677  protected void composeMedicinalProductIndicationElements(MedicinalProductIndication element) throws IOException {
39678      composeDomainResourceElements(element);
39679      if (element.hasSubject()) { 
39680        for (Reference e : element.getSubject()) 
39681          composeReference("subject", e);
39682      }
39683      if (element.hasDiseaseSymptomProcedure()) {
39684        composeCodeableConcept("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
39685      }
39686      if (element.hasDiseaseStatus()) {
39687        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
39688      }
39689      if (element.hasComorbidity()) { 
39690        for (CodeableConcept e : element.getComorbidity()) 
39691          composeCodeableConcept("comorbidity", e);
39692      }
39693      if (element.hasIntendedEffect()) {
39694        composeCodeableConcept("intendedEffect", element.getIntendedEffect());
39695      }
39696      if (element.hasDuration()) {
39697        composeQuantity("duration", element.getDuration());
39698      }
39699      if (element.hasOtherTherapy()) { 
39700        for (MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent e : element.getOtherTherapy()) 
39701          composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent("otherTherapy", e);
39702      }
39703      if (element.hasUndesirableEffect()) { 
39704        for (Reference e : element.getUndesirableEffect()) 
39705          composeReference("undesirableEffect", e);
39706      }
39707      if (element.hasPopulation()) { 
39708        for (MedicinalProductIndication.MedicinalProductIndicationPopulationComponent e : element.getPopulation()) 
39709          composeMedicinalProductIndicationMedicinalProductIndicationPopulationComponent("population", e);
39710      }
39711  }
39712
39713  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(String name, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element) throws IOException {
39714    if (element != null) {
39715      composeElementAttributes(element);
39716      xml.enter(FHIR_NS, name);
39717      composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentElements(element);
39718      composeElementClose(element);
39719      xml.exit(FHIR_NS, name);
39720    }
39721  }
39722
39723  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentElements(MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element) throws IOException {
39724      composeBackboneElementElements(element);
39725      if (element.hasTherapyRelationshipType()) {
39726        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
39727      }
39728      if (element.hasMedication()) {
39729        composeType("medication", element.getMedication());
39730      }  }
39731
39732  protected void composeMedicinalProductIndicationMedicinalProductIndicationPopulationComponent(String name, MedicinalProductIndication.MedicinalProductIndicationPopulationComponent element) throws IOException {
39733    if (element != null) {
39734      composeElementAttributes(element);
39735      xml.enter(FHIR_NS, name);
39736      composeMedicinalProductIndicationMedicinalProductIndicationPopulationComponentElements(element);
39737      composeElementClose(element);
39738      xml.exit(FHIR_NS, name);
39739    }
39740  }
39741
39742  protected void composeMedicinalProductIndicationMedicinalProductIndicationPopulationComponentElements(MedicinalProductIndication.MedicinalProductIndicationPopulationComponent element) throws IOException {
39743      composeBackboneElementElements(element);
39744      if (element.hasAge()) {
39745        composeType("age", element.getAge());
39746      }      if (element.hasGender()) {
39747        composeCodeableConcept("gender", element.getGender());
39748      }
39749      if (element.hasRace()) {
39750        composeCodeableConcept("race", element.getRace());
39751      }
39752      if (element.hasPhysiologicalCondition()) {
39753        composeCodeableConcept("physiologicalCondition", element.getPhysiologicalCondition());
39754      }
39755  }
39756
39757  protected void composeMedicinalProductIngredient(String name, MedicinalProductIngredient element) throws IOException {
39758    if (element != null) {
39759      composeDomainResourceAttributes(element);
39760      xml.enter(FHIR_NS, name);
39761      composeMedicinalProductIngredientElements(element);
39762      composeElementClose(element);
39763      xml.exit(FHIR_NS, name);
39764    }
39765  }
39766
39767  protected void composeMedicinalProductIngredientElements(MedicinalProductIngredient element) throws IOException {
39768      composeDomainResourceElements(element);
39769      if (element.hasIdentifier()) {
39770        composeIdentifier("identifier", element.getIdentifier());
39771      }
39772      if (element.hasRole()) {
39773        composeCodeableConcept("role", element.getRole());
39774      }
39775      if (element.hasAllergenicIndicatorElement()) {
39776        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
39777      }
39778      if (element.hasManufacturer()) { 
39779        for (Reference e : element.getManufacturer()) 
39780          composeReference("manufacturer", e);
39781      }
39782      if (element.hasSpecifiedSubstance()) { 
39783        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent e : element.getSpecifiedSubstance()) 
39784          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent("specifiedSubstance", e);
39785      }
39786      if (element.hasSubstance()) {
39787        composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent("substance", element.getSubstance());
39788      }
39789  }
39790
39791  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
39792    if (element != null) {
39793      composeElementAttributes(element);
39794      xml.enter(FHIR_NS, name);
39795      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(element);
39796      composeElementClose(element);
39797      xml.exit(FHIR_NS, name);
39798    }
39799  }
39800
39801  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
39802      composeBackboneElementElements(element);
39803      if (element.hasCode()) {
39804        composeCodeableConcept("code", element.getCode());
39805      }
39806      if (element.hasGroup()) {
39807        composeCodeableConcept("group", element.getGroup());
39808      }
39809      if (element.hasConfidentiality()) {
39810        composeCodeableConcept("confidentiality", element.getConfidentiality());
39811      }
39812      if (element.hasStrength()) { 
39813        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
39814          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
39815      }
39816  }
39817
39818  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
39819    if (element != null) {
39820      composeElementAttributes(element);
39821      xml.enter(FHIR_NS, name);
39822      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(element);
39823      composeElementClose(element);
39824      xml.exit(FHIR_NS, name);
39825    }
39826  }
39827
39828  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
39829      composeBackboneElementElements(element);
39830      if (element.hasPresentation()) {
39831        composeRatio("presentation", element.getPresentation());
39832      }
39833      if (element.hasPresentationLowLimit()) {
39834        composeRatio("presentationLowLimit", element.getPresentationLowLimit());
39835      }
39836      if (element.hasConcentration()) {
39837        composeRatio("concentration", element.getConcentration());
39838      }
39839      if (element.hasConcentrationLowLimit()) {
39840        composeRatio("concentrationLowLimit", element.getConcentrationLowLimit());
39841      }
39842      if (element.hasMeasurementPointElement()) {
39843        composeString("measurementPoint", element.getMeasurementPointElement());
39844      }
39845      if (element.hasCountry()) { 
39846        for (CodeableConcept e : element.getCountry()) 
39847          composeCodeableConcept("country", e);
39848      }
39849      if (element.hasReferenceStrength()) { 
39850        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent e : element.getReferenceStrength()) 
39851          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent("referenceStrength", e);
39852      }
39853  }
39854
39855  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
39856    if (element != null) {
39857      composeElementAttributes(element);
39858      xml.enter(FHIR_NS, name);
39859      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(element);
39860      composeElementClose(element);
39861      xml.exit(FHIR_NS, name);
39862    }
39863  }
39864
39865  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
39866      composeBackboneElementElements(element);
39867      if (element.hasSubstance()) {
39868        composeCodeableConcept("substance", element.getSubstance());
39869      }
39870      if (element.hasStrength()) {
39871        composeRatio("strength", element.getStrength());
39872      }
39873      if (element.hasMeasurementPointElement()) {
39874        composeString("measurementPoint", element.getMeasurementPointElement());
39875      }
39876      if (element.hasCountry()) { 
39877        for (CodeableConcept e : element.getCountry()) 
39878          composeCodeableConcept("country", e);
39879      }
39880  }
39881
39882  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
39883    if (element != null) {
39884      composeElementAttributes(element);
39885      xml.enter(FHIR_NS, name);
39886      composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(element);
39887      composeElementClose(element);
39888      xml.exit(FHIR_NS, name);
39889    }
39890  }
39891
39892  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
39893      composeBackboneElementElements(element);
39894      if (element.hasCode()) {
39895        composeCodeableConcept("code", element.getCode());
39896      }
39897      if (element.hasStrength()) { 
39898        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
39899          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
39900      }
39901  }
39902
39903  protected void composeMedicinalProductInteraction(String name, MedicinalProductInteraction element) throws IOException {
39904    if (element != null) {
39905      composeDomainResourceAttributes(element);
39906      xml.enter(FHIR_NS, name);
39907      composeMedicinalProductInteractionElements(element);
39908      composeElementClose(element);
39909      xml.exit(FHIR_NS, name);
39910    }
39911  }
39912
39913  protected void composeMedicinalProductInteractionElements(MedicinalProductInteraction element) throws IOException {
39914      composeDomainResourceElements(element);
39915      if (element.hasSubject()) { 
39916        for (Reference e : element.getSubject()) 
39917          composeReference("subject", e);
39918      }
39919      if (element.hasInteractionElement()) {
39920        composeString("interaction", element.getInteractionElement());
39921      }
39922      if (element.hasInteractant()) { 
39923        for (CodeableConcept e : element.getInteractant()) 
39924          composeCodeableConcept("interactant", e);
39925      }
39926      if (element.hasType()) {
39927        composeCodeableConcept("type", element.getType());
39928      }
39929      if (element.hasEffect()) {
39930        composeCodeableConcept("effect", element.getEffect());
39931      }
39932      if (element.hasIncidence()) {
39933        composeCodeableConcept("incidence", element.getIncidence());
39934      }
39935      if (element.hasManagement()) {
39936        composeCodeableConcept("management", element.getManagement());
39937      }
39938  }
39939
39940  protected void composeMedicinalProductManufactured(String name, MedicinalProductManufactured element) throws IOException {
39941    if (element != null) {
39942      composeDomainResourceAttributes(element);
39943      xml.enter(FHIR_NS, name);
39944      composeMedicinalProductManufacturedElements(element);
39945      composeElementClose(element);
39946      xml.exit(FHIR_NS, name);
39947    }
39948  }
39949
39950  protected void composeMedicinalProductManufacturedElements(MedicinalProductManufactured element) throws IOException {
39951      composeDomainResourceElements(element);
39952      if (element.hasManufacturedDoseForm()) {
39953        composeCodeableConcept("manufacturedDoseForm", element.getManufacturedDoseForm());
39954      }
39955      if (element.hasUnitOfPresentation()) {
39956        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
39957      }
39958      if (element.hasQuantity()) {
39959        composeQuantity("quantity", element.getQuantity());
39960      }
39961      if (element.hasManufacturer()) { 
39962        for (Reference e : element.getManufacturer()) 
39963          composeReference("manufacturer", e);
39964      }
39965      if (element.hasIngredient()) { 
39966        for (Reference e : element.getIngredient()) 
39967          composeReference("ingredient", e);
39968      }
39969      if (element.hasPhysicalCharacteristics()) {
39970        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
39971      }
39972      if (element.hasOtherCharacteristics()) { 
39973        for (CodeableConcept e : element.getOtherCharacteristics()) 
39974          composeCodeableConcept("otherCharacteristics", e);
39975      }
39976  }
39977
39978  protected void composeMedicinalProductPackaged(String name, MedicinalProductPackaged element) throws IOException {
39979    if (element != null) {
39980      composeDomainResourceAttributes(element);
39981      xml.enter(FHIR_NS, name);
39982      composeMedicinalProductPackagedElements(element);
39983      composeElementClose(element);
39984      xml.exit(FHIR_NS, name);
39985    }
39986  }
39987
39988  protected void composeMedicinalProductPackagedElements(MedicinalProductPackaged element) throws IOException {
39989      composeDomainResourceElements(element);
39990      if (element.hasIdentifier()) {
39991        composeIdentifier("identifier", element.getIdentifier());
39992      }
39993      if (element.hasDescriptionElement()) {
39994        composeString("description", element.getDescriptionElement());
39995      }
39996      if (element.hasMarketingStatus()) { 
39997        for (MarketingStatus e : element.getMarketingStatus()) 
39998          composeMarketingStatus("marketingStatus", e);
39999      }
40000      if (element.hasMarketingAuthorization()) {
40001        composeReference("marketingAuthorization", element.getMarketingAuthorization());
40002      }
40003      if (element.hasManufacturer()) { 
40004        for (Reference e : element.getManufacturer()) 
40005          composeReference("manufacturer", e);
40006      }
40007      if (element.hasBatchIdentifier()) { 
40008        for (MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent e : element.getBatchIdentifier()) 
40009          composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent("batchIdentifier", e);
40010      }
40011      if (element.hasPackageItem()) { 
40012        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
40013          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
40014      }
40015  }
40016
40017  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
40018    if (element != null) {
40019      composeElementAttributes(element);
40020      xml.enter(FHIR_NS, name);
40021      composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(element);
40022      composeElementClose(element);
40023      xml.exit(FHIR_NS, name);
40024    }
40025  }
40026
40027  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
40028      composeBackboneElementElements(element);
40029      if (element.hasOuterPackaging()) {
40030        composeIdentifier("outerPackaging", element.getOuterPackaging());
40031      }
40032      if (element.hasImmediatePackaging()) {
40033        composeIdentifier("immediatePackaging", element.getImmediatePackaging());
40034      }
40035  }
40036
40037  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
40038    if (element != null) {
40039      composeElementAttributes(element);
40040      xml.enter(FHIR_NS, name);
40041      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(element);
40042      composeElementClose(element);
40043      xml.exit(FHIR_NS, name);
40044    }
40045  }
40046
40047  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
40048      composeBackboneElementElements(element);
40049      if (element.hasIdentifier()) { 
40050        for (Identifier e : element.getIdentifier()) 
40051          composeIdentifier("identifier", e);
40052      }
40053      if (element.hasType()) {
40054        composeCodeableConcept("type", element.getType());
40055      }
40056      if (element.hasQuantity()) {
40057        composeQuantity("quantity", element.getQuantity());
40058      }
40059      if (element.hasMaterial()) { 
40060        for (CodeableConcept e : element.getMaterial()) 
40061          composeCodeableConcept("material", e);
40062      }
40063      if (element.hasAlternateMaterial()) { 
40064        for (CodeableConcept e : element.getAlternateMaterial()) 
40065          composeCodeableConcept("alternateMaterial", e);
40066      }
40067      if (element.hasDevice()) { 
40068        for (Reference e : element.getDevice()) 
40069          composeReference("device", e);
40070      }
40071      if (element.hasManufacturedItem()) { 
40072        for (Reference e : element.getManufacturedItem()) 
40073          composeReference("manufacturedItem", e);
40074      }
40075      if (element.hasPackageItem()) { 
40076        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
40077          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
40078      }
40079      if (element.hasPhysicalCharacteristics()) {
40080        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
40081      }
40082      if (element.hasOtherCharacteristics()) { 
40083        for (CodeableConcept e : element.getOtherCharacteristics()) 
40084          composeCodeableConcept("otherCharacteristics", e);
40085      }
40086      if (element.hasShelfLifeStorage()) { 
40087        for (ProductShelfLife e : element.getShelfLifeStorage()) 
40088          composeProductShelfLife("shelfLifeStorage", e);
40089      }
40090      if (element.hasManufacturer()) { 
40091        for (Reference e : element.getManufacturer()) 
40092          composeReference("manufacturer", e);
40093      }
40094  }
40095
40096  protected void composeMedicinalProductPharmaceutical(String name, MedicinalProductPharmaceutical element) throws IOException {
40097    if (element != null) {
40098      composeDomainResourceAttributes(element);
40099      xml.enter(FHIR_NS, name);
40100      composeMedicinalProductPharmaceuticalElements(element);
40101      composeElementClose(element);
40102      xml.exit(FHIR_NS, name);
40103    }
40104  }
40105
40106  protected void composeMedicinalProductPharmaceuticalElements(MedicinalProductPharmaceutical element) throws IOException {
40107      composeDomainResourceElements(element);
40108      if (element.hasIdentifier()) { 
40109        for (Identifier e : element.getIdentifier()) 
40110          composeIdentifier("identifier", e);
40111      }
40112      if (element.hasAdministrableDoseForm()) {
40113        composeCodeableConcept("administrableDoseForm", element.getAdministrableDoseForm());
40114      }
40115      if (element.hasUnitOfPresentation()) {
40116        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
40117      }
40118      if (element.hasIngredient()) { 
40119        for (Reference e : element.getIngredient()) 
40120          composeReference("ingredient", e);
40121      }
40122      if (element.hasDevice()) { 
40123        for (Reference e : element.getDevice()) 
40124          composeReference("device", e);
40125      }
40126      if (element.hasCharacteristics()) { 
40127        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent e : element.getCharacteristics()) 
40128          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent("characteristics", e);
40129      }
40130      if (element.hasRouteOfAdministration()) { 
40131        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent e : element.getRouteOfAdministration()) 
40132          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent("routeOfAdministration", e);
40133      }
40134  }
40135
40136  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
40137    if (element != null) {
40138      composeElementAttributes(element);
40139      xml.enter(FHIR_NS, name);
40140      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(element);
40141      composeElementClose(element);
40142      xml.exit(FHIR_NS, name);
40143    }
40144  }
40145
40146  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
40147      composeBackboneElementElements(element);
40148      if (element.hasCode()) {
40149        composeCodeableConcept("code", element.getCode());
40150      }
40151      if (element.hasStatus()) {
40152        composeCodeableConcept("status", element.getStatus());
40153      }
40154  }
40155
40156  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element) throws IOException {
40157    if (element != null) {
40158      composeElementAttributes(element);
40159      xml.enter(FHIR_NS, name);
40160      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentElements(element);
40161      composeElementClose(element);
40162      xml.exit(FHIR_NS, name);
40163    }
40164  }
40165
40166  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element) throws IOException {
40167      composeBackboneElementElements(element);
40168      if (element.hasCode()) {
40169        composeCodeableConcept("code", element.getCode());
40170      }
40171      if (element.hasFirstDose()) {
40172        composeQuantity("firstDose", element.getFirstDose());
40173      }
40174      if (element.hasMaxSingleDose()) {
40175        composeQuantity("maxSingleDose", element.getMaxSingleDose());
40176      }
40177      if (element.hasMaxDosePerDay()) {
40178        composeQuantity("maxDosePerDay", element.getMaxDosePerDay());
40179      }
40180      if (element.hasMaxDosePerTreatmentPeriod()) {
40181        composeRatio("maxDosePerTreatmentPeriod", element.getMaxDosePerTreatmentPeriod());
40182      }
40183      if (element.hasMaxTreatmentPeriod()) {
40184        composeDuration("maxTreatmentPeriod", element.getMaxTreatmentPeriod());
40185      }
40186      if (element.hasTargetSpecies()) { 
40187        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent e : element.getTargetSpecies()) 
40188          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent("targetSpecies", e);
40189      }
40190  }
40191
40192  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
40193    if (element != null) {
40194      composeElementAttributes(element);
40195      xml.enter(FHIR_NS, name);
40196      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentElements(element);
40197      composeElementClose(element);
40198      xml.exit(FHIR_NS, name);
40199    }
40200  }
40201
40202  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
40203      composeBackboneElementElements(element);
40204      if (element.hasCode()) {
40205        composeCodeableConcept("code", element.getCode());
40206      }
40207      if (element.hasWithdrawalPeriod()) { 
40208        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent e : element.getWithdrawalPeriod()) 
40209          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent("withdrawalPeriod", e);
40210      }
40211  }
40212
40213  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
40214    if (element != null) {
40215      composeElementAttributes(element);
40216      xml.enter(FHIR_NS, name);
40217      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(element);
40218      composeElementClose(element);
40219      xml.exit(FHIR_NS, name);
40220    }
40221  }
40222
40223  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
40224      composeBackboneElementElements(element);
40225      if (element.hasTissue()) {
40226        composeCodeableConcept("tissue", element.getTissue());
40227      }
40228      if (element.hasValue()) {
40229        composeQuantity("value", element.getValue());
40230      }
40231      if (element.hasSupportingInformationElement()) {
40232        composeString("supportingInformation", element.getSupportingInformationElement());
40233      }
40234  }
40235
40236  protected void composeMedicinalProductUndesirableEffect(String name, MedicinalProductUndesirableEffect element) throws IOException {
40237    if (element != null) {
40238      composeDomainResourceAttributes(element);
40239      xml.enter(FHIR_NS, name);
40240      composeMedicinalProductUndesirableEffectElements(element);
40241      composeElementClose(element);
40242      xml.exit(FHIR_NS, name);
40243    }
40244  }
40245
40246  protected void composeMedicinalProductUndesirableEffectElements(MedicinalProductUndesirableEffect element) throws IOException {
40247      composeDomainResourceElements(element);
40248      if (element.hasSubject()) { 
40249        for (Reference e : element.getSubject()) 
40250          composeReference("subject", e);
40251      }
40252      if (element.hasSymptomConditionEffect()) {
40253        composeCodeableConcept("symptomConditionEffect", element.getSymptomConditionEffect());
40254      }
40255      if (element.hasClassification()) {
40256        composeCodeableConcept("classification", element.getClassification());
40257      }
40258      if (element.hasFrequencyOfOccurrence()) {
40259        composeCodeableConcept("frequencyOfOccurrence", element.getFrequencyOfOccurrence());
40260      }
40261      if (element.hasPopulation()) { 
40262        for (MedicinalProductUndesirableEffect.MedicinalProductUndesirableEffectPopulationComponent e : element.getPopulation()) 
40263          composeMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponent("population", e);
40264      }
40265  }
40266
40267  protected void composeMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponent(String name, MedicinalProductUndesirableEffect.MedicinalProductUndesirableEffectPopulationComponent element) throws IOException {
40268    if (element != null) {
40269      composeElementAttributes(element);
40270      xml.enter(FHIR_NS, name);
40271      composeMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponentElements(element);
40272      composeElementClose(element);
40273      xml.exit(FHIR_NS, name);
40274    }
40275  }
40276
40277  protected void composeMedicinalProductUndesirableEffectMedicinalProductUndesirableEffectPopulationComponentElements(MedicinalProductUndesirableEffect.MedicinalProductUndesirableEffectPopulationComponent element) throws IOException {
40278      composeBackboneElementElements(element);
40279      if (element.hasAge()) {
40280        composeType("age", element.getAge());
40281      }      if (element.hasGender()) {
40282        composeCodeableConcept("gender", element.getGender());
40283      }
40284      if (element.hasRace()) {
40285        composeCodeableConcept("race", element.getRace());
40286      }
40287      if (element.hasPhysiologicalCondition()) {
40288        composeCodeableConcept("physiologicalCondition", element.getPhysiologicalCondition());
40289      }
40290  }
40291
40292  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
40293    if (element != null) {
40294      composeDomainResourceAttributes(element);
40295      xml.enter(FHIR_NS, name);
40296      composeMessageDefinitionElements(element);
40297      composeElementClose(element);
40298      xml.exit(FHIR_NS, name);
40299    }
40300  }
40301
40302  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
40303      composeDomainResourceElements(element);
40304      if (element.hasUrlElement()) {
40305        composeUri("url", element.getUrlElement());
40306      }
40307      if (element.hasIdentifier()) { 
40308        for (Identifier e : element.getIdentifier()) 
40309          composeIdentifier("identifier", e);
40310      }
40311      if (element.hasVersionElement()) {
40312        composeString("version", element.getVersionElement());
40313      }
40314      if (element.hasNameElement()) {
40315        composeString("name", element.getNameElement());
40316      }
40317      if (element.hasTitleElement()) {
40318        composeString("title", element.getTitleElement());
40319      }
40320      if (element.hasReplaces()) { 
40321        for (CanonicalType e : element.getReplaces()) 
40322          composeCanonical("replaces", e);
40323      }
40324      if (element.hasStatusElement())
40325        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40326      if (element.hasExperimentalElement()) {
40327        composeBoolean("experimental", element.getExperimentalElement());
40328      }
40329      if (element.hasDateElement()) {
40330        composeDateTime("date", element.getDateElement());
40331      }
40332      if (element.hasPublisherElement()) {
40333        composeString("publisher", element.getPublisherElement());
40334      }
40335      if (element.hasContact()) { 
40336        for (ContactDetail e : element.getContact()) 
40337          composeContactDetail("contact", e);
40338      }
40339      if (element.hasDescriptionElement()) {
40340        composeMarkdown("description", element.getDescriptionElement());
40341      }
40342      if (element.hasUseContext()) { 
40343        for (UsageContext e : element.getUseContext()) 
40344          composeUsageContext("useContext", e);
40345      }
40346      if (element.hasJurisdiction()) { 
40347        for (CodeableConcept e : element.getJurisdiction()) 
40348          composeCodeableConcept("jurisdiction", e);
40349      }
40350      if (element.hasPurposeElement()) {
40351        composeMarkdown("purpose", element.getPurposeElement());
40352      }
40353      if (element.hasCopyrightElement()) {
40354        composeMarkdown("copyright", element.getCopyrightElement());
40355      }
40356      if (element.hasBaseElement()) {
40357        composeCanonical("base", element.getBaseElement());
40358      }
40359      if (element.hasParent()) { 
40360        for (CanonicalType e : element.getParent()) 
40361          composeCanonical("parent", e);
40362      }
40363      if (element.hasEvent()) {
40364        composeType("event", element.getEvent());
40365      }      if (element.hasCategoryElement())
40366        composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
40367      if (element.hasFocus()) { 
40368        for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
40369          composeMessageDefinitionMessageDefinitionFocusComponent("focus", e);
40370      }
40371      if (element.hasResponseRequiredElement())
40372        composeEnumeration("responseRequired", element.getResponseRequiredElement(), new MessageDefinition.MessageheaderResponseRequestEnumFactory());
40373      if (element.hasAllowedResponse()) { 
40374        for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
40375          composeMessageDefinitionMessageDefinitionAllowedResponseComponent("allowedResponse", e);
40376      }
40377      if (element.hasGraph()) { 
40378        for (CanonicalType e : element.getGraph()) 
40379          composeCanonical("graph", e);
40380      }
40381  }
40382
40383  protected void composeMessageDefinitionMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
40384    if (element != null) {
40385      composeElementAttributes(element);
40386      xml.enter(FHIR_NS, name);
40387      composeMessageDefinitionMessageDefinitionFocusComponentElements(element);
40388      composeElementClose(element);
40389      xml.exit(FHIR_NS, name);
40390    }
40391  }
40392
40393  protected void composeMessageDefinitionMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
40394      composeBackboneElementElements(element);
40395      if (element.hasCodeElement()) {
40396        composeCode("code", element.getCodeElement());
40397      }
40398      if (element.hasProfileElement()) {
40399        composeCanonical("profile", element.getProfileElement());
40400      }
40401      if (element.hasMinElement()) {
40402        composeUnsignedInt("min", element.getMinElement());
40403      }
40404      if (element.hasMaxElement()) {
40405        composeString("max", element.getMaxElement());
40406      }
40407  }
40408
40409  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
40410    if (element != null) {
40411      composeElementAttributes(element);
40412      xml.enter(FHIR_NS, name);
40413      composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(element);
40414      composeElementClose(element);
40415      xml.exit(FHIR_NS, name);
40416    }
40417  }
40418
40419  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
40420      composeBackboneElementElements(element);
40421      if (element.hasMessageElement()) {
40422        composeCanonical("message", element.getMessageElement());
40423      }
40424      if (element.hasSituationElement()) {
40425        composeMarkdown("situation", element.getSituationElement());
40426      }
40427  }
40428
40429  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
40430    if (element != null) {
40431      composeDomainResourceAttributes(element);
40432      xml.enter(FHIR_NS, name);
40433      composeMessageHeaderElements(element);
40434      composeElementClose(element);
40435      xml.exit(FHIR_NS, name);
40436    }
40437  }
40438
40439  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
40440      composeDomainResourceElements(element);
40441      if (element.hasEvent()) {
40442        composeType("event", element.getEvent());
40443      }      if (element.hasDestination()) { 
40444        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
40445          composeMessageHeaderMessageDestinationComponent("destination", e);
40446      }
40447      if (element.hasSender()) {
40448        composeReference("sender", element.getSender());
40449      }
40450      if (element.hasEnterer()) {
40451        composeReference("enterer", element.getEnterer());
40452      }
40453      if (element.hasAuthor()) {
40454        composeReference("author", element.getAuthor());
40455      }
40456      if (element.hasSource()) {
40457        composeMessageHeaderMessageSourceComponent("source", element.getSource());
40458      }
40459      if (element.hasResponsible()) {
40460        composeReference("responsible", element.getResponsible());
40461      }
40462      if (element.hasReason()) {
40463        composeCodeableConcept("reason", element.getReason());
40464      }
40465      if (element.hasResponse()) {
40466        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
40467      }
40468      if (element.hasFocus()) { 
40469        for (Reference e : element.getFocus()) 
40470          composeReference("focus", e);
40471      }
40472      if (element.hasDefinitionElement()) {
40473        composeCanonical("definition", element.getDefinitionElement());
40474      }
40475  }
40476
40477  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
40478    if (element != null) {
40479      composeElementAttributes(element);
40480      xml.enter(FHIR_NS, name);
40481      composeMessageHeaderMessageDestinationComponentElements(element);
40482      composeElementClose(element);
40483      xml.exit(FHIR_NS, name);
40484    }
40485  }
40486
40487  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
40488      composeBackboneElementElements(element);
40489      if (element.hasNameElement()) {
40490        composeString("name", element.getNameElement());
40491      }
40492      if (element.hasTarget()) {
40493        composeReference("target", element.getTarget());
40494      }
40495      if (element.hasEndpointElement()) {
40496        composeUrl("endpoint", element.getEndpointElement());
40497      }
40498      if (element.hasReceiver()) {
40499        composeReference("receiver", element.getReceiver());
40500      }
40501  }
40502
40503  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
40504    if (element != null) {
40505      composeElementAttributes(element);
40506      xml.enter(FHIR_NS, name);
40507      composeMessageHeaderMessageSourceComponentElements(element);
40508      composeElementClose(element);
40509      xml.exit(FHIR_NS, name);
40510    }
40511  }
40512
40513  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
40514      composeBackboneElementElements(element);
40515      if (element.hasNameElement()) {
40516        composeString("name", element.getNameElement());
40517      }
40518      if (element.hasSoftwareElement()) {
40519        composeString("software", element.getSoftwareElement());
40520      }
40521      if (element.hasVersionElement()) {
40522        composeString("version", element.getVersionElement());
40523      }
40524      if (element.hasContact()) {
40525        composeContactPoint("contact", element.getContact());
40526      }
40527      if (element.hasEndpointElement()) {
40528        composeUrl("endpoint", element.getEndpointElement());
40529      }
40530  }
40531
40532  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
40533    if (element != null) {
40534      composeElementAttributes(element);
40535      xml.enter(FHIR_NS, name);
40536      composeMessageHeaderMessageHeaderResponseComponentElements(element);
40537      composeElementClose(element);
40538      xml.exit(FHIR_NS, name);
40539    }
40540  }
40541
40542  protected void composeMessageHeaderMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
40543      composeBackboneElementElements(element);
40544      if (element.hasIdentifierElement()) {
40545        composeId("identifier", element.getIdentifierElement());
40546      }
40547      if (element.hasCodeElement())
40548        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
40549      if (element.hasDetails()) {
40550        composeReference("details", element.getDetails());
40551      }
40552  }
40553
40554  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
40555    if (element != null) {
40556      composeDomainResourceAttributes(element);
40557      xml.enter(FHIR_NS, name);
40558      composeNamingSystemElements(element);
40559      composeElementClose(element);
40560      xml.exit(FHIR_NS, name);
40561    }
40562  }
40563
40564  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
40565      composeDomainResourceElements(element);
40566      if (element.hasNameElement()) {
40567        composeString("name", element.getNameElement());
40568      }
40569      if (element.hasStatusElement())
40570        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40571      if (element.hasKindElement())
40572        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
40573      if (element.hasDateElement()) {
40574        composeDateTime("date", element.getDateElement());
40575      }
40576      if (element.hasPublisherElement()) {
40577        composeString("publisher", element.getPublisherElement());
40578      }
40579      if (element.hasContact()) { 
40580        for (ContactDetail e : element.getContact()) 
40581          composeContactDetail("contact", e);
40582      }
40583      if (element.hasResponsibleElement()) {
40584        composeString("responsible", element.getResponsibleElement());
40585      }
40586      if (element.hasType()) {
40587        composeCodeableConcept("type", element.getType());
40588      }
40589      if (element.hasDescriptionElement()) {
40590        composeMarkdown("description", element.getDescriptionElement());
40591      }
40592      if (element.hasUseContext()) { 
40593        for (UsageContext e : element.getUseContext()) 
40594          composeUsageContext("useContext", e);
40595      }
40596      if (element.hasJurisdiction()) { 
40597        for (CodeableConcept e : element.getJurisdiction()) 
40598          composeCodeableConcept("jurisdiction", e);
40599      }
40600      if (element.hasUsageElement()) {
40601        composeString("usage", element.getUsageElement());
40602      }
40603      if (element.hasUniqueId()) { 
40604        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
40605          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
40606      }
40607  }
40608
40609  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
40610    if (element != null) {
40611      composeElementAttributes(element);
40612      xml.enter(FHIR_NS, name);
40613      composeNamingSystemNamingSystemUniqueIdComponentElements(element);
40614      composeElementClose(element);
40615      xml.exit(FHIR_NS, name);
40616    }
40617  }
40618
40619  protected void composeNamingSystemNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
40620      composeBackboneElementElements(element);
40621      if (element.hasTypeElement())
40622        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
40623      if (element.hasValueElement()) {
40624        composeString("value", element.getValueElement());
40625      }
40626      if (element.hasPreferredElement()) {
40627        composeBoolean("preferred", element.getPreferredElement());
40628      }
40629      if (element.hasCommentElement()) {
40630        composeString("comment", element.getCommentElement());
40631      }
40632      if (element.hasPeriod()) {
40633        composePeriod("period", element.getPeriod());
40634      }
40635  }
40636
40637  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
40638    if (element != null) {
40639      composeDomainResourceAttributes(element);
40640      xml.enter(FHIR_NS, name);
40641      composeNutritionOrderElements(element);
40642      composeElementClose(element);
40643      xml.exit(FHIR_NS, name);
40644    }
40645  }
40646
40647  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
40648      composeDomainResourceElements(element);
40649      if (element.hasIdentifier()) { 
40650        for (Identifier e : element.getIdentifier()) 
40651          composeIdentifier("identifier", e);
40652      }
40653      if (element.hasInstantiatesCanonical()) { 
40654        for (CanonicalType e : element.getInstantiatesCanonical()) 
40655          composeCanonical("instantiatesCanonical", e);
40656      }
40657      if (element.hasInstantiatesUri()) { 
40658        for (UriType e : element.getInstantiatesUri()) 
40659          composeUri("instantiatesUri", e);
40660      }
40661      if (element.hasInstantiates()) { 
40662        for (UriType e : element.getInstantiates()) 
40663          composeUri("instantiates", e);
40664      }
40665      if (element.hasStatusElement())
40666        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
40667      if (element.hasIntentElement())
40668        composeEnumeration("intent", element.getIntentElement(), new NutritionOrder.NutritiionOrderIntentEnumFactory());
40669      if (element.hasPatient()) {
40670        composeReference("patient", element.getPatient());
40671      }
40672      if (element.hasContext()) {
40673        composeReference("context", element.getContext());
40674      }
40675      if (element.hasDateTimeElement()) {
40676        composeDateTime("dateTime", element.getDateTimeElement());
40677      }
40678      if (element.hasOrderer()) {
40679        composeReference("orderer", element.getOrderer());
40680      }
40681      if (element.hasAllergyIntolerance()) { 
40682        for (Reference e : element.getAllergyIntolerance()) 
40683          composeReference("allergyIntolerance", e);
40684      }
40685      if (element.hasFoodPreferenceModifier()) { 
40686        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
40687          composeCodeableConcept("foodPreferenceModifier", e);
40688      }
40689      if (element.hasExcludeFoodModifier()) { 
40690        for (CodeableConcept e : element.getExcludeFoodModifier()) 
40691          composeCodeableConcept("excludeFoodModifier", e);
40692      }
40693      if (element.hasOralDiet()) {
40694        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
40695      }
40696      if (element.hasSupplement()) { 
40697        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
40698          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
40699      }
40700      if (element.hasEnteralFormula()) {
40701        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
40702      }
40703      if (element.hasNote()) { 
40704        for (Annotation e : element.getNote()) 
40705          composeAnnotation("note", e);
40706      }
40707  }
40708
40709  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
40710    if (element != null) {
40711      composeElementAttributes(element);
40712      xml.enter(FHIR_NS, name);
40713      composeNutritionOrderNutritionOrderOralDietComponentElements(element);
40714      composeElementClose(element);
40715      xml.exit(FHIR_NS, name);
40716    }
40717  }
40718
40719  protected void composeNutritionOrderNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
40720      composeBackboneElementElements(element);
40721      if (element.hasType()) { 
40722        for (CodeableConcept e : element.getType()) 
40723          composeCodeableConcept("type", e);
40724      }
40725      if (element.hasSchedule()) { 
40726        for (Timing e : element.getSchedule()) 
40727          composeTiming("schedule", e);
40728      }
40729      if (element.hasNutrient()) { 
40730        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
40731          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
40732      }
40733      if (element.hasTexture()) { 
40734        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
40735          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
40736      }
40737      if (element.hasFluidConsistencyType()) { 
40738        for (CodeableConcept e : element.getFluidConsistencyType()) 
40739          composeCodeableConcept("fluidConsistencyType", e);
40740      }
40741      if (element.hasInstructionElement()) {
40742        composeString("instruction", element.getInstructionElement());
40743      }
40744  }
40745
40746  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
40747    if (element != null) {
40748      composeElementAttributes(element);
40749      xml.enter(FHIR_NS, name);
40750      composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(element);
40751      composeElementClose(element);
40752      xml.exit(FHIR_NS, name);
40753    }
40754  }
40755
40756  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
40757      composeBackboneElementElements(element);
40758      if (element.hasModifier()) {
40759        composeCodeableConcept("modifier", element.getModifier());
40760      }
40761      if (element.hasAmount()) {
40762        composeQuantity("amount", element.getAmount());
40763      }
40764  }
40765
40766  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
40767    if (element != null) {
40768      composeElementAttributes(element);
40769      xml.enter(FHIR_NS, name);
40770      composeNutritionOrderNutritionOrderOralDietTextureComponentElements(element);
40771      composeElementClose(element);
40772      xml.exit(FHIR_NS, name);
40773    }
40774  }
40775
40776  protected void composeNutritionOrderNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
40777      composeBackboneElementElements(element);
40778      if (element.hasModifier()) {
40779        composeCodeableConcept("modifier", element.getModifier());
40780      }
40781      if (element.hasFoodType()) {
40782        composeCodeableConcept("foodType", element.getFoodType());
40783      }
40784  }
40785
40786  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
40787    if (element != null) {
40788      composeElementAttributes(element);
40789      xml.enter(FHIR_NS, name);
40790      composeNutritionOrderNutritionOrderSupplementComponentElements(element);
40791      composeElementClose(element);
40792      xml.exit(FHIR_NS, name);
40793    }
40794  }
40795
40796  protected void composeNutritionOrderNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
40797      composeBackboneElementElements(element);
40798      if (element.hasType()) {
40799        composeCodeableConcept("type", element.getType());
40800      }
40801      if (element.hasProductNameElement()) {
40802        composeString("productName", element.getProductNameElement());
40803      }
40804      if (element.hasSchedule()) { 
40805        for (Timing e : element.getSchedule()) 
40806          composeTiming("schedule", e);
40807      }
40808      if (element.hasQuantity()) {
40809        composeQuantity("quantity", element.getQuantity());
40810      }
40811      if (element.hasInstructionElement()) {
40812        composeString("instruction", element.getInstructionElement());
40813      }
40814  }
40815
40816  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
40817    if (element != null) {
40818      composeElementAttributes(element);
40819      xml.enter(FHIR_NS, name);
40820      composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(element);
40821      composeElementClose(element);
40822      xml.exit(FHIR_NS, name);
40823    }
40824  }
40825
40826  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
40827      composeBackboneElementElements(element);
40828      if (element.hasBaseFormulaType()) {
40829        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
40830      }
40831      if (element.hasBaseFormulaProductNameElement()) {
40832        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
40833      }
40834      if (element.hasAdditiveType()) {
40835        composeCodeableConcept("additiveType", element.getAdditiveType());
40836      }
40837      if (element.hasAdditiveProductNameElement()) {
40838        composeString("additiveProductName", element.getAdditiveProductNameElement());
40839      }
40840      if (element.hasCaloricDensity()) {
40841        composeQuantity("caloricDensity", element.getCaloricDensity());
40842      }
40843      if (element.hasRouteofAdministration()) {
40844        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
40845      }
40846      if (element.hasAdministration()) { 
40847        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
40848          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
40849      }
40850      if (element.hasMaxVolumeToDeliver()) {
40851        composeQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
40852      }
40853      if (element.hasAdministrationInstructionElement()) {
40854        composeString("administrationInstruction", element.getAdministrationInstructionElement());
40855      }
40856  }
40857
40858  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
40859    if (element != null) {
40860      composeElementAttributes(element);
40861      xml.enter(FHIR_NS, name);
40862      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(element);
40863      composeElementClose(element);
40864      xml.exit(FHIR_NS, name);
40865    }
40866  }
40867
40868  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
40869      composeBackboneElementElements(element);
40870      if (element.hasSchedule()) {
40871        composeTiming("schedule", element.getSchedule());
40872      }
40873      if (element.hasQuantity()) {
40874        composeQuantity("quantity", element.getQuantity());
40875      }
40876      if (element.hasRate()) {
40877        composeType("rate", element.getRate());
40878      }  }
40879
40880  protected void composeObservation(String name, Observation element) throws IOException {
40881    if (element != null) {
40882      composeDomainResourceAttributes(element);
40883      xml.enter(FHIR_NS, name);
40884      composeObservationElements(element);
40885      composeElementClose(element);
40886      xml.exit(FHIR_NS, name);
40887    }
40888  }
40889
40890  protected void composeObservationElements(Observation element) throws IOException {
40891      composeDomainResourceElements(element);
40892      if (element.hasIdentifier()) { 
40893        for (Identifier e : element.getIdentifier()) 
40894          composeIdentifier("identifier", e);
40895      }
40896      if (element.hasBasedOn()) { 
40897        for (Reference e : element.getBasedOn()) 
40898          composeReference("basedOn", e);
40899      }
40900      if (element.hasPartOf()) { 
40901        for (Reference e : element.getPartOf()) 
40902          composeReference("partOf", e);
40903      }
40904      if (element.hasStatusElement())
40905        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
40906      if (element.hasCategory()) { 
40907        for (CodeableConcept e : element.getCategory()) 
40908          composeCodeableConcept("category", e);
40909      }
40910      if (element.hasCode()) {
40911        composeCodeableConcept("code", element.getCode());
40912      }
40913      if (element.hasSubject()) {
40914        composeReference("subject", element.getSubject());
40915      }
40916      if (element.hasFocus()) { 
40917        for (Reference e : element.getFocus()) 
40918          composeReference("focus", e);
40919      }
40920      if (element.hasEncounter()) {
40921        composeReference("encounter", element.getEncounter());
40922      }
40923      if (element.hasEffective()) {
40924        composeType("effective", element.getEffective());
40925      }      if (element.hasIssuedElement()) {
40926        composeInstant("issued", element.getIssuedElement());
40927      }
40928      if (element.hasPerformer()) { 
40929        for (Reference e : element.getPerformer()) 
40930          composeReference("performer", e);
40931      }
40932      if (element.hasValue()) {
40933        composeType("value", element.getValue());
40934      }      if (element.hasDataAbsentReason()) {
40935        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
40936      }
40937      if (element.hasInterpretation()) { 
40938        for (CodeableConcept e : element.getInterpretation()) 
40939          composeCodeableConcept("interpretation", e);
40940      }
40941      if (element.hasCommentElement()) {
40942        composeString("comment", element.getCommentElement());
40943      }
40944      if (element.hasBodySite()) {
40945        composeCodeableConcept("bodySite", element.getBodySite());
40946      }
40947      if (element.hasMethod()) {
40948        composeCodeableConcept("method", element.getMethod());
40949      }
40950      if (element.hasSpecimen()) {
40951        composeReference("specimen", element.getSpecimen());
40952      }
40953      if (element.hasDevice()) {
40954        composeReference("device", element.getDevice());
40955      }
40956      if (element.hasReferenceRange()) { 
40957        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
40958          composeObservationObservationReferenceRangeComponent("referenceRange", e);
40959      }
40960      if (element.hasHasMember()) { 
40961        for (Reference e : element.getHasMember()) 
40962          composeReference("hasMember", e);
40963      }
40964      if (element.hasDerivedFrom()) { 
40965        for (Reference e : element.getDerivedFrom()) 
40966          composeReference("derivedFrom", e);
40967      }
40968      if (element.hasComponent()) { 
40969        for (Observation.ObservationComponentComponent e : element.getComponent()) 
40970          composeObservationObservationComponentComponent("component", e);
40971      }
40972  }
40973
40974  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
40975    if (element != null) {
40976      composeElementAttributes(element);
40977      xml.enter(FHIR_NS, name);
40978      composeObservationObservationReferenceRangeComponentElements(element);
40979      composeElementClose(element);
40980      xml.exit(FHIR_NS, name);
40981    }
40982  }
40983
40984  protected void composeObservationObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
40985      composeBackboneElementElements(element);
40986      if (element.hasLow()) {
40987        composeQuantity("low", element.getLow());
40988      }
40989      if (element.hasHigh()) {
40990        composeQuantity("high", element.getHigh());
40991      }
40992      if (element.hasType()) {
40993        composeCodeableConcept("type", element.getType());
40994      }
40995      if (element.hasAppliesTo()) { 
40996        for (CodeableConcept e : element.getAppliesTo()) 
40997          composeCodeableConcept("appliesTo", e);
40998      }
40999      if (element.hasAge()) {
41000        composeRange("age", element.getAge());
41001      }
41002      if (element.hasTextElement()) {
41003        composeString("text", element.getTextElement());
41004      }
41005  }
41006
41007  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
41008    if (element != null) {
41009      composeElementAttributes(element);
41010      xml.enter(FHIR_NS, name);
41011      composeObservationObservationComponentComponentElements(element);
41012      composeElementClose(element);
41013      xml.exit(FHIR_NS, name);
41014    }
41015  }
41016
41017  protected void composeObservationObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
41018      composeBackboneElementElements(element);
41019      if (element.hasCode()) {
41020        composeCodeableConcept("code", element.getCode());
41021      }
41022      if (element.hasValue()) {
41023        composeType("value", element.getValue());
41024      }      if (element.hasDataAbsentReason()) {
41025        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
41026      }
41027      if (element.hasInterpretation()) { 
41028        for (CodeableConcept e : element.getInterpretation()) 
41029          composeCodeableConcept("interpretation", e);
41030      }
41031      if (element.hasReferenceRange()) { 
41032        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
41033          composeObservationObservationReferenceRangeComponent("referenceRange", e);
41034      }
41035  }
41036
41037  protected void composeObservationDefinition(String name, ObservationDefinition element) throws IOException {
41038    if (element != null) {
41039      composeDomainResourceAttributes(element);
41040      xml.enter(FHIR_NS, name);
41041      composeObservationDefinitionElements(element);
41042      composeElementClose(element);
41043      xml.exit(FHIR_NS, name);
41044    }
41045  }
41046
41047  protected void composeObservationDefinitionElements(ObservationDefinition element) throws IOException {
41048      composeDomainResourceElements(element);
41049      if (element.hasCategory()) {
41050        composeCodeableConcept("category", element.getCategory());
41051      }
41052      if (element.hasCode()) {
41053        composeCodeableConcept("code", element.getCode());
41054      }
41055      if (element.hasIdentifier()) { 
41056        for (Identifier e : element.getIdentifier()) 
41057          composeIdentifier("identifier", e);
41058      }
41059      if (element.hasPermittedDataType()) { 
41060        for (Coding e : element.getPermittedDataType()) 
41061          composeCoding("permittedDataType", e);
41062      }
41063      if (element.hasMultipleResultsAllowedElement()) {
41064        composeBoolean("multipleResultsAllowed", element.getMultipleResultsAllowedElement());
41065      }
41066      if (element.hasMethod()) {
41067        composeCodeableConcept("method", element.getMethod());
41068      }
41069      if (element.hasPreferredReportNameElement()) {
41070        composeString("preferredReportName", element.getPreferredReportNameElement());
41071      }
41072      if (element.hasQuantitativeDetails()) {
41073        composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent("quantitativeDetails", element.getQuantitativeDetails());
41074      }
41075      if (element.hasQualifiedInterval()) { 
41076        for (ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent e : element.getQualifiedInterval()) 
41077          composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent("qualifiedInterval", e);
41078      }
41079      if (element.hasValidCodedValueSetElement()) {
41080        composeUri("validCodedValueSet", element.getValidCodedValueSetElement());
41081      }
41082      if (element.hasNormalCodedValueSetElement()) {
41083        composeUri("normalCodedValueSet", element.getNormalCodedValueSetElement());
41084      }
41085      if (element.hasAbnormalCodedValueSetElement()) {
41086        composeUri("abnormalCodedValueSet", element.getAbnormalCodedValueSetElement());
41087      }
41088      if (element.hasCriticalCodedValueSetElement()) {
41089        composeUri("criticalCodedValueSet", element.getCriticalCodedValueSetElement());
41090      }
41091  }
41092
41093  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(String name, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
41094    if (element != null) {
41095      composeElementAttributes(element);
41096      xml.enter(FHIR_NS, name);
41097      composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(element);
41098      composeElementClose(element);
41099      xml.exit(FHIR_NS, name);
41100    }
41101  }
41102
41103  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
41104      composeBackboneElementElements(element);
41105      if (element.hasCustomaryUnit()) {
41106        composeCoding("customaryUnit", element.getCustomaryUnit());
41107      }
41108      if (element.hasUnit()) {
41109        composeCoding("unit", element.getUnit());
41110      }
41111      if (element.hasConversionFactorElement()) {
41112        composeDecimal("conversionFactor", element.getConversionFactorElement());
41113      }
41114      if (element.hasDecimalPrecisionElement()) {
41115        composeInteger("decimalPrecision", element.getDecimalPrecisionElement());
41116      }
41117  }
41118
41119  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(String name, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
41120    if (element != null) {
41121      composeElementAttributes(element);
41122      xml.enter(FHIR_NS, name);
41123      composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(element);
41124      composeElementClose(element);
41125      xml.exit(FHIR_NS, name);
41126    }
41127  }
41128
41129  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
41130      composeBackboneElementElements(element);
41131      if (element.hasCategory()) {
41132        composeCodeableConcept("category", element.getCategory());
41133      }
41134      if (element.hasRange()) {
41135        composeRange("range", element.getRange());
41136      }
41137      if (element.hasType()) {
41138        composeCodeableConcept("type", element.getType());
41139      }
41140      if (element.hasAppliesTo()) { 
41141        for (CodeableConcept e : element.getAppliesTo()) 
41142          composeCodeableConcept("appliesTo", e);
41143      }
41144      if (element.hasAge()) {
41145        composeRange("age", element.getAge());
41146      }
41147      if (element.hasGestationalAge()) {
41148        composeRange("gestationalAge", element.getGestationalAge());
41149      }
41150      if (element.hasConditionElement()) {
41151        composeString("condition", element.getConditionElement());
41152      }
41153  }
41154
41155  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
41156    if (element != null) {
41157      composeDomainResourceAttributes(element);
41158      xml.enter(FHIR_NS, name);
41159      composeOperationDefinitionElements(element);
41160      composeElementClose(element);
41161      xml.exit(FHIR_NS, name);
41162    }
41163  }
41164
41165  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
41166      composeDomainResourceElements(element);
41167      if (element.hasUrlElement()) {
41168        composeUri("url", element.getUrlElement());
41169      }
41170      if (element.hasVersionElement()) {
41171        composeString("version", element.getVersionElement());
41172      }
41173      if (element.hasNameElement()) {
41174        composeString("name", element.getNameElement());
41175      }
41176      if (element.hasTitleElement()) {
41177        composeString("title", element.getTitleElement());
41178      }
41179      if (element.hasStatusElement())
41180        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41181      if (element.hasKindElement())
41182        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
41183      if (element.hasExperimentalElement()) {
41184        composeBoolean("experimental", element.getExperimentalElement());
41185      }
41186      if (element.hasDateElement()) {
41187        composeDateTime("date", element.getDateElement());
41188      }
41189      if (element.hasPublisherElement()) {
41190        composeString("publisher", element.getPublisherElement());
41191      }
41192      if (element.hasContact()) { 
41193        for (ContactDetail e : element.getContact()) 
41194          composeContactDetail("contact", e);
41195      }
41196      if (element.hasDescriptionElement()) {
41197        composeMarkdown("description", element.getDescriptionElement());
41198      }
41199      if (element.hasUseContext()) { 
41200        for (UsageContext e : element.getUseContext()) 
41201          composeUsageContext("useContext", e);
41202      }
41203      if (element.hasJurisdiction()) { 
41204        for (CodeableConcept e : element.getJurisdiction()) 
41205          composeCodeableConcept("jurisdiction", e);
41206      }
41207      if (element.hasPurposeElement()) {
41208        composeMarkdown("purpose", element.getPurposeElement());
41209      }
41210      if (element.hasAffectsStateElement()) {
41211        composeBoolean("affectsState", element.getAffectsStateElement());
41212      }
41213      if (element.hasCodeElement()) {
41214        composeCode("code", element.getCodeElement());
41215      }
41216      if (element.hasCommentElement()) {
41217        composeMarkdown("comment", element.getCommentElement());
41218      }
41219      if (element.hasBaseElement()) {
41220        composeCanonical("base", element.getBaseElement());
41221      }
41222      if (element.hasResource()) { 
41223        for (CodeType e : element.getResource()) 
41224          composeCode("resource", e);
41225      }
41226      if (element.hasSystemElement()) {
41227        composeBoolean("system", element.getSystemElement());
41228      }
41229      if (element.hasTypeElement()) {
41230        composeBoolean("type", element.getTypeElement());
41231      }
41232      if (element.hasInstanceElement()) {
41233        composeBoolean("instance", element.getInstanceElement());
41234      }
41235      if (element.hasInputProfileElement()) {
41236        composeCanonical("inputProfile", element.getInputProfileElement());
41237      }
41238      if (element.hasOutputProfileElement()) {
41239        composeCanonical("outputProfile", element.getOutputProfileElement());
41240      }
41241      if (element.hasParameter()) { 
41242        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
41243          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
41244      }
41245      if (element.hasOverload()) { 
41246        for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
41247          composeOperationDefinitionOperationDefinitionOverloadComponent("overload", e);
41248      }
41249  }
41250
41251  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
41252    if (element != null) {
41253      composeElementAttributes(element);
41254      xml.enter(FHIR_NS, name);
41255      composeOperationDefinitionOperationDefinitionParameterComponentElements(element);
41256      composeElementClose(element);
41257      xml.exit(FHIR_NS, name);
41258    }
41259  }
41260
41261  protected void composeOperationDefinitionOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
41262      composeBackboneElementElements(element);
41263      if (element.hasNameElement()) {
41264        composeCode("name", element.getNameElement());
41265      }
41266      if (element.hasUseElement())
41267        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
41268      if (element.hasMinElement()) {
41269        composeInteger("min", element.getMinElement());
41270      }
41271      if (element.hasMaxElement()) {
41272        composeString("max", element.getMaxElement());
41273      }
41274      if (element.hasDocumentationElement()) {
41275        composeString("documentation", element.getDocumentationElement());
41276      }
41277      if (element.hasTypeElement()) {
41278        composeCode("type", element.getTypeElement());
41279      }
41280      if (element.hasTargetProfile()) { 
41281        for (CanonicalType e : element.getTargetProfile()) 
41282          composeCanonical("targetProfile", e);
41283      }
41284      if (element.hasSearchTypeElement())
41285        composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
41286      if (element.hasBinding()) {
41287        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
41288      }
41289      if (element.hasReferencedFrom()) { 
41290        for (OperationDefinition.OperationDefinitionParameterReferencedFromComponent e : element.getReferencedFrom()) 
41291          composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent("referencedFrom", e);
41292      }
41293      if (element.hasPart()) { 
41294        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
41295          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
41296      }
41297  }
41298
41299  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
41300    if (element != null) {
41301      composeElementAttributes(element);
41302      xml.enter(FHIR_NS, name);
41303      composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(element);
41304      composeElementClose(element);
41305      xml.exit(FHIR_NS, name);
41306    }
41307  }
41308
41309  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
41310      composeBackboneElementElements(element);
41311      if (element.hasStrengthElement())
41312        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
41313      if (element.hasValueSetElement()) {
41314        composeCanonical("valueSet", element.getValueSetElement());
41315      }
41316  }
41317
41318  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent(String name, OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
41319    if (element != null) {
41320      composeElementAttributes(element);
41321      xml.enter(FHIR_NS, name);
41322      composeOperationDefinitionOperationDefinitionParameterReferencedFromComponentElements(element);
41323      composeElementClose(element);
41324      xml.exit(FHIR_NS, name);
41325    }
41326  }
41327
41328  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponentElements(OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
41329      composeBackboneElementElements(element);
41330      if (element.hasSourceElement()) {
41331        composeString("source", element.getSourceElement());
41332      }
41333      if (element.hasSourceIdElement()) {
41334        composeString("sourceId", element.getSourceIdElement());
41335      }
41336  }
41337
41338  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
41339    if (element != null) {
41340      composeElementAttributes(element);
41341      xml.enter(FHIR_NS, name);
41342      composeOperationDefinitionOperationDefinitionOverloadComponentElements(element);
41343      composeElementClose(element);
41344      xml.exit(FHIR_NS, name);
41345    }
41346  }
41347
41348  protected void composeOperationDefinitionOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
41349      composeBackboneElementElements(element);
41350      if (element.hasParameterName()) { 
41351        for (StringType e : element.getParameterName()) 
41352          composeString("parameterName", e);
41353      }
41354      if (element.hasCommentElement()) {
41355        composeString("comment", element.getCommentElement());
41356      }
41357  }
41358
41359  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
41360    if (element != null) {
41361      composeDomainResourceAttributes(element);
41362      xml.enter(FHIR_NS, name);
41363      composeOperationOutcomeElements(element);
41364      composeElementClose(element);
41365      xml.exit(FHIR_NS, name);
41366    }
41367  }
41368
41369  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
41370      composeDomainResourceElements(element);
41371      if (element.hasIssue()) { 
41372        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
41373          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
41374      }
41375  }
41376
41377  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
41378    if (element != null) {
41379      composeElementAttributes(element);
41380      xml.enter(FHIR_NS, name);
41381      composeOperationOutcomeOperationOutcomeIssueComponentElements(element);
41382      composeElementClose(element);
41383      xml.exit(FHIR_NS, name);
41384    }
41385  }
41386
41387  protected void composeOperationOutcomeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
41388      composeBackboneElementElements(element);
41389      if (element.hasSeverityElement())
41390        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
41391      if (element.hasCodeElement())
41392        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
41393      if (element.hasDetails()) {
41394        composeCodeableConcept("details", element.getDetails());
41395      }
41396      if (element.hasDiagnosticsElement()) {
41397        composeString("diagnostics", element.getDiagnosticsElement());
41398      }
41399      if (element.hasLocation()) { 
41400        for (StringType e : element.getLocation()) 
41401          composeString("location", e);
41402      }
41403      if (element.hasExpression()) { 
41404        for (StringType e : element.getExpression()) 
41405          composeString("expression", e);
41406      }
41407  }
41408
41409  protected void composeOrganization(String name, Organization element) throws IOException {
41410    if (element != null) {
41411      composeDomainResourceAttributes(element);
41412      xml.enter(FHIR_NS, name);
41413      composeOrganizationElements(element);
41414      composeElementClose(element);
41415      xml.exit(FHIR_NS, name);
41416    }
41417  }
41418
41419  protected void composeOrganizationElements(Organization element) throws IOException {
41420      composeDomainResourceElements(element);
41421      if (element.hasIdentifier()) { 
41422        for (Identifier e : element.getIdentifier()) 
41423          composeIdentifier("identifier", e);
41424      }
41425      if (element.hasActiveElement()) {
41426        composeBoolean("active", element.getActiveElement());
41427      }
41428      if (element.hasType()) { 
41429        for (CodeableConcept e : element.getType()) 
41430          composeCodeableConcept("type", e);
41431      }
41432      if (element.hasNameElement()) {
41433        composeString("name", element.getNameElement());
41434      }
41435      if (element.hasAlias()) { 
41436        for (StringType e : element.getAlias()) 
41437          composeString("alias", e);
41438      }
41439      if (element.hasTelecom()) { 
41440        for (ContactPoint e : element.getTelecom()) 
41441          composeContactPoint("telecom", e);
41442      }
41443      if (element.hasAddress()) { 
41444        for (Address e : element.getAddress()) 
41445          composeAddress("address", e);
41446      }
41447      if (element.hasPartOf()) {
41448        composeReference("partOf", element.getPartOf());
41449      }
41450      if (element.hasContact()) { 
41451        for (Organization.OrganizationContactComponent e : element.getContact()) 
41452          composeOrganizationOrganizationContactComponent("contact", e);
41453      }
41454      if (element.hasEndpoint()) { 
41455        for (Reference e : element.getEndpoint()) 
41456          composeReference("endpoint", e);
41457      }
41458  }
41459
41460  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
41461    if (element != null) {
41462      composeElementAttributes(element);
41463      xml.enter(FHIR_NS, name);
41464      composeOrganizationOrganizationContactComponentElements(element);
41465      composeElementClose(element);
41466      xml.exit(FHIR_NS, name);
41467    }
41468  }
41469
41470  protected void composeOrganizationOrganizationContactComponentElements(Organization.OrganizationContactComponent element) throws IOException {
41471      composeBackboneElementElements(element);
41472      if (element.hasPurpose()) {
41473        composeCodeableConcept("purpose", element.getPurpose());
41474      }
41475      if (element.hasName()) {
41476        composeHumanName("name", element.getName());
41477      }
41478      if (element.hasTelecom()) { 
41479        for (ContactPoint e : element.getTelecom()) 
41480          composeContactPoint("telecom", e);
41481      }
41482      if (element.hasAddress()) {
41483        composeAddress("address", element.getAddress());
41484      }
41485  }
41486
41487  protected void composeOrganizationAffiliation(String name, OrganizationAffiliation element) throws IOException {
41488    if (element != null) {
41489      composeDomainResourceAttributes(element);
41490      xml.enter(FHIR_NS, name);
41491      composeOrganizationAffiliationElements(element);
41492      composeElementClose(element);
41493      xml.exit(FHIR_NS, name);
41494    }
41495  }
41496
41497  protected void composeOrganizationAffiliationElements(OrganizationAffiliation element) throws IOException {
41498      composeDomainResourceElements(element);
41499      if (element.hasIdentifier()) { 
41500        for (Identifier e : element.getIdentifier()) 
41501          composeIdentifier("identifier", e);
41502      }
41503      if (element.hasActiveElement()) {
41504        composeBoolean("active", element.getActiveElement());
41505      }
41506      if (element.hasPeriod()) {
41507        composePeriod("period", element.getPeriod());
41508      }
41509      if (element.hasOrganization()) {
41510        composeReference("organization", element.getOrganization());
41511      }
41512      if (element.hasParticipatingOrganization()) {
41513        composeReference("participatingOrganization", element.getParticipatingOrganization());
41514      }
41515      if (element.hasNetwork()) { 
41516        for (Reference e : element.getNetwork()) 
41517          composeReference("network", e);
41518      }
41519      if (element.hasCode()) { 
41520        for (CodeableConcept e : element.getCode()) 
41521          composeCodeableConcept("code", e);
41522      }
41523      if (element.hasSpecialty()) { 
41524        for (CodeableConcept e : element.getSpecialty()) 
41525          composeCodeableConcept("specialty", e);
41526      }
41527      if (element.hasLocation()) { 
41528        for (Reference e : element.getLocation()) 
41529          composeReference("location", e);
41530      }
41531      if (element.hasHealthcareService()) { 
41532        for (Reference e : element.getHealthcareService()) 
41533          composeReference("healthcareService", e);
41534      }
41535      if (element.hasTelecom()) { 
41536        for (ContactPoint e : element.getTelecom()) 
41537          composeContactPoint("telecom", e);
41538      }
41539      if (element.hasEndpoint()) { 
41540        for (Reference e : element.getEndpoint()) 
41541          composeReference("endpoint", e);
41542      }
41543  }
41544
41545  protected void composePatient(String name, Patient element) throws IOException {
41546    if (element != null) {
41547      composeDomainResourceAttributes(element);
41548      xml.enter(FHIR_NS, name);
41549      composePatientElements(element);
41550      composeElementClose(element);
41551      xml.exit(FHIR_NS, name);
41552    }
41553  }
41554
41555  protected void composePatientElements(Patient element) throws IOException {
41556      composeDomainResourceElements(element);
41557      if (element.hasIdentifier()) { 
41558        for (Identifier e : element.getIdentifier()) 
41559          composeIdentifier("identifier", e);
41560      }
41561      if (element.hasActiveElement()) {
41562        composeBoolean("active", element.getActiveElement());
41563      }
41564      if (element.hasName()) { 
41565        for (HumanName e : element.getName()) 
41566          composeHumanName("name", e);
41567      }
41568      if (element.hasTelecom()) { 
41569        for (ContactPoint e : element.getTelecom()) 
41570          composeContactPoint("telecom", e);
41571      }
41572      if (element.hasGenderElement())
41573        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
41574      if (element.hasBirthDateElement()) {
41575        composeDate("birthDate", element.getBirthDateElement());
41576      }
41577      if (element.hasDeceased()) {
41578        composeType("deceased", element.getDeceased());
41579      }      if (element.hasAddress()) { 
41580        for (Address e : element.getAddress()) 
41581          composeAddress("address", e);
41582      }
41583      if (element.hasMaritalStatus()) {
41584        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
41585      }
41586      if (element.hasMultipleBirth()) {
41587        composeType("multipleBirth", element.getMultipleBirth());
41588      }      if (element.hasPhoto()) { 
41589        for (Attachment e : element.getPhoto()) 
41590          composeAttachment("photo", e);
41591      }
41592      if (element.hasContact()) { 
41593        for (Patient.ContactComponent e : element.getContact()) 
41594          composePatientContactComponent("contact", e);
41595      }
41596      if (element.hasCommunication()) { 
41597        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
41598          composePatientPatientCommunicationComponent("communication", e);
41599      }
41600      if (element.hasGeneralPractitioner()) { 
41601        for (Reference e : element.getGeneralPractitioner()) 
41602          composeReference("generalPractitioner", e);
41603      }
41604      if (element.hasManagingOrganization()) {
41605        composeReference("managingOrganization", element.getManagingOrganization());
41606      }
41607      if (element.hasLink()) { 
41608        for (Patient.PatientLinkComponent e : element.getLink()) 
41609          composePatientPatientLinkComponent("link", e);
41610      }
41611  }
41612
41613  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
41614    if (element != null) {
41615      composeElementAttributes(element);
41616      xml.enter(FHIR_NS, name);
41617      composePatientContactComponentElements(element);
41618      composeElementClose(element);
41619      xml.exit(FHIR_NS, name);
41620    }
41621  }
41622
41623  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
41624      composeBackboneElementElements(element);
41625      if (element.hasRelationship()) { 
41626        for (CodeableConcept e : element.getRelationship()) 
41627          composeCodeableConcept("relationship", e);
41628      }
41629      if (element.hasName()) {
41630        composeHumanName("name", element.getName());
41631      }
41632      if (element.hasTelecom()) { 
41633        for (ContactPoint e : element.getTelecom()) 
41634          composeContactPoint("telecom", e);
41635      }
41636      if (element.hasAddress()) {
41637        composeAddress("address", element.getAddress());
41638      }
41639      if (element.hasGenderElement())
41640        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
41641      if (element.hasOrganization()) {
41642        composeReference("organization", element.getOrganization());
41643      }
41644      if (element.hasPeriod()) {
41645        composePeriod("period", element.getPeriod());
41646      }
41647  }
41648
41649  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
41650    if (element != null) {
41651      composeElementAttributes(element);
41652      xml.enter(FHIR_NS, name);
41653      composePatientPatientCommunicationComponentElements(element);
41654      composeElementClose(element);
41655      xml.exit(FHIR_NS, name);
41656    }
41657  }
41658
41659  protected void composePatientPatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
41660      composeBackboneElementElements(element);
41661      if (element.hasLanguage()) {
41662        composeCodeableConcept("language", element.getLanguage());
41663      }
41664      if (element.hasPreferredElement()) {
41665        composeBoolean("preferred", element.getPreferredElement());
41666      }
41667  }
41668
41669  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
41670    if (element != null) {
41671      composeElementAttributes(element);
41672      xml.enter(FHIR_NS, name);
41673      composePatientPatientLinkComponentElements(element);
41674      composeElementClose(element);
41675      xml.exit(FHIR_NS, name);
41676    }
41677  }
41678
41679  protected void composePatientPatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
41680      composeBackboneElementElements(element);
41681      if (element.hasOther()) {
41682        composeReference("other", element.getOther());
41683      }
41684      if (element.hasTypeElement())
41685        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
41686  }
41687
41688  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
41689    if (element != null) {
41690      composeDomainResourceAttributes(element);
41691      xml.enter(FHIR_NS, name);
41692      composePaymentNoticeElements(element);
41693      composeElementClose(element);
41694      xml.exit(FHIR_NS, name);
41695    }
41696  }
41697
41698  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
41699      composeDomainResourceElements(element);
41700      if (element.hasIdentifier()) { 
41701        for (Identifier e : element.getIdentifier()) 
41702          composeIdentifier("identifier", e);
41703      }
41704      if (element.hasStatusElement())
41705        composeEnumeration("status", element.getStatusElement(), new PaymentNotice.PaymentNoticeStatusEnumFactory());
41706      if (element.hasRequest()) {
41707        composeReference("request", element.getRequest());
41708      }
41709      if (element.hasResponse()) {
41710        composeReference("response", element.getResponse());
41711      }
41712      if (element.hasStatusDateElement()) {
41713        composeDate("statusDate", element.getStatusDateElement());
41714      }
41715      if (element.hasCreatedElement()) {
41716        composeDateTime("created", element.getCreatedElement());
41717      }
41718      if (element.hasTarget()) {
41719        composeReference("target", element.getTarget());
41720      }
41721      if (element.hasProvider()) {
41722        composeReference("provider", element.getProvider());
41723      }
41724      if (element.hasPaymentStatus()) {
41725        composeCodeableConcept("paymentStatus", element.getPaymentStatus());
41726      }
41727  }
41728
41729  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
41730    if (element != null) {
41731      composeDomainResourceAttributes(element);
41732      xml.enter(FHIR_NS, name);
41733      composePaymentReconciliationElements(element);
41734      composeElementClose(element);
41735      xml.exit(FHIR_NS, name);
41736    }
41737  }
41738
41739  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
41740      composeDomainResourceElements(element);
41741      if (element.hasIdentifier()) { 
41742        for (Identifier e : element.getIdentifier()) 
41743          composeIdentifier("identifier", e);
41744      }
41745      if (element.hasStatusElement())
41746        composeEnumeration("status", element.getStatusElement(), new PaymentReconciliation.PaymentReconciliationStatusEnumFactory());
41747      if (element.hasPeriod()) {
41748        composePeriod("period", element.getPeriod());
41749      }
41750      if (element.hasCreatedElement()) {
41751        composeDateTime("created", element.getCreatedElement());
41752      }
41753      if (element.hasOrganization()) {
41754        composeReference("organization", element.getOrganization());
41755      }
41756      if (element.hasRequest()) {
41757        composeReference("request", element.getRequest());
41758      }
41759      if (element.hasOutcomeElement())
41760        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
41761      if (element.hasDispositionElement()) {
41762        composeString("disposition", element.getDispositionElement());
41763      }
41764      if (element.hasRequestProvider()) {
41765        composeReference("requestProvider", element.getRequestProvider());
41766      }
41767      if (element.hasDetail()) { 
41768        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
41769          composePaymentReconciliationDetailsComponent("detail", e);
41770      }
41771      if (element.hasForm()) {
41772        composeCodeableConcept("form", element.getForm());
41773      }
41774      if (element.hasTotal()) {
41775        composeMoney("total", element.getTotal());
41776      }
41777      if (element.hasProcessNote()) { 
41778        for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
41779          composePaymentReconciliationNotesComponent("processNote", e);
41780      }
41781  }
41782
41783  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
41784    if (element != null) {
41785      composeElementAttributes(element);
41786      xml.enter(FHIR_NS, name);
41787      composePaymentReconciliationDetailsComponentElements(element);
41788      composeElementClose(element);
41789      xml.exit(FHIR_NS, name);
41790    }
41791  }
41792
41793  protected void composePaymentReconciliationDetailsComponentElements(PaymentReconciliation.DetailsComponent element) throws IOException {
41794      composeBackboneElementElements(element);
41795      if (element.hasType()) {
41796        composeCodeableConcept("type", element.getType());
41797      }
41798      if (element.hasRequest()) {
41799        composeReference("request", element.getRequest());
41800      }
41801      if (element.hasResponse()) {
41802        composeReference("response", element.getResponse());
41803      }
41804      if (element.hasSubmitter()) {
41805        composeReference("submitter", element.getSubmitter());
41806      }
41807      if (element.hasPayee()) {
41808        composeReference("payee", element.getPayee());
41809      }
41810      if (element.hasDateElement()) {
41811        composeDate("date", element.getDateElement());
41812      }
41813      if (element.hasAmount()) {
41814        composeMoney("amount", element.getAmount());
41815      }
41816  }
41817
41818  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
41819    if (element != null) {
41820      composeElementAttributes(element);
41821      xml.enter(FHIR_NS, name);
41822      composePaymentReconciliationNotesComponentElements(element);
41823      composeElementClose(element);
41824      xml.exit(FHIR_NS, name);
41825    }
41826  }
41827
41828  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
41829      composeBackboneElementElements(element);
41830      if (element.hasTypeElement())
41831        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
41832      if (element.hasTextElement()) {
41833        composeString("text", element.getTextElement());
41834      }
41835  }
41836
41837  protected void composePerson(String name, Person element) throws IOException {
41838    if (element != null) {
41839      composeDomainResourceAttributes(element);
41840      xml.enter(FHIR_NS, name);
41841      composePersonElements(element);
41842      composeElementClose(element);
41843      xml.exit(FHIR_NS, name);
41844    }
41845  }
41846
41847  protected void composePersonElements(Person element) throws IOException {
41848      composeDomainResourceElements(element);
41849      if (element.hasIdentifier()) { 
41850        for (Identifier e : element.getIdentifier()) 
41851          composeIdentifier("identifier", e);
41852      }
41853      if (element.hasName()) { 
41854        for (HumanName e : element.getName()) 
41855          composeHumanName("name", e);
41856      }
41857      if (element.hasTelecom()) { 
41858        for (ContactPoint e : element.getTelecom()) 
41859          composeContactPoint("telecom", e);
41860      }
41861      if (element.hasGenderElement())
41862        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
41863      if (element.hasBirthDateElement()) {
41864        composeDate("birthDate", element.getBirthDateElement());
41865      }
41866      if (element.hasAddress()) { 
41867        for (Address e : element.getAddress()) 
41868          composeAddress("address", e);
41869      }
41870      if (element.hasPhoto()) {
41871        composeAttachment("photo", element.getPhoto());
41872      }
41873      if (element.hasManagingOrganization()) {
41874        composeReference("managingOrganization", element.getManagingOrganization());
41875      }
41876      if (element.hasActiveElement()) {
41877        composeBoolean("active", element.getActiveElement());
41878      }
41879      if (element.hasLink()) { 
41880        for (Person.PersonLinkComponent e : element.getLink()) 
41881          composePersonPersonLinkComponent("link", e);
41882      }
41883  }
41884
41885  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
41886    if (element != null) {
41887      composeElementAttributes(element);
41888      xml.enter(FHIR_NS, name);
41889      composePersonPersonLinkComponentElements(element);
41890      composeElementClose(element);
41891      xml.exit(FHIR_NS, name);
41892    }
41893  }
41894
41895  protected void composePersonPersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
41896      composeBackboneElementElements(element);
41897      if (element.hasTarget()) {
41898        composeReference("target", element.getTarget());
41899      }
41900      if (element.hasAssuranceElement())
41901        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
41902  }
41903
41904  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
41905    if (element != null) {
41906      composeDomainResourceAttributes(element);
41907      xml.enter(FHIR_NS, name);
41908      composePlanDefinitionElements(element);
41909      composeElementClose(element);
41910      xml.exit(FHIR_NS, name);
41911    }
41912  }
41913
41914  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
41915      composeDomainResourceElements(element);
41916      if (element.hasUrlElement()) {
41917        composeUri("url", element.getUrlElement());
41918      }
41919      if (element.hasIdentifier()) { 
41920        for (Identifier e : element.getIdentifier()) 
41921          composeIdentifier("identifier", e);
41922      }
41923      if (element.hasVersionElement()) {
41924        composeString("version", element.getVersionElement());
41925      }
41926      if (element.hasNameElement()) {
41927        composeString("name", element.getNameElement());
41928      }
41929      if (element.hasTitleElement()) {
41930        composeString("title", element.getTitleElement());
41931      }
41932      if (element.hasSubtitleElement()) {
41933        composeString("subtitle", element.getSubtitleElement());
41934      }
41935      if (element.hasType()) {
41936        composeCodeableConcept("type", element.getType());
41937      }
41938      if (element.hasStatusElement())
41939        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41940      if (element.hasExperimentalElement()) {
41941        composeBoolean("experimental", element.getExperimentalElement());
41942      }
41943      if (element.hasSubject()) {
41944        composeType("subject", element.getSubject());
41945      }      if (element.hasDateElement()) {
41946        composeDateTime("date", element.getDateElement());
41947      }
41948      if (element.hasPublisherElement()) {
41949        composeString("publisher", element.getPublisherElement());
41950      }
41951      if (element.hasContact()) { 
41952        for (ContactDetail e : element.getContact()) 
41953          composeContactDetail("contact", e);
41954      }
41955      if (element.hasDescriptionElement()) {
41956        composeMarkdown("description", element.getDescriptionElement());
41957      }
41958      if (element.hasUseContext()) { 
41959        for (UsageContext e : element.getUseContext()) 
41960          composeUsageContext("useContext", e);
41961      }
41962      if (element.hasJurisdiction()) { 
41963        for (CodeableConcept e : element.getJurisdiction()) 
41964          composeCodeableConcept("jurisdiction", e);
41965      }
41966      if (element.hasPurposeElement()) {
41967        composeMarkdown("purpose", element.getPurposeElement());
41968      }
41969      if (element.hasUsageElement()) {
41970        composeString("usage", element.getUsageElement());
41971      }
41972      if (element.hasCopyrightElement()) {
41973        composeMarkdown("copyright", element.getCopyrightElement());
41974      }
41975      if (element.hasApprovalDateElement()) {
41976        composeDate("approvalDate", element.getApprovalDateElement());
41977      }
41978      if (element.hasLastReviewDateElement()) {
41979        composeDate("lastReviewDate", element.getLastReviewDateElement());
41980      }
41981      if (element.hasEffectivePeriod()) {
41982        composePeriod("effectivePeriod", element.getEffectivePeriod());
41983      }
41984      if (element.hasTopic()) { 
41985        for (CodeableConcept e : element.getTopic()) 
41986          composeCodeableConcept("topic", e);
41987      }
41988      if (element.hasAuthor()) { 
41989        for (ContactDetail e : element.getAuthor()) 
41990          composeContactDetail("author", e);
41991      }
41992      if (element.hasEditor()) { 
41993        for (ContactDetail e : element.getEditor()) 
41994          composeContactDetail("editor", e);
41995      }
41996      if (element.hasReviewer()) { 
41997        for (ContactDetail e : element.getReviewer()) 
41998          composeContactDetail("reviewer", e);
41999      }
42000      if (element.hasEndorser()) { 
42001        for (ContactDetail e : element.getEndorser()) 
42002          composeContactDetail("endorser", e);
42003      }
42004      if (element.hasRelatedArtifact()) { 
42005        for (RelatedArtifact e : element.getRelatedArtifact()) 
42006          composeRelatedArtifact("relatedArtifact", e);
42007      }
42008      if (element.hasLibrary()) { 
42009        for (CanonicalType e : element.getLibrary()) 
42010          composeCanonical("library", e);
42011      }
42012      if (element.hasGoal()) { 
42013        for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
42014          composePlanDefinitionPlanDefinitionGoalComponent("goal", e);
42015      }
42016      if (element.hasAction()) { 
42017        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
42018          composePlanDefinitionPlanDefinitionActionComponent("action", e);
42019      }
42020  }
42021
42022  protected void composePlanDefinitionPlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
42023    if (element != null) {
42024      composeElementAttributes(element);
42025      xml.enter(FHIR_NS, name);
42026      composePlanDefinitionPlanDefinitionGoalComponentElements(element);
42027      composeElementClose(element);
42028      xml.exit(FHIR_NS, name);
42029    }
42030  }
42031
42032  protected void composePlanDefinitionPlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
42033      composeBackboneElementElements(element);
42034      if (element.hasCategory()) {
42035        composeCodeableConcept("category", element.getCategory());
42036      }
42037      if (element.hasDescription()) {
42038        composeCodeableConcept("description", element.getDescription());
42039      }
42040      if (element.hasPriority()) {
42041        composeCodeableConcept("priority", element.getPriority());
42042      }
42043      if (element.hasStart()) {
42044        composeCodeableConcept("start", element.getStart());
42045      }
42046      if (element.hasAddresses()) { 
42047        for (CodeableConcept e : element.getAddresses()) 
42048          composeCodeableConcept("addresses", e);
42049      }
42050      if (element.hasDocumentation()) { 
42051        for (RelatedArtifact e : element.getDocumentation()) 
42052          composeRelatedArtifact("documentation", e);
42053      }
42054      if (element.hasTarget()) { 
42055        for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
42056          composePlanDefinitionPlanDefinitionGoalTargetComponent("target", e);
42057      }
42058  }
42059
42060  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
42061    if (element != null) {
42062      composeElementAttributes(element);
42063      xml.enter(FHIR_NS, name);
42064      composePlanDefinitionPlanDefinitionGoalTargetComponentElements(element);
42065      composeElementClose(element);
42066      xml.exit(FHIR_NS, name);
42067    }
42068  }
42069
42070  protected void composePlanDefinitionPlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
42071      composeBackboneElementElements(element);
42072      if (element.hasMeasure()) {
42073        composeCodeableConcept("measure", element.getMeasure());
42074      }
42075      if (element.hasDetail()) {
42076        composeType("detail", element.getDetail());
42077      }      if (element.hasDue()) {
42078        composeDuration("due", element.getDue());
42079      }
42080  }
42081
42082  protected void composePlanDefinitionPlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
42083    if (element != null) {
42084      composeElementAttributes(element);
42085      xml.enter(FHIR_NS, name);
42086      composePlanDefinitionPlanDefinitionActionComponentElements(element);
42087      composeElementClose(element);
42088      xml.exit(FHIR_NS, name);
42089    }
42090  }
42091
42092  protected void composePlanDefinitionPlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
42093      composeBackboneElementElements(element);
42094      if (element.hasPrefixElement()) {
42095        composeString("prefix", element.getPrefixElement());
42096      }
42097      if (element.hasTitleElement()) {
42098        composeString("title", element.getTitleElement());
42099      }
42100      if (element.hasDescriptionElement()) {
42101        composeString("description", element.getDescriptionElement());
42102      }
42103      if (element.hasTextEquivalentElement()) {
42104        composeString("textEquivalent", element.getTextEquivalentElement());
42105      }
42106      if (element.hasPriorityElement())
42107        composeEnumeration("priority", element.getPriorityElement(), new PlanDefinition.RequestPriorityEnumFactory());
42108      if (element.hasCode()) { 
42109        for (CodeableConcept e : element.getCode()) 
42110          composeCodeableConcept("code", e);
42111      }
42112      if (element.hasReason()) { 
42113        for (CodeableConcept e : element.getReason()) 
42114          composeCodeableConcept("reason", e);
42115      }
42116      if (element.hasDocumentation()) { 
42117        for (RelatedArtifact e : element.getDocumentation()) 
42118          composeRelatedArtifact("documentation", e);
42119      }
42120      if (element.hasGoalId()) { 
42121        for (IdType e : element.getGoalId()) 
42122          composeId("goalId", e);
42123      }
42124      if (element.hasTrigger()) { 
42125        for (TriggerDefinition e : element.getTrigger()) 
42126          composeTriggerDefinition("trigger", e);
42127      }
42128      if (element.hasCondition()) { 
42129        for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
42130          composePlanDefinitionPlanDefinitionActionConditionComponent("condition", e);
42131      }
42132      if (element.hasInput()) { 
42133        for (DataRequirement e : element.getInput()) 
42134          composeDataRequirement("input", e);
42135      }
42136      if (element.hasOutput()) { 
42137        for (DataRequirement e : element.getOutput()) 
42138          composeDataRequirement("output", e);
42139      }
42140      if (element.hasRelatedAction()) { 
42141        for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
42142          composePlanDefinitionPlanDefinitionActionRelatedActionComponent("relatedAction", e);
42143      }
42144      if (element.hasTiming()) {
42145        composeType("timing", element.getTiming());
42146      }      if (element.hasParticipant()) { 
42147        for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
42148          composePlanDefinitionPlanDefinitionActionParticipantComponent("participant", e);
42149      }
42150      if (element.hasType()) {
42151        composeCodeableConcept("type", element.getType());
42152      }
42153      if (element.hasGroupingBehaviorElement())
42154        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new PlanDefinition.ActionGroupingBehaviorEnumFactory());
42155      if (element.hasSelectionBehaviorElement())
42156        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new PlanDefinition.ActionSelectionBehaviorEnumFactory());
42157      if (element.hasRequiredBehaviorElement())
42158        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new PlanDefinition.ActionRequiredBehaviorEnumFactory());
42159      if (element.hasPrecheckBehaviorElement())
42160        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new PlanDefinition.ActionPrecheckBehaviorEnumFactory());
42161      if (element.hasCardinalityBehaviorElement())
42162        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new PlanDefinition.ActionCardinalityBehaviorEnumFactory());
42163      if (element.hasDefinitionElement()) {
42164        composeCanonical("definition", element.getDefinitionElement());
42165      }
42166      if (element.hasTransformElement()) {
42167        composeCanonical("transform", element.getTransformElement());
42168      }
42169      if (element.hasDynamicValue()) { 
42170        for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
42171          composePlanDefinitionPlanDefinitionActionDynamicValueComponent("dynamicValue", e);
42172      }
42173      if (element.hasAction()) { 
42174        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
42175          composePlanDefinitionPlanDefinitionActionComponent("action", e);
42176      }
42177  }
42178
42179  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
42180    if (element != null) {
42181      composeElementAttributes(element);
42182      xml.enter(FHIR_NS, name);
42183      composePlanDefinitionPlanDefinitionActionConditionComponentElements(element);
42184      composeElementClose(element);
42185      xml.exit(FHIR_NS, name);
42186    }
42187  }
42188
42189  protected void composePlanDefinitionPlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
42190      composeBackboneElementElements(element);
42191      if (element.hasKindElement())
42192        composeEnumeration("kind", element.getKindElement(), new PlanDefinition.ActionConditionKindEnumFactory());
42193      if (element.hasExpression()) {
42194        composeExpression("expression", element.getExpression());
42195      }
42196  }
42197
42198  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
42199    if (element != null) {
42200      composeElementAttributes(element);
42201      xml.enter(FHIR_NS, name);
42202      composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(element);
42203      composeElementClose(element);
42204      xml.exit(FHIR_NS, name);
42205    }
42206  }
42207
42208  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
42209      composeBackboneElementElements(element);
42210      if (element.hasActionIdElement()) {
42211        composeId("actionId", element.getActionIdElement());
42212      }
42213      if (element.hasRelationshipElement())
42214        composeEnumeration("relationship", element.getRelationshipElement(), new PlanDefinition.ActionRelationshipTypeEnumFactory());
42215      if (element.hasOffset()) {
42216        composeType("offset", element.getOffset());
42217      }  }
42218
42219  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
42220    if (element != null) {
42221      composeElementAttributes(element);
42222      xml.enter(FHIR_NS, name);
42223      composePlanDefinitionPlanDefinitionActionParticipantComponentElements(element);
42224      composeElementClose(element);
42225      xml.exit(FHIR_NS, name);
42226    }
42227  }
42228
42229  protected void composePlanDefinitionPlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
42230      composeBackboneElementElements(element);
42231      if (element.hasTypeElement())
42232        composeEnumeration("type", element.getTypeElement(), new PlanDefinition.ActionParticipantTypeEnumFactory());
42233      if (element.hasRole()) {
42234        composeCodeableConcept("role", element.getRole());
42235      }
42236  }
42237
42238  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
42239    if (element != null) {
42240      composeElementAttributes(element);
42241      xml.enter(FHIR_NS, name);
42242      composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(element);
42243      composeElementClose(element);
42244      xml.exit(FHIR_NS, name);
42245    }
42246  }
42247
42248  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
42249      composeBackboneElementElements(element);
42250      if (element.hasPathElement()) {
42251        composeString("path", element.getPathElement());
42252      }
42253      if (element.hasExpression()) {
42254        composeExpression("expression", element.getExpression());
42255      }
42256  }
42257
42258  protected void composePractitioner(String name, Practitioner element) throws IOException {
42259    if (element != null) {
42260      composeDomainResourceAttributes(element);
42261      xml.enter(FHIR_NS, name);
42262      composePractitionerElements(element);
42263      composeElementClose(element);
42264      xml.exit(FHIR_NS, name);
42265    }
42266  }
42267
42268  protected void composePractitionerElements(Practitioner element) throws IOException {
42269      composeDomainResourceElements(element);
42270      if (element.hasIdentifier()) { 
42271        for (Identifier e : element.getIdentifier()) 
42272          composeIdentifier("identifier", e);
42273      }
42274      if (element.hasActiveElement()) {
42275        composeBoolean("active", element.getActiveElement());
42276      }
42277      if (element.hasName()) { 
42278        for (HumanName e : element.getName()) 
42279          composeHumanName("name", e);
42280      }
42281      if (element.hasTelecom()) { 
42282        for (ContactPoint e : element.getTelecom()) 
42283          composeContactPoint("telecom", e);
42284      }
42285      if (element.hasAddress()) { 
42286        for (Address e : element.getAddress()) 
42287          composeAddress("address", e);
42288      }
42289      if (element.hasGenderElement())
42290        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42291      if (element.hasBirthDateElement()) {
42292        composeDate("birthDate", element.getBirthDateElement());
42293      }
42294      if (element.hasPhoto()) { 
42295        for (Attachment e : element.getPhoto()) 
42296          composeAttachment("photo", e);
42297      }
42298      if (element.hasQualification()) { 
42299        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
42300          composePractitionerPractitionerQualificationComponent("qualification", e);
42301      }
42302      if (element.hasCommunication()) { 
42303        for (CodeableConcept e : element.getCommunication()) 
42304          composeCodeableConcept("communication", e);
42305      }
42306  }
42307
42308  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
42309    if (element != null) {
42310      composeElementAttributes(element);
42311      xml.enter(FHIR_NS, name);
42312      composePractitionerPractitionerQualificationComponentElements(element);
42313      composeElementClose(element);
42314      xml.exit(FHIR_NS, name);
42315    }
42316  }
42317
42318  protected void composePractitionerPractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
42319      composeBackboneElementElements(element);
42320      if (element.hasIdentifier()) { 
42321        for (Identifier e : element.getIdentifier()) 
42322          composeIdentifier("identifier", e);
42323      }
42324      if (element.hasCode()) {
42325        composeCodeableConcept("code", element.getCode());
42326      }
42327      if (element.hasPeriod()) {
42328        composePeriod("period", element.getPeriod());
42329      }
42330      if (element.hasIssuer()) {
42331        composeReference("issuer", element.getIssuer());
42332      }
42333  }
42334
42335  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
42336    if (element != null) {
42337      composeDomainResourceAttributes(element);
42338      xml.enter(FHIR_NS, name);
42339      composePractitionerRoleElements(element);
42340      composeElementClose(element);
42341      xml.exit(FHIR_NS, name);
42342    }
42343  }
42344
42345  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
42346      composeDomainResourceElements(element);
42347      if (element.hasIdentifier()) { 
42348        for (Identifier e : element.getIdentifier()) 
42349          composeIdentifier("identifier", e);
42350      }
42351      if (element.hasActiveElement()) {
42352        composeBoolean("active", element.getActiveElement());
42353      }
42354      if (element.hasPeriod()) {
42355        composePeriod("period", element.getPeriod());
42356      }
42357      if (element.hasPractitioner()) {
42358        composeReference("practitioner", element.getPractitioner());
42359      }
42360      if (element.hasOrganization()) {
42361        composeReference("organization", element.getOrganization());
42362      }
42363      if (element.hasCode()) { 
42364        for (CodeableConcept e : element.getCode()) 
42365          composeCodeableConcept("code", e);
42366      }
42367      if (element.hasSpecialty()) { 
42368        for (CodeableConcept e : element.getSpecialty()) 
42369          composeCodeableConcept("specialty", e);
42370      }
42371      if (element.hasLocation()) { 
42372        for (Reference e : element.getLocation()) 
42373          composeReference("location", e);
42374      }
42375      if (element.hasHealthcareService()) { 
42376        for (Reference e : element.getHealthcareService()) 
42377          composeReference("healthcareService", e);
42378      }
42379      if (element.hasTelecom()) { 
42380        for (ContactPoint e : element.getTelecom()) 
42381          composeContactPoint("telecom", e);
42382      }
42383      if (element.hasAvailableTime()) { 
42384        for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
42385          composePractitionerRolePractitionerRoleAvailableTimeComponent("availableTime", e);
42386      }
42387      if (element.hasNotAvailable()) { 
42388        for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
42389          composePractitionerRolePractitionerRoleNotAvailableComponent("notAvailable", e);
42390      }
42391      if (element.hasAvailabilityExceptionsElement()) {
42392        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
42393      }
42394      if (element.hasEndpoint()) { 
42395        for (Reference e : element.getEndpoint()) 
42396          composeReference("endpoint", e);
42397      }
42398  }
42399
42400  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
42401    if (element != null) {
42402      composeElementAttributes(element);
42403      xml.enter(FHIR_NS, name);
42404      composePractitionerRolePractitionerRoleAvailableTimeComponentElements(element);
42405      composeElementClose(element);
42406      xml.exit(FHIR_NS, name);
42407    }
42408  }
42409
42410  protected void composePractitionerRolePractitionerRoleAvailableTimeComponentElements(PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
42411      composeBackboneElementElements(element);
42412        if (element.hasDaysOfWeek()) 
42413          for (Enumeration<PractitionerRole.DaysOfWeek> e : element.getDaysOfWeek()) 
42414            composeEnumeration("daysOfWeek", e, new PractitionerRole.DaysOfWeekEnumFactory());
42415      if (element.hasAllDayElement()) {
42416        composeBoolean("allDay", element.getAllDayElement());
42417      }
42418      if (element.hasAvailableStartTimeElement()) {
42419        composeTime("availableStartTime", element.getAvailableStartTimeElement());
42420      }
42421      if (element.hasAvailableEndTimeElement()) {
42422        composeTime("availableEndTime", element.getAvailableEndTimeElement());
42423      }
42424  }
42425
42426  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
42427    if (element != null) {
42428      composeElementAttributes(element);
42429      xml.enter(FHIR_NS, name);
42430      composePractitionerRolePractitionerRoleNotAvailableComponentElements(element);
42431      composeElementClose(element);
42432      xml.exit(FHIR_NS, name);
42433    }
42434  }
42435
42436  protected void composePractitionerRolePractitionerRoleNotAvailableComponentElements(PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
42437      composeBackboneElementElements(element);
42438      if (element.hasDescriptionElement()) {
42439        composeString("description", element.getDescriptionElement());
42440      }
42441      if (element.hasDuring()) {
42442        composePeriod("during", element.getDuring());
42443      }
42444  }
42445
42446  protected void composeProcedure(String name, Procedure element) throws IOException {
42447    if (element != null) {
42448      composeDomainResourceAttributes(element);
42449      xml.enter(FHIR_NS, name);
42450      composeProcedureElements(element);
42451      composeElementClose(element);
42452      xml.exit(FHIR_NS, name);
42453    }
42454  }
42455
42456  protected void composeProcedureElements(Procedure element) throws IOException {
42457      composeDomainResourceElements(element);
42458      if (element.hasIdentifier()) { 
42459        for (Identifier e : element.getIdentifier()) 
42460          composeIdentifier("identifier", e);
42461      }
42462      if (element.hasInstantiatesCanonical()) { 
42463        for (CanonicalType e : element.getInstantiatesCanonical()) 
42464          composeCanonical("instantiatesCanonical", e);
42465      }
42466      if (element.hasInstantiatesUri()) { 
42467        for (UriType e : element.getInstantiatesUri()) 
42468          composeUri("instantiatesUri", e);
42469      }
42470      if (element.hasBasedOn()) { 
42471        for (Reference e : element.getBasedOn()) 
42472          composeReference("basedOn", e);
42473      }
42474      if (element.hasPartOf()) { 
42475        for (Reference e : element.getPartOf()) 
42476          composeReference("partOf", e);
42477      }
42478      if (element.hasStatusElement())
42479        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
42480      if (element.hasStatusReason()) {
42481        composeCodeableConcept("statusReason", element.getStatusReason());
42482      }
42483      if (element.hasCategory()) {
42484        composeCodeableConcept("category", element.getCategory());
42485      }
42486      if (element.hasCode()) {
42487        composeCodeableConcept("code", element.getCode());
42488      }
42489      if (element.hasSubject()) {
42490        composeReference("subject", element.getSubject());
42491      }
42492      if (element.hasContext()) {
42493        composeReference("context", element.getContext());
42494      }
42495      if (element.hasPerformed()) {
42496        composeType("performed", element.getPerformed());
42497      }      if (element.hasRecorder()) {
42498        composeReference("recorder", element.getRecorder());
42499      }
42500      if (element.hasAsserter()) {
42501        composeReference("asserter", element.getAsserter());
42502      }
42503      if (element.hasPerformer()) { 
42504        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
42505          composeProcedureProcedurePerformerComponent("performer", e);
42506      }
42507      if (element.hasLocation()) {
42508        composeReference("location", element.getLocation());
42509      }
42510      if (element.hasReasonCode()) { 
42511        for (CodeableConcept e : element.getReasonCode()) 
42512          composeCodeableConcept("reasonCode", e);
42513      }
42514      if (element.hasReasonReference()) { 
42515        for (Reference e : element.getReasonReference()) 
42516          composeReference("reasonReference", e);
42517      }
42518      if (element.hasBodySite()) { 
42519        for (CodeableConcept e : element.getBodySite()) 
42520          composeCodeableConcept("bodySite", e);
42521      }
42522      if (element.hasOutcome()) {
42523        composeCodeableConcept("outcome", element.getOutcome());
42524      }
42525      if (element.hasReport()) { 
42526        for (Reference e : element.getReport()) 
42527          composeReference("report", e);
42528      }
42529      if (element.hasComplication()) { 
42530        for (CodeableConcept e : element.getComplication()) 
42531          composeCodeableConcept("complication", e);
42532      }
42533      if (element.hasComplicationDetail()) { 
42534        for (Reference e : element.getComplicationDetail()) 
42535          composeReference("complicationDetail", e);
42536      }
42537      if (element.hasFollowUp()) { 
42538        for (CodeableConcept e : element.getFollowUp()) 
42539          composeCodeableConcept("followUp", e);
42540      }
42541      if (element.hasNote()) { 
42542        for (Annotation e : element.getNote()) 
42543          composeAnnotation("note", e);
42544      }
42545      if (element.hasFocalDevice()) { 
42546        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
42547          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
42548      }
42549      if (element.hasUsedReference()) { 
42550        for (Reference e : element.getUsedReference()) 
42551          composeReference("usedReference", e);
42552      }
42553      if (element.hasUsedCode()) { 
42554        for (CodeableConcept e : element.getUsedCode()) 
42555          composeCodeableConcept("usedCode", e);
42556      }
42557  }
42558
42559  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
42560    if (element != null) {
42561      composeElementAttributes(element);
42562      xml.enter(FHIR_NS, name);
42563      composeProcedureProcedurePerformerComponentElements(element);
42564      composeElementClose(element);
42565      xml.exit(FHIR_NS, name);
42566    }
42567  }
42568
42569  protected void composeProcedureProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
42570      composeBackboneElementElements(element);
42571      if (element.hasFunction()) {
42572        composeCodeableConcept("function", element.getFunction());
42573      }
42574      if (element.hasActor()) {
42575        composeReference("actor", element.getActor());
42576      }
42577      if (element.hasOnBehalfOf()) {
42578        composeReference("onBehalfOf", element.getOnBehalfOf());
42579      }
42580  }
42581
42582  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
42583    if (element != null) {
42584      composeElementAttributes(element);
42585      xml.enter(FHIR_NS, name);
42586      composeProcedureProcedureFocalDeviceComponentElements(element);
42587      composeElementClose(element);
42588      xml.exit(FHIR_NS, name);
42589    }
42590  }
42591
42592  protected void composeProcedureProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
42593      composeBackboneElementElements(element);
42594      if (element.hasAction()) {
42595        composeCodeableConcept("action", element.getAction());
42596      }
42597      if (element.hasManipulated()) {
42598        composeReference("manipulated", element.getManipulated());
42599      }
42600  }
42601
42602  protected void composeProcessRequest(String name, ProcessRequest element) throws IOException {
42603    if (element != null) {
42604      composeDomainResourceAttributes(element);
42605      xml.enter(FHIR_NS, name);
42606      composeProcessRequestElements(element);
42607      composeElementClose(element);
42608      xml.exit(FHIR_NS, name);
42609    }
42610  }
42611
42612  protected void composeProcessRequestElements(ProcessRequest element) throws IOException {
42613      composeDomainResourceElements(element);
42614      if (element.hasIdentifier()) { 
42615        for (Identifier e : element.getIdentifier()) 
42616          composeIdentifier("identifier", e);
42617      }
42618      if (element.hasStatusElement())
42619        composeEnumeration("status", element.getStatusElement(), new ProcessRequest.ProcessRequestStatusEnumFactory());
42620      if (element.hasActionElement())
42621        composeEnumeration("action", element.getActionElement(), new ProcessRequest.ActionListEnumFactory());
42622      if (element.hasTarget()) {
42623        composeReference("target", element.getTarget());
42624      }
42625      if (element.hasCreatedElement()) {
42626        composeDateTime("created", element.getCreatedElement());
42627      }
42628      if (element.hasProvider()) {
42629        composeReference("provider", element.getProvider());
42630      }
42631      if (element.hasRequest()) {
42632        composeReference("request", element.getRequest());
42633      }
42634      if (element.hasResponse()) {
42635        composeReference("response", element.getResponse());
42636      }
42637      if (element.hasNullifyElement()) {
42638        composeBoolean("nullify", element.getNullifyElement());
42639      }
42640      if (element.hasReferenceElement()) {
42641        composeString("reference", element.getReferenceElement());
42642      }
42643      if (element.hasItem()) { 
42644        for (ProcessRequest.ItemsComponent e : element.getItem()) 
42645          composeProcessRequestItemsComponent("item", e);
42646      }
42647      if (element.hasInclude()) { 
42648        for (StringType e : element.getInclude()) 
42649          composeString("include", e);
42650      }
42651      if (element.hasExclude()) { 
42652        for (StringType e : element.getExclude()) 
42653          composeString("exclude", e);
42654      }
42655      if (element.hasPeriod()) {
42656        composePeriod("period", element.getPeriod());
42657      }
42658  }
42659
42660  protected void composeProcessRequestItemsComponent(String name, ProcessRequest.ItemsComponent element) throws IOException {
42661    if (element != null) {
42662      composeElementAttributes(element);
42663      xml.enter(FHIR_NS, name);
42664      composeProcessRequestItemsComponentElements(element);
42665      composeElementClose(element);
42666      xml.exit(FHIR_NS, name);
42667    }
42668  }
42669
42670  protected void composeProcessRequestItemsComponentElements(ProcessRequest.ItemsComponent element) throws IOException {
42671      composeBackboneElementElements(element);
42672      if (element.hasSequenceLinkIdElement()) {
42673        composeInteger("sequenceLinkId", element.getSequenceLinkIdElement());
42674      }
42675  }
42676
42677  protected void composeProcessResponse(String name, ProcessResponse element) throws IOException {
42678    if (element != null) {
42679      composeDomainResourceAttributes(element);
42680      xml.enter(FHIR_NS, name);
42681      composeProcessResponseElements(element);
42682      composeElementClose(element);
42683      xml.exit(FHIR_NS, name);
42684    }
42685  }
42686
42687  protected void composeProcessResponseElements(ProcessResponse element) throws IOException {
42688      composeDomainResourceElements(element);
42689      if (element.hasIdentifier()) { 
42690        for (Identifier e : element.getIdentifier()) 
42691          composeIdentifier("identifier", e);
42692      }
42693      if (element.hasStatusElement())
42694        composeEnumeration("status", element.getStatusElement(), new ProcessResponse.ProcessResponseStatusEnumFactory());
42695      if (element.hasCreatedElement()) {
42696        composeDateTime("created", element.getCreatedElement());
42697      }
42698      if (element.hasOrganization()) {
42699        composeReference("organization", element.getOrganization());
42700      }
42701      if (element.hasRequest()) {
42702        composeReference("request", element.getRequest());
42703      }
42704      if (element.hasOutcomeElement())
42705        composeEnumeration("outcome", element.getOutcomeElement(), new ProcessResponse.ProcessingOutcomeEnumFactory());
42706      if (element.hasDispositionElement()) {
42707        composeString("disposition", element.getDispositionElement());
42708      }
42709      if (element.hasRequestProvider()) {
42710        composeReference("requestProvider", element.getRequestProvider());
42711      }
42712      if (element.hasForm()) {
42713        composeCodeableConcept("form", element.getForm());
42714      }
42715      if (element.hasProcessNote()) { 
42716        for (ProcessResponse.ProcessResponseProcessNoteComponent e : element.getProcessNote()) 
42717          composeProcessResponseProcessResponseProcessNoteComponent("processNote", e);
42718      }
42719      if (element.hasError()) { 
42720        for (CodeableConcept e : element.getError()) 
42721          composeCodeableConcept("error", e);
42722      }
42723      if (element.hasCommunicationRequest()) { 
42724        for (Reference e : element.getCommunicationRequest()) 
42725          composeReference("communicationRequest", e);
42726      }
42727  }
42728
42729  protected void composeProcessResponseProcessResponseProcessNoteComponent(String name, ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
42730    if (element != null) {
42731      composeElementAttributes(element);
42732      xml.enter(FHIR_NS, name);
42733      composeProcessResponseProcessResponseProcessNoteComponentElements(element);
42734      composeElementClose(element);
42735      xml.exit(FHIR_NS, name);
42736    }
42737  }
42738
42739  protected void composeProcessResponseProcessResponseProcessNoteComponentElements(ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
42740      composeBackboneElementElements(element);
42741      if (element.hasTypeElement())
42742        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
42743      if (element.hasTextElement()) {
42744        composeString("text", element.getTextElement());
42745      }
42746  }
42747
42748  protected void composeProvenance(String name, Provenance element) throws IOException {
42749    if (element != null) {
42750      composeDomainResourceAttributes(element);
42751      xml.enter(FHIR_NS, name);
42752      composeProvenanceElements(element);
42753      composeElementClose(element);
42754      xml.exit(FHIR_NS, name);
42755    }
42756  }
42757
42758  protected void composeProvenanceElements(Provenance element) throws IOException {
42759      composeDomainResourceElements(element);
42760      if (element.hasTarget()) { 
42761        for (Reference e : element.getTarget()) 
42762          composeReference("target", e);
42763      }
42764      if (element.hasOccurred()) {
42765        composeType("occurred", element.getOccurred());
42766      }      if (element.hasRecordedElement()) {
42767        composeInstant("recorded", element.getRecordedElement());
42768      }
42769      if (element.hasPolicy()) { 
42770        for (UriType e : element.getPolicy()) 
42771          composeUri("policy", e);
42772      }
42773      if (element.hasLocation()) {
42774        composeReference("location", element.getLocation());
42775      }
42776      if (element.hasReason()) { 
42777        for (CodeableConcept e : element.getReason()) 
42778          composeCodeableConcept("reason", e);
42779      }
42780      if (element.hasActivity()) {
42781        composeCodeableConcept("activity", element.getActivity());
42782      }
42783      if (element.hasAgent()) { 
42784        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
42785          composeProvenanceProvenanceAgentComponent("agent", e);
42786      }
42787      if (element.hasEntity()) { 
42788        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
42789          composeProvenanceProvenanceEntityComponent("entity", e);
42790      }
42791      if (element.hasSignature()) { 
42792        for (Signature e : element.getSignature()) 
42793          composeSignature("signature", e);
42794      }
42795  }
42796
42797  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
42798    if (element != null) {
42799      composeElementAttributes(element);
42800      xml.enter(FHIR_NS, name);
42801      composeProvenanceProvenanceAgentComponentElements(element);
42802      composeElementClose(element);
42803      xml.exit(FHIR_NS, name);
42804    }
42805  }
42806
42807  protected void composeProvenanceProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
42808      composeBackboneElementElements(element);
42809      if (element.hasType()) {
42810        composeCodeableConcept("type", element.getType());
42811      }
42812      if (element.hasRole()) { 
42813        for (CodeableConcept e : element.getRole()) 
42814          composeCodeableConcept("role", e);
42815      }
42816      if (element.hasWho()) {
42817        composeReference("who", element.getWho());
42818      }
42819      if (element.hasOnBehalfOf()) {
42820        composeReference("onBehalfOf", element.getOnBehalfOf());
42821      }
42822  }
42823
42824  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
42825    if (element != null) {
42826      composeElementAttributes(element);
42827      xml.enter(FHIR_NS, name);
42828      composeProvenanceProvenanceEntityComponentElements(element);
42829      composeElementClose(element);
42830      xml.exit(FHIR_NS, name);
42831    }
42832  }
42833
42834  protected void composeProvenanceProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
42835      composeBackboneElementElements(element);
42836      if (element.hasRoleElement())
42837        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
42838      if (element.hasWhat()) {
42839        composeReference("what", element.getWhat());
42840      }
42841      if (element.hasAgent()) { 
42842        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
42843          composeProvenanceProvenanceAgentComponent("agent", e);
42844      }
42845  }
42846
42847  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
42848    if (element != null) {
42849      composeDomainResourceAttributes(element);
42850      xml.enter(FHIR_NS, name);
42851      composeQuestionnaireElements(element);
42852      composeElementClose(element);
42853      xml.exit(FHIR_NS, name);
42854    }
42855  }
42856
42857  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
42858      composeDomainResourceElements(element);
42859      if (element.hasUrlElement()) {
42860        composeUri("url", element.getUrlElement());
42861      }
42862      if (element.hasIdentifier()) { 
42863        for (Identifier e : element.getIdentifier()) 
42864          composeIdentifier("identifier", e);
42865      }
42866      if (element.hasVersionElement()) {
42867        composeString("version", element.getVersionElement());
42868      }
42869      if (element.hasNameElement()) {
42870        composeString("name", element.getNameElement());
42871      }
42872      if (element.hasTitleElement()) {
42873        composeString("title", element.getTitleElement());
42874      }
42875      if (element.hasDerivedFrom()) { 
42876        for (CanonicalType e : element.getDerivedFrom()) 
42877          composeCanonical("derivedFrom", e);
42878      }
42879      if (element.hasStatusElement())
42880        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
42881      if (element.hasExperimentalElement()) {
42882        composeBoolean("experimental", element.getExperimentalElement());
42883      }
42884      if (element.hasSubjectType()) { 
42885        for (CodeType e : element.getSubjectType()) 
42886          composeCode("subjectType", e);
42887      }
42888      if (element.hasDateElement()) {
42889        composeDateTime("date", element.getDateElement());
42890      }
42891      if (element.hasPublisherElement()) {
42892        composeString("publisher", element.getPublisherElement());
42893      }
42894      if (element.hasContact()) { 
42895        for (ContactDetail e : element.getContact()) 
42896          composeContactDetail("contact", e);
42897      }
42898      if (element.hasDescriptionElement()) {
42899        composeMarkdown("description", element.getDescriptionElement());
42900      }
42901      if (element.hasUseContext()) { 
42902        for (UsageContext e : element.getUseContext()) 
42903          composeUsageContext("useContext", e);
42904      }
42905      if (element.hasJurisdiction()) { 
42906        for (CodeableConcept e : element.getJurisdiction()) 
42907          composeCodeableConcept("jurisdiction", e);
42908      }
42909      if (element.hasPurposeElement()) {
42910        composeMarkdown("purpose", element.getPurposeElement());
42911      }
42912      if (element.hasCopyrightElement()) {
42913        composeMarkdown("copyright", element.getCopyrightElement());
42914      }
42915      if (element.hasApprovalDateElement()) {
42916        composeDate("approvalDate", element.getApprovalDateElement());
42917      }
42918      if (element.hasLastReviewDateElement()) {
42919        composeDate("lastReviewDate", element.getLastReviewDateElement());
42920      }
42921      if (element.hasEffectivePeriod()) {
42922        composePeriod("effectivePeriod", element.getEffectivePeriod());
42923      }
42924      if (element.hasCode()) { 
42925        for (Coding e : element.getCode()) 
42926          composeCoding("code", e);
42927      }
42928      if (element.hasItem()) { 
42929        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
42930          composeQuestionnaireQuestionnaireItemComponent("item", e);
42931      }
42932  }
42933
42934  protected void composeQuestionnaireQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
42935    if (element != null) {
42936      composeElementAttributes(element);
42937      xml.enter(FHIR_NS, name);
42938      composeQuestionnaireQuestionnaireItemComponentElements(element);
42939      composeElementClose(element);
42940      xml.exit(FHIR_NS, name);
42941    }
42942  }
42943
42944  protected void composeQuestionnaireQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
42945      composeBackboneElementElements(element);
42946      if (element.hasLinkIdElement()) {
42947        composeString("linkId", element.getLinkIdElement());
42948      }
42949      if (element.hasDefinitionElement()) {
42950        composeUri("definition", element.getDefinitionElement());
42951      }
42952      if (element.hasCode()) { 
42953        for (Coding e : element.getCode()) 
42954          composeCoding("code", e);
42955      }
42956      if (element.hasPrefixElement()) {
42957        composeString("prefix", element.getPrefixElement());
42958      }
42959      if (element.hasTextElement()) {
42960        composeString("text", element.getTextElement());
42961      }
42962      if (element.hasTypeElement())
42963        composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
42964      if (element.hasEnableWhen()) { 
42965        for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
42966          composeQuestionnaireQuestionnaireItemEnableWhenComponent("enableWhen", e);
42967      }
42968      if (element.hasEnableBehaviorElement())
42969        composeEnumeration("enableBehavior", element.getEnableBehaviorElement(), new Questionnaire.EnableWhenBehaviorEnumFactory());
42970      if (element.hasRequiredElement()) {
42971        composeBoolean("required", element.getRequiredElement());
42972      }
42973      if (element.hasRepeatsElement()) {
42974        composeBoolean("repeats", element.getRepeatsElement());
42975      }
42976      if (element.hasReadOnlyElement()) {
42977        composeBoolean("readOnly", element.getReadOnlyElement());
42978      }
42979      if (element.hasMaxLengthElement()) {
42980        composeInteger("maxLength", element.getMaxLengthElement());
42981      }
42982      if (element.hasAnswerValueSetElement()) {
42983        composeCanonical("answerValueSet", element.getAnswerValueSetElement());
42984      }
42985      if (element.hasAnswerOption()) { 
42986        for (Questionnaire.QuestionnaireItemAnswerOptionComponent e : element.getAnswerOption()) 
42987          composeQuestionnaireQuestionnaireItemAnswerOptionComponent("answerOption", e);
42988      }
42989      if (element.hasInitial()) { 
42990        for (Questionnaire.QuestionnaireItemInitialComponent e : element.getInitial()) 
42991          composeQuestionnaireQuestionnaireItemInitialComponent("initial", e);
42992      }
42993      if (element.hasItem()) { 
42994        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
42995          composeQuestionnaireQuestionnaireItemComponent("item", e);
42996      }
42997  }
42998
42999  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
43000    if (element != null) {
43001      composeElementAttributes(element);
43002      xml.enter(FHIR_NS, name);
43003      composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(element);
43004      composeElementClose(element);
43005      xml.exit(FHIR_NS, name);
43006    }
43007  }
43008
43009  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
43010      composeBackboneElementElements(element);
43011      if (element.hasQuestionElement()) {
43012        composeString("question", element.getQuestionElement());
43013      }
43014      if (element.hasOperatorElement())
43015        composeEnumeration("operator", element.getOperatorElement(), new Questionnaire.QuestionnaireItemOperatorEnumFactory());
43016      if (element.hasAnswer()) {
43017        composeType("answer", element.getAnswer());
43018      }  }
43019
43020  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponent(String name, Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
43021    if (element != null) {
43022      composeElementAttributes(element);
43023      xml.enter(FHIR_NS, name);
43024      composeQuestionnaireQuestionnaireItemAnswerOptionComponentElements(element);
43025      composeElementClose(element);
43026      xml.exit(FHIR_NS, name);
43027    }
43028  }
43029
43030  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponentElements(Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
43031      composeBackboneElementElements(element);
43032      if (element.hasValue()) {
43033        composeType("value", element.getValue());
43034      }      if (element.hasInitialSelectedElement()) {
43035        composeBoolean("initialSelected", element.getInitialSelectedElement());
43036      }
43037  }
43038
43039  protected void composeQuestionnaireQuestionnaireItemInitialComponent(String name, Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
43040    if (element != null) {
43041      composeElementAttributes(element);
43042      xml.enter(FHIR_NS, name);
43043      composeQuestionnaireQuestionnaireItemInitialComponentElements(element);
43044      composeElementClose(element);
43045      xml.exit(FHIR_NS, name);
43046    }
43047  }
43048
43049  protected void composeQuestionnaireQuestionnaireItemInitialComponentElements(Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
43050      composeBackboneElementElements(element);
43051      if (element.hasValue()) {
43052        composeType("value", element.getValue());
43053      }  }
43054
43055  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
43056    if (element != null) {
43057      composeDomainResourceAttributes(element);
43058      xml.enter(FHIR_NS, name);
43059      composeQuestionnaireResponseElements(element);
43060      composeElementClose(element);
43061      xml.exit(FHIR_NS, name);
43062    }
43063  }
43064
43065  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
43066      composeDomainResourceElements(element);
43067      if (element.hasIdentifier()) {
43068        composeIdentifier("identifier", element.getIdentifier());
43069      }
43070      if (element.hasBasedOn()) { 
43071        for (Reference e : element.getBasedOn()) 
43072          composeReference("basedOn", e);
43073      }
43074      if (element.hasPartOf()) { 
43075        for (Reference e : element.getPartOf()) 
43076          composeReference("partOf", e);
43077      }
43078      if (element.hasQuestionnaireElement()) {
43079        composeCanonical("questionnaire", element.getQuestionnaireElement());
43080      }
43081      if (element.hasStatusElement())
43082        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
43083      if (element.hasSubject()) {
43084        composeReference("subject", element.getSubject());
43085      }
43086      if (element.hasContext()) {
43087        composeReference("context", element.getContext());
43088      }
43089      if (element.hasAuthoredElement()) {
43090        composeDateTime("authored", element.getAuthoredElement());
43091      }
43092      if (element.hasAuthor()) {
43093        composeReference("author", element.getAuthor());
43094      }
43095      if (element.hasSource()) {
43096        composeReference("source", element.getSource());
43097      }
43098      if (element.hasItem()) { 
43099        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
43100          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
43101      }
43102  }
43103
43104  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
43105    if (element != null) {
43106      composeElementAttributes(element);
43107      xml.enter(FHIR_NS, name);
43108      composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(element);
43109      composeElementClose(element);
43110      xml.exit(FHIR_NS, name);
43111    }
43112  }
43113
43114  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
43115      composeBackboneElementElements(element);
43116      if (element.hasLinkIdElement()) {
43117        composeString("linkId", element.getLinkIdElement());
43118      }
43119      if (element.hasDefinitionElement()) {
43120        composeUri("definition", element.getDefinitionElement());
43121      }
43122      if (element.hasTextElement()) {
43123        composeString("text", element.getTextElement());
43124      }
43125      if (element.hasAnswer()) { 
43126        for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
43127          composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent("answer", e);
43128      }
43129      if (element.hasItem()) { 
43130        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
43131          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
43132      }
43133  }
43134
43135  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
43136    if (element != null) {
43137      composeElementAttributes(element);
43138      xml.enter(FHIR_NS, name);
43139      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(element);
43140      composeElementClose(element);
43141      xml.exit(FHIR_NS, name);
43142    }
43143  }
43144
43145  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
43146      composeBackboneElementElements(element);
43147      if (element.hasValue()) {
43148        composeType("value", element.getValue());
43149      }      if (element.hasItem()) { 
43150        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
43151          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
43152      }
43153  }
43154
43155  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
43156    if (element != null) {
43157      composeDomainResourceAttributes(element);
43158      xml.enter(FHIR_NS, name);
43159      composeRelatedPersonElements(element);
43160      composeElementClose(element);
43161      xml.exit(FHIR_NS, name);
43162    }
43163  }
43164
43165  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
43166      composeDomainResourceElements(element);
43167      if (element.hasIdentifier()) { 
43168        for (Identifier e : element.getIdentifier()) 
43169          composeIdentifier("identifier", e);
43170      }
43171      if (element.hasActiveElement()) {
43172        composeBoolean("active", element.getActiveElement());
43173      }
43174      if (element.hasPatient()) {
43175        composeReference("patient", element.getPatient());
43176      }
43177      if (element.hasRelationship()) { 
43178        for (CodeableConcept e : element.getRelationship()) 
43179          composeCodeableConcept("relationship", e);
43180      }
43181      if (element.hasName()) { 
43182        for (HumanName e : element.getName()) 
43183          composeHumanName("name", e);
43184      }
43185      if (element.hasTelecom()) { 
43186        for (ContactPoint e : element.getTelecom()) 
43187          composeContactPoint("telecom", e);
43188      }
43189      if (element.hasGenderElement())
43190        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
43191      if (element.hasBirthDateElement()) {
43192        composeDate("birthDate", element.getBirthDateElement());
43193      }
43194      if (element.hasAddress()) { 
43195        for (Address e : element.getAddress()) 
43196          composeAddress("address", e);
43197      }
43198      if (element.hasPhoto()) { 
43199        for (Attachment e : element.getPhoto()) 
43200          composeAttachment("photo", e);
43201      }
43202      if (element.hasPeriod()) {
43203        composePeriod("period", element.getPeriod());
43204      }
43205  }
43206
43207  protected void composeRequestGroup(String name, RequestGroup element) throws IOException {
43208    if (element != null) {
43209      composeDomainResourceAttributes(element);
43210      xml.enter(FHIR_NS, name);
43211      composeRequestGroupElements(element);
43212      composeElementClose(element);
43213      xml.exit(FHIR_NS, name);
43214    }
43215  }
43216
43217  protected void composeRequestGroupElements(RequestGroup element) throws IOException {
43218      composeDomainResourceElements(element);
43219      if (element.hasIdentifier()) { 
43220        for (Identifier e : element.getIdentifier()) 
43221          composeIdentifier("identifier", e);
43222      }
43223      if (element.hasInstantiatesCanonical()) { 
43224        for (CanonicalType e : element.getInstantiatesCanonical()) 
43225          composeCanonical("instantiatesCanonical", e);
43226      }
43227      if (element.hasInstantiatesUri()) { 
43228        for (UriType e : element.getInstantiatesUri()) 
43229          composeUri("instantiatesUri", e);
43230      }
43231      if (element.hasBasedOn()) { 
43232        for (Reference e : element.getBasedOn()) 
43233          composeReference("basedOn", e);
43234      }
43235      if (element.hasReplaces()) { 
43236        for (Reference e : element.getReplaces()) 
43237          composeReference("replaces", e);
43238      }
43239      if (element.hasGroupIdentifier()) {
43240        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
43241      }
43242      if (element.hasStatusElement())
43243        composeEnumeration("status", element.getStatusElement(), new RequestGroup.RequestStatusEnumFactory());
43244      if (element.hasIntentElement())
43245        composeEnumeration("intent", element.getIntentElement(), new RequestGroup.RequestIntentEnumFactory());
43246      if (element.hasPriorityElement())
43247        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
43248      if (element.hasCode()) {
43249        composeCodeableConcept("code", element.getCode());
43250      }
43251      if (element.hasSubject()) {
43252        composeReference("subject", element.getSubject());
43253      }
43254      if (element.hasContext()) {
43255        composeReference("context", element.getContext());
43256      }
43257      if (element.hasAuthoredOnElement()) {
43258        composeDateTime("authoredOn", element.getAuthoredOnElement());
43259      }
43260      if (element.hasAuthor()) {
43261        composeReference("author", element.getAuthor());
43262      }
43263      if (element.hasReasonCode()) { 
43264        for (CodeableConcept e : element.getReasonCode()) 
43265          composeCodeableConcept("reasonCode", e);
43266      }
43267      if (element.hasReasonReference()) { 
43268        for (Reference e : element.getReasonReference()) 
43269          composeReference("reasonReference", e);
43270      }
43271      if (element.hasNote()) { 
43272        for (Annotation e : element.getNote()) 
43273          composeAnnotation("note", e);
43274      }
43275      if (element.hasAction()) { 
43276        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
43277          composeRequestGroupRequestGroupActionComponent("action", e);
43278      }
43279  }
43280
43281  protected void composeRequestGroupRequestGroupActionComponent(String name, RequestGroup.RequestGroupActionComponent element) throws IOException {
43282    if (element != null) {
43283      composeElementAttributes(element);
43284      xml.enter(FHIR_NS, name);
43285      composeRequestGroupRequestGroupActionComponentElements(element);
43286      composeElementClose(element);
43287      xml.exit(FHIR_NS, name);
43288    }
43289  }
43290
43291  protected void composeRequestGroupRequestGroupActionComponentElements(RequestGroup.RequestGroupActionComponent element) throws IOException {
43292      composeBackboneElementElements(element);
43293      if (element.hasPrefixElement()) {
43294        composeString("prefix", element.getPrefixElement());
43295      }
43296      if (element.hasTitleElement()) {
43297        composeString("title", element.getTitleElement());
43298      }
43299      if (element.hasDescriptionElement()) {
43300        composeString("description", element.getDescriptionElement());
43301      }
43302      if (element.hasTextEquivalentElement()) {
43303        composeString("textEquivalent", element.getTextEquivalentElement());
43304      }
43305      if (element.hasPriorityElement())
43306        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
43307      if (element.hasCode()) { 
43308        for (CodeableConcept e : element.getCode()) 
43309          composeCodeableConcept("code", e);
43310      }
43311      if (element.hasDocumentation()) { 
43312        for (RelatedArtifact e : element.getDocumentation()) 
43313          composeRelatedArtifact("documentation", e);
43314      }
43315      if (element.hasCondition()) { 
43316        for (RequestGroup.RequestGroupActionConditionComponent e : element.getCondition()) 
43317          composeRequestGroupRequestGroupActionConditionComponent("condition", e);
43318      }
43319      if (element.hasRelatedAction()) { 
43320        for (RequestGroup.RequestGroupActionRelatedActionComponent e : element.getRelatedAction()) 
43321          composeRequestGroupRequestGroupActionRelatedActionComponent("relatedAction", e);
43322      }
43323      if (element.hasTiming()) {
43324        composeType("timing", element.getTiming());
43325      }      if (element.hasParticipant()) { 
43326        for (Reference e : element.getParticipant()) 
43327          composeReference("participant", e);
43328      }
43329      if (element.hasType()) {
43330        composeCodeableConcept("type", element.getType());
43331      }
43332      if (element.hasGroupingBehaviorElement())
43333        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new RequestGroup.ActionGroupingBehaviorEnumFactory());
43334      if (element.hasSelectionBehaviorElement())
43335        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new RequestGroup.ActionSelectionBehaviorEnumFactory());
43336      if (element.hasRequiredBehaviorElement())
43337        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new RequestGroup.ActionRequiredBehaviorEnumFactory());
43338      if (element.hasPrecheckBehaviorElement())
43339        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new RequestGroup.ActionPrecheckBehaviorEnumFactory());
43340      if (element.hasCardinalityBehaviorElement())
43341        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new RequestGroup.ActionCardinalityBehaviorEnumFactory());
43342      if (element.hasResource()) {
43343        composeReference("resource", element.getResource());
43344      }
43345      if (element.hasAction()) { 
43346        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
43347          composeRequestGroupRequestGroupActionComponent("action", e);
43348      }
43349  }
43350
43351  protected void composeRequestGroupRequestGroupActionConditionComponent(String name, RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
43352    if (element != null) {
43353      composeElementAttributes(element);
43354      xml.enter(FHIR_NS, name);
43355      composeRequestGroupRequestGroupActionConditionComponentElements(element);
43356      composeElementClose(element);
43357      xml.exit(FHIR_NS, name);
43358    }
43359  }
43360
43361  protected void composeRequestGroupRequestGroupActionConditionComponentElements(RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
43362      composeBackboneElementElements(element);
43363      if (element.hasKindElement())
43364        composeEnumeration("kind", element.getKindElement(), new RequestGroup.ActionConditionKindEnumFactory());
43365      if (element.hasDescriptionElement()) {
43366        composeString("description", element.getDescriptionElement());
43367      }
43368      if (element.hasLanguageElement()) {
43369        composeString("language", element.getLanguageElement());
43370      }
43371      if (element.hasExpressionElement()) {
43372        composeString("expression", element.getExpressionElement());
43373      }
43374  }
43375
43376  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(String name, RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
43377    if (element != null) {
43378      composeElementAttributes(element);
43379      xml.enter(FHIR_NS, name);
43380      composeRequestGroupRequestGroupActionRelatedActionComponentElements(element);
43381      composeElementClose(element);
43382      xml.exit(FHIR_NS, name);
43383    }
43384  }
43385
43386  protected void composeRequestGroupRequestGroupActionRelatedActionComponentElements(RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
43387      composeBackboneElementElements(element);
43388      if (element.hasActionIdElement()) {
43389        composeId("actionId", element.getActionIdElement());
43390      }
43391      if (element.hasRelationshipElement())
43392        composeEnumeration("relationship", element.getRelationshipElement(), new RequestGroup.ActionRelationshipTypeEnumFactory());
43393      if (element.hasOffset()) {
43394        composeType("offset", element.getOffset());
43395      }  }
43396
43397  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
43398    if (element != null) {
43399      composeDomainResourceAttributes(element);
43400      xml.enter(FHIR_NS, name);
43401      composeResearchStudyElements(element);
43402      composeElementClose(element);
43403      xml.exit(FHIR_NS, name);
43404    }
43405  }
43406
43407  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
43408      composeDomainResourceElements(element);
43409      if (element.hasIdentifier()) { 
43410        for (Identifier e : element.getIdentifier()) 
43411          composeIdentifier("identifier", e);
43412      }
43413      if (element.hasTitleElement()) {
43414        composeString("title", element.getTitleElement());
43415      }
43416      if (element.hasProtocol()) { 
43417        for (Reference e : element.getProtocol()) 
43418          composeReference("protocol", e);
43419      }
43420      if (element.hasPartOf()) { 
43421        for (Reference e : element.getPartOf()) 
43422          composeReference("partOf", e);
43423      }
43424      if (element.hasStatusElement())
43425        composeEnumeration("status", element.getStatusElement(), new ResearchStudy.ResearchStudyStatusEnumFactory());
43426      if (element.hasPrimaryPurposeType()) {
43427        composeCodeableConcept("primaryPurposeType", element.getPrimaryPurposeType());
43428      }
43429      if (element.hasPhase()) {
43430        composeCodeableConcept("phase", element.getPhase());
43431      }
43432      if (element.hasCategory()) { 
43433        for (CodeableConcept e : element.getCategory()) 
43434          composeCodeableConcept("category", e);
43435      }
43436      if (element.hasFocus()) { 
43437        for (CodeableConcept e : element.getFocus()) 
43438          composeCodeableConcept("focus", e);
43439      }
43440      if (element.hasCondition()) { 
43441        for (CodeableConcept e : element.getCondition()) 
43442          composeCodeableConcept("condition", e);
43443      }
43444      if (element.hasContact()) { 
43445        for (ContactDetail e : element.getContact()) 
43446          composeContactDetail("contact", e);
43447      }
43448      if (element.hasRelatedArtifact()) { 
43449        for (RelatedArtifact e : element.getRelatedArtifact()) 
43450          composeRelatedArtifact("relatedArtifact", e);
43451      }
43452      if (element.hasKeyword()) { 
43453        for (CodeableConcept e : element.getKeyword()) 
43454          composeCodeableConcept("keyword", e);
43455      }
43456      if (element.hasLocation()) { 
43457        for (CodeableConcept e : element.getLocation()) 
43458          composeCodeableConcept("location", e);
43459      }
43460      if (element.hasDescriptionElement()) {
43461        composeMarkdown("description", element.getDescriptionElement());
43462      }
43463      if (element.hasEnrollment()) { 
43464        for (Reference e : element.getEnrollment()) 
43465          composeReference("enrollment", e);
43466      }
43467      if (element.hasPeriod()) {
43468        composePeriod("period", element.getPeriod());
43469      }
43470      if (element.hasSponsor()) {
43471        composeReference("sponsor", element.getSponsor());
43472      }
43473      if (element.hasPrincipalInvestigator()) {
43474        composeReference("principalInvestigator", element.getPrincipalInvestigator());
43475      }
43476      if (element.hasSite()) { 
43477        for (Reference e : element.getSite()) 
43478          composeReference("site", e);
43479      }
43480      if (element.hasReasonStopped()) {
43481        composeCodeableConcept("reasonStopped", element.getReasonStopped());
43482      }
43483      if (element.hasNote()) { 
43484        for (Annotation e : element.getNote()) 
43485          composeAnnotation("note", e);
43486      }
43487      if (element.hasArm()) { 
43488        for (ResearchStudy.ResearchStudyArmComponent e : element.getArm()) 
43489          composeResearchStudyResearchStudyArmComponent("arm", e);
43490      }
43491      if (element.hasObjective()) { 
43492        for (ResearchStudy.ResearchStudyObjectiveComponent e : element.getObjective()) 
43493          composeResearchStudyResearchStudyObjectiveComponent("objective", e);
43494      }
43495  }
43496
43497  protected void composeResearchStudyResearchStudyArmComponent(String name, ResearchStudy.ResearchStudyArmComponent element) throws IOException {
43498    if (element != null) {
43499      composeElementAttributes(element);
43500      xml.enter(FHIR_NS, name);
43501      composeResearchStudyResearchStudyArmComponentElements(element);
43502      composeElementClose(element);
43503      xml.exit(FHIR_NS, name);
43504    }
43505  }
43506
43507  protected void composeResearchStudyResearchStudyArmComponentElements(ResearchStudy.ResearchStudyArmComponent element) throws IOException {
43508      composeBackboneElementElements(element);
43509      if (element.hasNameElement()) {
43510        composeString("name", element.getNameElement());
43511      }
43512      if (element.hasType()) {
43513        composeCodeableConcept("type", element.getType());
43514      }
43515      if (element.hasDescriptionElement()) {
43516        composeString("description", element.getDescriptionElement());
43517      }
43518  }
43519
43520  protected void composeResearchStudyResearchStudyObjectiveComponent(String name, ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
43521    if (element != null) {
43522      composeElementAttributes(element);
43523      xml.enter(FHIR_NS, name);
43524      composeResearchStudyResearchStudyObjectiveComponentElements(element);
43525      composeElementClose(element);
43526      xml.exit(FHIR_NS, name);
43527    }
43528  }
43529
43530  protected void composeResearchStudyResearchStudyObjectiveComponentElements(ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
43531      composeBackboneElementElements(element);
43532      if (element.hasNameElement()) {
43533        composeString("name", element.getNameElement());
43534      }
43535      if (element.hasType()) {
43536        composeCodeableConcept("type", element.getType());
43537      }
43538  }
43539
43540  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
43541    if (element != null) {
43542      composeDomainResourceAttributes(element);
43543      xml.enter(FHIR_NS, name);
43544      composeResearchSubjectElements(element);
43545      composeElementClose(element);
43546      xml.exit(FHIR_NS, name);
43547    }
43548  }
43549
43550  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
43551      composeDomainResourceElements(element);
43552      if (element.hasIdentifier()) { 
43553        for (Identifier e : element.getIdentifier()) 
43554          composeIdentifier("identifier", e);
43555      }
43556      if (element.hasStatusElement())
43557        composeEnumeration("status", element.getStatusElement(), new ResearchSubject.ResearchSubjectStatusEnumFactory());
43558      if (element.hasPeriod()) {
43559        composePeriod("period", element.getPeriod());
43560      }
43561      if (element.hasStudy()) {
43562        composeReference("study", element.getStudy());
43563      }
43564      if (element.hasIndividual()) {
43565        composeReference("individual", element.getIndividual());
43566      }
43567      if (element.hasAssignedArmElement()) {
43568        composeString("assignedArm", element.getAssignedArmElement());
43569      }
43570      if (element.hasActualArmElement()) {
43571        composeString("actualArm", element.getActualArmElement());
43572      }
43573      if (element.hasConsent()) {
43574        composeReference("consent", element.getConsent());
43575      }
43576  }
43577
43578  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
43579    if (element != null) {
43580      composeDomainResourceAttributes(element);
43581      xml.enter(FHIR_NS, name);
43582      composeRiskAssessmentElements(element);
43583      composeElementClose(element);
43584      xml.exit(FHIR_NS, name);
43585    }
43586  }
43587
43588  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
43589      composeDomainResourceElements(element);
43590      if (element.hasIdentifier()) { 
43591        for (Identifier e : element.getIdentifier()) 
43592          composeIdentifier("identifier", e);
43593      }
43594      if (element.hasBasedOn()) {
43595        composeReference("basedOn", element.getBasedOn());
43596      }
43597      if (element.hasParent()) {
43598        composeReference("parent", element.getParent());
43599      }
43600      if (element.hasStatusElement())
43601        composeEnumeration("status", element.getStatusElement(), new RiskAssessment.RiskAssessmentStatusEnumFactory());
43602      if (element.hasMethod()) {
43603        composeCodeableConcept("method", element.getMethod());
43604      }
43605      if (element.hasCode()) {
43606        composeCodeableConcept("code", element.getCode());
43607      }
43608      if (element.hasSubject()) {
43609        composeReference("subject", element.getSubject());
43610      }
43611      if (element.hasContext()) {
43612        composeReference("context", element.getContext());
43613      }
43614      if (element.hasOccurrence()) {
43615        composeType("occurrence", element.getOccurrence());
43616      }      if (element.hasCondition()) {
43617        composeReference("condition", element.getCondition());
43618      }
43619      if (element.hasPerformer()) {
43620        composeReference("performer", element.getPerformer());
43621      }
43622      if (element.hasReasonCode()) { 
43623        for (CodeableConcept e : element.getReasonCode()) 
43624          composeCodeableConcept("reasonCode", e);
43625      }
43626      if (element.hasReasonReference()) { 
43627        for (Reference e : element.getReasonReference()) 
43628          composeReference("reasonReference", e);
43629      }
43630      if (element.hasBasis()) { 
43631        for (Reference e : element.getBasis()) 
43632          composeReference("basis", e);
43633      }
43634      if (element.hasPrediction()) { 
43635        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
43636          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
43637      }
43638      if (element.hasMitigationElement()) {
43639        composeString("mitigation", element.getMitigationElement());
43640      }
43641      if (element.hasNote()) { 
43642        for (Annotation e : element.getNote()) 
43643          composeAnnotation("note", e);
43644      }
43645  }
43646
43647  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
43648    if (element != null) {
43649      composeElementAttributes(element);
43650      xml.enter(FHIR_NS, name);
43651      composeRiskAssessmentRiskAssessmentPredictionComponentElements(element);
43652      composeElementClose(element);
43653      xml.exit(FHIR_NS, name);
43654    }
43655  }
43656
43657  protected void composeRiskAssessmentRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
43658      composeBackboneElementElements(element);
43659      if (element.hasOutcome()) {
43660        composeCodeableConcept("outcome", element.getOutcome());
43661      }
43662      if (element.hasProbability()) {
43663        composeType("probability", element.getProbability());
43664      }      if (element.hasQualitativeRisk()) {
43665        composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
43666      }
43667      if (element.hasRelativeRiskElement()) {
43668        composeDecimal("relativeRisk", element.getRelativeRiskElement());
43669      }
43670      if (element.hasWhen()) {
43671        composeType("when", element.getWhen());
43672      }      if (element.hasRationaleElement()) {
43673        composeString("rationale", element.getRationaleElement());
43674      }
43675  }
43676
43677  protected void composeSchedule(String name, Schedule element) throws IOException {
43678    if (element != null) {
43679      composeDomainResourceAttributes(element);
43680      xml.enter(FHIR_NS, name);
43681      composeScheduleElements(element);
43682      composeElementClose(element);
43683      xml.exit(FHIR_NS, name);
43684    }
43685  }
43686
43687  protected void composeScheduleElements(Schedule element) throws IOException {
43688      composeDomainResourceElements(element);
43689      if (element.hasIdentifier()) { 
43690        for (Identifier e : element.getIdentifier()) 
43691          composeIdentifier("identifier", e);
43692      }
43693      if (element.hasActiveElement()) {
43694        composeBoolean("active", element.getActiveElement());
43695      }
43696      if (element.hasServiceCategory()) { 
43697        for (CodeableConcept e : element.getServiceCategory()) 
43698          composeCodeableConcept("serviceCategory", e);
43699      }
43700      if (element.hasServiceType()) { 
43701        for (CodeableConcept e : element.getServiceType()) 
43702          composeCodeableConcept("serviceType", e);
43703      }
43704      if (element.hasSpecialty()) { 
43705        for (CodeableConcept e : element.getSpecialty()) 
43706          composeCodeableConcept("specialty", e);
43707      }
43708      if (element.hasActor()) { 
43709        for (Reference e : element.getActor()) 
43710          composeReference("actor", e);
43711      }
43712      if (element.hasPlanningHorizon()) {
43713        composePeriod("planningHorizon", element.getPlanningHorizon());
43714      }
43715      if (element.hasCommentElement()) {
43716        composeString("comment", element.getCommentElement());
43717      }
43718  }
43719
43720  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
43721    if (element != null) {
43722      composeDomainResourceAttributes(element);
43723      xml.enter(FHIR_NS, name);
43724      composeSearchParameterElements(element);
43725      composeElementClose(element);
43726      xml.exit(FHIR_NS, name);
43727    }
43728  }
43729
43730  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
43731      composeDomainResourceElements(element);
43732      if (element.hasUrlElement()) {
43733        composeUri("url", element.getUrlElement());
43734      }
43735      if (element.hasVersionElement()) {
43736        composeString("version", element.getVersionElement());
43737      }
43738      if (element.hasNameElement()) {
43739        composeString("name", element.getNameElement());
43740      }
43741      if (element.hasDerivedFromElement()) {
43742        composeCanonical("derivedFrom", element.getDerivedFromElement());
43743      }
43744      if (element.hasStatusElement())
43745        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
43746      if (element.hasExperimentalElement()) {
43747        composeBoolean("experimental", element.getExperimentalElement());
43748      }
43749      if (element.hasDateElement()) {
43750        composeDateTime("date", element.getDateElement());
43751      }
43752      if (element.hasPublisherElement()) {
43753        composeString("publisher", element.getPublisherElement());
43754      }
43755      if (element.hasContact()) { 
43756        for (ContactDetail e : element.getContact()) 
43757          composeContactDetail("contact", e);
43758      }
43759      if (element.hasDescriptionElement()) {
43760        composeMarkdown("description", element.getDescriptionElement());
43761      }
43762      if (element.hasUseContext()) { 
43763        for (UsageContext e : element.getUseContext()) 
43764          composeUsageContext("useContext", e);
43765      }
43766      if (element.hasJurisdiction()) { 
43767        for (CodeableConcept e : element.getJurisdiction()) 
43768          composeCodeableConcept("jurisdiction", e);
43769      }
43770      if (element.hasPurposeElement()) {
43771        composeMarkdown("purpose", element.getPurposeElement());
43772      }
43773      if (element.hasCodeElement()) {
43774        composeCode("code", element.getCodeElement());
43775      }
43776      if (element.hasBase()) { 
43777        for (CodeType e : element.getBase()) 
43778          composeCode("base", e);
43779      }
43780      if (element.hasTypeElement())
43781        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
43782      if (element.hasExpressionElement()) {
43783        composeString("expression", element.getExpressionElement());
43784      }
43785      if (element.hasXpathElement()) {
43786        composeString("xpath", element.getXpathElement());
43787      }
43788      if (element.hasXpathUsageElement())
43789        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
43790      if (element.hasTarget()) { 
43791        for (CodeType e : element.getTarget()) 
43792          composeCode("target", e);
43793      }
43794      if (element.hasMultipleOrElement()) {
43795        composeBoolean("multipleOr", element.getMultipleOrElement());
43796      }
43797      if (element.hasMultipleAndElement()) {
43798        composeBoolean("multipleAnd", element.getMultipleAndElement());
43799      }
43800        if (element.hasComparator()) 
43801          for (Enumeration<SearchParameter.SearchComparator> e : element.getComparator()) 
43802            composeEnumeration("comparator", e, new SearchParameter.SearchComparatorEnumFactory());
43803        if (element.hasModifier()) 
43804          for (Enumeration<SearchParameter.SearchModifierCode> e : element.getModifier()) 
43805            composeEnumeration("modifier", e, new SearchParameter.SearchModifierCodeEnumFactory());
43806      if (element.hasChain()) { 
43807        for (StringType e : element.getChain()) 
43808          composeString("chain", e);
43809      }
43810      if (element.hasComponent()) { 
43811        for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
43812          composeSearchParameterSearchParameterComponentComponent("component", e);
43813      }
43814  }
43815
43816  protected void composeSearchParameterSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
43817    if (element != null) {
43818      composeElementAttributes(element);
43819      xml.enter(FHIR_NS, name);
43820      composeSearchParameterSearchParameterComponentComponentElements(element);
43821      composeElementClose(element);
43822      xml.exit(FHIR_NS, name);
43823    }
43824  }
43825
43826  protected void composeSearchParameterSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
43827      composeBackboneElementElements(element);
43828      if (element.hasDefinitionElement()) {
43829        composeCanonical("definition", element.getDefinitionElement());
43830      }
43831      if (element.hasExpressionElement()) {
43832        composeString("expression", element.getExpressionElement());
43833      }
43834  }
43835
43836  protected void composeSequence(String name, Sequence element) throws IOException {
43837    if (element != null) {
43838      composeDomainResourceAttributes(element);
43839      xml.enter(FHIR_NS, name);
43840      composeSequenceElements(element);
43841      composeElementClose(element);
43842      xml.exit(FHIR_NS, name);
43843    }
43844  }
43845
43846  protected void composeSequenceElements(Sequence element) throws IOException {
43847      composeDomainResourceElements(element);
43848      if (element.hasIdentifier()) { 
43849        for (Identifier e : element.getIdentifier()) 
43850          composeIdentifier("identifier", e);
43851      }
43852      if (element.hasTypeElement())
43853        composeEnumeration("type", element.getTypeElement(), new Sequence.SequenceTypeEnumFactory());
43854      if (element.hasCoordinateSystemElement()) {
43855        composeInteger("coordinateSystem", element.getCoordinateSystemElement());
43856      }
43857      if (element.hasPatient()) {
43858        composeReference("patient", element.getPatient());
43859      }
43860      if (element.hasSpecimen()) {
43861        composeReference("specimen", element.getSpecimen());
43862      }
43863      if (element.hasDevice()) {
43864        composeReference("device", element.getDevice());
43865      }
43866      if (element.hasPerformer()) {
43867        composeReference("performer", element.getPerformer());
43868      }
43869      if (element.hasQuantity()) {
43870        composeQuantity("quantity", element.getQuantity());
43871      }
43872      if (element.hasReferenceSeq()) {
43873        composeSequenceSequenceReferenceSeqComponent("referenceSeq", element.getReferenceSeq());
43874      }
43875      if (element.hasVariant()) { 
43876        for (Sequence.SequenceVariantComponent e : element.getVariant()) 
43877          composeSequenceSequenceVariantComponent("variant", e);
43878      }
43879      if (element.hasObservedSeqElement()) {
43880        composeString("observedSeq", element.getObservedSeqElement());
43881      }
43882      if (element.hasQuality()) { 
43883        for (Sequence.SequenceQualityComponent e : element.getQuality()) 
43884          composeSequenceSequenceQualityComponent("quality", e);
43885      }
43886      if (element.hasReadCoverageElement()) {
43887        composeInteger("readCoverage", element.getReadCoverageElement());
43888      }
43889      if (element.hasRepository()) { 
43890        for (Sequence.SequenceRepositoryComponent e : element.getRepository()) 
43891          composeSequenceSequenceRepositoryComponent("repository", e);
43892      }
43893      if (element.hasPointer()) { 
43894        for (Reference e : element.getPointer()) 
43895          composeReference("pointer", e);
43896      }
43897      if (element.hasStructureVariant()) { 
43898        for (Sequence.SequenceStructureVariantComponent e : element.getStructureVariant()) 
43899          composeSequenceSequenceStructureVariantComponent("structureVariant", e);
43900      }
43901  }
43902
43903  protected void composeSequenceSequenceReferenceSeqComponent(String name, Sequence.SequenceReferenceSeqComponent element) throws IOException {
43904    if (element != null) {
43905      composeElementAttributes(element);
43906      xml.enter(FHIR_NS, name);
43907      composeSequenceSequenceReferenceSeqComponentElements(element);
43908      composeElementClose(element);
43909      xml.exit(FHIR_NS, name);
43910    }
43911  }
43912
43913  protected void composeSequenceSequenceReferenceSeqComponentElements(Sequence.SequenceReferenceSeqComponent element) throws IOException {
43914      composeBackboneElementElements(element);
43915      if (element.hasChromosome()) {
43916        composeCodeableConcept("chromosome", element.getChromosome());
43917      }
43918      if (element.hasGenomeBuildElement()) {
43919        composeString("genomeBuild", element.getGenomeBuildElement());
43920      }
43921      if (element.hasOrientationElement())
43922        composeEnumeration("orientation", element.getOrientationElement(), new Sequence.OrientationTypeEnumFactory());
43923      if (element.hasReferenceSeqId()) {
43924        composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
43925      }
43926      if (element.hasReferenceSeqPointer()) {
43927        composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
43928      }
43929      if (element.hasReferenceSeqStringElement()) {
43930        composeString("referenceSeqString", element.getReferenceSeqStringElement());
43931      }
43932      if (element.hasStrandElement())
43933        composeEnumeration("strand", element.getStrandElement(), new Sequence.StrandTypeEnumFactory());
43934      if (element.hasWindowStartElement()) {
43935        composeInteger("windowStart", element.getWindowStartElement());
43936      }
43937      if (element.hasWindowEndElement()) {
43938        composeInteger("windowEnd", element.getWindowEndElement());
43939      }
43940  }
43941
43942  protected void composeSequenceSequenceVariantComponent(String name, Sequence.SequenceVariantComponent element) throws IOException {
43943    if (element != null) {
43944      composeElementAttributes(element);
43945      xml.enter(FHIR_NS, name);
43946      composeSequenceSequenceVariantComponentElements(element);
43947      composeElementClose(element);
43948      xml.exit(FHIR_NS, name);
43949    }
43950  }
43951
43952  protected void composeSequenceSequenceVariantComponentElements(Sequence.SequenceVariantComponent element) throws IOException {
43953      composeBackboneElementElements(element);
43954      if (element.hasStartElement()) {
43955        composeInteger("start", element.getStartElement());
43956      }
43957      if (element.hasEndElement()) {
43958        composeInteger("end", element.getEndElement());
43959      }
43960      if (element.hasObservedAlleleElement()) {
43961        composeString("observedAllele", element.getObservedAlleleElement());
43962      }
43963      if (element.hasReferenceAlleleElement()) {
43964        composeString("referenceAllele", element.getReferenceAlleleElement());
43965      }
43966      if (element.hasCigarElement()) {
43967        composeString("cigar", element.getCigarElement());
43968      }
43969      if (element.hasVariantPointer()) {
43970        composeReference("variantPointer", element.getVariantPointer());
43971      }
43972  }
43973
43974  protected void composeSequenceSequenceQualityComponent(String name, Sequence.SequenceQualityComponent element) throws IOException {
43975    if (element != null) {
43976      composeElementAttributes(element);
43977      xml.enter(FHIR_NS, name);
43978      composeSequenceSequenceQualityComponentElements(element);
43979      composeElementClose(element);
43980      xml.exit(FHIR_NS, name);
43981    }
43982  }
43983
43984  protected void composeSequenceSequenceQualityComponentElements(Sequence.SequenceQualityComponent element) throws IOException {
43985      composeBackboneElementElements(element);
43986      if (element.hasTypeElement())
43987        composeEnumeration("type", element.getTypeElement(), new Sequence.QualityTypeEnumFactory());
43988      if (element.hasStandardSequence()) {
43989        composeCodeableConcept("standardSequence", element.getStandardSequence());
43990      }
43991      if (element.hasStartElement()) {
43992        composeInteger("start", element.getStartElement());
43993      }
43994      if (element.hasEndElement()) {
43995        composeInteger("end", element.getEndElement());
43996      }
43997      if (element.hasScore()) {
43998        composeQuantity("score", element.getScore());
43999      }
44000      if (element.hasMethod()) {
44001        composeCodeableConcept("method", element.getMethod());
44002      }
44003      if (element.hasTruthTPElement()) {
44004        composeDecimal("truthTP", element.getTruthTPElement());
44005      }
44006      if (element.hasQueryTPElement()) {
44007        composeDecimal("queryTP", element.getQueryTPElement());
44008      }
44009      if (element.hasTruthFNElement()) {
44010        composeDecimal("truthFN", element.getTruthFNElement());
44011      }
44012      if (element.hasQueryFPElement()) {
44013        composeDecimal("queryFP", element.getQueryFPElement());
44014      }
44015      if (element.hasGtFPElement()) {
44016        composeDecimal("gtFP", element.getGtFPElement());
44017      }
44018      if (element.hasPrecisionElement()) {
44019        composeDecimal("precision", element.getPrecisionElement());
44020      }
44021      if (element.hasRecallElement()) {
44022        composeDecimal("recall", element.getRecallElement());
44023      }
44024      if (element.hasFScoreElement()) {
44025        composeDecimal("fScore", element.getFScoreElement());
44026      }
44027      if (element.hasRoc()) {
44028        composeSequenceSequenceQualityRocComponent("roc", element.getRoc());
44029      }
44030  }
44031
44032  protected void composeSequenceSequenceQualityRocComponent(String name, Sequence.SequenceQualityRocComponent element) throws IOException {
44033    if (element != null) {
44034      composeElementAttributes(element);
44035      xml.enter(FHIR_NS, name);
44036      composeSequenceSequenceQualityRocComponentElements(element);
44037      composeElementClose(element);
44038      xml.exit(FHIR_NS, name);
44039    }
44040  }
44041
44042  protected void composeSequenceSequenceQualityRocComponentElements(Sequence.SequenceQualityRocComponent element) throws IOException {
44043      composeBackboneElementElements(element);
44044      if (element.hasScore()) { 
44045        for (IntegerType e : element.getScore()) 
44046          composeInteger("score", e);
44047      }
44048      if (element.hasNumTP()) { 
44049        for (IntegerType e : element.getNumTP()) 
44050          composeInteger("numTP", e);
44051      }
44052      if (element.hasNumFP()) { 
44053        for (IntegerType e : element.getNumFP()) 
44054          composeInteger("numFP", e);
44055      }
44056      if (element.hasNumFN()) { 
44057        for (IntegerType e : element.getNumFN()) 
44058          composeInteger("numFN", e);
44059      }
44060      if (element.hasPrecision()) { 
44061        for (DecimalType e : element.getPrecision()) 
44062          composeDecimal("precision", e);
44063      }
44064      if (element.hasSensitivity()) { 
44065        for (DecimalType e : element.getSensitivity()) 
44066          composeDecimal("sensitivity", e);
44067      }
44068      if (element.hasFMeasure()) { 
44069        for (DecimalType e : element.getFMeasure()) 
44070          composeDecimal("fMeasure", e);
44071      }
44072  }
44073
44074  protected void composeSequenceSequenceRepositoryComponent(String name, Sequence.SequenceRepositoryComponent element) throws IOException {
44075    if (element != null) {
44076      composeElementAttributes(element);
44077      xml.enter(FHIR_NS, name);
44078      composeSequenceSequenceRepositoryComponentElements(element);
44079      composeElementClose(element);
44080      xml.exit(FHIR_NS, name);
44081    }
44082  }
44083
44084  protected void composeSequenceSequenceRepositoryComponentElements(Sequence.SequenceRepositoryComponent element) throws IOException {
44085      composeBackboneElementElements(element);
44086      if (element.hasTypeElement())
44087        composeEnumeration("type", element.getTypeElement(), new Sequence.RepositoryTypeEnumFactory());
44088      if (element.hasUrlElement()) {
44089        composeUri("url", element.getUrlElement());
44090      }
44091      if (element.hasNameElement()) {
44092        composeString("name", element.getNameElement());
44093      }
44094      if (element.hasDatasetIdElement()) {
44095        composeString("datasetId", element.getDatasetIdElement());
44096      }
44097      if (element.hasVariantsetIdElement()) {
44098        composeString("variantsetId", element.getVariantsetIdElement());
44099      }
44100      if (element.hasReadsetIdElement()) {
44101        composeString("readsetId", element.getReadsetIdElement());
44102      }
44103  }
44104
44105  protected void composeSequenceSequenceStructureVariantComponent(String name, Sequence.SequenceStructureVariantComponent element) throws IOException {
44106    if (element != null) {
44107      composeElementAttributes(element);
44108      xml.enter(FHIR_NS, name);
44109      composeSequenceSequenceStructureVariantComponentElements(element);
44110      composeElementClose(element);
44111      xml.exit(FHIR_NS, name);
44112    }
44113  }
44114
44115  protected void composeSequenceSequenceStructureVariantComponentElements(Sequence.SequenceStructureVariantComponent element) throws IOException {
44116      composeBackboneElementElements(element);
44117      if (element.hasPrecisionElement()) {
44118        composeString("precision", element.getPrecisionElement());
44119      }
44120      if (element.hasReportedaCGHRatioElement()) {
44121        composeDecimal("reportedaCGHRatio", element.getReportedaCGHRatioElement());
44122      }
44123      if (element.hasLengthElement()) {
44124        composeInteger("length", element.getLengthElement());
44125      }
44126      if (element.hasOuter()) {
44127        composeSequenceSequenceStructureVariantOuterComponent("outer", element.getOuter());
44128      }
44129      if (element.hasInner()) {
44130        composeSequenceSequenceStructureVariantInnerComponent("inner", element.getInner());
44131      }
44132  }
44133
44134  protected void composeSequenceSequenceStructureVariantOuterComponent(String name, Sequence.SequenceStructureVariantOuterComponent element) throws IOException {
44135    if (element != null) {
44136      composeElementAttributes(element);
44137      xml.enter(FHIR_NS, name);
44138      composeSequenceSequenceStructureVariantOuterComponentElements(element);
44139      composeElementClose(element);
44140      xml.exit(FHIR_NS, name);
44141    }
44142  }
44143
44144  protected void composeSequenceSequenceStructureVariantOuterComponentElements(Sequence.SequenceStructureVariantOuterComponent element) throws IOException {
44145      composeBackboneElementElements(element);
44146      if (element.hasStartElement()) {
44147        composeInteger("start", element.getStartElement());
44148      }
44149      if (element.hasEndElement()) {
44150        composeInteger("end", element.getEndElement());
44151      }
44152  }
44153
44154  protected void composeSequenceSequenceStructureVariantInnerComponent(String name, Sequence.SequenceStructureVariantInnerComponent element) throws IOException {
44155    if (element != null) {
44156      composeElementAttributes(element);
44157      xml.enter(FHIR_NS, name);
44158      composeSequenceSequenceStructureVariantInnerComponentElements(element);
44159      composeElementClose(element);
44160      xml.exit(FHIR_NS, name);
44161    }
44162  }
44163
44164  protected void composeSequenceSequenceStructureVariantInnerComponentElements(Sequence.SequenceStructureVariantInnerComponent element) throws IOException {
44165      composeBackboneElementElements(element);
44166      if (element.hasStartElement()) {
44167        composeInteger("start", element.getStartElement());
44168      }
44169      if (element.hasEndElement()) {
44170        composeInteger("end", element.getEndElement());
44171      }
44172  }
44173
44174  protected void composeServiceRequest(String name, ServiceRequest element) throws IOException {
44175    if (element != null) {
44176      composeDomainResourceAttributes(element);
44177      xml.enter(FHIR_NS, name);
44178      composeServiceRequestElements(element);
44179      composeElementClose(element);
44180      xml.exit(FHIR_NS, name);
44181    }
44182  }
44183
44184  protected void composeServiceRequestElements(ServiceRequest element) throws IOException {
44185      composeDomainResourceElements(element);
44186      if (element.hasIdentifier()) { 
44187        for (Identifier e : element.getIdentifier()) 
44188          composeIdentifier("identifier", e);
44189      }
44190      if (element.hasInstantiatesCanonical()) { 
44191        for (CanonicalType e : element.getInstantiatesCanonical()) 
44192          composeCanonical("instantiatesCanonical", e);
44193      }
44194      if (element.hasInstantiatesUri()) { 
44195        for (UriType e : element.getInstantiatesUri()) 
44196          composeUri("instantiatesUri", e);
44197      }
44198      if (element.hasBasedOn()) { 
44199        for (Reference e : element.getBasedOn()) 
44200          composeReference("basedOn", e);
44201      }
44202      if (element.hasReplaces()) { 
44203        for (Reference e : element.getReplaces()) 
44204          composeReference("replaces", e);
44205      }
44206      if (element.hasRequisition()) {
44207        composeIdentifier("requisition", element.getRequisition());
44208      }
44209      if (element.hasStatusElement())
44210        composeEnumeration("status", element.getStatusElement(), new ServiceRequest.ServiceRequestStatusEnumFactory());
44211      if (element.hasIntentElement())
44212        composeEnumeration("intent", element.getIntentElement(), new ServiceRequest.ServiceRequestIntentEnumFactory());
44213      if (element.hasCategory()) { 
44214        for (CodeableConcept e : element.getCategory()) 
44215          composeCodeableConcept("category", e);
44216      }
44217      if (element.hasPriorityElement())
44218        composeEnumeration("priority", element.getPriorityElement(), new ServiceRequest.ServiceRequestPriorityEnumFactory());
44219      if (element.hasDoNotPerformElement()) {
44220        composeBoolean("doNotPerform", element.getDoNotPerformElement());
44221      }
44222      if (element.hasCode()) {
44223        composeCodeableConcept("code", element.getCode());
44224      }
44225      if (element.hasOrderDetail()) { 
44226        for (CodeableConcept e : element.getOrderDetail()) 
44227          composeCodeableConcept("orderDetail", e);
44228      }
44229      if (element.hasQuantity()) {
44230        composeType("quantity", element.getQuantity());
44231      }      if (element.hasSubject()) {
44232        composeReference("subject", element.getSubject());
44233      }
44234      if (element.hasContext()) {
44235        composeReference("context", element.getContext());
44236      }
44237      if (element.hasOccurrence()) {
44238        composeType("occurrence", element.getOccurrence());
44239      }      if (element.hasAsNeeded()) {
44240        composeType("asNeeded", element.getAsNeeded());
44241      }      if (element.hasAuthoredOnElement()) {
44242        composeDateTime("authoredOn", element.getAuthoredOnElement());
44243      }
44244      if (element.hasRequester()) {
44245        composeReference("requester", element.getRequester());
44246      }
44247      if (element.hasPerformerType()) {
44248        composeCodeableConcept("performerType", element.getPerformerType());
44249      }
44250      if (element.hasPerformer()) { 
44251        for (Reference e : element.getPerformer()) 
44252          composeReference("performer", e);
44253      }
44254      if (element.hasLocationCode()) { 
44255        for (CodeableConcept e : element.getLocationCode()) 
44256          composeCodeableConcept("locationCode", e);
44257      }
44258      if (element.hasLocationReference()) { 
44259        for (Reference e : element.getLocationReference()) 
44260          composeReference("locationReference", e);
44261      }
44262      if (element.hasReasonCode()) { 
44263        for (CodeableConcept e : element.getReasonCode()) 
44264          composeCodeableConcept("reasonCode", e);
44265      }
44266      if (element.hasReasonReference()) { 
44267        for (Reference e : element.getReasonReference()) 
44268          composeReference("reasonReference", e);
44269      }
44270      if (element.hasInsurance()) { 
44271        for (Reference e : element.getInsurance()) 
44272          composeReference("insurance", e);
44273      }
44274      if (element.hasSupportingInfo()) { 
44275        for (Reference e : element.getSupportingInfo()) 
44276          composeReference("supportingInfo", e);
44277      }
44278      if (element.hasSpecimen()) { 
44279        for (Reference e : element.getSpecimen()) 
44280          composeReference("specimen", e);
44281      }
44282      if (element.hasBodySite()) { 
44283        for (CodeableConcept e : element.getBodySite()) 
44284          composeCodeableConcept("bodySite", e);
44285      }
44286      if (element.hasNote()) { 
44287        for (Annotation e : element.getNote()) 
44288          composeAnnotation("note", e);
44289      }
44290      if (element.hasPatientInstructionElement()) {
44291        composeString("patientInstruction", element.getPatientInstructionElement());
44292      }
44293      if (element.hasRelevantHistory()) { 
44294        for (Reference e : element.getRelevantHistory()) 
44295          composeReference("relevantHistory", e);
44296      }
44297  }
44298
44299  protected void composeSlot(String name, Slot element) throws IOException {
44300    if (element != null) {
44301      composeDomainResourceAttributes(element);
44302      xml.enter(FHIR_NS, name);
44303      composeSlotElements(element);
44304      composeElementClose(element);
44305      xml.exit(FHIR_NS, name);
44306    }
44307  }
44308
44309  protected void composeSlotElements(Slot element) throws IOException {
44310      composeDomainResourceElements(element);
44311      if (element.hasIdentifier()) { 
44312        for (Identifier e : element.getIdentifier()) 
44313          composeIdentifier("identifier", e);
44314      }
44315      if (element.hasServiceCategory()) { 
44316        for (CodeableConcept e : element.getServiceCategory()) 
44317          composeCodeableConcept("serviceCategory", e);
44318      }
44319      if (element.hasServiceType()) { 
44320        for (CodeableConcept e : element.getServiceType()) 
44321          composeCodeableConcept("serviceType", e);
44322      }
44323      if (element.hasSpecialty()) { 
44324        for (CodeableConcept e : element.getSpecialty()) 
44325          composeCodeableConcept("specialty", e);
44326      }
44327      if (element.hasAppointmentType()) {
44328        composeCodeableConcept("appointmentType", element.getAppointmentType());
44329      }
44330      if (element.hasSchedule()) {
44331        composeReference("schedule", element.getSchedule());
44332      }
44333      if (element.hasStatusElement())
44334        composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
44335      if (element.hasStartElement()) {
44336        composeInstant("start", element.getStartElement());
44337      }
44338      if (element.hasEndElement()) {
44339        composeInstant("end", element.getEndElement());
44340      }
44341      if (element.hasOverbookedElement()) {
44342        composeBoolean("overbooked", element.getOverbookedElement());
44343      }
44344      if (element.hasCommentElement()) {
44345        composeString("comment", element.getCommentElement());
44346      }
44347  }
44348
44349  protected void composeSpecimen(String name, Specimen element) throws IOException {
44350    if (element != null) {
44351      composeDomainResourceAttributes(element);
44352      xml.enter(FHIR_NS, name);
44353      composeSpecimenElements(element);
44354      composeElementClose(element);
44355      xml.exit(FHIR_NS, name);
44356    }
44357  }
44358
44359  protected void composeSpecimenElements(Specimen element) throws IOException {
44360      composeDomainResourceElements(element);
44361      if (element.hasIdentifier()) { 
44362        for (Identifier e : element.getIdentifier()) 
44363          composeIdentifier("identifier", e);
44364      }
44365      if (element.hasAccessionIdentifier()) {
44366        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
44367      }
44368      if (element.hasStatusElement())
44369        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
44370      if (element.hasType()) {
44371        composeCodeableConcept("type", element.getType());
44372      }
44373      if (element.hasSubject()) {
44374        composeReference("subject", element.getSubject());
44375      }
44376      if (element.hasReceivedTimeElement()) {
44377        composeDateTime("receivedTime", element.getReceivedTimeElement());
44378      }
44379      if (element.hasParent()) { 
44380        for (Reference e : element.getParent()) 
44381          composeReference("parent", e);
44382      }
44383      if (element.hasRequest()) { 
44384        for (Reference e : element.getRequest()) 
44385          composeReference("request", e);
44386      }
44387      if (element.hasCollection()) {
44388        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
44389      }
44390      if (element.hasProcessing()) { 
44391        for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
44392          composeSpecimenSpecimenProcessingComponent("processing", e);
44393      }
44394      if (element.hasContainer()) { 
44395        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
44396          composeSpecimenSpecimenContainerComponent("container", e);
44397      }
44398      if (element.hasCondition()) { 
44399        for (CodeableConcept e : element.getCondition()) 
44400          composeCodeableConcept("condition", e);
44401      }
44402      if (element.hasNote()) { 
44403        for (Annotation e : element.getNote()) 
44404          composeAnnotation("note", e);
44405      }
44406  }
44407
44408  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
44409    if (element != null) {
44410      composeElementAttributes(element);
44411      xml.enter(FHIR_NS, name);
44412      composeSpecimenSpecimenCollectionComponentElements(element);
44413      composeElementClose(element);
44414      xml.exit(FHIR_NS, name);
44415    }
44416  }
44417
44418  protected void composeSpecimenSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
44419      composeBackboneElementElements(element);
44420      if (element.hasCollector()) {
44421        composeReference("collector", element.getCollector());
44422      }
44423      if (element.hasCollected()) {
44424        composeType("collected", element.getCollected());
44425      }      if (element.hasDuration()) {
44426        composeDuration("duration", element.getDuration());
44427      }
44428      if (element.hasQuantity()) {
44429        composeQuantity("quantity", element.getQuantity());
44430      }
44431      if (element.hasMethod()) {
44432        composeCodeableConcept("method", element.getMethod());
44433      }
44434      if (element.hasBodySite()) {
44435        composeCodeableConcept("bodySite", element.getBodySite());
44436      }
44437      if (element.hasFastingStatus()) {
44438        composeType("fastingStatus", element.getFastingStatus());
44439      }  }
44440
44441  protected void composeSpecimenSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
44442    if (element != null) {
44443      composeElementAttributes(element);
44444      xml.enter(FHIR_NS, name);
44445      composeSpecimenSpecimenProcessingComponentElements(element);
44446      composeElementClose(element);
44447      xml.exit(FHIR_NS, name);
44448    }
44449  }
44450
44451  protected void composeSpecimenSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
44452      composeBackboneElementElements(element);
44453      if (element.hasDescriptionElement()) {
44454        composeString("description", element.getDescriptionElement());
44455      }
44456      if (element.hasProcedure()) {
44457        composeCodeableConcept("procedure", element.getProcedure());
44458      }
44459      if (element.hasAdditive()) { 
44460        for (Reference e : element.getAdditive()) 
44461          composeReference("additive", e);
44462      }
44463      if (element.hasTime()) {
44464        composeType("time", element.getTime());
44465      }  }
44466
44467  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
44468    if (element != null) {
44469      composeElementAttributes(element);
44470      xml.enter(FHIR_NS, name);
44471      composeSpecimenSpecimenContainerComponentElements(element);
44472      composeElementClose(element);
44473      xml.exit(FHIR_NS, name);
44474    }
44475  }
44476
44477  protected void composeSpecimenSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
44478      composeBackboneElementElements(element);
44479      if (element.hasIdentifier()) { 
44480        for (Identifier e : element.getIdentifier()) 
44481          composeIdentifier("identifier", e);
44482      }
44483      if (element.hasDescriptionElement()) {
44484        composeString("description", element.getDescriptionElement());
44485      }
44486      if (element.hasType()) {
44487        composeCodeableConcept("type", element.getType());
44488      }
44489      if (element.hasCapacity()) {
44490        composeQuantity("capacity", element.getCapacity());
44491      }
44492      if (element.hasSpecimenQuantity()) {
44493        composeQuantity("specimenQuantity", element.getSpecimenQuantity());
44494      }
44495      if (element.hasAdditive()) {
44496        composeType("additive", element.getAdditive());
44497      }  }
44498
44499  protected void composeSpecimenDefinition(String name, SpecimenDefinition element) throws IOException {
44500    if (element != null) {
44501      composeDomainResourceAttributes(element);
44502      xml.enter(FHIR_NS, name);
44503      composeSpecimenDefinitionElements(element);
44504      composeElementClose(element);
44505      xml.exit(FHIR_NS, name);
44506    }
44507  }
44508
44509  protected void composeSpecimenDefinitionElements(SpecimenDefinition element) throws IOException {
44510      composeDomainResourceElements(element);
44511      if (element.hasIdentifier()) {
44512        composeIdentifier("identifier", element.getIdentifier());
44513      }
44514      if (element.hasTypeCollected()) {
44515        composeCodeableConcept("typeCollected", element.getTypeCollected());
44516      }
44517      if (element.hasPatientPreparationElement()) {
44518        composeString("patientPreparation", element.getPatientPreparationElement());
44519      }
44520      if (element.hasTimeAspectElement()) {
44521        composeString("timeAspect", element.getTimeAspectElement());
44522      }
44523      if (element.hasCollection()) { 
44524        for (CodeableConcept e : element.getCollection()) 
44525          composeCodeableConcept("collection", e);
44526      }
44527      if (element.hasTypeTested()) { 
44528        for (SpecimenDefinition.SpecimenDefinitionTypeTestedComponent e : element.getTypeTested()) 
44529          composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent("typeTested", e);
44530      }
44531  }
44532
44533  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
44534    if (element != null) {
44535      composeElementAttributes(element);
44536      xml.enter(FHIR_NS, name);
44537      composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponentElements(element);
44538      composeElementClose(element);
44539      xml.exit(FHIR_NS, name);
44540    }
44541  }
44542
44543  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
44544      composeBackboneElementElements(element);
44545      if (element.hasIsDerivedElement()) {
44546        composeBoolean("isDerived", element.getIsDerivedElement());
44547      }
44548      if (element.hasType()) {
44549        composeCodeableConcept("type", element.getType());
44550      }
44551      if (element.hasPreferenceElement())
44552        composeEnumeration("preference", element.getPreferenceElement(), new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
44553      if (element.hasContainer()) {
44554        composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent("container", element.getContainer());
44555      }
44556      if (element.hasRequirementElement()) {
44557        composeString("requirement", element.getRequirementElement());
44558      }
44559      if (element.hasRetentionTime()) {
44560        composeDuration("retentionTime", element.getRetentionTime());
44561      }
44562      if (element.hasRejectionCriterion()) { 
44563        for (CodeableConcept e : element.getRejectionCriterion()) 
44564          composeCodeableConcept("rejectionCriterion", e);
44565      }
44566      if (element.hasHandling()) { 
44567        for (SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent e : element.getHandling()) 
44568          composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent("handling", e);
44569      }
44570  }
44571
44572  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
44573    if (element != null) {
44574      composeElementAttributes(element);
44575      xml.enter(FHIR_NS, name);
44576      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentElements(element);
44577      composeElementClose(element);
44578      xml.exit(FHIR_NS, name);
44579    }
44580  }
44581
44582  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
44583      composeBackboneElementElements(element);
44584      if (element.hasMaterial()) {
44585        composeCodeableConcept("material", element.getMaterial());
44586      }
44587      if (element.hasType()) {
44588        composeCodeableConcept("type", element.getType());
44589      }
44590      if (element.hasCap()) {
44591        composeCodeableConcept("cap", element.getCap());
44592      }
44593      if (element.hasDescriptionElement()) {
44594        composeString("description", element.getDescriptionElement());
44595      }
44596      if (element.hasCapacity()) {
44597        composeQuantity("capacity", element.getCapacity());
44598      }
44599      if (element.hasMinimumVolume()) {
44600        composeQuantity("minimumVolume", element.getMinimumVolume());
44601      }
44602      if (element.hasAdditive()) { 
44603        for (SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent e : element.getAdditive()) 
44604          composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent("additive", e);
44605      }
44606      if (element.hasPreparationElement()) {
44607        composeString("preparation", element.getPreparationElement());
44608      }
44609  }
44610
44611  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
44612    if (element != null) {
44613      composeElementAttributes(element);
44614      xml.enter(FHIR_NS, name);
44615      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(element);
44616      composeElementClose(element);
44617      xml.exit(FHIR_NS, name);
44618    }
44619  }
44620
44621  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
44622      composeBackboneElementElements(element);
44623      if (element.hasAdditive()) {
44624        composeType("additive", element.getAdditive());
44625      }  }
44626
44627  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
44628    if (element != null) {
44629      composeElementAttributes(element);
44630      xml.enter(FHIR_NS, name);
44631      composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentElements(element);
44632      composeElementClose(element);
44633      xml.exit(FHIR_NS, name);
44634    }
44635  }
44636
44637  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
44638      composeBackboneElementElements(element);
44639      if (element.hasTemperatureQualifier()) {
44640        composeCodeableConcept("temperatureQualifier", element.getTemperatureQualifier());
44641      }
44642      if (element.hasTemperatureRange()) {
44643        composeRange("temperatureRange", element.getTemperatureRange());
44644      }
44645      if (element.hasMaxDuration()) {
44646        composeDuration("maxDuration", element.getMaxDuration());
44647      }
44648      if (element.hasInstructionElement()) {
44649        composeString("instruction", element.getInstructionElement());
44650      }
44651  }
44652
44653  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
44654    if (element != null) {
44655      composeDomainResourceAttributes(element);
44656      xml.enter(FHIR_NS, name);
44657      composeStructureDefinitionElements(element);
44658      composeElementClose(element);
44659      xml.exit(FHIR_NS, name);
44660    }
44661  }
44662
44663  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
44664      composeDomainResourceElements(element);
44665      if (element.hasUrlElement()) {
44666        composeUri("url", element.getUrlElement());
44667      }
44668      if (element.hasIdentifier()) { 
44669        for (Identifier e : element.getIdentifier()) 
44670          composeIdentifier("identifier", e);
44671      }
44672      if (element.hasVersionElement()) {
44673        composeString("version", element.getVersionElement());
44674      }
44675      if (element.hasNameElement()) {
44676        composeString("name", element.getNameElement());
44677      }
44678      if (element.hasTitleElement()) {
44679        composeString("title", element.getTitleElement());
44680      }
44681      if (element.hasStatusElement())
44682        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44683      if (element.hasExperimentalElement()) {
44684        composeBoolean("experimental", element.getExperimentalElement());
44685      }
44686      if (element.hasDateElement()) {
44687        composeDateTime("date", element.getDateElement());
44688      }
44689      if (element.hasPublisherElement()) {
44690        composeString("publisher", element.getPublisherElement());
44691      }
44692      if (element.hasContact()) { 
44693        for (ContactDetail e : element.getContact()) 
44694          composeContactDetail("contact", e);
44695      }
44696      if (element.hasDescriptionElement()) {
44697        composeMarkdown("description", element.getDescriptionElement());
44698      }
44699      if (element.hasUseContext()) { 
44700        for (UsageContext e : element.getUseContext()) 
44701          composeUsageContext("useContext", e);
44702      }
44703      if (element.hasJurisdiction()) { 
44704        for (CodeableConcept e : element.getJurisdiction()) 
44705          composeCodeableConcept("jurisdiction", e);
44706      }
44707      if (element.hasPurposeElement()) {
44708        composeMarkdown("purpose", element.getPurposeElement());
44709      }
44710      if (element.hasCopyrightElement()) {
44711        composeMarkdown("copyright", element.getCopyrightElement());
44712      }
44713      if (element.hasKeyword()) { 
44714        for (Coding e : element.getKeyword()) 
44715          composeCoding("keyword", e);
44716      }
44717      if (element.hasFhirVersionElement()) {
44718        composeId("fhirVersion", element.getFhirVersionElement());
44719      }
44720      if (element.hasMapping()) { 
44721        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
44722          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
44723      }
44724      if (element.hasKindElement())
44725        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
44726      if (element.hasAbstractElement()) {
44727        composeBoolean("abstract", element.getAbstractElement());
44728      }
44729      if (element.hasContext()) { 
44730        for (StructureDefinition.StructureDefinitionContextComponent e : element.getContext()) 
44731          composeStructureDefinitionStructureDefinitionContextComponent("context", e);
44732      }
44733      if (element.hasContextInvariant()) { 
44734        for (StringType e : element.getContextInvariant()) 
44735          composeString("contextInvariant", e);
44736      }
44737      if (element.hasTypeElement()) {
44738        composeUri("type", element.getTypeElement());
44739      }
44740      if (element.hasBaseDefinitionElement()) {
44741        composeCanonical("baseDefinition", element.getBaseDefinitionElement());
44742      }
44743      if (element.hasDerivationElement())
44744        composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
44745      if (element.hasSnapshot()) {
44746        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
44747      }
44748      if (element.hasDifferential()) {
44749        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
44750      }
44751  }
44752
44753  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
44754    if (element != null) {
44755      composeElementAttributes(element);
44756      xml.enter(FHIR_NS, name);
44757      composeStructureDefinitionStructureDefinitionMappingComponentElements(element);
44758      composeElementClose(element);
44759      xml.exit(FHIR_NS, name);
44760    }
44761  }
44762
44763  protected void composeStructureDefinitionStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
44764      composeBackboneElementElements(element);
44765      if (element.hasIdentityElement()) {
44766        composeId("identity", element.getIdentityElement());
44767      }
44768      if (element.hasUriElement()) {
44769        composeUri("uri", element.getUriElement());
44770      }
44771      if (element.hasNameElement()) {
44772        composeString("name", element.getNameElement());
44773      }
44774      if (element.hasCommentElement()) {
44775        composeString("comment", element.getCommentElement());
44776      }
44777  }
44778
44779  protected void composeStructureDefinitionStructureDefinitionContextComponent(String name, StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
44780    if (element != null) {
44781      composeElementAttributes(element);
44782      xml.enter(FHIR_NS, name);
44783      composeStructureDefinitionStructureDefinitionContextComponentElements(element);
44784      composeElementClose(element);
44785      xml.exit(FHIR_NS, name);
44786    }
44787  }
44788
44789  protected void composeStructureDefinitionStructureDefinitionContextComponentElements(StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
44790      composeBackboneElementElements(element);
44791      if (element.hasTypeElement())
44792        composeEnumeration("type", element.getTypeElement(), new StructureDefinition.ExtensionContextTypeEnumFactory());
44793      if (element.hasExpressionElement()) {
44794        composeString("expression", element.getExpressionElement());
44795      }
44796  }
44797
44798  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
44799    if (element != null) {
44800      composeElementAttributes(element);
44801      xml.enter(FHIR_NS, name);
44802      composeStructureDefinitionStructureDefinitionSnapshotComponentElements(element);
44803      composeElementClose(element);
44804      xml.exit(FHIR_NS, name);
44805    }
44806  }
44807
44808  protected void composeStructureDefinitionStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
44809      composeBackboneElementElements(element);
44810      if (element.hasElement()) { 
44811        for (ElementDefinition e : element.getElement()) 
44812          composeElementDefinition("element", e);
44813      }
44814  }
44815
44816  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
44817    if (element != null) {
44818      composeElementAttributes(element);
44819      xml.enter(FHIR_NS, name);
44820      composeStructureDefinitionStructureDefinitionDifferentialComponentElements(element);
44821      composeElementClose(element);
44822      xml.exit(FHIR_NS, name);
44823    }
44824  }
44825
44826  protected void composeStructureDefinitionStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
44827      composeBackboneElementElements(element);
44828      if (element.hasElement()) { 
44829        for (ElementDefinition e : element.getElement()) 
44830          composeElementDefinition("element", e);
44831      }
44832  }
44833
44834  protected void composeStructureMap(String name, StructureMap element) throws IOException {
44835    if (element != null) {
44836      composeDomainResourceAttributes(element);
44837      xml.enter(FHIR_NS, name);
44838      composeStructureMapElements(element);
44839      composeElementClose(element);
44840      xml.exit(FHIR_NS, name);
44841    }
44842  }
44843
44844  protected void composeStructureMapElements(StructureMap element) throws IOException {
44845      composeDomainResourceElements(element);
44846      if (element.hasUrlElement()) {
44847        composeUri("url", element.getUrlElement());
44848      }
44849      if (element.hasIdentifier()) { 
44850        for (Identifier e : element.getIdentifier()) 
44851          composeIdentifier("identifier", e);
44852      }
44853      if (element.hasVersionElement()) {
44854        composeString("version", element.getVersionElement());
44855      }
44856      if (element.hasNameElement()) {
44857        composeString("name", element.getNameElement());
44858      }
44859      if (element.hasTitleElement()) {
44860        composeString("title", element.getTitleElement());
44861      }
44862      if (element.hasStatusElement())
44863        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44864      if (element.hasExperimentalElement()) {
44865        composeBoolean("experimental", element.getExperimentalElement());
44866      }
44867      if (element.hasDateElement()) {
44868        composeDateTime("date", element.getDateElement());
44869      }
44870      if (element.hasPublisherElement()) {
44871        composeString("publisher", element.getPublisherElement());
44872      }
44873      if (element.hasContact()) { 
44874        for (ContactDetail e : element.getContact()) 
44875          composeContactDetail("contact", e);
44876      }
44877      if (element.hasDescriptionElement()) {
44878        composeMarkdown("description", element.getDescriptionElement());
44879      }
44880      if (element.hasUseContext()) { 
44881        for (UsageContext e : element.getUseContext()) 
44882          composeUsageContext("useContext", e);
44883      }
44884      if (element.hasJurisdiction()) { 
44885        for (CodeableConcept e : element.getJurisdiction()) 
44886          composeCodeableConcept("jurisdiction", e);
44887      }
44888      if (element.hasPurposeElement()) {
44889        composeMarkdown("purpose", element.getPurposeElement());
44890      }
44891      if (element.hasCopyrightElement()) {
44892        composeMarkdown("copyright", element.getCopyrightElement());
44893      }
44894      if (element.hasStructure()) { 
44895        for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
44896          composeStructureMapStructureMapStructureComponent("structure", e);
44897      }
44898      if (element.hasImport()) { 
44899        for (CanonicalType e : element.getImport()) 
44900          composeCanonical("import", e);
44901      }
44902      if (element.hasGroup()) { 
44903        for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
44904          composeStructureMapStructureMapGroupComponent("group", e);
44905      }
44906  }
44907
44908  protected void composeStructureMapStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
44909    if (element != null) {
44910      composeElementAttributes(element);
44911      xml.enter(FHIR_NS, name);
44912      composeStructureMapStructureMapStructureComponentElements(element);
44913      composeElementClose(element);
44914      xml.exit(FHIR_NS, name);
44915    }
44916  }
44917
44918  protected void composeStructureMapStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
44919      composeBackboneElementElements(element);
44920      if (element.hasUrlElement()) {
44921        composeCanonical("url", element.getUrlElement());
44922      }
44923      if (element.hasModeElement())
44924        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
44925      if (element.hasAliasElement()) {
44926        composeString("alias", element.getAliasElement());
44927      }
44928      if (element.hasDocumentationElement()) {
44929        composeString("documentation", element.getDocumentationElement());
44930      }
44931  }
44932
44933  protected void composeStructureMapStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
44934    if (element != null) {
44935      composeElementAttributes(element);
44936      xml.enter(FHIR_NS, name);
44937      composeStructureMapStructureMapGroupComponentElements(element);
44938      composeElementClose(element);
44939      xml.exit(FHIR_NS, name);
44940    }
44941  }
44942
44943  protected void composeStructureMapStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
44944      composeBackboneElementElements(element);
44945      if (element.hasNameElement()) {
44946        composeId("name", element.getNameElement());
44947      }
44948      if (element.hasExtendsElement()) {
44949        composeId("extends", element.getExtendsElement());
44950      }
44951      if (element.hasTypeModeElement())
44952        composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
44953      if (element.hasDocumentationElement()) {
44954        composeString("documentation", element.getDocumentationElement());
44955      }
44956      if (element.hasInput()) { 
44957        for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
44958          composeStructureMapStructureMapGroupInputComponent("input", e);
44959      }
44960      if (element.hasRule()) { 
44961        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
44962          composeStructureMapStructureMapGroupRuleComponent("rule", e);
44963      }
44964  }
44965
44966  protected void composeStructureMapStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
44967    if (element != null) {
44968      composeElementAttributes(element);
44969      xml.enter(FHIR_NS, name);
44970      composeStructureMapStructureMapGroupInputComponentElements(element);
44971      composeElementClose(element);
44972      xml.exit(FHIR_NS, name);
44973    }
44974  }
44975
44976  protected void composeStructureMapStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
44977      composeBackboneElementElements(element);
44978      if (element.hasNameElement()) {
44979        composeId("name", element.getNameElement());
44980      }
44981      if (element.hasTypeElement()) {
44982        composeString("type", element.getTypeElement());
44983      }
44984      if (element.hasModeElement())
44985        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
44986      if (element.hasDocumentationElement()) {
44987        composeString("documentation", element.getDocumentationElement());
44988      }
44989  }
44990
44991  protected void composeStructureMapStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
44992    if (element != null) {
44993      composeElementAttributes(element);
44994      xml.enter(FHIR_NS, name);
44995      composeStructureMapStructureMapGroupRuleComponentElements(element);
44996      composeElementClose(element);
44997      xml.exit(FHIR_NS, name);
44998    }
44999  }
45000
45001  protected void composeStructureMapStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
45002      composeBackboneElementElements(element);
45003      if (element.hasNameElement()) {
45004        composeId("name", element.getNameElement());
45005      }
45006      if (element.hasSource()) { 
45007        for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
45008          composeStructureMapStructureMapGroupRuleSourceComponent("source", e);
45009      }
45010      if (element.hasTarget()) { 
45011        for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
45012          composeStructureMapStructureMapGroupRuleTargetComponent("target", e);
45013      }
45014      if (element.hasRule()) { 
45015        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
45016          composeStructureMapStructureMapGroupRuleComponent("rule", e);
45017      }
45018      if (element.hasDependent()) { 
45019        for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
45020          composeStructureMapStructureMapGroupRuleDependentComponent("dependent", e);
45021      }
45022      if (element.hasDocumentationElement()) {
45023        composeString("documentation", element.getDocumentationElement());
45024      }
45025  }
45026
45027  protected void composeStructureMapStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
45028    if (element != null) {
45029      composeElementAttributes(element);
45030      xml.enter(FHIR_NS, name);
45031      composeStructureMapStructureMapGroupRuleSourceComponentElements(element);
45032      composeElementClose(element);
45033      xml.exit(FHIR_NS, name);
45034    }
45035  }
45036
45037  protected void composeStructureMapStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
45038      composeBackboneElementElements(element);
45039      if (element.hasContextElement()) {
45040        composeId("context", element.getContextElement());
45041      }
45042      if (element.hasMinElement()) {
45043        composeInteger("min", element.getMinElement());
45044      }
45045      if (element.hasMaxElement()) {
45046        composeString("max", element.getMaxElement());
45047      }
45048      if (element.hasTypeElement()) {
45049        composeString("type", element.getTypeElement());
45050      }
45051      if (element.hasDefaultValue()) {
45052        composeType("defaultValue", element.getDefaultValue());
45053      }      if (element.hasElementElement()) {
45054        composeString("element", element.getElementElement());
45055      }
45056      if (element.hasListModeElement())
45057        composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
45058      if (element.hasVariableElement()) {
45059        composeId("variable", element.getVariableElement());
45060      }
45061      if (element.hasConditionElement()) {
45062        composeString("condition", element.getConditionElement());
45063      }
45064      if (element.hasCheckElement()) {
45065        composeString("check", element.getCheckElement());
45066      }
45067      if (element.hasLogMessageElement()) {
45068        composeString("logMessage", element.getLogMessageElement());
45069      }
45070  }
45071
45072  protected void composeStructureMapStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
45073    if (element != null) {
45074      composeElementAttributes(element);
45075      xml.enter(FHIR_NS, name);
45076      composeStructureMapStructureMapGroupRuleTargetComponentElements(element);
45077      composeElementClose(element);
45078      xml.exit(FHIR_NS, name);
45079    }
45080  }
45081
45082  protected void composeStructureMapStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
45083      composeBackboneElementElements(element);
45084      if (element.hasContextElement()) {
45085        composeId("context", element.getContextElement());
45086      }
45087      if (element.hasContextTypeElement())
45088        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
45089      if (element.hasElementElement()) {
45090        composeString("element", element.getElementElement());
45091      }
45092      if (element.hasVariableElement()) {
45093        composeId("variable", element.getVariableElement());
45094      }
45095        if (element.hasListMode()) 
45096          for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
45097            composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
45098      if (element.hasListRuleIdElement()) {
45099        composeId("listRuleId", element.getListRuleIdElement());
45100      }
45101      if (element.hasTransformElement())
45102        composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
45103      if (element.hasParameter()) { 
45104        for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
45105          composeStructureMapStructureMapGroupRuleTargetParameterComponent("parameter", e);
45106      }
45107  }
45108
45109  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
45110    if (element != null) {
45111      composeElementAttributes(element);
45112      xml.enter(FHIR_NS, name);
45113      composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(element);
45114      composeElementClose(element);
45115      xml.exit(FHIR_NS, name);
45116    }
45117  }
45118
45119  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
45120      composeBackboneElementElements(element);
45121      if (element.hasValue()) {
45122        composeType("value", element.getValue());
45123      }  }
45124
45125  protected void composeStructureMapStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
45126    if (element != null) {
45127      composeElementAttributes(element);
45128      xml.enter(FHIR_NS, name);
45129      composeStructureMapStructureMapGroupRuleDependentComponentElements(element);
45130      composeElementClose(element);
45131      xml.exit(FHIR_NS, name);
45132    }
45133  }
45134
45135  protected void composeStructureMapStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
45136      composeBackboneElementElements(element);
45137      if (element.hasNameElement()) {
45138        composeId("name", element.getNameElement());
45139      }
45140      if (element.hasVariable()) { 
45141        for (StringType e : element.getVariable()) 
45142          composeString("variable", e);
45143      }
45144  }
45145
45146  protected void composeSubscription(String name, Subscription element) throws IOException {
45147    if (element != null) {
45148      composeDomainResourceAttributes(element);
45149      xml.enter(FHIR_NS, name);
45150      composeSubscriptionElements(element);
45151      composeElementClose(element);
45152      xml.exit(FHIR_NS, name);
45153    }
45154  }
45155
45156  protected void composeSubscriptionElements(Subscription element) throws IOException {
45157      composeDomainResourceElements(element);
45158      if (element.hasStatusElement())
45159        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
45160      if (element.hasContact()) { 
45161        for (ContactPoint e : element.getContact()) 
45162          composeContactPoint("contact", e);
45163      }
45164      if (element.hasEndElement()) {
45165        composeInstant("end", element.getEndElement());
45166      }
45167      if (element.hasReasonElement()) {
45168        composeString("reason", element.getReasonElement());
45169      }
45170      if (element.hasCriteriaElement()) {
45171        composeString("criteria", element.getCriteriaElement());
45172      }
45173      if (element.hasErrorElement()) {
45174        composeString("error", element.getErrorElement());
45175      }
45176      if (element.hasChannel()) {
45177        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
45178      }
45179      if (element.hasTag()) { 
45180        for (Coding e : element.getTag()) 
45181          composeCoding("tag", e);
45182      }
45183  }
45184
45185  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
45186    if (element != null) {
45187      composeElementAttributes(element);
45188      xml.enter(FHIR_NS, name);
45189      composeSubscriptionSubscriptionChannelComponentElements(element);
45190      composeElementClose(element);
45191      xml.exit(FHIR_NS, name);
45192    }
45193  }
45194
45195  protected void composeSubscriptionSubscriptionChannelComponentElements(Subscription.SubscriptionChannelComponent element) throws IOException {
45196      composeBackboneElementElements(element);
45197      if (element.hasTypeElement())
45198        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
45199      if (element.hasEndpointElement()) {
45200        composeUrl("endpoint", element.getEndpointElement());
45201      }
45202      if (element.hasPayloadElement()) {
45203        composeString("payload", element.getPayloadElement());
45204      }
45205      if (element.hasHeader()) { 
45206        for (StringType e : element.getHeader()) 
45207          composeString("header", e);
45208      }
45209  }
45210
45211  protected void composeSubstance(String name, Substance element) throws IOException {
45212    if (element != null) {
45213      composeDomainResourceAttributes(element);
45214      xml.enter(FHIR_NS, name);
45215      composeSubstanceElements(element);
45216      composeElementClose(element);
45217      xml.exit(FHIR_NS, name);
45218    }
45219  }
45220
45221  protected void composeSubstanceElements(Substance element) throws IOException {
45222      composeDomainResourceElements(element);
45223      if (element.hasIdentifier()) { 
45224        for (Identifier e : element.getIdentifier()) 
45225          composeIdentifier("identifier", e);
45226      }
45227      if (element.hasStatusElement())
45228        composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
45229      if (element.hasCategory()) { 
45230        for (CodeableConcept e : element.getCategory()) 
45231          composeCodeableConcept("category", e);
45232      }
45233      if (element.hasCode()) {
45234        composeCodeableConcept("code", element.getCode());
45235      }
45236      if (element.hasDescriptionElement()) {
45237        composeString("description", element.getDescriptionElement());
45238      }
45239      if (element.hasInstance()) { 
45240        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
45241          composeSubstanceSubstanceInstanceComponent("instance", e);
45242      }
45243      if (element.hasIngredient()) { 
45244        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
45245          composeSubstanceSubstanceIngredientComponent("ingredient", e);
45246      }
45247  }
45248
45249  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
45250    if (element != null) {
45251      composeElementAttributes(element);
45252      xml.enter(FHIR_NS, name);
45253      composeSubstanceSubstanceInstanceComponentElements(element);
45254      composeElementClose(element);
45255      xml.exit(FHIR_NS, name);
45256    }
45257  }
45258
45259  protected void composeSubstanceSubstanceInstanceComponentElements(Substance.SubstanceInstanceComponent element) throws IOException {
45260      composeBackboneElementElements(element);
45261      if (element.hasIdentifier()) {
45262        composeIdentifier("identifier", element.getIdentifier());
45263      }
45264      if (element.hasExpiryElement()) {
45265        composeDateTime("expiry", element.getExpiryElement());
45266      }
45267      if (element.hasQuantity()) {
45268        composeQuantity("quantity", element.getQuantity());
45269      }
45270  }
45271
45272  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
45273    if (element != null) {
45274      composeElementAttributes(element);
45275      xml.enter(FHIR_NS, name);
45276      composeSubstanceSubstanceIngredientComponentElements(element);
45277      composeElementClose(element);
45278      xml.exit(FHIR_NS, name);
45279    }
45280  }
45281
45282  protected void composeSubstanceSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
45283      composeBackboneElementElements(element);
45284      if (element.hasQuantity()) {
45285        composeRatio("quantity", element.getQuantity());
45286      }
45287      if (element.hasSubstance()) {
45288        composeType("substance", element.getSubstance());
45289      }  }
45290
45291  protected void composeSubstancePolymer(String name, SubstancePolymer element) throws IOException {
45292    if (element != null) {
45293      composeDomainResourceAttributes(element);
45294      xml.enter(FHIR_NS, name);
45295      composeSubstancePolymerElements(element);
45296      composeElementClose(element);
45297      xml.exit(FHIR_NS, name);
45298    }
45299  }
45300
45301  protected void composeSubstancePolymerElements(SubstancePolymer element) throws IOException {
45302      composeDomainResourceElements(element);
45303      if (element.hasClass_()) {
45304        composeCodeableConcept("class", element.getClass_());
45305      }
45306      if (element.hasGeometry()) {
45307        composeCodeableConcept("geometry", element.getGeometry());
45308      }
45309      if (element.hasCopolymerConnectivity()) { 
45310        for (CodeableConcept e : element.getCopolymerConnectivity()) 
45311          composeCodeableConcept("copolymerConnectivity", e);
45312      }
45313      if (element.hasModification()) { 
45314        for (StringType e : element.getModification()) 
45315          composeString("modification", e);
45316      }
45317      if (element.hasMonomerSet()) { 
45318        for (SubstancePolymer.SubstancePolymerMonomerSetComponent e : element.getMonomerSet()) 
45319          composeSubstancePolymerSubstancePolymerMonomerSetComponent("monomerSet", e);
45320      }
45321      if (element.hasRepeat()) { 
45322        for (SubstancePolymer.SubstancePolymerRepeatComponent e : element.getRepeat()) 
45323          composeSubstancePolymerSubstancePolymerRepeatComponent("repeat", e);
45324      }
45325  }
45326
45327  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
45328    if (element != null) {
45329      composeElementAttributes(element);
45330      xml.enter(FHIR_NS, name);
45331      composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(element);
45332      composeElementClose(element);
45333      xml.exit(FHIR_NS, name);
45334    }
45335  }
45336
45337  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
45338      composeBackboneElementElements(element);
45339      if (element.hasRatioType()) {
45340        composeCodeableConcept("ratioType", element.getRatioType());
45341      }
45342      if (element.hasStartingMaterial()) { 
45343        for (SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent e : element.getStartingMaterial()) 
45344          composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent("startingMaterial", e);
45345      }
45346  }
45347
45348  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
45349    if (element != null) {
45350      composeElementAttributes(element);
45351      xml.enter(FHIR_NS, name);
45352      composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(element);
45353      composeElementClose(element);
45354      xml.exit(FHIR_NS, name);
45355    }
45356  }
45357
45358  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
45359      composeBackboneElementElements(element);
45360      if (element.hasMaterial()) {
45361        composeCodeableConcept("material", element.getMaterial());
45362      }
45363      if (element.hasType()) {
45364        composeCodeableConcept("type", element.getType());
45365      }
45366      if (element.hasIsDefiningElement()) {
45367        composeBoolean("isDefining", element.getIsDefiningElement());
45368      }
45369      if (element.hasAmount()) {
45370        composeSubstanceAmount("amount", element.getAmount());
45371      }
45372  }
45373
45374  protected void composeSubstancePolymerSubstancePolymerRepeatComponent(String name, SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
45375    if (element != null) {
45376      composeElementAttributes(element);
45377      xml.enter(FHIR_NS, name);
45378      composeSubstancePolymerSubstancePolymerRepeatComponentElements(element);
45379      composeElementClose(element);
45380      xml.exit(FHIR_NS, name);
45381    }
45382  }
45383
45384  protected void composeSubstancePolymerSubstancePolymerRepeatComponentElements(SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
45385      composeBackboneElementElements(element);
45386      if (element.hasNumberOfUnitsElement()) {
45387        composeInteger("numberOfUnits", element.getNumberOfUnitsElement());
45388      }
45389      if (element.hasAverageMolecularFormulaElement()) {
45390        composeString("averageMolecularFormula", element.getAverageMolecularFormulaElement());
45391      }
45392      if (element.hasRepeatUnitAmountType()) {
45393        composeCodeableConcept("repeatUnitAmountType", element.getRepeatUnitAmountType());
45394      }
45395      if (element.hasRepeatUnit()) { 
45396        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent e : element.getRepeatUnit()) 
45397          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent("repeatUnit", e);
45398      }
45399  }
45400
45401  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
45402    if (element != null) {
45403      composeElementAttributes(element);
45404      xml.enter(FHIR_NS, name);
45405      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(element);
45406      composeElementClose(element);
45407      xml.exit(FHIR_NS, name);
45408    }
45409  }
45410
45411  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
45412      composeBackboneElementElements(element);
45413      if (element.hasOrientationOfPolymerisation()) {
45414        composeCodeableConcept("orientationOfPolymerisation", element.getOrientationOfPolymerisation());
45415      }
45416      if (element.hasRepeatUnitElement()) {
45417        composeString("repeatUnit", element.getRepeatUnitElement());
45418      }
45419      if (element.hasAmount()) {
45420        composeSubstanceAmount("amount", element.getAmount());
45421      }
45422      if (element.hasDegreeOfPolymerisation()) { 
45423        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent e : element.getDegreeOfPolymerisation()) 
45424          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent("degreeOfPolymerisation", e);
45425      }
45426      if (element.hasStructuralRepresentation()) { 
45427        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent e : element.getStructuralRepresentation()) 
45428          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent("structuralRepresentation", e);
45429      }
45430  }
45431
45432  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
45433    if (element != null) {
45434      composeElementAttributes(element);
45435      xml.enter(FHIR_NS, name);
45436      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(element);
45437      composeElementClose(element);
45438      xml.exit(FHIR_NS, name);
45439    }
45440  }
45441
45442  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
45443      composeBackboneElementElements(element);
45444      if (element.hasDegree()) {
45445        composeCodeableConcept("degree", element.getDegree());
45446      }
45447      if (element.hasAmount()) {
45448        composeSubstanceAmount("amount", element.getAmount());
45449      }
45450  }
45451
45452  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
45453    if (element != null) {
45454      composeElementAttributes(element);
45455      xml.enter(FHIR_NS, name);
45456      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(element);
45457      composeElementClose(element);
45458      xml.exit(FHIR_NS, name);
45459    }
45460  }
45461
45462  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
45463      composeBackboneElementElements(element);
45464      if (element.hasType()) {
45465        composeCodeableConcept("type", element.getType());
45466      }
45467      if (element.hasRepresentationElement()) {
45468        composeString("representation", element.getRepresentationElement());
45469      }
45470      if (element.hasAttachment()) {
45471        composeAttachment("attachment", element.getAttachment());
45472      }
45473  }
45474
45475  protected void composeSubstanceReferenceInformation(String name, SubstanceReferenceInformation element) throws IOException {
45476    if (element != null) {
45477      composeDomainResourceAttributes(element);
45478      xml.enter(FHIR_NS, name);
45479      composeSubstanceReferenceInformationElements(element);
45480      composeElementClose(element);
45481      xml.exit(FHIR_NS, name);
45482    }
45483  }
45484
45485  protected void composeSubstanceReferenceInformationElements(SubstanceReferenceInformation element) throws IOException {
45486      composeDomainResourceElements(element);
45487      if (element.hasCommentElement()) {
45488        composeString("comment", element.getCommentElement());
45489      }
45490      if (element.hasGene()) { 
45491        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent e : element.getGene()) 
45492          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent("gene", e);
45493      }
45494      if (element.hasGeneElement()) { 
45495        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent e : element.getGeneElement()) 
45496          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent("geneElement", e);
45497      }
45498      if (element.hasClassification()) { 
45499        for (SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent e : element.getClassification()) 
45500          composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent("classification", e);
45501      }
45502      if (element.hasRelationship()) { 
45503        for (SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent e : element.getRelationship()) 
45504          composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent("relationship", e);
45505      }
45506      if (element.hasTarget()) { 
45507        for (SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent e : element.getTarget()) 
45508          composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent("target", e);
45509      }
45510  }
45511
45512  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
45513    if (element != null) {
45514      composeElementAttributes(element);
45515      xml.enter(FHIR_NS, name);
45516      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(element);
45517      composeElementClose(element);
45518      xml.exit(FHIR_NS, name);
45519    }
45520  }
45521
45522  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
45523      composeBackboneElementElements(element);
45524      if (element.hasGeneSequenceOrigin()) {
45525        composeCodeableConcept("geneSequenceOrigin", element.getGeneSequenceOrigin());
45526      }
45527      if (element.hasGene()) {
45528        composeCodeableConcept("gene", element.getGene());
45529      }
45530      if (element.hasSource()) { 
45531        for (Reference e : element.getSource()) 
45532          composeReference("source", e);
45533      }
45534  }
45535
45536  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
45537    if (element != null) {
45538      composeElementAttributes(element);
45539      xml.enter(FHIR_NS, name);
45540      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(element);
45541      composeElementClose(element);
45542      xml.exit(FHIR_NS, name);
45543    }
45544  }
45545
45546  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
45547      composeBackboneElementElements(element);
45548      if (element.hasType()) {
45549        composeCodeableConcept("type", element.getType());
45550      }
45551      if (element.hasElement()) {
45552        composeIdentifier("element", element.getElement());
45553      }
45554      if (element.hasSource()) { 
45555        for (Reference e : element.getSource()) 
45556          composeReference("source", e);
45557      }
45558  }
45559
45560  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
45561    if (element != null) {
45562      composeElementAttributes(element);
45563      xml.enter(FHIR_NS, name);
45564      composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(element);
45565      composeElementClose(element);
45566      xml.exit(FHIR_NS, name);
45567    }
45568  }
45569
45570  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
45571      composeBackboneElementElements(element);
45572      if (element.hasDomain()) {
45573        composeCodeableConcept("domain", element.getDomain());
45574      }
45575      if (element.hasClassification()) {
45576        composeCodeableConcept("classification", element.getClassification());
45577      }
45578      if (element.hasSubtype()) { 
45579        for (CodeableConcept e : element.getSubtype()) 
45580          composeCodeableConcept("subtype", e);
45581      }
45582      if (element.hasSource()) { 
45583        for (Reference e : element.getSource()) 
45584          composeReference("source", e);
45585      }
45586  }
45587
45588  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent element) throws IOException {
45589    if (element != null) {
45590      composeElementAttributes(element);
45591      xml.enter(FHIR_NS, name);
45592      composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponentElements(element);
45593      composeElementClose(element);
45594      xml.exit(FHIR_NS, name);
45595    }
45596  }
45597
45598  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationRelationshipComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationRelationshipComponent element) throws IOException {
45599      composeBackboneElementElements(element);
45600      if (element.hasSubstance()) {
45601        composeType("substance", element.getSubstance());
45602      }      if (element.hasRelationship()) {
45603        composeCodeableConcept("relationship", element.getRelationship());
45604      }
45605      if (element.hasInteraction()) {
45606        composeCodeableConcept("interaction", element.getInteraction());
45607      }
45608      if (element.hasIsDefiningElement()) {
45609        composeBoolean("isDefining", element.getIsDefiningElement());
45610      }
45611      if (element.hasAmount()) {
45612        composeType("amount", element.getAmount());
45613      }      if (element.hasAmountType()) {
45614        composeCodeableConcept("amountType", element.getAmountType());
45615      }
45616      if (element.hasAmountTextElement()) {
45617        composeString("amountText", element.getAmountTextElement());
45618      }
45619      if (element.hasSource()) { 
45620        for (Reference e : element.getSource()) 
45621          composeReference("source", e);
45622      }
45623  }
45624
45625  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
45626    if (element != null) {
45627      composeElementAttributes(element);
45628      xml.enter(FHIR_NS, name);
45629      composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(element);
45630      composeElementClose(element);
45631      xml.exit(FHIR_NS, name);
45632    }
45633  }
45634
45635  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
45636      composeBackboneElementElements(element);
45637      if (element.hasTarget()) {
45638        composeIdentifier("target", element.getTarget());
45639      }
45640      if (element.hasType()) {
45641        composeCodeableConcept("type", element.getType());
45642      }
45643      if (element.hasInteraction()) {
45644        composeCodeableConcept("interaction", element.getInteraction());
45645      }
45646      if (element.hasOrganism()) {
45647        composeCodeableConcept("organism", element.getOrganism());
45648      }
45649      if (element.hasOrganismType()) {
45650        composeCodeableConcept("organismType", element.getOrganismType());
45651      }
45652      if (element.hasSource()) { 
45653        for (Reference e : element.getSource()) 
45654          composeReference("source", e);
45655      }
45656      if (element.hasAmount()) {
45657        composeType("amount", element.getAmount());
45658      }      if (element.hasAmountType()) {
45659        composeCodeableConcept("amountType", element.getAmountType());
45660      }
45661  }
45662
45663  protected void composeSubstanceSpecification(String name, SubstanceSpecification element) throws IOException {
45664    if (element != null) {
45665      composeDomainResourceAttributes(element);
45666      xml.enter(FHIR_NS, name);
45667      composeSubstanceSpecificationElements(element);
45668      composeElementClose(element);
45669      xml.exit(FHIR_NS, name);
45670    }
45671  }
45672
45673  protected void composeSubstanceSpecificationElements(SubstanceSpecification element) throws IOException {
45674      composeDomainResourceElements(element);
45675      if (element.hasCommentElement()) {
45676        composeString("comment", element.getCommentElement());
45677      }
45678      if (element.hasStoichiometricElement()) {
45679        composeBoolean("stoichiometric", element.getStoichiometricElement());
45680      }
45681      if (element.hasIdentifier()) {
45682        composeIdentifier("identifier", element.getIdentifier());
45683      }
45684      if (element.hasType()) {
45685        composeCodeableConcept("type", element.getType());
45686      }
45687      if (element.hasReferenceSource()) { 
45688        for (StringType e : element.getReferenceSource()) 
45689          composeString("referenceSource", e);
45690      }
45691      if (element.hasMoiety()) { 
45692        for (SubstanceSpecification.SubstanceSpecificationMoietyComponent e : element.getMoiety()) 
45693          composeSubstanceSpecificationSubstanceSpecificationMoietyComponent("moiety", e);
45694      }
45695      if (element.hasProperty()) { 
45696        for (SubstanceSpecification.SubstanceSpecificationPropertyComponent e : element.getProperty()) 
45697          composeSubstanceSpecificationSubstanceSpecificationPropertyComponent("property", e);
45698      }
45699      if (element.hasReferenceInformation()) {
45700        composeReference("referenceInformation", element.getReferenceInformation());
45701      }
45702      if (element.hasStructure()) {
45703        composeSubstanceSpecificationSubstanceSpecificationStructureComponent("structure", element.getStructure());
45704      }
45705      if (element.hasSubstanceCode()) { 
45706        for (SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent e : element.getSubstanceCode()) 
45707          composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent("substanceCode", e);
45708      }
45709      if (element.hasSubstanceName()) { 
45710        for (SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent e : element.getSubstanceName()) 
45711          composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent("substanceName", e);
45712      }
45713      if (element.hasMolecularWeight()) { 
45714        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent e : element.getMolecularWeight()) 
45715          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", e);
45716      }
45717      if (element.hasPolymer()) {
45718        composeReference("polymer", element.getPolymer());
45719      }
45720  }
45721
45722  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(String name, SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
45723    if (element != null) {
45724      composeElementAttributes(element);
45725      xml.enter(FHIR_NS, name);
45726      composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(element);
45727      composeElementClose(element);
45728      xml.exit(FHIR_NS, name);
45729    }
45730  }
45731
45732  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
45733      composeBackboneElementElements(element);
45734      if (element.hasRole()) {
45735        composeCodeableConcept("role", element.getRole());
45736      }
45737      if (element.hasIdentifier()) {
45738        composeIdentifier("identifier", element.getIdentifier());
45739      }
45740      if (element.hasNameElement()) {
45741        composeString("name", element.getNameElement());
45742      }
45743      if (element.hasStereochemistry()) {
45744        composeCodeableConcept("stereochemistry", element.getStereochemistry());
45745      }
45746      if (element.hasOpticalActivity()) {
45747        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
45748      }
45749      if (element.hasMolecularFormulaElement()) {
45750        composeString("molecularFormula", element.getMolecularFormulaElement());
45751      }
45752      if (element.hasAmountElement()) {
45753        composeString("amount", element.getAmountElement());
45754      }
45755  }
45756
45757  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(String name, SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
45758    if (element != null) {
45759      composeElementAttributes(element);
45760      xml.enter(FHIR_NS, name);
45761      composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(element);
45762      composeElementClose(element);
45763      xml.exit(FHIR_NS, name);
45764    }
45765  }
45766
45767  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
45768      composeBackboneElementElements(element);
45769      if (element.hasType()) {
45770        composeCodeableConcept("type", element.getType());
45771      }
45772      if (element.hasName()) {
45773        composeCodeableConcept("name", element.getName());
45774      }
45775      if (element.hasParametersElement()) {
45776        composeString("parameters", element.getParametersElement());
45777      }
45778      if (element.hasSubstanceId()) {
45779        composeIdentifier("substanceId", element.getSubstanceId());
45780      }
45781      if (element.hasSubstanceNameElement()) {
45782        composeString("substanceName", element.getSubstanceNameElement());
45783      }
45784      if (element.hasAmountElement()) {
45785        composeString("amount", element.getAmountElement());
45786      }
45787  }
45788
45789  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
45790    if (element != null) {
45791      composeElementAttributes(element);
45792      xml.enter(FHIR_NS, name);
45793      composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(element);
45794      composeElementClose(element);
45795      xml.exit(FHIR_NS, name);
45796    }
45797  }
45798
45799  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
45800      composeBackboneElementElements(element);
45801      if (element.hasStereochemistry()) {
45802        composeCodeableConcept("stereochemistry", element.getStereochemistry());
45803      }
45804      if (element.hasOpticalActivity()) {
45805        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
45806      }
45807      if (element.hasMolecularFormulaElement()) {
45808        composeString("molecularFormula", element.getMolecularFormulaElement());
45809      }
45810      if (element.hasMolecularFormulaByMoietyElement()) {
45811        composeString("molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement());
45812      }
45813      if (element.hasIsotope()) { 
45814        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent e : element.getIsotope()) 
45815          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent("isotope", e);
45816      }
45817      if (element.hasMolecularWeight()) {
45818        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
45819      }
45820      if (element.hasReferenceSource()) { 
45821        for (Reference e : element.getReferenceSource()) 
45822          composeReference("referenceSource", e);
45823      }
45824      if (element.hasStructuralRepresentation()) { 
45825        for (SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent e : element.getStructuralRepresentation()) 
45826          composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent("structuralRepresentation", e);
45827      }
45828  }
45829
45830  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
45831    if (element != null) {
45832      composeElementAttributes(element);
45833      xml.enter(FHIR_NS, name);
45834      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(element);
45835      composeElementClose(element);
45836      xml.exit(FHIR_NS, name);
45837    }
45838  }
45839
45840  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
45841      composeBackboneElementElements(element);
45842      if (element.hasNuclideId()) {
45843        composeIdentifier("nuclideId", element.getNuclideId());
45844      }
45845      if (element.hasNuclideName()) {
45846        composeCodeableConcept("nuclideName", element.getNuclideName());
45847      }
45848      if (element.hasSubstitutionType()) {
45849        composeCodeableConcept("substitutionType", element.getSubstitutionType());
45850      }
45851      if (element.hasNuclideHalfLife()) {
45852        composeQuantity("nuclideHalfLife", element.getNuclideHalfLife());
45853      }
45854      if (element.hasAmountElement()) {
45855        composeString("amount", element.getAmountElement());
45856      }
45857      if (element.hasMolecularWeight()) {
45858        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
45859      }
45860  }
45861
45862  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
45863    if (element != null) {
45864      composeElementAttributes(element);
45865      xml.enter(FHIR_NS, name);
45866      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(element);
45867      composeElementClose(element);
45868      xml.exit(FHIR_NS, name);
45869    }
45870  }
45871
45872  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
45873      composeBackboneElementElements(element);
45874      if (element.hasMethod()) {
45875        composeCodeableConcept("method", element.getMethod());
45876      }
45877      if (element.hasType()) {
45878        composeCodeableConcept("type", element.getType());
45879      }
45880      if (element.hasAmountElement()) {
45881        composeString("amount", element.getAmountElement());
45882      }
45883  }
45884
45885  protected void composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent element) throws IOException {
45886    if (element != null) {
45887      composeElementAttributes(element);
45888      xml.enter(FHIR_NS, name);
45889      composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponentElements(element);
45890      composeElementClose(element);
45891      xml.exit(FHIR_NS, name);
45892    }
45893  }
45894
45895  protected void composeSubstanceSpecificationSubstanceSpecificationStructureStructuralRepresentationComponentElements(SubstanceSpecification.SubstanceSpecificationStructureStructuralRepresentationComponent element) throws IOException {
45896      composeBackboneElementElements(element);
45897      if (element.hasType()) {
45898        composeCodeableConcept("type", element.getType());
45899      }
45900      if (element.hasRepresentationElement()) {
45901        composeString("representation", element.getRepresentationElement());
45902      }
45903      if (element.hasAttachment()) {
45904        composeAttachment("attachment", element.getAttachment());
45905      }
45906  }
45907
45908  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponent(String name, SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent element) throws IOException {
45909    if (element != null) {
45910      composeElementAttributes(element);
45911      xml.enter(FHIR_NS, name);
45912      composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponentElements(element);
45913      composeElementClose(element);
45914      xml.exit(FHIR_NS, name);
45915    }
45916  }
45917
45918  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceCodeComponentElements(SubstanceSpecification.SubstanceSpecificationSubstanceCodeComponent element) throws IOException {
45919      composeBackboneElementElements(element);
45920      if (element.hasCode()) {
45921        composeCodeableConcept("code", element.getCode());
45922      }
45923      if (element.hasStatus()) {
45924        composeCodeableConcept("status", element.getStatus());
45925      }
45926      if (element.hasStatusDateElement()) {
45927        composeDateTime("statusDate", element.getStatusDateElement());
45928      }
45929      if (element.hasCommentElement()) {
45930        composeString("comment", element.getCommentElement());
45931      }
45932      if (element.hasReferenceSource()) { 
45933        for (StringType e : element.getReferenceSource()) 
45934          composeString("referenceSource", e);
45935      }
45936  }
45937
45938  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponent(String name, SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent element) throws IOException {
45939    if (element != null) {
45940      composeElementAttributes(element);
45941      xml.enter(FHIR_NS, name);
45942      composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponentElements(element);
45943      composeElementClose(element);
45944      xml.exit(FHIR_NS, name);
45945    }
45946  }
45947
45948  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameComponentElements(SubstanceSpecification.SubstanceSpecificationSubstanceNameComponent element) throws IOException {
45949      composeBackboneElementElements(element);
45950      if (element.hasNameElement()) {
45951        composeString("name", element.getNameElement());
45952      }
45953      if (element.hasType()) {
45954        composeCodeableConcept("type", element.getType());
45955      }
45956      if (element.hasLanguage()) { 
45957        for (CodeableConcept e : element.getLanguage()) 
45958          composeCodeableConcept("language", e);
45959      }
45960      if (element.hasDomain()) { 
45961        for (CodeableConcept e : element.getDomain()) 
45962          composeCodeableConcept("domain", e);
45963      }
45964      if (element.hasJurisdiction()) { 
45965        for (CodeableConcept e : element.getJurisdiction()) 
45966          composeCodeableConcept("jurisdiction", e);
45967      }
45968      if (element.hasOfficialName()) { 
45969        for (SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent e : element.getOfficialName()) 
45970          composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent("officialName", e);
45971      }
45972      if (element.hasReferenceSource()) { 
45973        for (StringType e : element.getReferenceSource()) 
45974          composeString("referenceSource", e);
45975      }
45976  }
45977
45978  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponent(String name, SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent element) throws IOException {
45979    if (element != null) {
45980      composeElementAttributes(element);
45981      xml.enter(FHIR_NS, name);
45982      composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponentElements(element);
45983      composeElementClose(element);
45984      xml.exit(FHIR_NS, name);
45985    }
45986  }
45987
45988  protected void composeSubstanceSpecificationSubstanceSpecificationSubstanceNameOfficialNameComponentElements(SubstanceSpecification.SubstanceSpecificationSubstanceNameOfficialNameComponent element) throws IOException {
45989      composeBackboneElementElements(element);
45990      if (element.hasAuthority()) {
45991        composeCodeableConcept("authority", element.getAuthority());
45992      }
45993      if (element.hasStatus()) {
45994        composeCodeableConcept("status", element.getStatus());
45995      }
45996      if (element.hasDateElement()) {
45997        composeDateTime("date", element.getDateElement());
45998      }
45999  }
46000
46001  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
46002    if (element != null) {
46003      composeDomainResourceAttributes(element);
46004      xml.enter(FHIR_NS, name);
46005      composeSupplyDeliveryElements(element);
46006      composeElementClose(element);
46007      xml.exit(FHIR_NS, name);
46008    }
46009  }
46010
46011  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
46012      composeDomainResourceElements(element);
46013      if (element.hasIdentifier()) { 
46014        for (Identifier e : element.getIdentifier()) 
46015          composeIdentifier("identifier", e);
46016      }
46017      if (element.hasBasedOn()) { 
46018        for (Reference e : element.getBasedOn()) 
46019          composeReference("basedOn", e);
46020      }
46021      if (element.hasPartOf()) { 
46022        for (Reference e : element.getPartOf()) 
46023          composeReference("partOf", e);
46024      }
46025      if (element.hasStatusElement())
46026        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
46027      if (element.hasPatient()) {
46028        composeReference("patient", element.getPatient());
46029      }
46030      if (element.hasType()) {
46031        composeCodeableConcept("type", element.getType());
46032      }
46033      if (element.hasSuppliedItem()) {
46034        composeSupplyDeliverySupplyDeliverySuppliedItemComponent("suppliedItem", element.getSuppliedItem());
46035      }
46036      if (element.hasOccurrence()) {
46037        composeType("occurrence", element.getOccurrence());
46038      }      if (element.hasSupplier()) {
46039        composeReference("supplier", element.getSupplier());
46040      }
46041      if (element.hasDestination()) {
46042        composeReference("destination", element.getDestination());
46043      }
46044      if (element.hasReceiver()) { 
46045        for (Reference e : element.getReceiver()) 
46046          composeReference("receiver", e);
46047      }
46048  }
46049
46050  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
46051    if (element != null) {
46052      composeElementAttributes(element);
46053      xml.enter(FHIR_NS, name);
46054      composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(element);
46055      composeElementClose(element);
46056      xml.exit(FHIR_NS, name);
46057    }
46058  }
46059
46060  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
46061      composeBackboneElementElements(element);
46062      if (element.hasQuantity()) {
46063        composeQuantity("quantity", element.getQuantity());
46064      }
46065      if (element.hasItem()) {
46066        composeType("item", element.getItem());
46067      }  }
46068
46069  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
46070    if (element != null) {
46071      composeDomainResourceAttributes(element);
46072      xml.enter(FHIR_NS, name);
46073      composeSupplyRequestElements(element);
46074      composeElementClose(element);
46075      xml.exit(FHIR_NS, name);
46076    }
46077  }
46078
46079  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
46080      composeDomainResourceElements(element);
46081      if (element.hasIdentifier()) {
46082        composeIdentifier("identifier", element.getIdentifier());
46083      }
46084      if (element.hasStatusElement())
46085        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
46086      if (element.hasCategory()) {
46087        composeCodeableConcept("category", element.getCategory());
46088      }
46089      if (element.hasPriorityElement())
46090        composeEnumeration("priority", element.getPriorityElement(), new SupplyRequest.RequestPriorityEnumFactory());
46091      if (element.hasItem()) {
46092        composeType("item", element.getItem());
46093      }      if (element.hasQuantity()) {
46094        composeQuantity("quantity", element.getQuantity());
46095      }
46096      if (element.hasParameter()) { 
46097        for (SupplyRequest.SupplyRequestParameterComponent e : element.getParameter()) 
46098          composeSupplyRequestSupplyRequestParameterComponent("parameter", e);
46099      }
46100      if (element.hasOccurrence()) {
46101        composeType("occurrence", element.getOccurrence());
46102      }      if (element.hasAuthoredOnElement()) {
46103        composeDateTime("authoredOn", element.getAuthoredOnElement());
46104      }
46105      if (element.hasRequester()) {
46106        composeReference("requester", element.getRequester());
46107      }
46108      if (element.hasSupplier()) { 
46109        for (Reference e : element.getSupplier()) 
46110          composeReference("supplier", e);
46111      }
46112      if (element.hasReasonCode()) { 
46113        for (CodeableConcept e : element.getReasonCode()) 
46114          composeCodeableConcept("reasonCode", e);
46115      }
46116      if (element.hasReasonReference()) { 
46117        for (Reference e : element.getReasonReference()) 
46118          composeReference("reasonReference", e);
46119      }
46120      if (element.hasDeliverFrom()) {
46121        composeReference("deliverFrom", element.getDeliverFrom());
46122      }
46123      if (element.hasDeliverTo()) {
46124        composeReference("deliverTo", element.getDeliverTo());
46125      }
46126  }
46127
46128  protected void composeSupplyRequestSupplyRequestParameterComponent(String name, SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
46129    if (element != null) {
46130      composeElementAttributes(element);
46131      xml.enter(FHIR_NS, name);
46132      composeSupplyRequestSupplyRequestParameterComponentElements(element);
46133      composeElementClose(element);
46134      xml.exit(FHIR_NS, name);
46135    }
46136  }
46137
46138  protected void composeSupplyRequestSupplyRequestParameterComponentElements(SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
46139      composeBackboneElementElements(element);
46140      if (element.hasCode()) {
46141        composeCodeableConcept("code", element.getCode());
46142      }
46143      if (element.hasValue()) {
46144        composeType("value", element.getValue());
46145      }  }
46146
46147  protected void composeTask(String name, Task element) throws IOException {
46148    if (element != null) {
46149      composeDomainResourceAttributes(element);
46150      xml.enter(FHIR_NS, name);
46151      composeTaskElements(element);
46152      composeElementClose(element);
46153      xml.exit(FHIR_NS, name);
46154    }
46155  }
46156
46157  protected void composeTaskElements(Task element) throws IOException {
46158      composeDomainResourceElements(element);
46159      if (element.hasIdentifier()) { 
46160        for (Identifier e : element.getIdentifier()) 
46161          composeIdentifier("identifier", e);
46162      }
46163      if (element.hasInstantiatesCanonicalElement()) {
46164        composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
46165      }
46166      if (element.hasInstantiatesUriElement()) {
46167        composeUri("instantiatesUri", element.getInstantiatesUriElement());
46168      }
46169      if (element.hasBasedOn()) { 
46170        for (Reference e : element.getBasedOn()) 
46171          composeReference("basedOn", e);
46172      }
46173      if (element.hasGroupIdentifier()) {
46174        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
46175      }
46176      if (element.hasPartOf()) { 
46177        for (Reference e : element.getPartOf()) 
46178          composeReference("partOf", e);
46179      }
46180      if (element.hasStatusElement())
46181        composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
46182      if (element.hasStatusReason()) {
46183        composeCodeableConcept("statusReason", element.getStatusReason());
46184      }
46185      if (element.hasBusinessStatus()) {
46186        composeCodeableConcept("businessStatus", element.getBusinessStatus());
46187      }
46188      if (element.hasIntentElement())
46189        composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
46190      if (element.hasPriorityElement())
46191        composeEnumeration("priority", element.getPriorityElement(), new Task.TaskPriorityEnumFactory());
46192      if (element.hasCode()) {
46193        composeCodeableConcept("code", element.getCode());
46194      }
46195      if (element.hasDescriptionElement()) {
46196        composeString("description", element.getDescriptionElement());
46197      }
46198      if (element.hasFocus()) {
46199        composeReference("focus", element.getFocus());
46200      }
46201      if (element.hasFor()) {
46202        composeReference("for", element.getFor());
46203      }
46204      if (element.hasContext()) {
46205        composeReference("context", element.getContext());
46206      }
46207      if (element.hasExecutionPeriod()) {
46208        composePeriod("executionPeriod", element.getExecutionPeriod());
46209      }
46210      if (element.hasAuthoredOnElement()) {
46211        composeDateTime("authoredOn", element.getAuthoredOnElement());
46212      }
46213      if (element.hasLastModifiedElement()) {
46214        composeDateTime("lastModified", element.getLastModifiedElement());
46215      }
46216      if (element.hasRequester()) {
46217        composeReference("requester", element.getRequester());
46218      }
46219      if (element.hasPerformerType()) { 
46220        for (CodeableConcept e : element.getPerformerType()) 
46221          composeCodeableConcept("performerType", e);
46222      }
46223      if (element.hasOwner()) {
46224        composeReference("owner", element.getOwner());
46225      }
46226      if (element.hasLocation()) {
46227        composeReference("location", element.getLocation());
46228      }
46229      if (element.hasReasonCode()) {
46230        composeCodeableConcept("reasonCode", element.getReasonCode());
46231      }
46232      if (element.hasReasonReference()) {
46233        composeReference("reasonReference", element.getReasonReference());
46234      }
46235      if (element.hasInsurance()) { 
46236        for (Reference e : element.getInsurance()) 
46237          composeReference("insurance", e);
46238      }
46239      if (element.hasNote()) { 
46240        for (Annotation e : element.getNote()) 
46241          composeAnnotation("note", e);
46242      }
46243      if (element.hasRelevantHistory()) { 
46244        for (Reference e : element.getRelevantHistory()) 
46245          composeReference("relevantHistory", e);
46246      }
46247      if (element.hasRestriction()) {
46248        composeTaskTaskRestrictionComponent("restriction", element.getRestriction());
46249      }
46250      if (element.hasInput()) { 
46251        for (Task.ParameterComponent e : element.getInput()) 
46252          composeTaskParameterComponent("input", e);
46253      }
46254      if (element.hasOutput()) { 
46255        for (Task.TaskOutputComponent e : element.getOutput()) 
46256          composeTaskTaskOutputComponent("output", e);
46257      }
46258  }
46259
46260  protected void composeTaskTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
46261    if (element != null) {
46262      composeElementAttributes(element);
46263      xml.enter(FHIR_NS, name);
46264      composeTaskTaskRestrictionComponentElements(element);
46265      composeElementClose(element);
46266      xml.exit(FHIR_NS, name);
46267    }
46268  }
46269
46270  protected void composeTaskTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
46271      composeBackboneElementElements(element);
46272      if (element.hasRepetitionsElement()) {
46273        composePositiveInt("repetitions", element.getRepetitionsElement());
46274      }
46275      if (element.hasPeriod()) {
46276        composePeriod("period", element.getPeriod());
46277      }
46278      if (element.hasRecipient()) { 
46279        for (Reference e : element.getRecipient()) 
46280          composeReference("recipient", e);
46281      }
46282  }
46283
46284  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
46285    if (element != null) {
46286      composeElementAttributes(element);
46287      xml.enter(FHIR_NS, name);
46288      composeTaskParameterComponentElements(element);
46289      composeElementClose(element);
46290      xml.exit(FHIR_NS, name);
46291    }
46292  }
46293
46294  protected void composeTaskParameterComponentElements(Task.ParameterComponent element) throws IOException {
46295      composeBackboneElementElements(element);
46296      if (element.hasType()) {
46297        composeCodeableConcept("type", element.getType());
46298      }
46299      if (element.hasValue()) {
46300        composeType("value", element.getValue());
46301      }  }
46302
46303  protected void composeTaskTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
46304    if (element != null) {
46305      composeElementAttributes(element);
46306      xml.enter(FHIR_NS, name);
46307      composeTaskTaskOutputComponentElements(element);
46308      composeElementClose(element);
46309      xml.exit(FHIR_NS, name);
46310    }
46311  }
46312
46313  protected void composeTaskTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
46314      composeBackboneElementElements(element);
46315      if (element.hasType()) {
46316        composeCodeableConcept("type", element.getType());
46317      }
46318      if (element.hasValue()) {
46319        composeType("value", element.getValue());
46320      }  }
46321
46322  protected void composeTerminologyCapabilities(String name, TerminologyCapabilities element) throws IOException {
46323    if (element != null) {
46324      composeDomainResourceAttributes(element);
46325      xml.enter(FHIR_NS, name);
46326      composeTerminologyCapabilitiesElements(element);
46327      composeElementClose(element);
46328      xml.exit(FHIR_NS, name);
46329    }
46330  }
46331
46332  protected void composeTerminologyCapabilitiesElements(TerminologyCapabilities element) throws IOException {
46333      composeDomainResourceElements(element);
46334      if (element.hasUrlElement()) {
46335        composeUri("url", element.getUrlElement());
46336      }
46337      if (element.hasVersionElement()) {
46338        composeString("version", element.getVersionElement());
46339      }
46340      if (element.hasNameElement()) {
46341        composeString("name", element.getNameElement());
46342      }
46343      if (element.hasTitleElement()) {
46344        composeString("title", element.getTitleElement());
46345      }
46346      if (element.hasStatusElement())
46347        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46348      if (element.hasExperimentalElement()) {
46349        composeBoolean("experimental", element.getExperimentalElement());
46350      }
46351      if (element.hasDateElement()) {
46352        composeDateTime("date", element.getDateElement());
46353      }
46354      if (element.hasPublisherElement()) {
46355        composeString("publisher", element.getPublisherElement());
46356      }
46357      if (element.hasContact()) { 
46358        for (ContactDetail e : element.getContact()) 
46359          composeContactDetail("contact", e);
46360      }
46361      if (element.hasDescriptionElement()) {
46362        composeMarkdown("description", element.getDescriptionElement());
46363      }
46364      if (element.hasUseContext()) { 
46365        for (UsageContext e : element.getUseContext()) 
46366          composeUsageContext("useContext", e);
46367      }
46368      if (element.hasJurisdiction()) { 
46369        for (CodeableConcept e : element.getJurisdiction()) 
46370          composeCodeableConcept("jurisdiction", e);
46371      }
46372      if (element.hasPurposeElement()) {
46373        composeMarkdown("purpose", element.getPurposeElement());
46374      }
46375      if (element.hasCopyrightElement()) {
46376        composeMarkdown("copyright", element.getCopyrightElement());
46377      }
46378      if (element.hasKindElement())
46379        composeEnumeration("kind", element.getKindElement(), new TerminologyCapabilities.CapabilityStatementKindEnumFactory());
46380      if (element.hasSoftware()) {
46381        composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent("software", element.getSoftware());
46382      }
46383      if (element.hasImplementation()) {
46384        composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent("implementation", element.getImplementation());
46385      }
46386      if (element.hasLockedDateElement()) {
46387        composeBoolean("lockedDate", element.getLockedDateElement());
46388      }
46389      if (element.hasCodeSystem()) { 
46390        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent e : element.getCodeSystem()) 
46391          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent("codeSystem", e);
46392      }
46393      if (element.hasExpansion()) {
46394        composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent("expansion", element.getExpansion());
46395      }
46396      if (element.hasCodeSearchElement())
46397        composeEnumeration("codeSearch", element.getCodeSearchElement(), new TerminologyCapabilities.CodeSearchSupportEnumFactory());
46398      if (element.hasValidateCode()) {
46399        composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent("validateCode", element.getValidateCode());
46400      }
46401      if (element.hasTranslation()) {
46402        composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent("translation", element.getTranslation());
46403      }
46404      if (element.hasClosure()) {
46405        composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent("closure", element.getClosure());
46406      }
46407  }
46408
46409  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
46410    if (element != null) {
46411      composeElementAttributes(element);
46412      xml.enter(FHIR_NS, name);
46413      composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentElements(element);
46414      composeElementClose(element);
46415      xml.exit(FHIR_NS, name);
46416    }
46417  }
46418
46419  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentElements(TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
46420      composeBackboneElementElements(element);
46421      if (element.hasNameElement()) {
46422        composeString("name", element.getNameElement());
46423      }
46424      if (element.hasVersionElement()) {
46425        composeString("version", element.getVersionElement());
46426      }
46427  }
46428
46429  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
46430    if (element != null) {
46431      composeElementAttributes(element);
46432      xml.enter(FHIR_NS, name);
46433      composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentElements(element);
46434      composeElementClose(element);
46435      xml.exit(FHIR_NS, name);
46436    }
46437  }
46438
46439  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
46440      composeBackboneElementElements(element);
46441      if (element.hasDescriptionElement()) {
46442        composeString("description", element.getDescriptionElement());
46443      }
46444      if (element.hasUrlElement()) {
46445        composeUrl("url", element.getUrlElement());
46446      }
46447  }
46448
46449  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
46450    if (element != null) {
46451      composeElementAttributes(element);
46452      xml.enter(FHIR_NS, name);
46453      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(element);
46454      composeElementClose(element);
46455      xml.exit(FHIR_NS, name);
46456    }
46457  }
46458
46459  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
46460      composeBackboneElementElements(element);
46461      if (element.hasUriElement()) {
46462        composeCanonical("uri", element.getUriElement());
46463      }
46464      if (element.hasVersion()) { 
46465        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent e : element.getVersion()) 
46466          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent("version", e);
46467      }
46468      if (element.hasSubsumptionElement()) {
46469        composeBoolean("subsumption", element.getSubsumptionElement());
46470      }
46471  }
46472
46473  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
46474    if (element != null) {
46475      composeElementAttributes(element);
46476      xml.enter(FHIR_NS, name);
46477      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(element);
46478      composeElementClose(element);
46479      xml.exit(FHIR_NS, name);
46480    }
46481  }
46482
46483  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
46484      composeBackboneElementElements(element);
46485      if (element.hasCodeElement()) {
46486        composeString("code", element.getCodeElement());
46487      }
46488      if (element.hasIsDefaultElement()) {
46489        composeBoolean("isDefault", element.getIsDefaultElement());
46490      }
46491      if (element.hasCompositionalElement()) {
46492        composeBoolean("compositional", element.getCompositionalElement());
46493      }
46494      if (element.hasLanguage()) { 
46495        for (CodeType e : element.getLanguage()) 
46496          composeCode("language", e);
46497      }
46498      if (element.hasFilter()) { 
46499        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent e : element.getFilter()) 
46500          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent("filter", e);
46501      }
46502      if (element.hasProperty()) { 
46503        for (CodeType e : element.getProperty()) 
46504          composeCode("property", e);
46505      }
46506  }
46507
46508  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
46509    if (element != null) {
46510      composeElementAttributes(element);
46511      xml.enter(FHIR_NS, name);
46512      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(element);
46513      composeElementClose(element);
46514      xml.exit(FHIR_NS, name);
46515    }
46516  }
46517
46518  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
46519      composeBackboneElementElements(element);
46520      if (element.hasCodeElement()) {
46521        composeCode("code", element.getCodeElement());
46522      }
46523      if (element.hasOp()) { 
46524        for (CodeType e : element.getOp()) 
46525          composeCode("op", e);
46526      }
46527  }
46528
46529  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
46530    if (element != null) {
46531      composeElementAttributes(element);
46532      xml.enter(FHIR_NS, name);
46533      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(element);
46534      composeElementClose(element);
46535      xml.exit(FHIR_NS, name);
46536    }
46537  }
46538
46539  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
46540      composeBackboneElementElements(element);
46541      if (element.hasHierarchicalElement()) {
46542        composeBoolean("hierarchical", element.getHierarchicalElement());
46543      }
46544      if (element.hasPagingElement()) {
46545        composeBoolean("paging", element.getPagingElement());
46546      }
46547      if (element.hasIncompleteElement()) {
46548        composeBoolean("incomplete", element.getIncompleteElement());
46549      }
46550      if (element.hasParameter()) { 
46551        for (TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent e : element.getParameter()) 
46552          composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent("parameter", e);
46553      }
46554      if (element.hasTextFilterElement()) {
46555        composeMarkdown("textFilter", element.getTextFilterElement());
46556      }
46557  }
46558
46559  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
46560    if (element != null) {
46561      composeElementAttributes(element);
46562      xml.enter(FHIR_NS, name);
46563      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentElements(element);
46564      composeElementClose(element);
46565      xml.exit(FHIR_NS, name);
46566    }
46567  }
46568
46569  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
46570      composeBackboneElementElements(element);
46571      if (element.hasNameElement()) {
46572        composeCode("name", element.getNameElement());
46573      }
46574      if (element.hasDocumentationElement()) {
46575        composeString("documentation", element.getDocumentationElement());
46576      }
46577  }
46578
46579  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
46580    if (element != null) {
46581      composeElementAttributes(element);
46582      xml.enter(FHIR_NS, name);
46583      composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(element);
46584      composeElementClose(element);
46585      xml.exit(FHIR_NS, name);
46586    }
46587  }
46588
46589  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
46590      composeBackboneElementElements(element);
46591      if (element.hasTranslationsElement()) {
46592        composeBoolean("translations", element.getTranslationsElement());
46593      }
46594  }
46595
46596  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
46597    if (element != null) {
46598      composeElementAttributes(element);
46599      xml.enter(FHIR_NS, name);
46600      composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(element);
46601      composeElementClose(element);
46602      xml.exit(FHIR_NS, name);
46603    }
46604  }
46605
46606  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
46607      composeBackboneElementElements(element);
46608      if (element.hasNeedsMapElement()) {
46609        composeBoolean("needsMap", element.getNeedsMapElement());
46610      }
46611  }
46612
46613  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
46614    if (element != null) {
46615      composeElementAttributes(element);
46616      xml.enter(FHIR_NS, name);
46617      composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(element);
46618      composeElementClose(element);
46619      xml.exit(FHIR_NS, name);
46620    }
46621  }
46622
46623  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
46624      composeBackboneElementElements(element);
46625      if (element.hasTranslationElement()) {
46626        composeBoolean("translation", element.getTranslationElement());
46627      }
46628  }
46629
46630  protected void composeTestReport(String name, TestReport element) throws IOException {
46631    if (element != null) {
46632      composeDomainResourceAttributes(element);
46633      xml.enter(FHIR_NS, name);
46634      composeTestReportElements(element);
46635      composeElementClose(element);
46636      xml.exit(FHIR_NS, name);
46637    }
46638  }
46639
46640  protected void composeTestReportElements(TestReport element) throws IOException {
46641      composeDomainResourceElements(element);
46642      if (element.hasIdentifier()) {
46643        composeIdentifier("identifier", element.getIdentifier());
46644      }
46645      if (element.hasNameElement()) {
46646        composeString("name", element.getNameElement());
46647      }
46648      if (element.hasStatusElement())
46649        composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
46650      if (element.hasTestScript()) {
46651        composeReference("testScript", element.getTestScript());
46652      }
46653      if (element.hasResultElement())
46654        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
46655      if (element.hasScoreElement()) {
46656        composeDecimal("score", element.getScoreElement());
46657      }
46658      if (element.hasTesterElement()) {
46659        composeString("tester", element.getTesterElement());
46660      }
46661      if (element.hasIssuedElement()) {
46662        composeDateTime("issued", element.getIssuedElement());
46663      }
46664      if (element.hasParticipant()) { 
46665        for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
46666          composeTestReportTestReportParticipantComponent("participant", e);
46667      }
46668      if (element.hasSetup()) {
46669        composeTestReportTestReportSetupComponent("setup", element.getSetup());
46670      }
46671      if (element.hasTest()) { 
46672        for (TestReport.TestReportTestComponent e : element.getTest()) 
46673          composeTestReportTestReportTestComponent("test", e);
46674      }
46675      if (element.hasTeardown()) {
46676        composeTestReportTestReportTeardownComponent("teardown", element.getTeardown());
46677      }
46678  }
46679
46680  protected void composeTestReportTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
46681    if (element != null) {
46682      composeElementAttributes(element);
46683      xml.enter(FHIR_NS, name);
46684      composeTestReportTestReportParticipantComponentElements(element);
46685      composeElementClose(element);
46686      xml.exit(FHIR_NS, name);
46687    }
46688  }
46689
46690  protected void composeTestReportTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
46691      composeBackboneElementElements(element);
46692      if (element.hasTypeElement())
46693        composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
46694      if (element.hasUriElement()) {
46695        composeUri("uri", element.getUriElement());
46696      }
46697      if (element.hasDisplayElement()) {
46698        composeString("display", element.getDisplayElement());
46699      }
46700  }
46701
46702  protected void composeTestReportTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
46703    if (element != null) {
46704      composeElementAttributes(element);
46705      xml.enter(FHIR_NS, name);
46706      composeTestReportTestReportSetupComponentElements(element);
46707      composeElementClose(element);
46708      xml.exit(FHIR_NS, name);
46709    }
46710  }
46711
46712  protected void composeTestReportTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
46713      composeBackboneElementElements(element);
46714      if (element.hasAction()) { 
46715        for (TestReport.SetupActionComponent e : element.getAction()) 
46716          composeTestReportSetupActionComponent("action", e);
46717      }
46718  }
46719
46720  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
46721    if (element != null) {
46722      composeElementAttributes(element);
46723      xml.enter(FHIR_NS, name);
46724      composeTestReportSetupActionComponentElements(element);
46725      composeElementClose(element);
46726      xml.exit(FHIR_NS, name);
46727    }
46728  }
46729
46730  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
46731      composeBackboneElementElements(element);
46732      if (element.hasOperation()) {
46733        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
46734      }
46735      if (element.hasAssert()) {
46736        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
46737      }
46738  }
46739
46740  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
46741    if (element != null) {
46742      composeElementAttributes(element);
46743      xml.enter(FHIR_NS, name);
46744      composeTestReportSetupActionOperationComponentElements(element);
46745      composeElementClose(element);
46746      xml.exit(FHIR_NS, name);
46747    }
46748  }
46749
46750  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
46751      composeBackboneElementElements(element);
46752      if (element.hasResultElement())
46753        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
46754      if (element.hasMessageElement()) {
46755        composeMarkdown("message", element.getMessageElement());
46756      }
46757      if (element.hasDetailElement()) {
46758        composeUri("detail", element.getDetailElement());
46759      }
46760  }
46761
46762  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
46763    if (element != null) {
46764      composeElementAttributes(element);
46765      xml.enter(FHIR_NS, name);
46766      composeTestReportSetupActionAssertComponentElements(element);
46767      composeElementClose(element);
46768      xml.exit(FHIR_NS, name);
46769    }
46770  }
46771
46772  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
46773      composeBackboneElementElements(element);
46774      if (element.hasResultElement())
46775        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
46776      if (element.hasMessageElement()) {
46777        composeMarkdown("message", element.getMessageElement());
46778      }
46779      if (element.hasDetailElement()) {
46780        composeString("detail", element.getDetailElement());
46781      }
46782  }
46783
46784  protected void composeTestReportTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
46785    if (element != null) {
46786      composeElementAttributes(element);
46787      xml.enter(FHIR_NS, name);
46788      composeTestReportTestReportTestComponentElements(element);
46789      composeElementClose(element);
46790      xml.exit(FHIR_NS, name);
46791    }
46792  }
46793
46794  protected void composeTestReportTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
46795      composeBackboneElementElements(element);
46796      if (element.hasNameElement()) {
46797        composeString("name", element.getNameElement());
46798      }
46799      if (element.hasDescriptionElement()) {
46800        composeString("description", element.getDescriptionElement());
46801      }
46802      if (element.hasAction()) { 
46803        for (TestReport.TestActionComponent e : element.getAction()) 
46804          composeTestReportTestActionComponent("action", e);
46805      }
46806  }
46807
46808  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
46809    if (element != null) {
46810      composeElementAttributes(element);
46811      xml.enter(FHIR_NS, name);
46812      composeTestReportTestActionComponentElements(element);
46813      composeElementClose(element);
46814      xml.exit(FHIR_NS, name);
46815    }
46816  }
46817
46818  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
46819      composeBackboneElementElements(element);
46820      if (element.hasOperation()) {
46821        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
46822      }
46823      if (element.hasAssert()) {
46824        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
46825      }
46826  }
46827
46828  protected void composeTestReportTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
46829    if (element != null) {
46830      composeElementAttributes(element);
46831      xml.enter(FHIR_NS, name);
46832      composeTestReportTestReportTeardownComponentElements(element);
46833      composeElementClose(element);
46834      xml.exit(FHIR_NS, name);
46835    }
46836  }
46837
46838  protected void composeTestReportTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
46839      composeBackboneElementElements(element);
46840      if (element.hasAction()) { 
46841        for (TestReport.TeardownActionComponent e : element.getAction()) 
46842          composeTestReportTeardownActionComponent("action", e);
46843      }
46844  }
46845
46846  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
46847    if (element != null) {
46848      composeElementAttributes(element);
46849      xml.enter(FHIR_NS, name);
46850      composeTestReportTeardownActionComponentElements(element);
46851      composeElementClose(element);
46852      xml.exit(FHIR_NS, name);
46853    }
46854  }
46855
46856  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
46857      composeBackboneElementElements(element);
46858      if (element.hasOperation()) {
46859        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
46860      }
46861  }
46862
46863  protected void composeTestScript(String name, TestScript element) throws IOException {
46864    if (element != null) {
46865      composeDomainResourceAttributes(element);
46866      xml.enter(FHIR_NS, name);
46867      composeTestScriptElements(element);
46868      composeElementClose(element);
46869      xml.exit(FHIR_NS, name);
46870    }
46871  }
46872
46873  protected void composeTestScriptElements(TestScript element) throws IOException {
46874      composeDomainResourceElements(element);
46875      if (element.hasUrlElement()) {
46876        composeUri("url", element.getUrlElement());
46877      }
46878      if (element.hasIdentifier()) {
46879        composeIdentifier("identifier", element.getIdentifier());
46880      }
46881      if (element.hasVersionElement()) {
46882        composeString("version", element.getVersionElement());
46883      }
46884      if (element.hasNameElement()) {
46885        composeString("name", element.getNameElement());
46886      }
46887      if (element.hasTitleElement()) {
46888        composeString("title", element.getTitleElement());
46889      }
46890      if (element.hasStatusElement())
46891        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46892      if (element.hasExperimentalElement()) {
46893        composeBoolean("experimental", element.getExperimentalElement());
46894      }
46895      if (element.hasDateElement()) {
46896        composeDateTime("date", element.getDateElement());
46897      }
46898      if (element.hasPublisherElement()) {
46899        composeString("publisher", element.getPublisherElement());
46900      }
46901      if (element.hasContact()) { 
46902        for (ContactDetail e : element.getContact()) 
46903          composeContactDetail("contact", e);
46904      }
46905      if (element.hasDescriptionElement()) {
46906        composeMarkdown("description", element.getDescriptionElement());
46907      }
46908      if (element.hasUseContext()) { 
46909        for (UsageContext e : element.getUseContext()) 
46910          composeUsageContext("useContext", e);
46911      }
46912      if (element.hasJurisdiction()) { 
46913        for (CodeableConcept e : element.getJurisdiction()) 
46914          composeCodeableConcept("jurisdiction", e);
46915      }
46916      if (element.hasPurposeElement()) {
46917        composeMarkdown("purpose", element.getPurposeElement());
46918      }
46919      if (element.hasCopyrightElement()) {
46920        composeMarkdown("copyright", element.getCopyrightElement());
46921      }
46922      if (element.hasOrigin()) { 
46923        for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
46924          composeTestScriptTestScriptOriginComponent("origin", e);
46925      }
46926      if (element.hasDestination()) { 
46927        for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
46928          composeTestScriptTestScriptDestinationComponent("destination", e);
46929      }
46930      if (element.hasMetadata()) {
46931        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
46932      }
46933      if (element.hasFixture()) { 
46934        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
46935          composeTestScriptTestScriptFixtureComponent("fixture", e);
46936      }
46937      if (element.hasProfile()) { 
46938        for (Reference e : element.getProfile()) 
46939          composeReference("profile", e);
46940      }
46941      if (element.hasVariable()) { 
46942        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
46943          composeTestScriptTestScriptVariableComponent("variable", e);
46944      }
46945      if (element.hasRule()) { 
46946        for (TestScript.TestScriptRuleComponent e : element.getRule()) 
46947          composeTestScriptTestScriptRuleComponent("rule", e);
46948      }
46949      if (element.hasRuleset()) { 
46950        for (TestScript.TestScriptRulesetComponent e : element.getRuleset()) 
46951          composeTestScriptTestScriptRulesetComponent("ruleset", e);
46952      }
46953      if (element.hasSetup()) {
46954        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
46955      }
46956      if (element.hasTest()) { 
46957        for (TestScript.TestScriptTestComponent e : element.getTest()) 
46958          composeTestScriptTestScriptTestComponent("test", e);
46959      }
46960      if (element.hasTeardown()) {
46961        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
46962      }
46963  }
46964
46965  protected void composeTestScriptTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
46966    if (element != null) {
46967      composeElementAttributes(element);
46968      xml.enter(FHIR_NS, name);
46969      composeTestScriptTestScriptOriginComponentElements(element);
46970      composeElementClose(element);
46971      xml.exit(FHIR_NS, name);
46972    }
46973  }
46974
46975  protected void composeTestScriptTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
46976      composeBackboneElementElements(element);
46977      if (element.hasIndexElement()) {
46978        composeInteger("index", element.getIndexElement());
46979      }
46980      if (element.hasProfile()) {
46981        composeCoding("profile", element.getProfile());
46982      }
46983  }
46984
46985  protected void composeTestScriptTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
46986    if (element != null) {
46987      composeElementAttributes(element);
46988      xml.enter(FHIR_NS, name);
46989      composeTestScriptTestScriptDestinationComponentElements(element);
46990      composeElementClose(element);
46991      xml.exit(FHIR_NS, name);
46992    }
46993  }
46994
46995  protected void composeTestScriptTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
46996      composeBackboneElementElements(element);
46997      if (element.hasIndexElement()) {
46998        composeInteger("index", element.getIndexElement());
46999      }
47000      if (element.hasProfile()) {
47001        composeCoding("profile", element.getProfile());
47002      }
47003  }
47004
47005  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
47006    if (element != null) {
47007      composeElementAttributes(element);
47008      xml.enter(FHIR_NS, name);
47009      composeTestScriptTestScriptMetadataComponentElements(element);
47010      composeElementClose(element);
47011      xml.exit(FHIR_NS, name);
47012    }
47013  }
47014
47015  protected void composeTestScriptTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
47016      composeBackboneElementElements(element);
47017      if (element.hasLink()) { 
47018        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
47019          composeTestScriptTestScriptMetadataLinkComponent("link", e);
47020      }
47021      if (element.hasCapability()) { 
47022        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
47023          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
47024      }
47025  }
47026
47027  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
47028    if (element != null) {
47029      composeElementAttributes(element);
47030      xml.enter(FHIR_NS, name);
47031      composeTestScriptTestScriptMetadataLinkComponentElements(element);
47032      composeElementClose(element);
47033      xml.exit(FHIR_NS, name);
47034    }
47035  }
47036
47037  protected void composeTestScriptTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
47038      composeBackboneElementElements(element);
47039      if (element.hasUrlElement()) {
47040        composeUri("url", element.getUrlElement());
47041      }
47042      if (element.hasDescriptionElement()) {
47043        composeString("description", element.getDescriptionElement());
47044      }
47045  }
47046
47047  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
47048    if (element != null) {
47049      composeElementAttributes(element);
47050      xml.enter(FHIR_NS, name);
47051      composeTestScriptTestScriptMetadataCapabilityComponentElements(element);
47052      composeElementClose(element);
47053      xml.exit(FHIR_NS, name);
47054    }
47055  }
47056
47057  protected void composeTestScriptTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
47058      composeBackboneElementElements(element);
47059      if (element.hasRequiredElement()) {
47060        composeBoolean("required", element.getRequiredElement());
47061      }
47062      if (element.hasValidatedElement()) {
47063        composeBoolean("validated", element.getValidatedElement());
47064      }
47065      if (element.hasDescriptionElement()) {
47066        composeString("description", element.getDescriptionElement());
47067      }
47068      if (element.hasOrigin()) { 
47069        for (IntegerType e : element.getOrigin()) 
47070          composeInteger("origin", e);
47071      }
47072      if (element.hasDestinationElement()) {
47073        composeInteger("destination", element.getDestinationElement());
47074      }
47075      if (element.hasLink()) { 
47076        for (UriType e : element.getLink()) 
47077          composeUri("link", e);
47078      }
47079      if (element.hasCapabilitiesElement()) {
47080        composeCanonical("capabilities", element.getCapabilitiesElement());
47081      }
47082  }
47083
47084  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
47085    if (element != null) {
47086      composeElementAttributes(element);
47087      xml.enter(FHIR_NS, name);
47088      composeTestScriptTestScriptFixtureComponentElements(element);
47089      composeElementClose(element);
47090      xml.exit(FHIR_NS, name);
47091    }
47092  }
47093
47094  protected void composeTestScriptTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
47095      composeBackboneElementElements(element);
47096      if (element.hasAutocreateElement()) {
47097        composeBoolean("autocreate", element.getAutocreateElement());
47098      }
47099      if (element.hasAutodeleteElement()) {
47100        composeBoolean("autodelete", element.getAutodeleteElement());
47101      }
47102      if (element.hasResource()) {
47103        composeReference("resource", element.getResource());
47104      }
47105  }
47106
47107  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
47108    if (element != null) {
47109      composeElementAttributes(element);
47110      xml.enter(FHIR_NS, name);
47111      composeTestScriptTestScriptVariableComponentElements(element);
47112      composeElementClose(element);
47113      xml.exit(FHIR_NS, name);
47114    }
47115  }
47116
47117  protected void composeTestScriptTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
47118      composeBackboneElementElements(element);
47119      if (element.hasNameElement()) {
47120        composeString("name", element.getNameElement());
47121      }
47122      if (element.hasDefaultValueElement()) {
47123        composeString("defaultValue", element.getDefaultValueElement());
47124      }
47125      if (element.hasDescriptionElement()) {
47126        composeString("description", element.getDescriptionElement());
47127      }
47128      if (element.hasExpressionElement()) {
47129        composeString("expression", element.getExpressionElement());
47130      }
47131      if (element.hasHeaderFieldElement()) {
47132        composeString("headerField", element.getHeaderFieldElement());
47133      }
47134      if (element.hasHintElement()) {
47135        composeString("hint", element.getHintElement());
47136      }
47137      if (element.hasPathElement()) {
47138        composeString("path", element.getPathElement());
47139      }
47140      if (element.hasSourceIdElement()) {
47141        composeId("sourceId", element.getSourceIdElement());
47142      }
47143  }
47144
47145  protected void composeTestScriptTestScriptRuleComponent(String name, TestScript.TestScriptRuleComponent element) throws IOException {
47146    if (element != null) {
47147      composeElementAttributes(element);
47148      xml.enter(FHIR_NS, name);
47149      composeTestScriptTestScriptRuleComponentElements(element);
47150      composeElementClose(element);
47151      xml.exit(FHIR_NS, name);
47152    }
47153  }
47154
47155  protected void composeTestScriptTestScriptRuleComponentElements(TestScript.TestScriptRuleComponent element) throws IOException {
47156      composeBackboneElementElements(element);
47157      if (element.hasResource()) {
47158        composeReference("resource", element.getResource());
47159      }
47160      if (element.hasParam()) { 
47161        for (TestScript.RuleParamComponent e : element.getParam()) 
47162          composeTestScriptRuleParamComponent("param", e);
47163      }
47164  }
47165
47166  protected void composeTestScriptRuleParamComponent(String name, TestScript.RuleParamComponent element) throws IOException {
47167    if (element != null) {
47168      composeElementAttributes(element);
47169      xml.enter(FHIR_NS, name);
47170      composeTestScriptRuleParamComponentElements(element);
47171      composeElementClose(element);
47172      xml.exit(FHIR_NS, name);
47173    }
47174  }
47175
47176  protected void composeTestScriptRuleParamComponentElements(TestScript.RuleParamComponent element) throws IOException {
47177      composeBackboneElementElements(element);
47178      if (element.hasNameElement()) {
47179        composeString("name", element.getNameElement());
47180      }
47181      if (element.hasValueElement()) {
47182        composeString("value", element.getValueElement());
47183      }
47184  }
47185
47186  protected void composeTestScriptTestScriptRulesetComponent(String name, TestScript.TestScriptRulesetComponent element) throws IOException {
47187    if (element != null) {
47188      composeElementAttributes(element);
47189      xml.enter(FHIR_NS, name);
47190      composeTestScriptTestScriptRulesetComponentElements(element);
47191      composeElementClose(element);
47192      xml.exit(FHIR_NS, name);
47193    }
47194  }
47195
47196  protected void composeTestScriptTestScriptRulesetComponentElements(TestScript.TestScriptRulesetComponent element) throws IOException {
47197      composeBackboneElementElements(element);
47198      if (element.hasResource()) {
47199        composeReference("resource", element.getResource());
47200      }
47201      if (element.hasRule()) { 
47202        for (TestScript.RulesetRuleComponent e : element.getRule()) 
47203          composeTestScriptRulesetRuleComponent("rule", e);
47204      }
47205  }
47206
47207  protected void composeTestScriptRulesetRuleComponent(String name, TestScript.RulesetRuleComponent element) throws IOException {
47208    if (element != null) {
47209      composeElementAttributes(element);
47210      xml.enter(FHIR_NS, name);
47211      composeTestScriptRulesetRuleComponentElements(element);
47212      composeElementClose(element);
47213      xml.exit(FHIR_NS, name);
47214    }
47215  }
47216
47217  protected void composeTestScriptRulesetRuleComponentElements(TestScript.RulesetRuleComponent element) throws IOException {
47218      composeBackboneElementElements(element);
47219      if (element.hasRuleIdElement()) {
47220        composeId("ruleId", element.getRuleIdElement());
47221      }
47222      if (element.hasParam()) { 
47223        for (TestScript.RulesetRuleParamComponent e : element.getParam()) 
47224          composeTestScriptRulesetRuleParamComponent("param", e);
47225      }
47226  }
47227
47228  protected void composeTestScriptRulesetRuleParamComponent(String name, TestScript.RulesetRuleParamComponent element) throws IOException {
47229    if (element != null) {
47230      composeElementAttributes(element);
47231      xml.enter(FHIR_NS, name);
47232      composeTestScriptRulesetRuleParamComponentElements(element);
47233      composeElementClose(element);
47234      xml.exit(FHIR_NS, name);
47235    }
47236  }
47237
47238  protected void composeTestScriptRulesetRuleParamComponentElements(TestScript.RulesetRuleParamComponent element) throws IOException {
47239      composeBackboneElementElements(element);
47240      if (element.hasNameElement()) {
47241        composeString("name", element.getNameElement());
47242      }
47243      if (element.hasValueElement()) {
47244        composeString("value", element.getValueElement());
47245      }
47246  }
47247
47248  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
47249    if (element != null) {
47250      composeElementAttributes(element);
47251      xml.enter(FHIR_NS, name);
47252      composeTestScriptTestScriptSetupComponentElements(element);
47253      composeElementClose(element);
47254      xml.exit(FHIR_NS, name);
47255    }
47256  }
47257
47258  protected void composeTestScriptTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
47259      composeBackboneElementElements(element);
47260      if (element.hasAction()) { 
47261        for (TestScript.SetupActionComponent e : element.getAction()) 
47262          composeTestScriptSetupActionComponent("action", e);
47263      }
47264  }
47265
47266  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
47267    if (element != null) {
47268      composeElementAttributes(element);
47269      xml.enter(FHIR_NS, name);
47270      composeTestScriptSetupActionComponentElements(element);
47271      composeElementClose(element);
47272      xml.exit(FHIR_NS, name);
47273    }
47274  }
47275
47276  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
47277      composeBackboneElementElements(element);
47278      if (element.hasOperation()) {
47279        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
47280      }
47281      if (element.hasAssert()) {
47282        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
47283      }
47284  }
47285
47286  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
47287    if (element != null) {
47288      composeElementAttributes(element);
47289      xml.enter(FHIR_NS, name);
47290      composeTestScriptSetupActionOperationComponentElements(element);
47291      composeElementClose(element);
47292      xml.exit(FHIR_NS, name);
47293    }
47294  }
47295
47296  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
47297      composeBackboneElementElements(element);
47298      if (element.hasType()) {
47299        composeCoding("type", element.getType());
47300      }
47301      if (element.hasResourceElement()) {
47302        composeCode("resource", element.getResourceElement());
47303      }
47304      if (element.hasLabelElement()) {
47305        composeString("label", element.getLabelElement());
47306      }
47307      if (element.hasDescriptionElement()) {
47308        composeString("description", element.getDescriptionElement());
47309      }
47310      if (element.hasAcceptElement()) {
47311        composeCode("accept", element.getAcceptElement());
47312      }
47313      if (element.hasContentTypeElement()) {
47314        composeCode("contentType", element.getContentTypeElement());
47315      }
47316      if (element.hasDestinationElement()) {
47317        composeInteger("destination", element.getDestinationElement());
47318      }
47319      if (element.hasEncodeRequestUrlElement()) {
47320        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
47321      }
47322      if (element.hasOriginElement()) {
47323        composeInteger("origin", element.getOriginElement());
47324      }
47325      if (element.hasParamsElement()) {
47326        composeString("params", element.getParamsElement());
47327      }
47328      if (element.hasRequestHeader()) { 
47329        for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
47330          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
47331      }
47332      if (element.hasRequestIdElement()) {
47333        composeId("requestId", element.getRequestIdElement());
47334      }
47335      if (element.hasResponseIdElement()) {
47336        composeId("responseId", element.getResponseIdElement());
47337      }
47338      if (element.hasSourceIdElement()) {
47339        composeId("sourceId", element.getSourceIdElement());
47340      }
47341      if (element.hasTargetIdElement()) {
47342        composeId("targetId", element.getTargetIdElement());
47343      }
47344      if (element.hasUrlElement()) {
47345        composeString("url", element.getUrlElement());
47346      }
47347  }
47348
47349  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
47350    if (element != null) {
47351      composeElementAttributes(element);
47352      xml.enter(FHIR_NS, name);
47353      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
47354      composeElementClose(element);
47355      xml.exit(FHIR_NS, name);
47356    }
47357  }
47358
47359  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
47360      composeBackboneElementElements(element);
47361      if (element.hasFieldElement()) {
47362        composeString("field", element.getFieldElement());
47363      }
47364      if (element.hasValueElement()) {
47365        composeString("value", element.getValueElement());
47366      }
47367  }
47368
47369  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
47370    if (element != null) {
47371      composeElementAttributes(element);
47372      xml.enter(FHIR_NS, name);
47373      composeTestScriptSetupActionAssertComponentElements(element);
47374      composeElementClose(element);
47375      xml.exit(FHIR_NS, name);
47376    }
47377  }
47378
47379  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
47380      composeBackboneElementElements(element);
47381      if (element.hasLabelElement()) {
47382        composeString("label", element.getLabelElement());
47383      }
47384      if (element.hasDescriptionElement()) {
47385        composeString("description", element.getDescriptionElement());
47386      }
47387      if (element.hasDirectionElement())
47388        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
47389      if (element.hasCompareToSourceIdElement()) {
47390        composeString("compareToSourceId", element.getCompareToSourceIdElement());
47391      }
47392      if (element.hasCompareToSourceExpressionElement()) {
47393        composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
47394      }
47395      if (element.hasCompareToSourcePathElement()) {
47396        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
47397      }
47398      if (element.hasContentTypeElement()) {
47399        composeCode("contentType", element.getContentTypeElement());
47400      }
47401      if (element.hasExpressionElement()) {
47402        composeString("expression", element.getExpressionElement());
47403      }
47404      if (element.hasHeaderFieldElement()) {
47405        composeString("headerField", element.getHeaderFieldElement());
47406      }
47407      if (element.hasMinimumIdElement()) {
47408        composeString("minimumId", element.getMinimumIdElement());
47409      }
47410      if (element.hasNavigationLinksElement()) {
47411        composeBoolean("navigationLinks", element.getNavigationLinksElement());
47412      }
47413      if (element.hasOperatorElement())
47414        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
47415      if (element.hasPathElement()) {
47416        composeString("path", element.getPathElement());
47417      }
47418      if (element.hasRequestMethodElement())
47419        composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
47420      if (element.hasRequestURLElement()) {
47421        composeString("requestURL", element.getRequestURLElement());
47422      }
47423      if (element.hasResourceElement()) {
47424        composeCode("resource", element.getResourceElement());
47425      }
47426      if (element.hasResponseElement())
47427        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
47428      if (element.hasResponseCodeElement()) {
47429        composeString("responseCode", element.getResponseCodeElement());
47430      }
47431      if (element.hasRule()) {
47432        composeTestScriptActionAssertRuleComponent("rule", element.getRule());
47433      }
47434      if (element.hasRuleset()) {
47435        composeTestScriptActionAssertRulesetComponent("ruleset", element.getRuleset());
47436      }
47437      if (element.hasSourceIdElement()) {
47438        composeId("sourceId", element.getSourceIdElement());
47439      }
47440      if (element.hasValidateProfileIdElement()) {
47441        composeId("validateProfileId", element.getValidateProfileIdElement());
47442      }
47443      if (element.hasValueElement()) {
47444        composeString("value", element.getValueElement());
47445      }
47446      if (element.hasWarningOnlyElement()) {
47447        composeBoolean("warningOnly", element.getWarningOnlyElement());
47448      }
47449  }
47450
47451  protected void composeTestScriptActionAssertRuleComponent(String name, TestScript.ActionAssertRuleComponent element) throws IOException {
47452    if (element != null) {
47453      composeElementAttributes(element);
47454      xml.enter(FHIR_NS, name);
47455      composeTestScriptActionAssertRuleComponentElements(element);
47456      composeElementClose(element);
47457      xml.exit(FHIR_NS, name);
47458    }
47459  }
47460
47461  protected void composeTestScriptActionAssertRuleComponentElements(TestScript.ActionAssertRuleComponent element) throws IOException {
47462      composeBackboneElementElements(element);
47463      if (element.hasRuleIdElement()) {
47464        composeId("ruleId", element.getRuleIdElement());
47465      }
47466      if (element.hasParam()) { 
47467        for (TestScript.ActionAssertRuleParamComponent e : element.getParam()) 
47468          composeTestScriptActionAssertRuleParamComponent("param", e);
47469      }
47470  }
47471
47472  protected void composeTestScriptActionAssertRuleParamComponent(String name, TestScript.ActionAssertRuleParamComponent element) throws IOException {
47473    if (element != null) {
47474      composeElementAttributes(element);
47475      xml.enter(FHIR_NS, name);
47476      composeTestScriptActionAssertRuleParamComponentElements(element);
47477      composeElementClose(element);
47478      xml.exit(FHIR_NS, name);
47479    }
47480  }
47481
47482  protected void composeTestScriptActionAssertRuleParamComponentElements(TestScript.ActionAssertRuleParamComponent element) throws IOException {
47483      composeBackboneElementElements(element);
47484      if (element.hasNameElement()) {
47485        composeString("name", element.getNameElement());
47486      }
47487      if (element.hasValueElement()) {
47488        composeString("value", element.getValueElement());
47489      }
47490  }
47491
47492  protected void composeTestScriptActionAssertRulesetComponent(String name, TestScript.ActionAssertRulesetComponent element) throws IOException {
47493    if (element != null) {
47494      composeElementAttributes(element);
47495      xml.enter(FHIR_NS, name);
47496      composeTestScriptActionAssertRulesetComponentElements(element);
47497      composeElementClose(element);
47498      xml.exit(FHIR_NS, name);
47499    }
47500  }
47501
47502  protected void composeTestScriptActionAssertRulesetComponentElements(TestScript.ActionAssertRulesetComponent element) throws IOException {
47503      composeBackboneElementElements(element);
47504      if (element.hasRulesetIdElement()) {
47505        composeId("rulesetId", element.getRulesetIdElement());
47506      }
47507      if (element.hasRule()) { 
47508        for (TestScript.ActionAssertRulesetRuleComponent e : element.getRule()) 
47509          composeTestScriptActionAssertRulesetRuleComponent("rule", e);
47510      }
47511  }
47512
47513  protected void composeTestScriptActionAssertRulesetRuleComponent(String name, TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
47514    if (element != null) {
47515      composeElementAttributes(element);
47516      xml.enter(FHIR_NS, name);
47517      composeTestScriptActionAssertRulesetRuleComponentElements(element);
47518      composeElementClose(element);
47519      xml.exit(FHIR_NS, name);
47520    }
47521  }
47522
47523  protected void composeTestScriptActionAssertRulesetRuleComponentElements(TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
47524      composeBackboneElementElements(element);
47525      if (element.hasRuleIdElement()) {
47526        composeId("ruleId", element.getRuleIdElement());
47527      }
47528      if (element.hasParam()) { 
47529        for (TestScript.ActionAssertRulesetRuleParamComponent e : element.getParam()) 
47530          composeTestScriptActionAssertRulesetRuleParamComponent("param", e);
47531      }
47532  }
47533
47534  protected void composeTestScriptActionAssertRulesetRuleParamComponent(String name, TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
47535    if (element != null) {
47536      composeElementAttributes(element);
47537      xml.enter(FHIR_NS, name);
47538      composeTestScriptActionAssertRulesetRuleParamComponentElements(element);
47539      composeElementClose(element);
47540      xml.exit(FHIR_NS, name);
47541    }
47542  }
47543
47544  protected void composeTestScriptActionAssertRulesetRuleParamComponentElements(TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
47545      composeBackboneElementElements(element);
47546      if (element.hasNameElement()) {
47547        composeString("name", element.getNameElement());
47548      }
47549      if (element.hasValueElement()) {
47550        composeString("value", element.getValueElement());
47551      }
47552  }
47553
47554  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
47555    if (element != null) {
47556      composeElementAttributes(element);
47557      xml.enter(FHIR_NS, name);
47558      composeTestScriptTestScriptTestComponentElements(element);
47559      composeElementClose(element);
47560      xml.exit(FHIR_NS, name);
47561    }
47562  }
47563
47564  protected void composeTestScriptTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
47565      composeBackboneElementElements(element);
47566      if (element.hasNameElement()) {
47567        composeString("name", element.getNameElement());
47568      }
47569      if (element.hasDescriptionElement()) {
47570        composeString("description", element.getDescriptionElement());
47571      }
47572      if (element.hasAction()) { 
47573        for (TestScript.TestActionComponent e : element.getAction()) 
47574          composeTestScriptTestActionComponent("action", e);
47575      }
47576  }
47577
47578  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
47579    if (element != null) {
47580      composeElementAttributes(element);
47581      xml.enter(FHIR_NS, name);
47582      composeTestScriptTestActionComponentElements(element);
47583      composeElementClose(element);
47584      xml.exit(FHIR_NS, name);
47585    }
47586  }
47587
47588  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
47589      composeBackboneElementElements(element);
47590      if (element.hasOperation()) {
47591        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
47592      }
47593      if (element.hasAssert()) {
47594        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
47595      }
47596  }
47597
47598  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
47599    if (element != null) {
47600      composeElementAttributes(element);
47601      xml.enter(FHIR_NS, name);
47602      composeTestScriptTestScriptTeardownComponentElements(element);
47603      composeElementClose(element);
47604      xml.exit(FHIR_NS, name);
47605    }
47606  }
47607
47608  protected void composeTestScriptTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
47609      composeBackboneElementElements(element);
47610      if (element.hasAction()) { 
47611        for (TestScript.TeardownActionComponent e : element.getAction()) 
47612          composeTestScriptTeardownActionComponent("action", e);
47613      }
47614  }
47615
47616  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
47617    if (element != null) {
47618      composeElementAttributes(element);
47619      xml.enter(FHIR_NS, name);
47620      composeTestScriptTeardownActionComponentElements(element);
47621      composeElementClose(element);
47622      xml.exit(FHIR_NS, name);
47623    }
47624  }
47625
47626  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
47627      composeBackboneElementElements(element);
47628      if (element.hasOperation()) {
47629        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
47630      }
47631  }
47632
47633  protected void composeUserSession(String name, UserSession element) throws IOException {
47634    if (element != null) {
47635      composeDomainResourceAttributes(element);
47636      xml.enter(FHIR_NS, name);
47637      composeUserSessionElements(element);
47638      composeElementClose(element);
47639      xml.exit(FHIR_NS, name);
47640    }
47641  }
47642
47643  protected void composeUserSessionElements(UserSession element) throws IOException {
47644      composeDomainResourceElements(element);
47645      if (element.hasIdentifier()) {
47646        composeIdentifier("identifier", element.getIdentifier());
47647      }
47648      if (element.hasUser()) {
47649        composeReference("user", element.getUser());
47650      }
47651      if (element.hasStatus()) {
47652        composeUserSessionUserSessionStatusComponent("status", element.getStatus());
47653      }
47654      if (element.hasWorkstation()) {
47655        composeIdentifier("workstation", element.getWorkstation());
47656      }
47657      if (element.hasFocus()) { 
47658        for (Reference e : element.getFocus()) 
47659          composeReference("focus", e);
47660      }
47661      if (element.hasCreatedElement()) {
47662        composeInstant("created", element.getCreatedElement());
47663      }
47664      if (element.hasExpiresElement()) {
47665        composeInstant("expires", element.getExpiresElement());
47666      }
47667      if (element.hasContext()) { 
47668        for (UserSession.UserSessionContextComponent e : element.getContext()) 
47669          composeUserSessionUserSessionContextComponent("context", e);
47670      }
47671  }
47672
47673  protected void composeUserSessionUserSessionStatusComponent(String name, UserSession.UserSessionStatusComponent element) throws IOException {
47674    if (element != null) {
47675      composeElementAttributes(element);
47676      xml.enter(FHIR_NS, name);
47677      composeUserSessionUserSessionStatusComponentElements(element);
47678      composeElementClose(element);
47679      xml.exit(FHIR_NS, name);
47680    }
47681  }
47682
47683  protected void composeUserSessionUserSessionStatusComponentElements(UserSession.UserSessionStatusComponent element) throws IOException {
47684      composeBackboneElementElements(element);
47685      if (element.hasCodeElement())
47686        composeEnumeration("code", element.getCodeElement(), new UserSession.UserSessionStatusEnumFactory());
47687      if (element.hasSourceElement())
47688        composeEnumeration("source", element.getSourceElement(), new UserSession.UserSessionStatusSourceEnumFactory());
47689  }
47690
47691  protected void composeUserSessionUserSessionContextComponent(String name, UserSession.UserSessionContextComponent element) throws IOException {
47692    if (element != null) {
47693      composeElementAttributes(element);
47694      xml.enter(FHIR_NS, name);
47695      composeUserSessionUserSessionContextComponentElements(element);
47696      composeElementClose(element);
47697      xml.exit(FHIR_NS, name);
47698    }
47699  }
47700
47701  protected void composeUserSessionUserSessionContextComponentElements(UserSession.UserSessionContextComponent element) throws IOException {
47702      composeBackboneElementElements(element);
47703      if (element.hasTypeElement()) {
47704        composeString("type", element.getTypeElement());
47705      }
47706      if (element.hasValue()) {
47707        composeType("value", element.getValue());
47708      }  }
47709
47710  protected void composeValueSet(String name, ValueSet element) throws IOException {
47711    if (element != null) {
47712      composeDomainResourceAttributes(element);
47713      xml.enter(FHIR_NS, name);
47714      composeValueSetElements(element);
47715      composeElementClose(element);
47716      xml.exit(FHIR_NS, name);
47717    }
47718  }
47719
47720  protected void composeValueSetElements(ValueSet element) throws IOException {
47721      composeDomainResourceElements(element);
47722      if (element.hasUrlElement()) {
47723        composeUri("url", element.getUrlElement());
47724      }
47725      if (element.hasIdentifier()) { 
47726        for (Identifier e : element.getIdentifier()) 
47727          composeIdentifier("identifier", e);
47728      }
47729      if (element.hasVersionElement()) {
47730        composeString("version", element.getVersionElement());
47731      }
47732      if (element.hasNameElement()) {
47733        composeString("name", element.getNameElement());
47734      }
47735      if (element.hasTitleElement()) {
47736        composeString("title", element.getTitleElement());
47737      }
47738      if (element.hasStatusElement())
47739        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
47740      if (element.hasExperimentalElement()) {
47741        composeBoolean("experimental", element.getExperimentalElement());
47742      }
47743      if (element.hasDateElement()) {
47744        composeDateTime("date", element.getDateElement());
47745      }
47746      if (element.hasPublisherElement()) {
47747        composeString("publisher", element.getPublisherElement());
47748      }
47749      if (element.hasContact()) { 
47750        for (ContactDetail e : element.getContact()) 
47751          composeContactDetail("contact", e);
47752      }
47753      if (element.hasDescriptionElement()) {
47754        composeMarkdown("description", element.getDescriptionElement());
47755      }
47756      if (element.hasUseContext()) { 
47757        for (UsageContext e : element.getUseContext()) 
47758          composeUsageContext("useContext", e);
47759      }
47760      if (element.hasJurisdiction()) { 
47761        for (CodeableConcept e : element.getJurisdiction()) 
47762          composeCodeableConcept("jurisdiction", e);
47763      }
47764      if (element.hasImmutableElement()) {
47765        composeBoolean("immutable", element.getImmutableElement());
47766      }
47767      if (element.hasPurposeElement()) {
47768        composeMarkdown("purpose", element.getPurposeElement());
47769      }
47770      if (element.hasCopyrightElement()) {
47771        composeMarkdown("copyright", element.getCopyrightElement());
47772      }
47773      if (element.hasCompose()) {
47774        composeValueSetValueSetComposeComponent("compose", element.getCompose());
47775      }
47776      if (element.hasExpansion()) {
47777        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
47778      }
47779  }
47780
47781  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
47782    if (element != null) {
47783      composeElementAttributes(element);
47784      xml.enter(FHIR_NS, name);
47785      composeValueSetValueSetComposeComponentElements(element);
47786      composeElementClose(element);
47787      xml.exit(FHIR_NS, name);
47788    }
47789  }
47790
47791  protected void composeValueSetValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
47792      composeBackboneElementElements(element);
47793      if (element.hasLockedDateElement()) {
47794        composeDate("lockedDate", element.getLockedDateElement());
47795      }
47796      if (element.hasInactiveElement()) {
47797        composeBoolean("inactive", element.getInactiveElement());
47798      }
47799      if (element.hasInclude()) { 
47800        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
47801          composeValueSetConceptSetComponent("include", e);
47802      }
47803      if (element.hasExclude()) { 
47804        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
47805          composeValueSetConceptSetComponent("exclude", e);
47806      }
47807  }
47808
47809  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
47810    if (element != null) {
47811      composeElementAttributes(element);
47812      xml.enter(FHIR_NS, name);
47813      composeValueSetConceptSetComponentElements(element);
47814      composeElementClose(element);
47815      xml.exit(FHIR_NS, name);
47816    }
47817  }
47818
47819  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
47820      composeBackboneElementElements(element);
47821      if (element.hasSystemElement()) {
47822        composeUri("system", element.getSystemElement());
47823      }
47824      if (element.hasVersionElement()) {
47825        composeString("version", element.getVersionElement());
47826      }
47827      if (element.hasConcept()) { 
47828        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
47829          composeValueSetConceptReferenceComponent("concept", e);
47830      }
47831      if (element.hasFilter()) { 
47832        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
47833          composeValueSetConceptSetFilterComponent("filter", e);
47834      }
47835      if (element.hasValueSet()) { 
47836        for (CanonicalType e : element.getValueSet()) 
47837          composeCanonical("valueSet", e);
47838      }
47839  }
47840
47841  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
47842    if (element != null) {
47843      composeElementAttributes(element);
47844      xml.enter(FHIR_NS, name);
47845      composeValueSetConceptReferenceComponentElements(element);
47846      composeElementClose(element);
47847      xml.exit(FHIR_NS, name);
47848    }
47849  }
47850
47851  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
47852      composeBackboneElementElements(element);
47853      if (element.hasCodeElement()) {
47854        composeCode("code", element.getCodeElement());
47855      }
47856      if (element.hasDisplayElement()) {
47857        composeString("display", element.getDisplayElement());
47858      }
47859      if (element.hasDesignation()) { 
47860        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
47861          composeValueSetConceptReferenceDesignationComponent("designation", e);
47862      }
47863  }
47864
47865  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
47866    if (element != null) {
47867      composeElementAttributes(element);
47868      xml.enter(FHIR_NS, name);
47869      composeValueSetConceptReferenceDesignationComponentElements(element);
47870      composeElementClose(element);
47871      xml.exit(FHIR_NS, name);
47872    }
47873  }
47874
47875  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
47876      composeBackboneElementElements(element);
47877      if (element.hasLanguageElement()) {
47878        composeCode("language", element.getLanguageElement());
47879      }
47880      if (element.hasUse()) {
47881        composeCoding("use", element.getUse());
47882      }
47883      if (element.hasValueElement()) {
47884        composeString("value", element.getValueElement());
47885      }
47886  }
47887
47888  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
47889    if (element != null) {
47890      composeElementAttributes(element);
47891      xml.enter(FHIR_NS, name);
47892      composeValueSetConceptSetFilterComponentElements(element);
47893      composeElementClose(element);
47894      xml.exit(FHIR_NS, name);
47895    }
47896  }
47897
47898  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
47899      composeBackboneElementElements(element);
47900      if (element.hasPropertyElement()) {
47901        composeCode("property", element.getPropertyElement());
47902      }
47903      if (element.hasOpElement())
47904        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
47905      if (element.hasValueElement()) {
47906        composeString("value", element.getValueElement());
47907      }
47908  }
47909
47910  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
47911    if (element != null) {
47912      composeElementAttributes(element);
47913      xml.enter(FHIR_NS, name);
47914      composeValueSetValueSetExpansionComponentElements(element);
47915      composeElementClose(element);
47916      xml.exit(FHIR_NS, name);
47917    }
47918  }
47919
47920  protected void composeValueSetValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
47921      composeBackboneElementElements(element);
47922      if (element.hasIdentifierElement()) {
47923        composeUri("identifier", element.getIdentifierElement());
47924      }
47925      if (element.hasTimestampElement()) {
47926        composeDateTime("timestamp", element.getTimestampElement());
47927      }
47928      if (element.hasTotalElement()) {
47929        composeInteger("total", element.getTotalElement());
47930      }
47931      if (element.hasOffsetElement()) {
47932        composeInteger("offset", element.getOffsetElement());
47933      }
47934      if (element.hasParameter()) { 
47935        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
47936          composeValueSetValueSetExpansionParameterComponent("parameter", e);
47937      }
47938      if (element.hasContains()) { 
47939        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
47940          composeValueSetValueSetExpansionContainsComponent("contains", e);
47941      }
47942  }
47943
47944  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
47945    if (element != null) {
47946      composeElementAttributes(element);
47947      xml.enter(FHIR_NS, name);
47948      composeValueSetValueSetExpansionParameterComponentElements(element);
47949      composeElementClose(element);
47950      xml.exit(FHIR_NS, name);
47951    }
47952  }
47953
47954  protected void composeValueSetValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
47955      composeBackboneElementElements(element);
47956      if (element.hasNameElement()) {
47957        composeString("name", element.getNameElement());
47958      }
47959      if (element.hasValue()) {
47960        composeType("value", element.getValue());
47961      }  }
47962
47963  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
47964    if (element != null) {
47965      composeElementAttributes(element);
47966      xml.enter(FHIR_NS, name);
47967      composeValueSetValueSetExpansionContainsComponentElements(element);
47968      composeElementClose(element);
47969      xml.exit(FHIR_NS, name);
47970    }
47971  }
47972
47973  protected void composeValueSetValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
47974      composeBackboneElementElements(element);
47975      if (element.hasSystemElement()) {
47976        composeUri("system", element.getSystemElement());
47977      }
47978      if (element.hasAbstractElement()) {
47979        composeBoolean("abstract", element.getAbstractElement());
47980      }
47981      if (element.hasInactiveElement()) {
47982        composeBoolean("inactive", element.getInactiveElement());
47983      }
47984      if (element.hasVersionElement()) {
47985        composeString("version", element.getVersionElement());
47986      }
47987      if (element.hasCodeElement()) {
47988        composeCode("code", element.getCodeElement());
47989      }
47990      if (element.hasDisplayElement()) {
47991        composeString("display", element.getDisplayElement());
47992      }
47993      if (element.hasDesignation()) { 
47994        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
47995          composeValueSetConceptReferenceDesignationComponent("designation", e);
47996      }
47997      if (element.hasContains()) { 
47998        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
47999          composeValueSetValueSetExpansionContainsComponent("contains", e);
48000      }
48001  }
48002
48003  protected void composeVerificationResult(String name, VerificationResult element) throws IOException {
48004    if (element != null) {
48005      composeDomainResourceAttributes(element);
48006      xml.enter(FHIR_NS, name);
48007      composeVerificationResultElements(element);
48008      composeElementClose(element);
48009      xml.exit(FHIR_NS, name);
48010    }
48011  }
48012
48013  protected void composeVerificationResultElements(VerificationResult element) throws IOException {
48014      composeDomainResourceElements(element);
48015      if (element.hasTarget()) { 
48016        for (Reference e : element.getTarget()) 
48017          composeReference("target", e);
48018      }
48019      if (element.hasTargetLocation()) { 
48020        for (StringType e : element.getTargetLocation()) 
48021          composeString("targetLocation", e);
48022      }
48023      if (element.hasNeed()) {
48024        composeCodeableConcept("need", element.getNeed());
48025      }
48026      if (element.hasStatusElement())
48027        composeEnumeration("status", element.getStatusElement(), new VerificationResult.StatusEnumFactory());
48028      if (element.hasStatusDateElement()) {
48029        composeDateTime("statusDate", element.getStatusDateElement());
48030      }
48031      if (element.hasValidationType()) {
48032        composeCodeableConcept("validationType", element.getValidationType());
48033      }
48034      if (element.hasValidationProcess()) { 
48035        for (CodeableConcept e : element.getValidationProcess()) 
48036          composeCodeableConcept("validationProcess", e);
48037      }
48038      if (element.hasFrequency()) {
48039        composeTiming("frequency", element.getFrequency());
48040      }
48041      if (element.hasLastPerformedElement()) {
48042        composeDateTime("lastPerformed", element.getLastPerformedElement());
48043      }
48044      if (element.hasNextScheduledElement()) {
48045        composeDate("nextScheduled", element.getNextScheduledElement());
48046      }
48047      if (element.hasFailureAction()) {
48048        composeCodeableConcept("failureAction", element.getFailureAction());
48049      }
48050      if (element.hasPrimarySource()) { 
48051        for (VerificationResult.VerificationResultPrimarySourceComponent e : element.getPrimarySource()) 
48052          composeVerificationResultVerificationResultPrimarySourceComponent("primarySource", e);
48053      }
48054      if (element.hasAttestation()) {
48055        composeVerificationResultVerificationResultAttestationComponent("attestation", element.getAttestation());
48056      }
48057      if (element.hasValidator()) { 
48058        for (VerificationResult.VerificationResultValidatorComponent e : element.getValidator()) 
48059          composeVerificationResultVerificationResultValidatorComponent("validator", e);
48060      }
48061  }
48062
48063  protected void composeVerificationResultVerificationResultPrimarySourceComponent(String name, VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
48064    if (element != null) {
48065      composeElementAttributes(element);
48066      xml.enter(FHIR_NS, name);
48067      composeVerificationResultVerificationResultPrimarySourceComponentElements(element);
48068      composeElementClose(element);
48069      xml.exit(FHIR_NS, name);
48070    }
48071  }
48072
48073  protected void composeVerificationResultVerificationResultPrimarySourceComponentElements(VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
48074      composeBackboneElementElements(element);
48075      if (element.hasOrganization()) {
48076        composeReference("organization", element.getOrganization());
48077      }
48078      if (element.hasType()) { 
48079        for (CodeableConcept e : element.getType()) 
48080          composeCodeableConcept("type", e);
48081      }
48082      if (element.hasValidationProcess()) { 
48083        for (CodeableConcept e : element.getValidationProcess()) 
48084          composeCodeableConcept("validationProcess", e);
48085      }
48086      if (element.hasValidationStatus()) {
48087        composeCodeableConcept("validationStatus", element.getValidationStatus());
48088      }
48089      if (element.hasValidationDateElement()) {
48090        composeDateTime("validationDate", element.getValidationDateElement());
48091      }
48092      if (element.hasCanPushUpdates()) {
48093        composeCodeableConcept("canPushUpdates", element.getCanPushUpdates());
48094      }
48095      if (element.hasPushTypeAvailable()) { 
48096        for (CodeableConcept e : element.getPushTypeAvailable()) 
48097          composeCodeableConcept("pushTypeAvailable", e);
48098      }
48099  }
48100
48101  protected void composeVerificationResultVerificationResultAttestationComponent(String name, VerificationResult.VerificationResultAttestationComponent element) throws IOException {
48102    if (element != null) {
48103      composeElementAttributes(element);
48104      xml.enter(FHIR_NS, name);
48105      composeVerificationResultVerificationResultAttestationComponentElements(element);
48106      composeElementClose(element);
48107      xml.exit(FHIR_NS, name);
48108    }
48109  }
48110
48111  protected void composeVerificationResultVerificationResultAttestationComponentElements(VerificationResult.VerificationResultAttestationComponent element) throws IOException {
48112      composeBackboneElementElements(element);
48113      if (element.hasSource()) {
48114        composeReference("source", element.getSource());
48115      }
48116      if (element.hasOrganization()) {
48117        composeReference("organization", element.getOrganization());
48118      }
48119      if (element.hasMethod()) {
48120        composeCodeableConcept("method", element.getMethod());
48121      }
48122      if (element.hasDateElement()) {
48123        composeDate("date", element.getDateElement());
48124      }
48125      if (element.hasSourceIdentityCertificateElement()) {
48126        composeString("sourceIdentityCertificate", element.getSourceIdentityCertificateElement());
48127      }
48128      if (element.hasProxyIdentityCertificateElement()) {
48129        composeString("proxyIdentityCertificate", element.getProxyIdentityCertificateElement());
48130      }
48131      if (element.hasSignedProxyRight()) {
48132        composeType("signedProxyRight", element.getSignedProxyRight());
48133      }      if (element.hasSignedSourceAttestation()) {
48134        composeType("signedSourceAttestation", element.getSignedSourceAttestation());
48135      }  }
48136
48137  protected void composeVerificationResultVerificationResultValidatorComponent(String name, VerificationResult.VerificationResultValidatorComponent element) throws IOException {
48138    if (element != null) {
48139      composeElementAttributes(element);
48140      xml.enter(FHIR_NS, name);
48141      composeVerificationResultVerificationResultValidatorComponentElements(element);
48142      composeElementClose(element);
48143      xml.exit(FHIR_NS, name);
48144    }
48145  }
48146
48147  protected void composeVerificationResultVerificationResultValidatorComponentElements(VerificationResult.VerificationResultValidatorComponent element) throws IOException {
48148      composeBackboneElementElements(element);
48149      if (element.hasOrganization()) {
48150        composeReference("organization", element.getOrganization());
48151      }
48152      if (element.hasIdentityCertificateElement()) {
48153        composeString("identityCertificate", element.getIdentityCertificateElement());
48154      }
48155      if (element.hasSignedValidatorAttestation()) {
48156        composeType("signedValidatorAttestation", element.getSignedValidatorAttestation());
48157      }  }
48158
48159  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
48160    if (element != null) {
48161      composeDomainResourceAttributes(element);
48162      xml.enter(FHIR_NS, name);
48163      composeVisionPrescriptionElements(element);
48164      composeElementClose(element);
48165      xml.exit(FHIR_NS, name);
48166    }
48167  }
48168
48169  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
48170      composeDomainResourceElements(element);
48171      if (element.hasIdentifier()) { 
48172        for (Identifier e : element.getIdentifier()) 
48173          composeIdentifier("identifier", e);
48174      }
48175      if (element.hasStatusElement())
48176        composeEnumeration("status", element.getStatusElement(), new VisionPrescription.VisionStatusEnumFactory());
48177      if (element.hasPatient()) {
48178        composeReference("patient", element.getPatient());
48179      }
48180      if (element.hasEncounter()) {
48181        composeReference("encounter", element.getEncounter());
48182      }
48183      if (element.hasDateWrittenElement()) {
48184        composeDateTime("dateWritten", element.getDateWrittenElement());
48185      }
48186      if (element.hasPrescriber()) {
48187        composeReference("prescriber", element.getPrescriber());
48188      }
48189      if (element.hasReason()) {
48190        composeType("reason", element.getReason());
48191      }      if (element.hasDispense()) { 
48192        for (VisionPrescription.VisionPrescriptionDispenseComponent e : element.getDispense()) 
48193          composeVisionPrescriptionVisionPrescriptionDispenseComponent("dispense", e);
48194      }
48195  }
48196
48197  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(String name, VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
48198    if (element != null) {
48199      composeElementAttributes(element);
48200      xml.enter(FHIR_NS, name);
48201      composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(element);
48202      composeElementClose(element);
48203      xml.exit(FHIR_NS, name);
48204    }
48205  }
48206
48207  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
48208      composeBackboneElementElements(element);
48209      if (element.hasProduct()) {
48210        composeCodeableConcept("product", element.getProduct());
48211      }
48212      if (element.hasEyeElement())
48213        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
48214      if (element.hasSphereElement()) {
48215        composeDecimal("sphere", element.getSphereElement());
48216      }
48217      if (element.hasCylinderElement()) {
48218        composeDecimal("cylinder", element.getCylinderElement());
48219      }
48220      if (element.hasAxisElement()) {
48221        composeInteger("axis", element.getAxisElement());
48222      }
48223      if (element.hasPrism()) { 
48224        for (VisionPrescription.PrismComponent e : element.getPrism()) 
48225          composeVisionPrescriptionPrismComponent("prism", e);
48226      }
48227      if (element.hasAddElement()) {
48228        composeDecimal("add", element.getAddElement());
48229      }
48230      if (element.hasPowerElement()) {
48231        composeDecimal("power", element.getPowerElement());
48232      }
48233      if (element.hasBackCurveElement()) {
48234        composeDecimal("backCurve", element.getBackCurveElement());
48235      }
48236      if (element.hasDiameterElement()) {
48237        composeDecimal("diameter", element.getDiameterElement());
48238      }
48239      if (element.hasDuration()) {
48240        composeQuantity("duration", element.getDuration());
48241      }
48242      if (element.hasColorElement()) {
48243        composeString("color", element.getColorElement());
48244      }
48245      if (element.hasBrandElement()) {
48246        composeString("brand", element.getBrandElement());
48247      }
48248      if (element.hasNote()) { 
48249        for (Annotation e : element.getNote()) 
48250          composeAnnotation("note", e);
48251      }
48252  }
48253
48254  protected void composeVisionPrescriptionPrismComponent(String name, VisionPrescription.PrismComponent element) throws IOException {
48255    if (element != null) {
48256      composeElementAttributes(element);
48257      xml.enter(FHIR_NS, name);
48258      composeVisionPrescriptionPrismComponentElements(element);
48259      composeElementClose(element);
48260      xml.exit(FHIR_NS, name);
48261    }
48262  }
48263
48264  protected void composeVisionPrescriptionPrismComponentElements(VisionPrescription.PrismComponent element) throws IOException {
48265      composeBackboneElementElements(element);
48266      if (element.hasAmountElement()) {
48267        composeDecimal("amount", element.getAmountElement());
48268      }
48269      if (element.hasBaseElement())
48270        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
48271  }
48272
48273  @Override
48274  protected void composeResource(Resource resource) throws IOException {
48275    if (resource instanceof Parameters)
48276      composeParameters("Parameters", (Parameters)resource);
48277    else if (resource instanceof Account)
48278      composeAccount("Account", (Account)resource);
48279    else if (resource instanceof ActivityDefinition)
48280      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
48281    else if (resource instanceof AdverseEvent)
48282      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
48283    else if (resource instanceof AllergyIntolerance)
48284      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
48285    else if (resource instanceof Appointment)
48286      composeAppointment("Appointment", (Appointment)resource);
48287    else if (resource instanceof AppointmentResponse)
48288      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
48289    else if (resource instanceof AuditEvent)
48290      composeAuditEvent("AuditEvent", (AuditEvent)resource);
48291    else if (resource instanceof Basic)
48292      composeBasic("Basic", (Basic)resource);
48293    else if (resource instanceof Binary)
48294      composeBinary("Binary", (Binary)resource);
48295    else if (resource instanceof BiologicallyDerivedProduct)
48296      composeBiologicallyDerivedProduct("BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource);
48297    else if (resource instanceof BodyStructure)
48298      composeBodyStructure("BodyStructure", (BodyStructure)resource);
48299    else if (resource instanceof Bundle)
48300      composeBundle("Bundle", (Bundle)resource);
48301    else if (resource instanceof CapabilityStatement)
48302      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
48303    else if (resource instanceof CarePlan)
48304      composeCarePlan("CarePlan", (CarePlan)resource);
48305    else if (resource instanceof CareTeam)
48306      composeCareTeam("CareTeam", (CareTeam)resource);
48307    else if (resource instanceof CatalogEntry)
48308      composeCatalogEntry("CatalogEntry", (CatalogEntry)resource);
48309    else if (resource instanceof ChargeItem)
48310      composeChargeItem("ChargeItem", (ChargeItem)resource);
48311    else if (resource instanceof ChargeItemDefinition)
48312      composeChargeItemDefinition("ChargeItemDefinition", (ChargeItemDefinition)resource);
48313    else if (resource instanceof Claim)
48314      composeClaim("Claim", (Claim)resource);
48315    else if (resource instanceof ClaimResponse)
48316      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
48317    else if (resource instanceof ClinicalImpression)
48318      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
48319    else if (resource instanceof CodeSystem)
48320      composeCodeSystem("CodeSystem", (CodeSystem)resource);
48321    else if (resource instanceof Communication)
48322      composeCommunication("Communication", (Communication)resource);
48323    else if (resource instanceof CommunicationRequest)
48324      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
48325    else if (resource instanceof CompartmentDefinition)
48326      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
48327    else if (resource instanceof Composition)
48328      composeComposition("Composition", (Composition)resource);
48329    else if (resource instanceof ConceptMap)
48330      composeConceptMap("ConceptMap", (ConceptMap)resource);
48331    else if (resource instanceof Condition)
48332      composeCondition("Condition", (Condition)resource);
48333    else if (resource instanceof Consent)
48334      composeConsent("Consent", (Consent)resource);
48335    else if (resource instanceof Contract)
48336      composeContract("Contract", (Contract)resource);
48337    else if (resource instanceof Coverage)
48338      composeCoverage("Coverage", (Coverage)resource);
48339    else if (resource instanceof CoverageEligibilityRequest)
48340      composeCoverageEligibilityRequest("CoverageEligibilityRequest", (CoverageEligibilityRequest)resource);
48341    else if (resource instanceof CoverageEligibilityResponse)
48342      composeCoverageEligibilityResponse("CoverageEligibilityResponse", (CoverageEligibilityResponse)resource);
48343    else if (resource instanceof DetectedIssue)
48344      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
48345    else if (resource instanceof Device)
48346      composeDevice("Device", (Device)resource);
48347    else if (resource instanceof DeviceDefinition)
48348      composeDeviceDefinition("DeviceDefinition", (DeviceDefinition)resource);
48349    else if (resource instanceof DeviceMetric)
48350      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
48351    else if (resource instanceof DeviceRequest)
48352      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
48353    else if (resource instanceof DeviceUseStatement)
48354      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
48355    else if (resource instanceof DiagnosticReport)
48356      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
48357    else if (resource instanceof DocumentManifest)
48358      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
48359    else if (resource instanceof DocumentReference)
48360      composeDocumentReference("DocumentReference", (DocumentReference)resource);
48361    else if (resource instanceof Encounter)
48362      composeEncounter("Encounter", (Encounter)resource);
48363    else if (resource instanceof Endpoint)
48364      composeEndpoint("Endpoint", (Endpoint)resource);
48365    else if (resource instanceof EnrollmentRequest)
48366      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
48367    else if (resource instanceof EnrollmentResponse)
48368      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
48369    else if (resource instanceof EpisodeOfCare)
48370      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
48371    else if (resource instanceof EventDefinition)
48372      composeEventDefinition("EventDefinition", (EventDefinition)resource);
48373    else if (resource instanceof ExampleScenario)
48374      composeExampleScenario("ExampleScenario", (ExampleScenario)resource);
48375    else if (resource instanceof ExplanationOfBenefit)
48376      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
48377    else if (resource instanceof FamilyMemberHistory)
48378      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
48379    else if (resource instanceof Flag)
48380      composeFlag("Flag", (Flag)resource);
48381    else if (resource instanceof Goal)
48382      composeGoal("Goal", (Goal)resource);
48383    else if (resource instanceof GraphDefinition)
48384      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
48385    else if (resource instanceof Group)
48386      composeGroup("Group", (Group)resource);
48387    else if (resource instanceof GuidanceResponse)
48388      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
48389    else if (resource instanceof HealthcareService)
48390      composeHealthcareService("HealthcareService", (HealthcareService)resource);
48391    else if (resource instanceof ImagingStudy)
48392      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
48393    else if (resource instanceof Immunization)
48394      composeImmunization("Immunization", (Immunization)resource);
48395    else if (resource instanceof ImmunizationEvaluation)
48396      composeImmunizationEvaluation("ImmunizationEvaluation", (ImmunizationEvaluation)resource);
48397    else if (resource instanceof ImmunizationRecommendation)
48398      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
48399    else if (resource instanceof ImplementationGuide)
48400      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
48401    else if (resource instanceof InsurancePlan)
48402      composeInsurancePlan("InsurancePlan", (InsurancePlan)resource);
48403    else if (resource instanceof Invoice)
48404      composeInvoice("Invoice", (Invoice)resource);
48405    else if (resource instanceof ItemInstance)
48406      composeItemInstance("ItemInstance", (ItemInstance)resource);
48407    else if (resource instanceof Library)
48408      composeLibrary("Library", (Library)resource);
48409    else if (resource instanceof Linkage)
48410      composeLinkage("Linkage", (Linkage)resource);
48411    else if (resource instanceof ListResource)
48412      composeListResource("List", (ListResource)resource);
48413    else if (resource instanceof Location)
48414      composeLocation("Location", (Location)resource);
48415    else if (resource instanceof Measure)
48416      composeMeasure("Measure", (Measure)resource);
48417    else if (resource instanceof MeasureReport)
48418      composeMeasureReport("MeasureReport", (MeasureReport)resource);
48419    else if (resource instanceof Media)
48420      composeMedia("Media", (Media)resource);
48421    else if (resource instanceof Medication)
48422      composeMedication("Medication", (Medication)resource);
48423    else if (resource instanceof MedicationAdministration)
48424      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
48425    else if (resource instanceof MedicationDispense)
48426      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
48427    else if (resource instanceof MedicationKnowledge)
48428      composeMedicationKnowledge("MedicationKnowledge", (MedicationKnowledge)resource);
48429    else if (resource instanceof MedicationRequest)
48430      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
48431    else if (resource instanceof MedicationStatement)
48432      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
48433    else if (resource instanceof MedicinalProduct)
48434      composeMedicinalProduct("MedicinalProduct", (MedicinalProduct)resource);
48435    else if (resource instanceof MedicinalProductAuthorization)
48436      composeMedicinalProductAuthorization("MedicinalProductAuthorization", (MedicinalProductAuthorization)resource);
48437    else if (resource instanceof MedicinalProductClinicals)
48438      composeMedicinalProductClinicals("MedicinalProductClinicals", (MedicinalProductClinicals)resource);
48439    else if (resource instanceof MedicinalProductContraindication)
48440      composeMedicinalProductContraindication("MedicinalProductContraindication", (MedicinalProductContraindication)resource);
48441    else if (resource instanceof MedicinalProductDeviceSpec)
48442      composeMedicinalProductDeviceSpec("MedicinalProductDeviceSpec", (MedicinalProductDeviceSpec)resource);
48443    else if (resource instanceof MedicinalProductIndication)
48444      composeMedicinalProductIndication("MedicinalProductIndication", (MedicinalProductIndication)resource);
48445    else if (resource instanceof MedicinalProductIngredient)
48446      composeMedicinalProductIngredient("MedicinalProductIngredient", (MedicinalProductIngredient)resource);
48447    else if (resource instanceof MedicinalProductInteraction)
48448      composeMedicinalProductInteraction("MedicinalProductInteraction", (MedicinalProductInteraction)resource);
48449    else if (resource instanceof MedicinalProductManufactured)
48450      composeMedicinalProductManufactured("MedicinalProductManufactured", (MedicinalProductManufactured)resource);
48451    else if (resource instanceof MedicinalProductPackaged)
48452      composeMedicinalProductPackaged("MedicinalProductPackaged", (MedicinalProductPackaged)resource);
48453    else if (resource instanceof MedicinalProductPharmaceutical)
48454      composeMedicinalProductPharmaceutical("MedicinalProductPharmaceutical", (MedicinalProductPharmaceutical)resource);
48455    else if (resource instanceof MedicinalProductUndesirableEffect)
48456      composeMedicinalProductUndesirableEffect("MedicinalProductUndesirableEffect", (MedicinalProductUndesirableEffect)resource);
48457    else if (resource instanceof MessageDefinition)
48458      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
48459    else if (resource instanceof MessageHeader)
48460      composeMessageHeader("MessageHeader", (MessageHeader)resource);
48461    else if (resource instanceof NamingSystem)
48462      composeNamingSystem("NamingSystem", (NamingSystem)resource);
48463    else if (resource instanceof NutritionOrder)
48464      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
48465    else if (resource instanceof Observation)
48466      composeObservation("Observation", (Observation)resource);
48467    else if (resource instanceof ObservationDefinition)
48468      composeObservationDefinition("ObservationDefinition", (ObservationDefinition)resource);
48469    else if (resource instanceof OperationDefinition)
48470      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
48471    else if (resource instanceof OperationOutcome)
48472      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
48473    else if (resource instanceof Organization)
48474      composeOrganization("Organization", (Organization)resource);
48475    else if (resource instanceof OrganizationAffiliation)
48476      composeOrganizationAffiliation("OrganizationAffiliation", (OrganizationAffiliation)resource);
48477    else if (resource instanceof Patient)
48478      composePatient("Patient", (Patient)resource);
48479    else if (resource instanceof PaymentNotice)
48480      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
48481    else if (resource instanceof PaymentReconciliation)
48482      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
48483    else if (resource instanceof Person)
48484      composePerson("Person", (Person)resource);
48485    else if (resource instanceof PlanDefinition)
48486      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
48487    else if (resource instanceof Practitioner)
48488      composePractitioner("Practitioner", (Practitioner)resource);
48489    else if (resource instanceof PractitionerRole)
48490      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
48491    else if (resource instanceof Procedure)
48492      composeProcedure("Procedure", (Procedure)resource);
48493    else if (resource instanceof ProcessRequest)
48494      composeProcessRequest("ProcessRequest", (ProcessRequest)resource);
48495    else if (resource instanceof ProcessResponse)
48496      composeProcessResponse("ProcessResponse", (ProcessResponse)resource);
48497    else if (resource instanceof Provenance)
48498      composeProvenance("Provenance", (Provenance)resource);
48499    else if (resource instanceof Questionnaire)
48500      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
48501    else if (resource instanceof QuestionnaireResponse)
48502      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
48503    else if (resource instanceof RelatedPerson)
48504      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
48505    else if (resource instanceof RequestGroup)
48506      composeRequestGroup("RequestGroup", (RequestGroup)resource);
48507    else if (resource instanceof ResearchStudy)
48508      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
48509    else if (resource instanceof ResearchSubject)
48510      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
48511    else if (resource instanceof RiskAssessment)
48512      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
48513    else if (resource instanceof Schedule)
48514      composeSchedule("Schedule", (Schedule)resource);
48515    else if (resource instanceof SearchParameter)
48516      composeSearchParameter("SearchParameter", (SearchParameter)resource);
48517    else if (resource instanceof Sequence)
48518      composeSequence("Sequence", (Sequence)resource);
48519    else if (resource instanceof ServiceRequest)
48520      composeServiceRequest("ServiceRequest", (ServiceRequest)resource);
48521    else if (resource instanceof Slot)
48522      composeSlot("Slot", (Slot)resource);
48523    else if (resource instanceof Specimen)
48524      composeSpecimen("Specimen", (Specimen)resource);
48525    else if (resource instanceof SpecimenDefinition)
48526      composeSpecimenDefinition("SpecimenDefinition", (SpecimenDefinition)resource);
48527    else if (resource instanceof StructureDefinition)
48528      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
48529    else if (resource instanceof StructureMap)
48530      composeStructureMap("StructureMap", (StructureMap)resource);
48531    else if (resource instanceof Subscription)
48532      composeSubscription("Subscription", (Subscription)resource);
48533    else if (resource instanceof Substance)
48534      composeSubstance("Substance", (Substance)resource);
48535    else if (resource instanceof SubstancePolymer)
48536      composeSubstancePolymer("SubstancePolymer", (SubstancePolymer)resource);
48537    else if (resource instanceof SubstanceReferenceInformation)
48538      composeSubstanceReferenceInformation("SubstanceReferenceInformation", (SubstanceReferenceInformation)resource);
48539    else if (resource instanceof SubstanceSpecification)
48540      composeSubstanceSpecification("SubstanceSpecification", (SubstanceSpecification)resource);
48541    else if (resource instanceof SupplyDelivery)
48542      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
48543    else if (resource instanceof SupplyRequest)
48544      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
48545    else if (resource instanceof Task)
48546      composeTask("Task", (Task)resource);
48547    else if (resource instanceof TerminologyCapabilities)
48548      composeTerminologyCapabilities("TerminologyCapabilities", (TerminologyCapabilities)resource);
48549    else if (resource instanceof TestReport)
48550      composeTestReport("TestReport", (TestReport)resource);
48551    else if (resource instanceof TestScript)
48552      composeTestScript("TestScript", (TestScript)resource);
48553    else if (resource instanceof UserSession)
48554      composeUserSession("UserSession", (UserSession)resource);
48555    else if (resource instanceof ValueSet)
48556      composeValueSet("ValueSet", (ValueSet)resource);
48557    else if (resource instanceof VerificationResult)
48558      composeVerificationResult("VerificationResult", (VerificationResult)resource);
48559    else if (resource instanceof VisionPrescription)
48560      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
48561    else if (resource instanceof Binary)
48562      composeBinary("Binary", (Binary)resource);
48563    else
48564      throw new Error("Unhandled resource type "+resource.getClass().getName());
48565  }
48566
48567  protected void composeResource(String name, Resource resource) throws IOException {
48568    if (resource instanceof Parameters)
48569      composeParameters(name, (Parameters)resource);
48570    else if (resource instanceof Account)
48571      composeAccount(name, (Account)resource);
48572    else if (resource instanceof ActivityDefinition)
48573      composeActivityDefinition(name, (ActivityDefinition)resource);
48574    else if (resource instanceof AdverseEvent)
48575      composeAdverseEvent(name, (AdverseEvent)resource);
48576    else if (resource instanceof AllergyIntolerance)
48577      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
48578    else if (resource instanceof Appointment)
48579      composeAppointment(name, (Appointment)resource);
48580    else if (resource instanceof AppointmentResponse)
48581      composeAppointmentResponse(name, (AppointmentResponse)resource);
48582    else if (resource instanceof AuditEvent)
48583      composeAuditEvent(name, (AuditEvent)resource);
48584    else if (resource instanceof Basic)
48585      composeBasic(name, (Basic)resource);
48586    else if (resource instanceof Binary)
48587      composeBinary(name, (Binary)resource);
48588    else if (resource instanceof BiologicallyDerivedProduct)
48589      composeBiologicallyDerivedProduct(name, (BiologicallyDerivedProduct)resource);
48590    else if (resource instanceof BodyStructure)
48591      composeBodyStructure(name, (BodyStructure)resource);
48592    else if (resource instanceof Bundle)
48593      composeBundle(name, (Bundle)resource);
48594    else if (resource instanceof CapabilityStatement)
48595      composeCapabilityStatement(name, (CapabilityStatement)resource);
48596    else if (resource instanceof CarePlan)
48597      composeCarePlan(name, (CarePlan)resource);
48598    else if (resource instanceof CareTeam)
48599      composeCareTeam(name, (CareTeam)resource);
48600    else if (resource instanceof CatalogEntry)
48601      composeCatalogEntry(name, (CatalogEntry)resource);
48602    else if (resource instanceof ChargeItem)
48603      composeChargeItem(name, (ChargeItem)resource);
48604    else if (resource instanceof ChargeItemDefinition)
48605      composeChargeItemDefinition(name, (ChargeItemDefinition)resource);
48606    else if (resource instanceof Claim)
48607      composeClaim(name, (Claim)resource);
48608    else if (resource instanceof ClaimResponse)
48609      composeClaimResponse(name, (ClaimResponse)resource);
48610    else if (resource instanceof ClinicalImpression)
48611      composeClinicalImpression(name, (ClinicalImpression)resource);
48612    else if (resource instanceof CodeSystem)
48613      composeCodeSystem(name, (CodeSystem)resource);
48614    else if (resource instanceof Communication)
48615      composeCommunication(name, (Communication)resource);
48616    else if (resource instanceof CommunicationRequest)
48617      composeCommunicationRequest(name, (CommunicationRequest)resource);
48618    else if (resource instanceof CompartmentDefinition)
48619      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
48620    else if (resource instanceof Composition)
48621      composeComposition(name, (Composition)resource);
48622    else if (resource instanceof ConceptMap)
48623      composeConceptMap(name, (ConceptMap)resource);
48624    else if (resource instanceof Condition)
48625      composeCondition(name, (Condition)resource);
48626    else if (resource instanceof Consent)
48627      composeConsent(name, (Consent)resource);
48628    else if (resource instanceof Contract)
48629      composeContract(name, (Contract)resource);
48630    else if (resource instanceof Coverage)
48631      composeCoverage(name, (Coverage)resource);
48632    else if (resource instanceof CoverageEligibilityRequest)
48633      composeCoverageEligibilityRequest(name, (CoverageEligibilityRequest)resource);
48634    else if (resource instanceof CoverageEligibilityResponse)
48635      composeCoverageEligibilityResponse(name, (CoverageEligibilityResponse)resource);
48636    else if (resource instanceof DetectedIssue)
48637      composeDetectedIssue(name, (DetectedIssue)resource);
48638    else if (resource instanceof Device)
48639      composeDevice(name, (Device)resource);
48640    else if (resource instanceof DeviceDefinition)
48641      composeDeviceDefinition(name, (DeviceDefinition)resource);
48642    else if (resource instanceof DeviceMetric)
48643      composeDeviceMetric(name, (DeviceMetric)resource);
48644    else if (resource instanceof DeviceRequest)
48645      composeDeviceRequest(name, (DeviceRequest)resource);
48646    else if (resource instanceof DeviceUseStatement)
48647      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
48648    else if (resource instanceof DiagnosticReport)
48649      composeDiagnosticReport(name, (DiagnosticReport)resource);
48650    else if (resource instanceof DocumentManifest)
48651      composeDocumentManifest(name, (DocumentManifest)resource);
48652    else if (resource instanceof DocumentReference)
48653      composeDocumentReference(name, (DocumentReference)resource);
48654    else if (resource instanceof Encounter)
48655      composeEncounter(name, (Encounter)resource);
48656    else if (resource instanceof Endpoint)
48657      composeEndpoint(name, (Endpoint)resource);
48658    else if (resource instanceof EnrollmentRequest)
48659      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
48660    else if (resource instanceof EnrollmentResponse)
48661      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
48662    else if (resource instanceof EpisodeOfCare)
48663      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
48664    else if (resource instanceof EventDefinition)
48665      composeEventDefinition(name, (EventDefinition)resource);
48666    else if (resource instanceof ExampleScenario)
48667      composeExampleScenario(name, (ExampleScenario)resource);
48668    else if (resource instanceof ExplanationOfBenefit)
48669      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
48670    else if (resource instanceof FamilyMemberHistory)
48671      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
48672    else if (resource instanceof Flag)
48673      composeFlag(name, (Flag)resource);
48674    else if (resource instanceof Goal)
48675      composeGoal(name, (Goal)resource);
48676    else if (resource instanceof GraphDefinition)
48677      composeGraphDefinition(name, (GraphDefinition)resource);
48678    else if (resource instanceof Group)
48679      composeGroup(name, (Group)resource);
48680    else if (resource instanceof GuidanceResponse)
48681      composeGuidanceResponse(name, (GuidanceResponse)resource);
48682    else if (resource instanceof HealthcareService)
48683      composeHealthcareService(name, (HealthcareService)resource);
48684    else if (resource instanceof ImagingStudy)
48685      composeImagingStudy(name, (ImagingStudy)resource);
48686    else if (resource instanceof Immunization)
48687      composeImmunization(name, (Immunization)resource);
48688    else if (resource instanceof ImmunizationEvaluation)
48689      composeImmunizationEvaluation(name, (ImmunizationEvaluation)resource);
48690    else if (resource instanceof ImmunizationRecommendation)
48691      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
48692    else if (resource instanceof ImplementationGuide)
48693      composeImplementationGuide(name, (ImplementationGuide)resource);
48694    else if (resource instanceof InsurancePlan)
48695      composeInsurancePlan(name, (InsurancePlan)resource);
48696    else if (resource instanceof Invoice)
48697      composeInvoice(name, (Invoice)resource);
48698    else if (resource instanceof ItemInstance)
48699      composeItemInstance(name, (ItemInstance)resource);
48700    else if (resource instanceof Library)
48701      composeLibrary(name, (Library)resource);
48702    else if (resource instanceof Linkage)
48703      composeLinkage(name, (Linkage)resource);
48704    else if (resource instanceof ListResource)
48705      composeListResource(name, (ListResource)resource);
48706    else if (resource instanceof Location)
48707      composeLocation(name, (Location)resource);
48708    else if (resource instanceof Measure)
48709      composeMeasure(name, (Measure)resource);
48710    else if (resource instanceof MeasureReport)
48711      composeMeasureReport(name, (MeasureReport)resource);
48712    else if (resource instanceof Media)
48713      composeMedia(name, (Media)resource);
48714    else if (resource instanceof Medication)
48715      composeMedication(name, (Medication)resource);
48716    else if (resource instanceof MedicationAdministration)
48717      composeMedicationAdministration(name, (MedicationAdministration)resource);
48718    else if (resource instanceof MedicationDispense)
48719      composeMedicationDispense(name, (MedicationDispense)resource);
48720    else if (resource instanceof MedicationKnowledge)
48721      composeMedicationKnowledge(name, (MedicationKnowledge)resource);
48722    else if (resource instanceof MedicationRequest)
48723      composeMedicationRequest(name, (MedicationRequest)resource);
48724    else if (resource instanceof MedicationStatement)
48725      composeMedicationStatement(name, (MedicationStatement)resource);
48726    else if (resource instanceof MedicinalProduct)
48727      composeMedicinalProduct(name, (MedicinalProduct)resource);
48728    else if (resource instanceof MedicinalProductAuthorization)
48729      composeMedicinalProductAuthorization(name, (MedicinalProductAuthorization)resource);
48730    else if (resource instanceof MedicinalProductClinicals)
48731      composeMedicinalProductClinicals(name, (MedicinalProductClinicals)resource);
48732    else if (resource instanceof MedicinalProductContraindication)
48733      composeMedicinalProductContraindication(name, (MedicinalProductContraindication)resource);
48734    else if (resource instanceof MedicinalProductDeviceSpec)
48735      composeMedicinalProductDeviceSpec(name, (MedicinalProductDeviceSpec)resource);
48736    else if (resource instanceof MedicinalProductIndication)
48737      composeMedicinalProductIndication(name, (MedicinalProductIndication)resource);
48738    else if (resource instanceof MedicinalProductIngredient)
48739      composeMedicinalProductIngredient(name, (MedicinalProductIngredient)resource);
48740    else if (resource instanceof MedicinalProductInteraction)
48741      composeMedicinalProductInteraction(name, (MedicinalProductInteraction)resource);
48742    else if (resource instanceof MedicinalProductManufactured)
48743      composeMedicinalProductManufactured(name, (MedicinalProductManufactured)resource);
48744    else if (resource instanceof MedicinalProductPackaged)
48745      composeMedicinalProductPackaged(name, (MedicinalProductPackaged)resource);
48746    else if (resource instanceof MedicinalProductPharmaceutical)
48747      composeMedicinalProductPharmaceutical(name, (MedicinalProductPharmaceutical)resource);
48748    else if (resource instanceof MedicinalProductUndesirableEffect)
48749      composeMedicinalProductUndesirableEffect(name, (MedicinalProductUndesirableEffect)resource);
48750    else if (resource instanceof MessageDefinition)
48751      composeMessageDefinition(name, (MessageDefinition)resource);
48752    else if (resource instanceof MessageHeader)
48753      composeMessageHeader(name, (MessageHeader)resource);
48754    else if (resource instanceof NamingSystem)
48755      composeNamingSystem(name, (NamingSystem)resource);
48756    else if (resource instanceof NutritionOrder)
48757      composeNutritionOrder(name, (NutritionOrder)resource);
48758    else if (resource instanceof Observation)
48759      composeObservation(name, (Observation)resource);
48760    else if (resource instanceof ObservationDefinition)
48761      composeObservationDefinition(name, (ObservationDefinition)resource);
48762    else if (resource instanceof OperationDefinition)
48763      composeOperationDefinition(name, (OperationDefinition)resource);
48764    else if (resource instanceof OperationOutcome)
48765      composeOperationOutcome(name, (OperationOutcome)resource);
48766    else if (resource instanceof Organization)
48767      composeOrganization(name, (Organization)resource);
48768    else if (resource instanceof OrganizationAffiliation)
48769      composeOrganizationAffiliation(name, (OrganizationAffiliation)resource);
48770    else if (resource instanceof Patient)
48771      composePatient(name, (Patient)resource);
48772    else if (resource instanceof PaymentNotice)
48773      composePaymentNotice(name, (PaymentNotice)resource);
48774    else if (resource instanceof PaymentReconciliation)
48775      composePaymentReconciliation(name, (PaymentReconciliation)resource);
48776    else if (resource instanceof Person)
48777      composePerson(name, (Person)resource);
48778    else if (resource instanceof PlanDefinition)
48779      composePlanDefinition(name, (PlanDefinition)resource);
48780    else if (resource instanceof Practitioner)
48781      composePractitioner(name, (Practitioner)resource);
48782    else if (resource instanceof PractitionerRole)
48783      composePractitionerRole(name, (PractitionerRole)resource);
48784    else if (resource instanceof Procedure)
48785      composeProcedure(name, (Procedure)resource);
48786    else if (resource instanceof ProcessRequest)
48787      composeProcessRequest(name, (ProcessRequest)resource);
48788    else if (resource instanceof ProcessResponse)
48789      composeProcessResponse(name, (ProcessResponse)resource);
48790    else if (resource instanceof Provenance)
48791      composeProvenance(name, (Provenance)resource);
48792    else if (resource instanceof Questionnaire)
48793      composeQuestionnaire(name, (Questionnaire)resource);
48794    else if (resource instanceof QuestionnaireResponse)
48795      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
48796    else if (resource instanceof RelatedPerson)
48797      composeRelatedPerson(name, (RelatedPerson)resource);
48798    else if (resource instanceof RequestGroup)
48799      composeRequestGroup(name, (RequestGroup)resource);
48800    else if (resource instanceof ResearchStudy)
48801      composeResearchStudy(name, (ResearchStudy)resource);
48802    else if (resource instanceof ResearchSubject)
48803      composeResearchSubject(name, (ResearchSubject)resource);
48804    else if (resource instanceof RiskAssessment)
48805      composeRiskAssessment(name, (RiskAssessment)resource);
48806    else if (resource instanceof Schedule)
48807      composeSchedule(name, (Schedule)resource);
48808    else if (resource instanceof SearchParameter)
48809      composeSearchParameter(name, (SearchParameter)resource);
48810    else if (resource instanceof Sequence)
48811      composeSequence(name, (Sequence)resource);
48812    else if (resource instanceof ServiceRequest)
48813      composeServiceRequest(name, (ServiceRequest)resource);
48814    else if (resource instanceof Slot)
48815      composeSlot(name, (Slot)resource);
48816    else if (resource instanceof Specimen)
48817      composeSpecimen(name, (Specimen)resource);
48818    else if (resource instanceof SpecimenDefinition)
48819      composeSpecimenDefinition(name, (SpecimenDefinition)resource);
48820    else if (resource instanceof StructureDefinition)
48821      composeStructureDefinition(name, (StructureDefinition)resource);
48822    else if (resource instanceof StructureMap)
48823      composeStructureMap(name, (StructureMap)resource);
48824    else if (resource instanceof Subscription)
48825      composeSubscription(name, (Subscription)resource);
48826    else if (resource instanceof Substance)
48827      composeSubstance(name, (Substance)resource);
48828    else if (resource instanceof SubstancePolymer)
48829      composeSubstancePolymer(name, (SubstancePolymer)resource);
48830    else if (resource instanceof SubstanceReferenceInformation)
48831      composeSubstanceReferenceInformation(name, (SubstanceReferenceInformation)resource);
48832    else if (resource instanceof SubstanceSpecification)
48833      composeSubstanceSpecification(name, (SubstanceSpecification)resource);
48834    else if (resource instanceof SupplyDelivery)
48835      composeSupplyDelivery(name, (SupplyDelivery)resource);
48836    else if (resource instanceof SupplyRequest)
48837      composeSupplyRequest(name, (SupplyRequest)resource);
48838    else if (resource instanceof Task)
48839      composeTask(name, (Task)resource);
48840    else if (resource instanceof TerminologyCapabilities)
48841      composeTerminologyCapabilities(name, (TerminologyCapabilities)resource);
48842    else if (resource instanceof TestReport)
48843      composeTestReport(name, (TestReport)resource);
48844    else if (resource instanceof TestScript)
48845      composeTestScript(name, (TestScript)resource);
48846    else if (resource instanceof UserSession)
48847      composeUserSession(name, (UserSession)resource);
48848    else if (resource instanceof ValueSet)
48849      composeValueSet(name, (ValueSet)resource);
48850    else if (resource instanceof VerificationResult)
48851      composeVerificationResult(name, (VerificationResult)resource);
48852    else if (resource instanceof VisionPrescription)
48853      composeVisionPrescription(name, (VisionPrescription)resource);
48854    else if (resource instanceof Binary)
48855      composeBinary(name, (Binary)resource);
48856    else
48857      throw new Error("Unhandled resource type "+resource.getClass().getName());
48858  }
48859
48860  protected void composeType(String prefix, Type type) throws IOException {
48861    if (type == null)
48862      ;
48863    else if (type instanceof Extension)
48864       composeExtension(prefix+"Extension", (Extension) type);
48865    else if (type instanceof Narrative)
48866       composeNarrative(prefix+"Narrative", (Narrative) type);
48867    else if (type instanceof Count)
48868       composeCount(prefix+"Count", (Count) type);
48869    else if (type instanceof Dosage)
48870       composeDosage(prefix+"Dosage", (Dosage) type);
48871    else if (type instanceof Distance)
48872       composeDistance(prefix+"Distance", (Distance) type);
48873    else if (type instanceof Age)
48874       composeAge(prefix+"Age", (Age) type);
48875    else if (type instanceof Duration)
48876       composeDuration(prefix+"Duration", (Duration) type);
48877    else if (type instanceof Timing)
48878       composeTiming(prefix+"Timing", (Timing) type);
48879    else if (type instanceof Meta)
48880       composeMeta(prefix+"Meta", (Meta) type);
48881    else if (type instanceof Address)
48882       composeAddress(prefix+"Address", (Address) type);
48883    else if (type instanceof Contributor)
48884       composeContributor(prefix+"Contributor", (Contributor) type);
48885    else if (type instanceof Attachment)
48886       composeAttachment(prefix+"Attachment", (Attachment) type);
48887    else if (type instanceof DataRequirement)
48888       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
48889    else if (type instanceof Money)
48890       composeMoney(prefix+"Money", (Money) type);
48891    else if (type instanceof HumanName)
48892       composeHumanName(prefix+"HumanName", (HumanName) type);
48893    else if (type instanceof ContactPoint)
48894       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
48895    else if (type instanceof Identifier)
48896       composeIdentifier(prefix+"Identifier", (Identifier) type);
48897    else if (type instanceof Coding)
48898       composeCoding(prefix+"Coding", (Coding) type);
48899    else if (type instanceof SampledData)
48900       composeSampledData(prefix+"SampledData", (SampledData) type);
48901    else if (type instanceof Ratio)
48902       composeRatio(prefix+"Ratio", (Ratio) type);
48903    else if (type instanceof Reference)
48904       composeReference(prefix+"Reference", (Reference) type);
48905    else if (type instanceof TriggerDefinition)
48906       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
48907    else if (type instanceof Quantity)
48908       composeQuantity(prefix+"Quantity", (Quantity) type);
48909    else if (type instanceof Period)
48910       composePeriod(prefix+"Period", (Period) type);
48911    else if (type instanceof Range)
48912       composeRange(prefix+"Range", (Range) type);
48913    else if (type instanceof RelatedArtifact)
48914       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
48915    else if (type instanceof Annotation)
48916       composeAnnotation(prefix+"Annotation", (Annotation) type);
48917    else if (type instanceof ContactDetail)
48918       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
48919    else if (type instanceof UsageContext)
48920       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
48921    else if (type instanceof Expression)
48922       composeExpression(prefix+"Expression", (Expression) type);
48923    else if (type instanceof Signature)
48924       composeSignature(prefix+"Signature", (Signature) type);
48925    else if (type instanceof CodeableConcept)
48926       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
48927    else if (type instanceof ParameterDefinition)
48928       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
48929    else if (type instanceof CodeType)
48930       composeCode(prefix+"Code", (CodeType) type);
48931    else if (type instanceof OidType)
48932       composeOid(prefix+"Oid", (OidType) type);
48933    else if (type instanceof CanonicalType)
48934       composeCanonical(prefix+"Canonical", (CanonicalType) type);
48935    else if (type instanceof UuidType)
48936       composeUuid(prefix+"Uuid", (UuidType) type);
48937    else if (type instanceof UrlType)
48938       composeUrl(prefix+"Url", (UrlType) type);
48939    else if (type instanceof UnsignedIntType)
48940       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
48941    else if (type instanceof MarkdownType)
48942       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
48943    else if (type instanceof IdType)
48944       composeId(prefix+"Id", (IdType) type);
48945    else if (type instanceof PositiveIntType)
48946       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
48947    else if (type instanceof DateType)
48948       composeDate(prefix+"Date", (DateType) type);
48949    else if (type instanceof DateTimeType)
48950       composeDateTime(prefix+"DateTime", (DateTimeType) type);
48951    else if (type instanceof StringType)
48952       composeString(prefix+"String", (StringType) type);
48953    else if (type instanceof IntegerType)
48954       composeInteger(prefix+"Integer", (IntegerType) type);
48955    else if (type instanceof UriType)
48956       composeUri(prefix+"Uri", (UriType) type);
48957    else if (type instanceof InstantType)
48958       composeInstant(prefix+"Instant", (InstantType) type);
48959    else if (type instanceof BooleanType)
48960       composeBoolean(prefix+"Boolean", (BooleanType) type);
48961    else if (type instanceof Base64BinaryType)
48962       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
48963    else if (type instanceof TimeType)
48964       composeTime(prefix+"Time", (TimeType) type);
48965    else if (type instanceof DecimalType)
48966       composeDecimal(prefix+"Decimal", (DecimalType) type);
48967    else
48968      throw new Error("Unhandled type");
48969  }
48970
48971}
48972