001package org.hl7.fhir.r4.formats;
002
003import java.io.IOException;
004
005import org.hl7.fhir.exceptions.FHIRFormatError;
006
007
008
009/*
010  Copyright (c) 2011+, HL7, Inc.
011  All rights reserved.
012  
013  Redistribution and use in source and binary forms, with or without modification, 
014  are permitted provided that the following conditions are met:
015  
016   * Redistributions of source code must retain the above copyright notice, this 
017     list of conditions and the following disclaimer.
018   * Redistributions in binary form must reproduce the above copyright notice, 
019     this list of conditions and the following disclaimer in the documentation 
020     and/or other materials provided with the distribution.
021   * Neither the name of HL7 nor the names of its contributors may be used to 
022     endorse or promote products derived from this software without specific 
023     prior written permission.
024  
025  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
026  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
027  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
028  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
029  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
030  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
031  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
032  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
033  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
034  POSSIBILITY OF SUCH DAMAGE.
035  
036*/
037
038// Generated on Thu, Dec 13, 2018 14:07+1100 for FHIR v4.0.0
039import org.hl7.fhir.r4.model.*;
040import org.hl7.fhir.utilities.Utilities;
041import org.xmlpull.v1.XmlPullParser;
042import org.xmlpull.v1.XmlPullParserException;
043
044public class XmlParser extends XmlParserBase {
045
046  public XmlParser() {
047    super();
048  }
049
050  public XmlParser(XmlVersion ver) {
051    super(ver);
052  }
053
054
055  public XmlParser(boolean allowUnknownContent) {
056    super();
057    setAllowUnknownContent(allowUnknownContent);
058  }
059
060
061  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
062    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) 
063      res.getExtension().add(parseExtension(xpp));
064    else
065      return false;
066      
067    return true;
068  }
069
070  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
071    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
072      res.getModifierExtension().add(parseExtension(xpp));
073    else
074      return parseElementContent(eventType, xpp, res);
075      
076    return true;
077  }
078
079  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneType res) throws XmlPullParserException, IOException, FHIRFormatError {
080    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
081      res.getModifierExtension().add(parseExtension(xpp));
082    else
083      return parseElementContent(eventType, xpp, res);
084      
085    return true;
086  }
087
088  @SuppressWarnings("unchecked")
089  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
090    Enumeration<E> res = new Enumeration<E>(e);
091    parseElementAttributes(xpp, res);
092    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
093    next(xpp);
094    int eventType = nextNoWhitespace(xpp);
095    while (eventType != XmlPullParser.END_TAG) {
096      if (!parseElementContent(eventType, xpp, res))
097        unknownContent(xpp);
098      eventType = nextNoWhitespace(xpp);
099    }
100    next(xpp);
101    parseElementClose(res);
102    return res;
103  }
104
105  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
106    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
107    parseElementAttributes(xpp, res);
108    next(xpp);
109    int eventType = nextNoWhitespace(xpp);
110    while (eventType != XmlPullParser.END_TAG) {
111      if (!parseElementContent(eventType, xpp, res))
112        unknownContent(xpp);
113      eventType = nextNoWhitespace(xpp);
114    }
115    next(xpp);
116    parseElementClose(res);
117    return res;
118  }
119
120  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
121    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
122    parseElementAttributes(xpp, res);
123    next(xpp);
124    int eventType = nextNoWhitespace(xpp);
125    while (eventType != XmlPullParser.END_TAG) {
126      if (!parseElementContent(eventType, xpp, res))
127        unknownContent(xpp);
128      eventType = nextNoWhitespace(xpp);
129    }
130    next(xpp);
131    parseElementClose(res);
132    return res;
133  }
134
135  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
136    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
137    parseElementAttributes(xpp, res);
138    next(xpp);
139    int eventType = nextNoWhitespace(xpp);
140    while (eventType != XmlPullParser.END_TAG) {
141      if (!parseElementContent(eventType, xpp, res))
142        unknownContent(xpp);
143      eventType = nextNoWhitespace(xpp);
144    }
145    next(xpp);
146    parseElementClose(res);
147    return res;
148  }
149
150  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
151    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
152    parseElementAttributes(xpp, res);
153    next(xpp);
154    int eventType = nextNoWhitespace(xpp);
155    while (eventType != XmlPullParser.END_TAG) {
156      if (!parseElementContent(eventType, xpp, res))
157        unknownContent(xpp);
158      eventType = nextNoWhitespace(xpp);
159    }
160    next(xpp);
161    parseElementClose(res);
162    return res;
163  }
164
165  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
166    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
167    parseElementAttributes(xpp, res);
168    next(xpp);
169    int eventType = nextNoWhitespace(xpp);
170    while (eventType != XmlPullParser.END_TAG) {
171      if (!parseElementContent(eventType, xpp, res))
172        unknownContent(xpp);
173      eventType = nextNoWhitespace(xpp);
174    }
175    next(xpp);
176    parseElementClose(res);
177    return res;
178  }
179
180  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
181    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
182    parseElementAttributes(xpp, res);
183    next(xpp);
184    int eventType = nextNoWhitespace(xpp);
185    while (eventType != XmlPullParser.END_TAG) {
186      if (!parseElementContent(eventType, xpp, res))
187        unknownContent(xpp);
188      eventType = nextNoWhitespace(xpp);
189    }
190    next(xpp);
191    parseElementClose(res);
192    return res;
193  }
194
195  protected CanonicalType parseCanonical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
196    CanonicalType res = new CanonicalType(xpp.getAttributeValue(null, "value"));
197    parseElementAttributes(xpp, res);
198    next(xpp);
199    int eventType = nextNoWhitespace(xpp);
200    while (eventType != XmlPullParser.END_TAG) {
201      if (!parseElementContent(eventType, xpp, res))
202        unknownContent(xpp);
203      eventType = nextNoWhitespace(xpp);
204    }
205    next(xpp);
206    parseElementClose(res);
207    return res;
208  }
209
210  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
211    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
212    parseElementAttributes(xpp, res);
213    next(xpp);
214    int eventType = nextNoWhitespace(xpp);
215    while (eventType != XmlPullParser.END_TAG) {
216      if (!parseElementContent(eventType, xpp, res))
217        unknownContent(xpp);
218      eventType = nextNoWhitespace(xpp);
219    }
220    next(xpp);
221    parseElementClose(res);
222    return res;
223  }
224
225  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
226    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
227    parseElementAttributes(xpp, res);
228    next(xpp);
229    int eventType = nextNoWhitespace(xpp);
230    while (eventType != XmlPullParser.END_TAG) {
231      if (!parseElementContent(eventType, xpp, res))
232        unknownContent(xpp);
233      eventType = nextNoWhitespace(xpp);
234    }
235    next(xpp);
236    parseElementClose(res);
237    return res;
238  }
239
240  protected UrlType parseUrl(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
241    UrlType res = new UrlType(xpp.getAttributeValue(null, "value"));
242    parseElementAttributes(xpp, res);
243    next(xpp);
244    int eventType = nextNoWhitespace(xpp);
245    while (eventType != XmlPullParser.END_TAG) {
246      if (!parseElementContent(eventType, xpp, res))
247        unknownContent(xpp);
248      eventType = nextNoWhitespace(xpp);
249    }
250    next(xpp);
251    parseElementClose(res);
252    return res;
253  }
254
255  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
256    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
257    parseElementAttributes(xpp, res);
258    next(xpp);
259    int eventType = nextNoWhitespace(xpp);
260    while (eventType != XmlPullParser.END_TAG) {
261      if (!parseElementContent(eventType, xpp, res))
262        unknownContent(xpp);
263      eventType = nextNoWhitespace(xpp);
264    }
265    next(xpp);
266    parseElementClose(res);
267    return res;
268  }
269
270  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
271    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
272    parseElementAttributes(xpp, res);
273    next(xpp);
274    int eventType = nextNoWhitespace(xpp);
275    while (eventType != XmlPullParser.END_TAG) {
276      if (!parseElementContent(eventType, xpp, res))
277        unknownContent(xpp);
278      eventType = nextNoWhitespace(xpp);
279    }
280    next(xpp);
281    parseElementClose(res);
282    return res;
283  }
284
285  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
286    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
287    parseElementAttributes(xpp, res);
288    next(xpp);
289    int eventType = nextNoWhitespace(xpp);
290    while (eventType != XmlPullParser.END_TAG) {
291      if (!parseElementContent(eventType, xpp, res))
292        unknownContent(xpp);
293      eventType = nextNoWhitespace(xpp);
294    }
295    next(xpp);
296    parseElementClose(res);
297    return res;
298  }
299
300  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
301    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
302    parseElementAttributes(xpp, res);
303    next(xpp);
304    int eventType = nextNoWhitespace(xpp);
305    while (eventType != XmlPullParser.END_TAG) {
306      if (!parseElementContent(eventType, xpp, res))
307        unknownContent(xpp);
308      eventType = nextNoWhitespace(xpp);
309    }
310    next(xpp);
311    parseElementClose(res);
312    return res;
313  }
314
315  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
316    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
317    parseElementAttributes(xpp, res);
318    next(xpp);
319    int eventType = nextNoWhitespace(xpp);
320    while (eventType != XmlPullParser.END_TAG) {
321      if (!parseElementContent(eventType, xpp, res))
322        unknownContent(xpp);
323      eventType = nextNoWhitespace(xpp);
324    }
325    next(xpp);
326    parseElementClose(res);
327    return res;
328  }
329
330  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
331    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
332    parseElementAttributes(xpp, res);
333    next(xpp);
334    int eventType = nextNoWhitespace(xpp);
335    while (eventType != XmlPullParser.END_TAG) {
336      if (!parseElementContent(eventType, xpp, res))
337        unknownContent(xpp);
338      eventType = nextNoWhitespace(xpp);
339    }
340    next(xpp);
341    parseElementClose(res);
342    return res;
343  }
344
345  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
346    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
347    parseElementAttributes(xpp, res);
348    next(xpp);
349    int eventType = nextNoWhitespace(xpp);
350    while (eventType != XmlPullParser.END_TAG) {
351      if (!parseElementContent(eventType, xpp, res))
352        unknownContent(xpp);
353      eventType = nextNoWhitespace(xpp);
354    }
355    next(xpp);
356    parseElementClose(res);
357    return res;
358  }
359
360  protected PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
361    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
362    parseElementAttributes(xpp, res);
363    next(xpp);
364    int eventType = nextNoWhitespace(xpp);
365    while (eventType != XmlPullParser.END_TAG) {
366      if (!parseElementContent(eventType, xpp, res))
367        unknownContent(xpp);
368      eventType = nextNoWhitespace(xpp);
369    }
370    next(xpp);
371    parseElementClose(res);
372    return res;
373  }
374
375  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
376    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
377    parseElementAttributes(xpp, res);
378    next(xpp);
379    int eventType = nextNoWhitespace(xpp);
380    while (eventType != XmlPullParser.END_TAG) {
381      if (!parseElementContent(eventType, xpp, res))
382        unknownContent(xpp);
383      eventType = nextNoWhitespace(xpp);
384    }
385    next(xpp);
386    parseElementClose(res);
387    return res;
388  }
389
390  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
391    Extension res = new Extension();
392    parseElementAttributes(xpp, res);
393    if (xpp.getAttributeValue(null, "url") != null)
394        res.setUrl(xpp.getAttributeValue(null, "url"));
395    next(xpp);
396    int eventType = nextNoWhitespace(xpp);
397    while (eventType != XmlPullParser.END_TAG) {
398  if (!parseExtensionContent(eventType, xpp, res))
399        unknownContent(xpp);
400      eventType = nextNoWhitespace(xpp);
401    }
402    next(xpp);
403    parseElementClose(res);
404    return res;
405  }
406
407  protected boolean parseExtensionContent(int eventType, XmlPullParser xpp, Extension res) throws XmlPullParserException, IOException, FHIRFormatError {
408      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
409        res.setValue(parseType("value", xpp));
410      } else if (!parseElementContent(eventType, xpp, res))
411        return false;
412    return true;
413  }
414
415  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
416    Narrative res = new Narrative();
417    parseElementAttributes(xpp, res);
418    next(xpp);
419    int eventType = nextNoWhitespace(xpp);
420    while (eventType != XmlPullParser.END_TAG) {
421  if (!parseNarrativeContent(eventType, xpp, res))
422        unknownContent(xpp);
423      eventType = nextNoWhitespace(xpp);
424    }
425    next(xpp);
426    parseElementClose(res);
427    return res;
428  }
429
430  protected boolean parseNarrativeContent(int eventType, XmlPullParser xpp, Narrative res) throws XmlPullParserException, IOException, FHIRFormatError {
431      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
432        res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
434        res.setDiv(parseXhtml(xpp));
435      } else if (!parseElementContent(eventType, xpp, res))
436        return false;
437    return true;
438  }
439
440  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
441    Meta res = new Meta();
442    parseTypeAttributes(xpp, res);
443    next(xpp);
444    int eventType = nextNoWhitespace(xpp);
445    while (eventType != XmlPullParser.END_TAG) {
446  if (!parseMetaContent(eventType, xpp, res))
447        unknownContent(xpp);
448      eventType = nextNoWhitespace(xpp);
449    }
450    next(xpp);
451    parseElementClose(res);
452    return res;
453  }
454
455  protected boolean parseMetaContent(int eventType, XmlPullParser xpp, Meta res) throws XmlPullParserException, IOException, FHIRFormatError {
456      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
457        res.setVersionIdElement(parseId(xpp));
458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
459        res.setLastUpdatedElement(parseInstant(xpp));
460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
461        res.setSourceElement(parseUri(xpp));
462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
463        res.getProfile().add(parseCanonical(xpp));
464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
465        res.getSecurity().add(parseCoding(xpp));
466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
467        res.getTag().add(parseCoding(xpp));
468      } else if (!parseElementContent(eventType, xpp, res))
469        return false;
470    return true;
471  }
472
473  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
474    Address res = new Address();
475    parseTypeAttributes(xpp, res);
476    next(xpp);
477    int eventType = nextNoWhitespace(xpp);
478    while (eventType != XmlPullParser.END_TAG) {
479  if (!parseAddressContent(eventType, xpp, res))
480        unknownContent(xpp);
481      eventType = nextNoWhitespace(xpp);
482    }
483    next(xpp);
484    parseElementClose(res);
485    return res;
486  }
487
488  protected boolean parseAddressContent(int eventType, XmlPullParser xpp, Address res) throws XmlPullParserException, IOException, FHIRFormatError {
489      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
490        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
492        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
494        res.setTextElement(parseString(xpp));
495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
496        res.getLine().add(parseString(xpp));
497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
498        res.setCityElement(parseString(xpp));
499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
500        res.setDistrictElement(parseString(xpp));
501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
502        res.setStateElement(parseString(xpp));
503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
504        res.setPostalCodeElement(parseString(xpp));
505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
506        res.setCountryElement(parseString(xpp));
507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
508        res.setPeriod(parsePeriod(xpp));
509      } else if (!parseElementContent(eventType, xpp, res))
510        return false;
511    return true;
512  }
513
514  protected Contributor parseContributor(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
515    Contributor res = new Contributor();
516    parseTypeAttributes(xpp, res);
517    next(xpp);
518    int eventType = nextNoWhitespace(xpp);
519    while (eventType != XmlPullParser.END_TAG) {
520  if (!parseContributorContent(eventType, xpp, res))
521        unknownContent(xpp);
522      eventType = nextNoWhitespace(xpp);
523    }
524    next(xpp);
525    parseElementClose(res);
526    return res;
527  }
528
529  protected boolean parseContributorContent(int eventType, XmlPullParser xpp, Contributor res) throws XmlPullParserException, IOException, FHIRFormatError {
530      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
531        res.setTypeElement(parseEnumeration(xpp, Contributor.ContributorType.NULL, new Contributor.ContributorTypeEnumFactory()));
532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
533        res.setNameElement(parseString(xpp));
534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
535        res.getContact().add(parseContactDetail(xpp));
536      } else if (!parseElementContent(eventType, xpp, res))
537        return false;
538    return true;
539  }
540
541  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
542    Attachment res = new Attachment();
543    parseTypeAttributes(xpp, res);
544    next(xpp);
545    int eventType = nextNoWhitespace(xpp);
546    while (eventType != XmlPullParser.END_TAG) {
547  if (!parseAttachmentContent(eventType, xpp, res))
548        unknownContent(xpp);
549      eventType = nextNoWhitespace(xpp);
550    }
551    next(xpp);
552    parseElementClose(res);
553    return res;
554  }
555
556  protected boolean parseAttachmentContent(int eventType, XmlPullParser xpp, Attachment res) throws XmlPullParserException, IOException, FHIRFormatError {
557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
558        res.setContentTypeElement(parseCode(xpp));
559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
560        res.setLanguageElement(parseCode(xpp));
561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
562        res.setDataElement(parseBase64Binary(xpp));
563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
564        res.setUrlElement(parseUrl(xpp));
565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
566        res.setSizeElement(parseUnsignedInt(xpp));
567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
568        res.setHashElement(parseBase64Binary(xpp));
569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
570        res.setTitleElement(parseString(xpp));
571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
572        res.setCreationElement(parseDateTime(xpp));
573      } else if (!parseElementContent(eventType, xpp, res))
574        return false;
575    return true;
576  }
577
578  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
579    Count res = new Count();
580    parseTypeAttributes(xpp, res);
581    next(xpp);
582    int eventType = nextNoWhitespace(xpp);
583    while (eventType != XmlPullParser.END_TAG) {
584  if (!parseCountContent(eventType, xpp, res))
585        unknownContent(xpp);
586      eventType = nextNoWhitespace(xpp);
587    }
588    next(xpp);
589    parseElementClose(res);
590    return res;
591  }
592
593  protected boolean parseCountContent(int eventType, XmlPullParser xpp, Count res) throws XmlPullParserException, IOException, FHIRFormatError {
594      if (!parseQuantityContent(eventType, xpp, res))
595        return false;
596    return true;
597  }
598
599  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
600    DataRequirement res = new DataRequirement();
601    parseTypeAttributes(xpp, res);
602    next(xpp);
603    int eventType = nextNoWhitespace(xpp);
604    while (eventType != XmlPullParser.END_TAG) {
605  if (!parseDataRequirementContent(eventType, xpp, res))
606        unknownContent(xpp);
607      eventType = nextNoWhitespace(xpp);
608    }
609    next(xpp);
610    parseElementClose(res);
611    return res;
612  }
613
614  protected boolean parseDataRequirementContent(int eventType, XmlPullParser xpp, DataRequirement res) throws XmlPullParserException, IOException, FHIRFormatError {
615      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
616        res.setTypeElement(parseCode(xpp));
617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
618        res.getProfile().add(parseCanonical(xpp));
619      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
620        res.setSubject(parseType("subject", xpp));
621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
622        res.getMustSupport().add(parseString(xpp));
623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
624        res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(xpp, res));
625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
626        res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(xpp, res));
627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
628        res.setLimitElement(parsePositiveInt(xpp));
629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sort")) {
630        res.getSort().add(parseDataRequirementDataRequirementSortComponent(xpp, res));
631      } else if (!parseElementContent(eventType, xpp, res))
632        return false;
633    return true;
634  }
635
636  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementDataRequirementCodeFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
637    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
638    parseElementAttributes(xpp, res);
639    next(xpp);
640    int eventType = nextNoWhitespace(xpp);
641    while (eventType != XmlPullParser.END_TAG) {
642  if (!parseDataRequirementDataRequirementCodeFilterComponentContent(eventType, xpp, owner, res))
643        unknownContent(xpp);
644      eventType = nextNoWhitespace(xpp);
645    }
646    next(xpp);
647    parseElementClose(res);
648    return res;
649  }
650
651  protected boolean parseDataRequirementDataRequirementCodeFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementCodeFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
652      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
653        res.setPathElement(parseString(xpp));
654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
655        res.setSearchParamElement(parseString(xpp));
656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
657        res.setValueSetElement(parseCanonical(xpp));
658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
659        res.getCode().add(parseCoding(xpp));
660      } else if (!parseElementContent(eventType, xpp, res))
661        return false;
662    return true;
663  }
664
665  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDataRequirementDateFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
666    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
667    parseElementAttributes(xpp, res);
668    next(xpp);
669    int eventType = nextNoWhitespace(xpp);
670    while (eventType != XmlPullParser.END_TAG) {
671  if (!parseDataRequirementDataRequirementDateFilterComponentContent(eventType, xpp, owner, res))
672        unknownContent(xpp);
673      eventType = nextNoWhitespace(xpp);
674    }
675    next(xpp);
676    parseElementClose(res);
677    return res;
678  }
679
680  protected boolean parseDataRequirementDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
681      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
682        res.setPathElement(parseString(xpp));
683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
684        res.setSearchParamElement(parseString(xpp));
685      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
686        res.setValue(parseType("value", xpp));
687      } else if (!parseElementContent(eventType, xpp, res))
688        return false;
689    return true;
690  }
691
692  protected DataRequirement.DataRequirementSortComponent parseDataRequirementDataRequirementSortComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
693    DataRequirement.DataRequirementSortComponent res = new DataRequirement.DataRequirementSortComponent();
694    parseElementAttributes(xpp, res);
695    next(xpp);
696    int eventType = nextNoWhitespace(xpp);
697    while (eventType != XmlPullParser.END_TAG) {
698  if (!parseDataRequirementDataRequirementSortComponentContent(eventType, xpp, owner, res))
699        unknownContent(xpp);
700      eventType = nextNoWhitespace(xpp);
701    }
702    next(xpp);
703    parseElementClose(res);
704    return res;
705  }
706
707  protected boolean parseDataRequirementDataRequirementSortComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementSortComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
708      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
709        res.setPathElement(parseString(xpp));
710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
711        res.setDirectionElement(parseEnumeration(xpp, DataRequirement.SortDirection.NULL, new DataRequirement.SortDirectionEnumFactory()));
712      } else if (!parseElementContent(eventType, xpp, res))
713        return false;
714    return true;
715  }
716
717  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
718    Dosage res = new Dosage();
719    parseTypeAttributes(xpp, res);
720    next(xpp);
721    int eventType = nextNoWhitespace(xpp);
722    while (eventType != XmlPullParser.END_TAG) {
723  if (!parseDosageContent(eventType, xpp, res))
724        unknownContent(xpp);
725      eventType = nextNoWhitespace(xpp);
726    }
727    next(xpp);
728    parseElementClose(res);
729    return res;
730  }
731
732  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
733      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
734        res.setSequenceElement(parseInteger(xpp));
735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
736        res.setTextElement(parseString(xpp));
737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
738        res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
740        res.setPatientInstructionElement(parseString(xpp));
741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
742        res.setTiming(parseTiming(xpp));
743      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
744        res.setAsNeeded(parseType("asNeeded", xpp));
745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
746        res.setSite(parseCodeableConcept(xpp));
747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
748        res.setRoute(parseCodeableConcept(xpp));
749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
750        res.setMethod(parseCodeableConcept(xpp));
751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseAndRate")) {
752        res.getDoseAndRate().add(parseDosageDosageDoseAndRateComponent(xpp, res));
753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
754        res.setMaxDosePerPeriod(parseRatio(xpp));
755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
756        res.setMaxDosePerAdministration(parseQuantity(xpp));
757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
758        res.setMaxDosePerLifetime(parseQuantity(xpp));
759      } else if (!parseBackboneElementContent(eventType, xpp, res))
760        return false;
761    return true;
762  }
763
764  protected Dosage.DosageDoseAndRateComponent parseDosageDosageDoseAndRateComponent(XmlPullParser xpp, Dosage owner) throws XmlPullParserException, IOException, FHIRFormatError {
765    Dosage.DosageDoseAndRateComponent res = new Dosage.DosageDoseAndRateComponent();
766    parseElementAttributes(xpp, res);
767    next(xpp);
768    int eventType = nextNoWhitespace(xpp);
769    while (eventType != XmlPullParser.END_TAG) {
770  if (!parseDosageDosageDoseAndRateComponentContent(eventType, xpp, owner, res))
771        unknownContent(xpp);
772      eventType = nextNoWhitespace(xpp);
773    }
774    next(xpp);
775    parseElementClose(res);
776    return res;
777  }
778
779  protected boolean parseDosageDosageDoseAndRateComponentContent(int eventType, XmlPullParser xpp, Dosage owner, Dosage.DosageDoseAndRateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
780      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
781        res.setType(parseCodeableConcept(xpp));
782      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
783        res.setDose(parseType("dose", xpp));
784      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
785        res.setRate(parseType("rate", xpp));
786      } else if (!parseElementContent(eventType, xpp, res))
787        return false;
788    return true;
789  }
790
791  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
792    Money res = new Money();
793    parseTypeAttributes(xpp, res);
794    next(xpp);
795    int eventType = nextNoWhitespace(xpp);
796    while (eventType != XmlPullParser.END_TAG) {
797  if (!parseMoneyContent(eventType, xpp, res))
798        unknownContent(xpp);
799      eventType = nextNoWhitespace(xpp);
800    }
801    next(xpp);
802    parseElementClose(res);
803    return res;
804  }
805
806  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
808        res.setValueElement(parseDecimal(xpp));
809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
810        res.setCurrencyElement(parseCode(xpp));
811      } else if (!parseElementContent(eventType, xpp, res))
812        return false;
813    return true;
814  }
815
816  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
817    HumanName res = new HumanName();
818    parseTypeAttributes(xpp, res);
819    next(xpp);
820    int eventType = nextNoWhitespace(xpp);
821    while (eventType != XmlPullParser.END_TAG) {
822  if (!parseHumanNameContent(eventType, xpp, res))
823        unknownContent(xpp);
824      eventType = nextNoWhitespace(xpp);
825    }
826    next(xpp);
827    parseElementClose(res);
828    return res;
829  }
830
831  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
832      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
833        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
835        res.setTextElement(parseString(xpp));
836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
837        res.setFamilyElement(parseString(xpp));
838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
839        res.getGiven().add(parseString(xpp));
840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
841        res.getPrefix().add(parseString(xpp));
842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
843        res.getSuffix().add(parseString(xpp));
844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
845        res.setPeriod(parsePeriod(xpp));
846      } else if (!parseElementContent(eventType, xpp, res))
847        return false;
848    return true;
849  }
850
851  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
852    ContactPoint res = new ContactPoint();
853    parseTypeAttributes(xpp, res);
854    next(xpp);
855    int eventType = nextNoWhitespace(xpp);
856    while (eventType != XmlPullParser.END_TAG) {
857  if (!parseContactPointContent(eventType, xpp, res))
858        unknownContent(xpp);
859      eventType = nextNoWhitespace(xpp);
860    }
861    next(xpp);
862    parseElementClose(res);
863    return res;
864  }
865
866  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
867      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
868        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
870        res.setValueElement(parseString(xpp));
871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
872        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
874        res.setRankElement(parsePositiveInt(xpp));
875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
876        res.setPeriod(parsePeriod(xpp));
877      } else if (!parseElementContent(eventType, xpp, res))
878        return false;
879    return true;
880  }
881
882  protected MarketingStatus parseMarketingStatus(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
883    MarketingStatus res = new MarketingStatus();
884    parseTypeAttributes(xpp, res);
885    next(xpp);
886    int eventType = nextNoWhitespace(xpp);
887    while (eventType != XmlPullParser.END_TAG) {
888  if (!parseMarketingStatusContent(eventType, xpp, res))
889        unknownContent(xpp);
890      eventType = nextNoWhitespace(xpp);
891    }
892    next(xpp);
893    parseElementClose(res);
894    return res;
895  }
896
897  protected boolean parseMarketingStatusContent(int eventType, XmlPullParser xpp, MarketingStatus res) throws XmlPullParserException, IOException, FHIRFormatError {
898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
899        res.setCountry(parseCodeableConcept(xpp));
900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
901        res.setJurisdiction(parseCodeableConcept(xpp));
902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
903        res.setStatus(parseCodeableConcept(xpp));
904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRange")) {
905        res.setDateRange(parsePeriod(xpp));
906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
907        res.setRestoreDateElement(parseDateTime(xpp));
908      } else if (!parseBackboneElementContent(eventType, xpp, res))
909        return false;
910    return true;
911  }
912
913  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
914    Identifier res = new Identifier();
915    parseTypeAttributes(xpp, res);
916    next(xpp);
917    int eventType = nextNoWhitespace(xpp);
918    while (eventType != XmlPullParser.END_TAG) {
919  if (!parseIdentifierContent(eventType, xpp, res))
920        unknownContent(xpp);
921      eventType = nextNoWhitespace(xpp);
922    }
923    next(xpp);
924    parseElementClose(res);
925    return res;
926  }
927
928  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
929      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
930        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
932        res.setType(parseCodeableConcept(xpp));
933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
934        res.setSystemElement(parseUri(xpp));
935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
936        res.setValueElement(parseString(xpp));
937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
938        res.setPeriod(parsePeriod(xpp));
939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
940        res.setAssigner(parseReference(xpp));
941      } else if (!parseElementContent(eventType, xpp, res))
942        return false;
943    return true;
944  }
945
946  protected SubstanceAmount parseSubstanceAmount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
947    SubstanceAmount res = new SubstanceAmount();
948    parseTypeAttributes(xpp, res);
949    next(xpp);
950    int eventType = nextNoWhitespace(xpp);
951    while (eventType != XmlPullParser.END_TAG) {
952  if (!parseSubstanceAmountContent(eventType, xpp, res))
953        unknownContent(xpp);
954      eventType = nextNoWhitespace(xpp);
955    }
956    next(xpp);
957    parseElementClose(res);
958    return res;
959  }
960
961  protected boolean parseSubstanceAmountContent(int eventType, XmlPullParser xpp, SubstanceAmount res) throws XmlPullParserException, IOException, FHIRFormatError {
962      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
963        res.setAmount(parseType("amount", xpp));
964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
965        res.setAmountType(parseCodeableConcept(xpp));
966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountText")) {
967        res.setAmountTextElement(parseString(xpp));
968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
969        res.setReferenceRange(parseSubstanceAmountSubstanceAmountReferenceRangeComponent(xpp, res));
970      } else if (!parseBackboneElementContent(eventType, xpp, res))
971        return false;
972    return true;
973  }
974
975  protected SubstanceAmount.SubstanceAmountReferenceRangeComponent parseSubstanceAmountSubstanceAmountReferenceRangeComponent(XmlPullParser xpp, SubstanceAmount owner) throws XmlPullParserException, IOException, FHIRFormatError {
976    SubstanceAmount.SubstanceAmountReferenceRangeComponent res = new SubstanceAmount.SubstanceAmountReferenceRangeComponent();
977    parseElementAttributes(xpp, res);
978    next(xpp);
979    int eventType = nextNoWhitespace(xpp);
980    while (eventType != XmlPullParser.END_TAG) {
981  if (!parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(eventType, xpp, owner, res))
982        unknownContent(xpp);
983      eventType = nextNoWhitespace(xpp);
984    }
985    next(xpp);
986    parseElementClose(res);
987    return res;
988  }
989
990  protected boolean parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(int eventType, XmlPullParser xpp, SubstanceAmount owner, SubstanceAmount.SubstanceAmountReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
991      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowLimit")) {
992        res.setLowLimit(parseQuantity(xpp));
993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("highLimit")) {
994        res.setHighLimit(parseQuantity(xpp));
995      } else if (!parseElementContent(eventType, xpp, res))
996        return false;
997    return true;
998  }
999
1000  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1001    Coding res = new Coding();
1002    parseTypeAttributes(xpp, res);
1003    next(xpp);
1004    int eventType = nextNoWhitespace(xpp);
1005    while (eventType != XmlPullParser.END_TAG) {
1006  if (!parseCodingContent(eventType, xpp, res))
1007        unknownContent(xpp);
1008      eventType = nextNoWhitespace(xpp);
1009    }
1010    next(xpp);
1011    parseElementClose(res);
1012    return res;
1013  }
1014
1015  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
1016      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1017        res.setSystemElement(parseUri(xpp));
1018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
1019        res.setVersionElement(parseString(xpp));
1020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1021        res.setCodeElement(parseCode(xpp));
1022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1023        res.setDisplayElement(parseString(xpp));
1024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
1025        res.setUserSelectedElement(parseBoolean(xpp));
1026      } else if (!parseElementContent(eventType, xpp, res))
1027        return false;
1028    return true;
1029  }
1030
1031  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1032    SampledData res = new SampledData();
1033    parseTypeAttributes(xpp, res);
1034    next(xpp);
1035    int eventType = nextNoWhitespace(xpp);
1036    while (eventType != XmlPullParser.END_TAG) {
1037  if (!parseSampledDataContent(eventType, xpp, res))
1038        unknownContent(xpp);
1039      eventType = nextNoWhitespace(xpp);
1040    }
1041    next(xpp);
1042    parseElementClose(res);
1043    return res;
1044  }
1045
1046  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
1047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
1048        res.setOrigin(parseQuantity(xpp));
1049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1050        res.setPeriodElement(parseDecimal(xpp));
1051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
1052        res.setFactorElement(parseDecimal(xpp));
1053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
1054        res.setLowerLimitElement(parseDecimal(xpp));
1055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
1056        res.setUpperLimitElement(parseDecimal(xpp));
1057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
1058        res.setDimensionsElement(parsePositiveInt(xpp));
1059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1060        res.setDataElement(parseString(xpp));
1061      } else if (!parseElementContent(eventType, xpp, res))
1062        return false;
1063    return true;
1064  }
1065
1066  protected Population parsePopulation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1067    Population res = new Population();
1068    parseTypeAttributes(xpp, res);
1069    next(xpp);
1070    int eventType = nextNoWhitespace(xpp);
1071    while (eventType != XmlPullParser.END_TAG) {
1072  if (!parsePopulationContent(eventType, xpp, res))
1073        unknownContent(xpp);
1074      eventType = nextNoWhitespace(xpp);
1075    }
1076    next(xpp);
1077    parseElementClose(res);
1078    return res;
1079  }
1080
1081  protected boolean parsePopulationContent(int eventType, XmlPullParser xpp, Population res) throws XmlPullParserException, IOException, FHIRFormatError {
1082      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
1083        res.setAge(parseType("age", xpp));
1084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
1085        res.setGender(parseCodeableConcept(xpp));
1086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("race")) {
1087        res.setRace(parseCodeableConcept(xpp));
1088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physiologicalCondition")) {
1089        res.setPhysiologicalCondition(parseCodeableConcept(xpp));
1090      } else if (!parseBackboneElementContent(eventType, xpp, res))
1091        return false;
1092    return true;
1093  }
1094
1095  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1096    Ratio res = new Ratio();
1097    parseTypeAttributes(xpp, res);
1098    next(xpp);
1099    int eventType = nextNoWhitespace(xpp);
1100    while (eventType != XmlPullParser.END_TAG) {
1101  if (!parseRatioContent(eventType, xpp, res))
1102        unknownContent(xpp);
1103      eventType = nextNoWhitespace(xpp);
1104    }
1105    next(xpp);
1106    parseElementClose(res);
1107    return res;
1108  }
1109
1110  protected boolean parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
1111      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
1112        res.setNumerator(parseQuantity(xpp));
1113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
1114        res.setDenominator(parseQuantity(xpp));
1115      } else if (!parseElementContent(eventType, xpp, res))
1116        return false;
1117    return true;
1118  }
1119
1120  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1121    Distance res = new Distance();
1122    parseTypeAttributes(xpp, res);
1123    next(xpp);
1124    int eventType = nextNoWhitespace(xpp);
1125    while (eventType != XmlPullParser.END_TAG) {
1126  if (!parseDistanceContent(eventType, xpp, res))
1127        unknownContent(xpp);
1128      eventType = nextNoWhitespace(xpp);
1129    }
1130    next(xpp);
1131    parseElementClose(res);
1132    return res;
1133  }
1134
1135  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
1136      if (!parseQuantityContent(eventType, xpp, res))
1137        return false;
1138    return true;
1139  }
1140
1141  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1142    Age res = new Age();
1143    parseTypeAttributes(xpp, res);
1144    next(xpp);
1145    int eventType = nextNoWhitespace(xpp);
1146    while (eventType != XmlPullParser.END_TAG) {
1147  if (!parseAgeContent(eventType, xpp, res))
1148        unknownContent(xpp);
1149      eventType = nextNoWhitespace(xpp);
1150    }
1151    next(xpp);
1152    parseElementClose(res);
1153    return res;
1154  }
1155
1156  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
1157      if (!parseQuantityContent(eventType, xpp, res))
1158        return false;
1159    return true;
1160  }
1161
1162  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1163    Reference res = new Reference();
1164    parseTypeAttributes(xpp, res);
1165    next(xpp);
1166    int eventType = nextNoWhitespace(xpp);
1167    while (eventType != XmlPullParser.END_TAG) {
1168  if (!parseReferenceContent(eventType, xpp, res))
1169        unknownContent(xpp);
1170      eventType = nextNoWhitespace(xpp);
1171    }
1172    next(xpp);
1173    parseElementClose(res);
1174    return res;
1175  }
1176
1177  protected boolean parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
1178      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1179        res.setReferenceElement(parseString(xpp));
1180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1181        res.setTypeElement(parseUri(xpp));
1182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1183        res.setIdentifier(parseIdentifier(xpp));
1184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1185        res.setDisplayElement(parseString(xpp));
1186      } else if (!parseElementContent(eventType, xpp, res))
1187        return false;
1188    return true;
1189  }
1190
1191  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1192    TriggerDefinition res = new TriggerDefinition();
1193    parseTypeAttributes(xpp, res);
1194    next(xpp);
1195    int eventType = nextNoWhitespace(xpp);
1196    while (eventType != XmlPullParser.END_TAG) {
1197  if (!parseTriggerDefinitionContent(eventType, xpp, res))
1198        unknownContent(xpp);
1199      eventType = nextNoWhitespace(xpp);
1200    }
1201    next(xpp);
1202    parseElementClose(res);
1203    return res;
1204  }
1205
1206  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1207      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1208        res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
1209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1210        res.setNameElement(parseString(xpp));
1211      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
1212        res.setTiming(parseType("timing", xpp));
1213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1214        res.getData().add(parseDataRequirement(xpp));
1215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1216        res.setCondition(parseExpression(xpp));
1217      } else if (!parseElementContent(eventType, xpp, res))
1218        return false;
1219    return true;
1220  }
1221
1222  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1223    Quantity res = new Quantity();
1224    parseTypeAttributes(xpp, res);
1225    next(xpp);
1226    int eventType = nextNoWhitespace(xpp);
1227    while (eventType != XmlPullParser.END_TAG) {
1228  if (!parseQuantityContent(eventType, xpp, res))
1229        unknownContent(xpp);
1230      eventType = nextNoWhitespace(xpp);
1231    }
1232    next(xpp);
1233    parseElementClose(res);
1234    return res;
1235  }
1236
1237  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
1238      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1239        res.setValueElement(parseDecimal(xpp));
1240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
1241        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
1242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
1243        res.setUnitElement(parseString(xpp));
1244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1245        res.setSystemElement(parseUri(xpp));
1246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1247        res.setCodeElement(parseCode(xpp));
1248      } else if (!parseElementContent(eventType, xpp, res))
1249        return false;
1250    return true;
1251  }
1252
1253  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1254    Period res = new Period();
1255    parseTypeAttributes(xpp, res);
1256    next(xpp);
1257    int eventType = nextNoWhitespace(xpp);
1258    while (eventType != XmlPullParser.END_TAG) {
1259  if (!parsePeriodContent(eventType, xpp, res))
1260        unknownContent(xpp);
1261      eventType = nextNoWhitespace(xpp);
1262    }
1263    next(xpp);
1264    parseElementClose(res);
1265    return res;
1266  }
1267
1268  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
1269      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1270        res.setStartElement(parseDateTime(xpp));
1271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1272        res.setEndElement(parseDateTime(xpp));
1273      } else if (!parseElementContent(eventType, xpp, res))
1274        return false;
1275    return true;
1276  }
1277
1278  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1279    Duration res = new Duration();
1280    parseTypeAttributes(xpp, res);
1281    next(xpp);
1282    int eventType = nextNoWhitespace(xpp);
1283    while (eventType != XmlPullParser.END_TAG) {
1284  if (!parseDurationContent(eventType, xpp, res))
1285        unknownContent(xpp);
1286      eventType = nextNoWhitespace(xpp);
1287    }
1288    next(xpp);
1289    parseElementClose(res);
1290    return res;
1291  }
1292
1293  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
1294      if (!parseQuantityContent(eventType, xpp, res))
1295        return false;
1296    return true;
1297  }
1298
1299  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1300    Range res = new Range();
1301    parseTypeAttributes(xpp, res);
1302    next(xpp);
1303    int eventType = nextNoWhitespace(xpp);
1304    while (eventType != XmlPullParser.END_TAG) {
1305  if (!parseRangeContent(eventType, xpp, res))
1306        unknownContent(xpp);
1307      eventType = nextNoWhitespace(xpp);
1308    }
1309    next(xpp);
1310    parseElementClose(res);
1311    return res;
1312  }
1313
1314  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
1315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
1316        res.setLow(parseQuantity(xpp));
1317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
1318        res.setHigh(parseQuantity(xpp));
1319      } else if (!parseElementContent(eventType, xpp, res))
1320        return false;
1321    return true;
1322  }
1323
1324  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1325    RelatedArtifact res = new RelatedArtifact();
1326    parseTypeAttributes(xpp, res);
1327    next(xpp);
1328    int eventType = nextNoWhitespace(xpp);
1329    while (eventType != XmlPullParser.END_TAG) {
1330  if (!parseRelatedArtifactContent(eventType, xpp, res))
1331        unknownContent(xpp);
1332      eventType = nextNoWhitespace(xpp);
1333    }
1334    next(xpp);
1335    parseElementClose(res);
1336    return res;
1337  }
1338
1339  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
1340      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1341        res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
1342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1343        res.setLabelElement(parseString(xpp));
1344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1345        res.setDisplayElement(parseString(xpp));
1346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
1347        res.setCitationElement(parseMarkdown(xpp));
1348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1349        res.setUrlElement(parseUrl(xpp));
1350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1351        res.setDocument(parseAttachment(xpp));
1352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1353        res.setResourceElement(parseCanonical(xpp));
1354      } else if (!parseElementContent(eventType, xpp, res))
1355        return false;
1356    return true;
1357  }
1358
1359  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1360    Annotation res = new Annotation();
1361    parseTypeAttributes(xpp, res);
1362    next(xpp);
1363    int eventType = nextNoWhitespace(xpp);
1364    while (eventType != XmlPullParser.END_TAG) {
1365  if (!parseAnnotationContent(eventType, xpp, res))
1366        unknownContent(xpp);
1367      eventType = nextNoWhitespace(xpp);
1368    }
1369    next(xpp);
1370    parseElementClose(res);
1371    return res;
1372  }
1373
1374  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
1375      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
1376        res.setAuthor(parseType("author", xpp));
1377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
1378        res.setTimeElement(parseDateTime(xpp));
1379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1380        res.setTextElement(parseMarkdown(xpp));
1381      } else if (!parseElementContent(eventType, xpp, res))
1382        return false;
1383    return true;
1384  }
1385
1386  protected ProductShelfLife parseProductShelfLife(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1387    ProductShelfLife res = new ProductShelfLife();
1388    parseTypeAttributes(xpp, res);
1389    next(xpp);
1390    int eventType = nextNoWhitespace(xpp);
1391    while (eventType != XmlPullParser.END_TAG) {
1392  if (!parseProductShelfLifeContent(eventType, xpp, res))
1393        unknownContent(xpp);
1394      eventType = nextNoWhitespace(xpp);
1395    }
1396    next(xpp);
1397    parseElementClose(res);
1398    return res;
1399  }
1400
1401  protected boolean parseProductShelfLifeContent(int eventType, XmlPullParser xpp, ProductShelfLife res) throws XmlPullParserException, IOException, FHIRFormatError {
1402      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1403        res.setIdentifier(parseIdentifier(xpp));
1404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1405        res.setType(parseCodeableConcept(xpp));
1406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1407        res.setPeriod(parseQuantity(xpp));
1408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialPrecautionsForStorage")) {
1409        res.getSpecialPrecautionsForStorage().add(parseCodeableConcept(xpp));
1410      } else if (!parseBackboneElementContent(eventType, xpp, res))
1411        return false;
1412    return true;
1413  }
1414
1415  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1416    ContactDetail res = new ContactDetail();
1417    parseTypeAttributes(xpp, res);
1418    next(xpp);
1419    int eventType = nextNoWhitespace(xpp);
1420    while (eventType != XmlPullParser.END_TAG) {
1421  if (!parseContactDetailContent(eventType, xpp, res))
1422        unknownContent(xpp);
1423      eventType = nextNoWhitespace(xpp);
1424    }
1425    next(xpp);
1426    parseElementClose(res);
1427    return res;
1428  }
1429
1430  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
1431      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1432        res.setNameElement(parseString(xpp));
1433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1434        res.getTelecom().add(parseContactPoint(xpp));
1435      } else if (!parseElementContent(eventType, xpp, res))
1436        return false;
1437    return true;
1438  }
1439
1440  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1441    UsageContext res = new UsageContext();
1442    parseTypeAttributes(xpp, res);
1443    next(xpp);
1444    int eventType = nextNoWhitespace(xpp);
1445    while (eventType != XmlPullParser.END_TAG) {
1446  if (!parseUsageContextContent(eventType, xpp, res))
1447        unknownContent(xpp);
1448      eventType = nextNoWhitespace(xpp);
1449    }
1450    next(xpp);
1451    parseElementClose(res);
1452    return res;
1453  }
1454
1455  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
1456      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1457        res.setCode(parseCoding(xpp));
1458      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1459        res.setValue(parseType("value", xpp));
1460      } else if (!parseElementContent(eventType, xpp, res))
1461        return false;
1462    return true;
1463  }
1464
1465  protected Expression parseExpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1466    Expression res = new Expression();
1467    parseTypeAttributes(xpp, res);
1468    next(xpp);
1469    int eventType = nextNoWhitespace(xpp);
1470    while (eventType != XmlPullParser.END_TAG) {
1471  if (!parseExpressionContent(eventType, xpp, res))
1472        unknownContent(xpp);
1473      eventType = nextNoWhitespace(xpp);
1474    }
1475    next(xpp);
1476    parseElementClose(res);
1477    return res;
1478  }
1479
1480  protected boolean parseExpressionContent(int eventType, XmlPullParser xpp, Expression res) throws XmlPullParserException, IOException, FHIRFormatError {
1481      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1482        res.setDescriptionElement(parseString(xpp));
1483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1484        res.setNameElement(parseId(xpp));
1485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1486        res.setLanguageElement(parseCode(xpp));
1487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1488        res.setExpressionElement(parseString(xpp));
1489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1490        res.setReferenceElement(parseUri(xpp));
1491      } else if (!parseElementContent(eventType, xpp, res))
1492        return false;
1493    return true;
1494  }
1495
1496  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1497    Signature res = new Signature();
1498    parseTypeAttributes(xpp, res);
1499    next(xpp);
1500    int eventType = nextNoWhitespace(xpp);
1501    while (eventType != XmlPullParser.END_TAG) {
1502  if (!parseSignatureContent(eventType, xpp, res))
1503        unknownContent(xpp);
1504      eventType = nextNoWhitespace(xpp);
1505    }
1506    next(xpp);
1507    parseElementClose(res);
1508    return res;
1509  }
1510
1511  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
1512      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1513        res.getType().add(parseCoding(xpp));
1514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1515        res.setWhenElement(parseInstant(xpp));
1516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
1517        res.setWho(parseReference(xpp));
1518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
1519        res.setOnBehalfOf(parseReference(xpp));
1520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetFormat")) {
1521        res.setTargetFormatElement(parseCode(xpp));
1522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sigFormat")) {
1523        res.setSigFormatElement(parseCode(xpp));
1524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1525        res.setDataElement(parseBase64Binary(xpp));
1526      } else if (!parseElementContent(eventType, xpp, res))
1527        return false;
1528    return true;
1529  }
1530
1531  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1532    Timing res = new Timing();
1533    parseTypeAttributes(xpp, res);
1534    next(xpp);
1535    int eventType = nextNoWhitespace(xpp);
1536    while (eventType != XmlPullParser.END_TAG) {
1537  if (!parseTimingContent(eventType, xpp, res))
1538        unknownContent(xpp);
1539      eventType = nextNoWhitespace(xpp);
1540    }
1541    next(xpp);
1542    parseElementClose(res);
1543    return res;
1544  }
1545
1546  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
1547      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1548        res.getEvent().add(parseDateTime(xpp));
1549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1550        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
1551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1552        res.setCode(parseCodeableConcept(xpp));
1553      } else if (!parseBackboneElementContent(eventType, xpp, res))
1554        return false;
1555    return true;
1556  }
1557
1558  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
1559    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1560    parseElementAttributes(xpp, res);
1561    next(xpp);
1562    int eventType = nextNoWhitespace(xpp);
1563    while (eventType != XmlPullParser.END_TAG) {
1564  if (!parseTimingTimingRepeatComponentContent(eventType, xpp, owner, res))
1565        unknownContent(xpp);
1566      eventType = nextNoWhitespace(xpp);
1567    }
1568    next(xpp);
1569    parseElementClose(res);
1570    return res;
1571  }
1572
1573  protected boolean parseTimingTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing owner, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1574      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1575        res.setBounds(parseType("bounds", xpp));
1576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1577        res.setCountElement(parsePositiveInt(xpp));
1578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
1579        res.setCountMaxElement(parsePositiveInt(xpp));
1580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
1581        res.setDurationElement(parseDecimal(xpp));
1582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
1583        res.setDurationMaxElement(parseDecimal(xpp));
1584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
1585        res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
1587        res.setFrequencyElement(parsePositiveInt(xpp));
1588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
1589        res.setFrequencyMaxElement(parsePositiveInt(xpp));
1590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1591        res.setPeriodElement(parseDecimal(xpp));
1592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
1593        res.setPeriodMaxElement(parseDecimal(xpp));
1594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
1595        res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
1597        res.getDayOfWeek().add(parseEnumeration(xpp, Timing.DayOfWeek.NULL, new Timing.DayOfWeekEnumFactory()));
1598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
1599        res.getTimeOfDay().add(parseTime(xpp));
1600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1601        res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
1602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
1603        res.setOffsetElement(parseUnsignedInt(xpp));
1604      } else if (!parseElementContent(eventType, xpp, res))
1605        return false;
1606    return true;
1607  }
1608
1609  protected ProdCharacteristic parseProdCharacteristic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1610    ProdCharacteristic res = new ProdCharacteristic();
1611    parseTypeAttributes(xpp, res);
1612    next(xpp);
1613    int eventType = nextNoWhitespace(xpp);
1614    while (eventType != XmlPullParser.END_TAG) {
1615  if (!parseProdCharacteristicContent(eventType, xpp, res))
1616        unknownContent(xpp);
1617      eventType = nextNoWhitespace(xpp);
1618    }
1619    next(xpp);
1620    parseElementClose(res);
1621    return res;
1622  }
1623
1624  protected boolean parseProdCharacteristicContent(int eventType, XmlPullParser xpp, ProdCharacteristic res) throws XmlPullParserException, IOException, FHIRFormatError {
1625      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
1626        res.setHeight(parseQuantity(xpp));
1627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
1628        res.setWidth(parseQuantity(xpp));
1629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("depth")) {
1630        res.setDepth(parseQuantity(xpp));
1631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("weight")) {
1632        res.setWeight(parseQuantity(xpp));
1633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nominalVolume")) {
1634        res.setNominalVolume(parseQuantity(xpp));
1635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("externalDiameter")) {
1636        res.setExternalDiameter(parseQuantity(xpp));
1637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shape")) {
1638        res.setShapeElement(parseString(xpp));
1639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
1640        res.getColor().add(parseString(xpp));
1641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imprint")) {
1642        res.getImprint().add(parseString(xpp));
1643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
1644        res.getImage().add(parseAttachment(xpp));
1645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
1646        res.setScoring(parseCodeableConcept(xpp));
1647      } else if (!parseBackboneElementContent(eventType, xpp, res))
1648        return false;
1649    return true;
1650  }
1651
1652  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1653    CodeableConcept res = new CodeableConcept();
1654    parseTypeAttributes(xpp, res);
1655    next(xpp);
1656    int eventType = nextNoWhitespace(xpp);
1657    while (eventType != XmlPullParser.END_TAG) {
1658  if (!parseCodeableConceptContent(eventType, xpp, res))
1659        unknownContent(xpp);
1660      eventType = nextNoWhitespace(xpp);
1661    }
1662    next(xpp);
1663    parseElementClose(res);
1664    return res;
1665  }
1666
1667  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
1668      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
1669        res.getCoding().add(parseCoding(xpp));
1670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1671        res.setTextElement(parseString(xpp));
1672      } else if (!parseElementContent(eventType, xpp, res))
1673        return false;
1674    return true;
1675  }
1676
1677  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1678    ParameterDefinition res = new ParameterDefinition();
1679    parseTypeAttributes(xpp, res);
1680    next(xpp);
1681    int eventType = nextNoWhitespace(xpp);
1682    while (eventType != XmlPullParser.END_TAG) {
1683  if (!parseParameterDefinitionContent(eventType, xpp, res))
1684        unknownContent(xpp);
1685      eventType = nextNoWhitespace(xpp);
1686    }
1687    next(xpp);
1688    parseElementClose(res);
1689    return res;
1690  }
1691
1692  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1694        res.setNameElement(parseCode(xpp));
1695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1696        res.setUseElement(parseEnumeration(xpp, ParameterDefinition.ParameterUse.NULL, new ParameterDefinition.ParameterUseEnumFactory()));
1697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1698        res.setMinElement(parseInteger(xpp));
1699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1700        res.setMaxElement(parseString(xpp));
1701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1702        res.setDocumentationElement(parseString(xpp));
1703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1704        res.setTypeElement(parseCode(xpp));
1705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1706        res.setProfileElement(parseCanonical(xpp));
1707      } else if (!parseElementContent(eventType, xpp, res))
1708        return false;
1709    return true;
1710  }
1711
1712  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1713    ElementDefinition res = new ElementDefinition();
1714    parseElementAttributes(xpp, res);
1715    next(xpp);
1716    int eventType = nextNoWhitespace(xpp);
1717    while (eventType != XmlPullParser.END_TAG) {
1718  if (!parseElementDefinitionContent(eventType, xpp, res))
1719        unknownContent(xpp);
1720      eventType = nextNoWhitespace(xpp);
1721    }
1722    next(xpp);
1723    parseElementClose(res);
1724    return res;
1725  }
1726
1727  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1729        res.setPathElement(parseString(xpp));
1730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1731        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
1733        res.setSliceNameElement(parseString(xpp));
1734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceIsConstraining")) {
1735        res.setSliceIsConstrainingElement(parseBoolean(xpp));
1736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1737        res.setLabelElement(parseString(xpp));
1738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1739        res.getCode().add(parseCoding(xpp));
1740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1741        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1743        res.setShortElement(parseString(xpp));
1744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1745        res.setDefinitionElement(parseMarkdown(xpp));
1746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1747        res.setCommentElement(parseMarkdown(xpp));
1748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1749        res.setRequirementsElement(parseMarkdown(xpp));
1750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1751        res.getAlias().add(parseString(xpp));
1752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1753        res.setMinElement(parseUnsignedInt(xpp));
1754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1755        res.setMaxElement(parseString(xpp));
1756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1757        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1759        res.setContentReferenceElement(parseUri(xpp));
1760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1761        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1762      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1763        res.setDefaultValue(parseType("defaultValue", xpp));
1764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1765        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1767        res.setOrderMeaningElement(parseString(xpp));
1768      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1769        res.setFixed(parseType("fixed", xpp));
1770      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1771        res.setPattern(parseType("pattern", xpp));
1772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1773        res.getExample().add(parseElementDefinitionElementDefinitionExampleComponent(xpp, res));
1774      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1775        res.setMinValue(parseType("minValue", xpp));
1776      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1777        res.setMaxValue(parseType("maxValue", xpp));
1778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1779        res.setMaxLengthElement(parseInteger(xpp));
1780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1781        res.getCondition().add(parseId(xpp));
1782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1783        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1785        res.setMustSupportElement(parseBoolean(xpp));
1786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1787        res.setIsModifierElement(parseBoolean(xpp));
1788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifierReason")) {
1789        res.setIsModifierReasonElement(parseString(xpp));
1790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1791        res.setIsSummaryElement(parseBoolean(xpp));
1792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1793        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1795        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1796      } else if (!parseBackboneElementContent(eventType, xpp, res))
1797        return false;
1798    return true;
1799  }
1800
1801  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1802    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1803    parseElementAttributes(xpp, res);
1804    next(xpp);
1805    int eventType = nextNoWhitespace(xpp);
1806    while (eventType != XmlPullParser.END_TAG) {
1807  if (!parseElementDefinitionElementDefinitionSlicingComponentContent(eventType, xpp, owner, res))
1808        unknownContent(xpp);
1809      eventType = nextNoWhitespace(xpp);
1810    }
1811    next(xpp);
1812    parseElementClose(res);
1813    return res;
1814  }
1815
1816  protected boolean parseElementDefinitionElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1817      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1818        res.getDiscriminator().add(parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(xpp, owner));
1819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1820        res.setDescriptionElement(parseString(xpp));
1821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1822        res.setOrderedElement(parseBoolean(xpp));
1823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1824        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1825      } else if (!parseElementContent(eventType, xpp, res))
1826        return false;
1827    return true;
1828  }
1829
1830  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1831    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1832    parseElementAttributes(xpp, res);
1833    next(xpp);
1834    int eventType = nextNoWhitespace(xpp);
1835    while (eventType != XmlPullParser.END_TAG) {
1836  if (!parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(eventType, xpp, owner, res))
1837        unknownContent(xpp);
1838      eventType = nextNoWhitespace(xpp);
1839    }
1840    next(xpp);
1841    parseElementClose(res);
1842    return res;
1843  }
1844
1845  protected boolean parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1846      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1847        res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1849        res.setPathElement(parseString(xpp));
1850      } else if (!parseElementContent(eventType, xpp, res))
1851        return false;
1852    return true;
1853  }
1854
1855  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1856    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1857    parseElementAttributes(xpp, res);
1858    next(xpp);
1859    int eventType = nextNoWhitespace(xpp);
1860    while (eventType != XmlPullParser.END_TAG) {
1861  if (!parseElementDefinitionElementDefinitionBaseComponentContent(eventType, xpp, owner, res))
1862        unknownContent(xpp);
1863      eventType = nextNoWhitespace(xpp);
1864    }
1865    next(xpp);
1866    parseElementClose(res);
1867    return res;
1868  }
1869
1870  protected boolean parseElementDefinitionElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1871      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1872        res.setPathElement(parseString(xpp));
1873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1874        res.setMinElement(parseUnsignedInt(xpp));
1875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1876        res.setMaxElement(parseString(xpp));
1877      } else if (!parseElementContent(eventType, xpp, res))
1878        return false;
1879    return true;
1880  }
1881
1882  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1883    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1884    parseElementAttributes(xpp, res);
1885    next(xpp);
1886    int eventType = nextNoWhitespace(xpp);
1887    while (eventType != XmlPullParser.END_TAG) {
1888  if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, owner, res))
1889        unknownContent(xpp);
1890      eventType = nextNoWhitespace(xpp);
1891    }
1892    next(xpp);
1893    parseElementClose(res);
1894    return res;
1895  }
1896
1897  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1899        res.setCodeElement(parseUri(xpp));
1900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1901        res.getProfile().add(parseCanonical(xpp));
1902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1903        res.getTargetProfile().add(parseCanonical(xpp));
1904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1905        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1907        res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1908      } else if (!parseElementContent(eventType, xpp, res))
1909        return false;
1910    return true;
1911  }
1912
1913  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionElementDefinitionExampleComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1914    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1915    parseElementAttributes(xpp, res);
1916    next(xpp);
1917    int eventType = nextNoWhitespace(xpp);
1918    while (eventType != XmlPullParser.END_TAG) {
1919  if (!parseElementDefinitionElementDefinitionExampleComponentContent(eventType, xpp, owner, res))
1920        unknownContent(xpp);
1921      eventType = nextNoWhitespace(xpp);
1922    }
1923    next(xpp);
1924    parseElementClose(res);
1925    return res;
1926  }
1927
1928  protected boolean parseElementDefinitionElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1929      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1930        res.setLabelElement(parseString(xpp));
1931      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1932        res.setValue(parseType("value", xpp));
1933      } else if (!parseElementContent(eventType, xpp, res))
1934        return false;
1935    return true;
1936  }
1937
1938  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1939    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1940    parseElementAttributes(xpp, res);
1941    next(xpp);
1942    int eventType = nextNoWhitespace(xpp);
1943    while (eventType != XmlPullParser.END_TAG) {
1944  if (!parseElementDefinitionElementDefinitionConstraintComponentContent(eventType, xpp, owner, res))
1945        unknownContent(xpp);
1946      eventType = nextNoWhitespace(xpp);
1947    }
1948    next(xpp);
1949    parseElementClose(res);
1950    return res;
1951  }
1952
1953  protected boolean parseElementDefinitionElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1954      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1955        res.setKeyElement(parseId(xpp));
1956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1957        res.setRequirementsElement(parseString(xpp));
1958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1959        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1961        res.setHumanElement(parseString(xpp));
1962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1963        res.setExpressionElement(parseString(xpp));
1964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1965        res.setXpathElement(parseString(xpp));
1966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1967        res.setSourceElement(parseCanonical(xpp));
1968      } else if (!parseElementContent(eventType, xpp, res))
1969        return false;
1970    return true;
1971  }
1972
1973  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1974    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1975    parseElementAttributes(xpp, res);
1976    next(xpp);
1977    int eventType = nextNoWhitespace(xpp);
1978    while (eventType != XmlPullParser.END_TAG) {
1979  if (!parseElementDefinitionElementDefinitionBindingComponentContent(eventType, xpp, owner, res))
1980        unknownContent(xpp);
1981      eventType = nextNoWhitespace(xpp);
1982    }
1983    next(xpp);
1984    parseElementClose(res);
1985    return res;
1986  }
1987
1988  protected boolean parseElementDefinitionElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1989      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1990        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1992        res.setDescriptionElement(parseString(xpp));
1993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
1994        res.setValueSetElement(parseCanonical(xpp));
1995      } else if (!parseElementContent(eventType, xpp, res))
1996        return false;
1997    return true;
1998  }
1999
2000  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2001    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
2002    parseElementAttributes(xpp, res);
2003    next(xpp);
2004    int eventType = nextNoWhitespace(xpp);
2005    while (eventType != XmlPullParser.END_TAG) {
2006  if (!parseElementDefinitionElementDefinitionMappingComponentContent(eventType, xpp, owner, res))
2007        unknownContent(xpp);
2008      eventType = nextNoWhitespace(xpp);
2009    }
2010    next(xpp);
2011    parseElementClose(res);
2012    return res;
2013  }
2014
2015  protected boolean parseElementDefinitionElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2016      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
2017        res.setIdentityElement(parseId(xpp));
2018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2019        res.setLanguageElement(parseCode(xpp));
2020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
2021        res.setMapElement(parseString(xpp));
2022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2023        res.setCommentElement(parseString(xpp));
2024      } else if (!parseElementContent(eventType, xpp, res))
2025        return false;
2026    return true;
2027  }
2028
2029  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2030    parseResourceAttributes(xpp, res);
2031  }
2032
2033  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2034      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
2035        res.setText(parseNarrative(xpp));
2036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
2037        res.getContained().add(parseResourceContained(xpp));
2038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
2039        res.getExtension().add(parseExtension(xpp));
2040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
2041        res.getModifierExtension().add(parseExtension(xpp));
2042    } else
2043    return parseResourceContent(eventType, xpp, res);
2044    return true;
2045  }
2046
2047  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2048    Parameters res = new Parameters();
2049    parseResourceAttributes(xpp, res);
2050    next(xpp);
2051    int eventType = nextNoWhitespace(xpp);
2052    while (eventType != XmlPullParser.END_TAG) {
2053  if (!parseParametersContent(eventType, xpp, res))
2054        unknownContent(xpp);
2055      eventType = nextNoWhitespace(xpp);
2056    }
2057    next(xpp);
2058    parseElementClose(res);
2059    return res;
2060  }
2061
2062  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
2063      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
2064        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
2065      } else if (!parseResourceContent(eventType, xpp, res))
2066        return false;
2067    return true;
2068  }
2069
2070  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
2071    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
2072    parseBackboneAttributes(xpp, res);
2073    next(xpp);
2074    int eventType = nextNoWhitespace(xpp);
2075    while (eventType != XmlPullParser.END_TAG) {
2076  if (!parseParametersParametersParameterComponentContent(eventType, xpp, owner, res))
2077        unknownContent(xpp);
2078      eventType = nextNoWhitespace(xpp);
2079    }
2080    next(xpp);
2081    parseElementClose(res);
2082    return res;
2083  }
2084
2085  protected boolean parseParametersParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters owner, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2086      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2087        res.setNameElement(parseString(xpp));
2088      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2089        res.setValue(parseType("value", xpp));
2090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2091        res.setResource(parseResourceContained(xpp));
2092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
2093        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
2094      } else if (!parseBackboneElementContent(eventType, xpp, res))
2095        return false;
2096    return true;
2097  }
2098
2099  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2100    if (!comments.isEmpty()) {
2101      res.getFormatCommentsPre().addAll(comments);
2102      comments.clear();
2103     }
2104  }
2105
2106  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2107      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
2108        res.setIdElement(parseId(xpp));
2109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
2110        res.setMeta(parseMeta(xpp));
2111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
2112        res.setImplicitRulesElement(parseUri(xpp));
2113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2114        res.setLanguageElement(parseCode(xpp));
2115    } else
2116        return false;
2117    return true;
2118  }
2119
2120  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2121    Account res = new Account();
2122    parseDomainResourceAttributes(xpp, res);
2123    next(xpp);
2124    int eventType = nextNoWhitespace(xpp);
2125    while (eventType != XmlPullParser.END_TAG) {
2126  if (!parseAccountContent(eventType, xpp, res))
2127        unknownContent(xpp);
2128      eventType = nextNoWhitespace(xpp);
2129    }
2130    next(xpp);
2131    parseElementClose(res);
2132    return res;
2133  }
2134
2135  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
2136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2137        res.getIdentifier().add(parseIdentifier(xpp));
2138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2139        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
2140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2141        res.setType(parseCodeableConcept(xpp));
2142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2143        res.setNameElement(parseString(xpp));
2144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2145        res.getSubject().add(parseReference(xpp));
2146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("servicePeriod")) {
2147        res.setServicePeriod(parsePeriod(xpp));
2148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2149        res.getCoverage().add(parseAccountCoverageComponent(xpp, res));
2150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
2151        res.setOwner(parseReference(xpp));
2152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2153        res.setDescriptionElement(parseString(xpp));
2154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
2155        res.getGuarantor().add(parseAccountGuarantorComponent(xpp, res));
2156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
2157        res.setPartOf(parseReference(xpp));
2158      } else if (!parseDomainResourceContent(eventType, xpp, res))
2159        return false;
2160    return true;
2161  }
2162
2163  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2164    Account.CoverageComponent res = new Account.CoverageComponent();
2165    parseBackboneAttributes(xpp, res);
2166    next(xpp);
2167    int eventType = nextNoWhitespace(xpp);
2168    while (eventType != XmlPullParser.END_TAG) {
2169  if (!parseAccountCoverageComponentContent(eventType, xpp, owner, res))
2170        unknownContent(xpp);
2171      eventType = nextNoWhitespace(xpp);
2172    }
2173    next(xpp);
2174    parseElementClose(res);
2175    return res;
2176  }
2177
2178  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2179      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2180        res.setCoverage(parseReference(xpp));
2181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2182        res.setPriorityElement(parsePositiveInt(xpp));
2183      } else if (!parseBackboneElementContent(eventType, xpp, res))
2184        return false;
2185    return true;
2186  }
2187
2188  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2189    Account.GuarantorComponent res = new Account.GuarantorComponent();
2190    parseBackboneAttributes(xpp, res);
2191    next(xpp);
2192    int eventType = nextNoWhitespace(xpp);
2193    while (eventType != XmlPullParser.END_TAG) {
2194  if (!parseAccountGuarantorComponentContent(eventType, xpp, owner, res))
2195        unknownContent(xpp);
2196      eventType = nextNoWhitespace(xpp);
2197    }
2198    next(xpp);
2199    parseElementClose(res);
2200    return res;
2201  }
2202
2203  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2204      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
2205        res.setParty(parseReference(xpp));
2206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
2207        res.setOnHoldElement(parseBoolean(xpp));
2208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2209        res.setPeriod(parsePeriod(xpp));
2210      } else if (!parseBackboneElementContent(eventType, xpp, res))
2211        return false;
2212    return true;
2213  }
2214
2215  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2216    ActivityDefinition res = new ActivityDefinition();
2217    parseDomainResourceAttributes(xpp, res);
2218    next(xpp);
2219    int eventType = nextNoWhitespace(xpp);
2220    while (eventType != XmlPullParser.END_TAG) {
2221  if (!parseActivityDefinitionContent(eventType, xpp, res))
2222        unknownContent(xpp);
2223      eventType = nextNoWhitespace(xpp);
2224    }
2225    next(xpp);
2226    parseElementClose(res);
2227    return res;
2228  }
2229
2230  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2231      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2232        res.setUrlElement(parseUri(xpp));
2233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2234        res.getIdentifier().add(parseIdentifier(xpp));
2235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2236        res.setVersionElement(parseString(xpp));
2237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2238        res.setNameElement(parseString(xpp));
2239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2240        res.setTitleElement(parseString(xpp));
2241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
2242        res.setSubtitleElement(parseString(xpp));
2243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2244        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2246        res.setExperimentalElement(parseBoolean(xpp));
2247      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
2248        res.setSubject(parseType("subject", xpp));
2249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2250        res.setDateElement(parseDateTime(xpp));
2251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2252        res.setPublisherElement(parseString(xpp));
2253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2254        res.getContact().add(parseContactDetail(xpp));
2255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2256        res.setDescriptionElement(parseMarkdown(xpp));
2257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2258        res.getUseContext().add(parseUsageContext(xpp));
2259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2260        res.getJurisdiction().add(parseCodeableConcept(xpp));
2261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2262        res.setPurposeElement(parseMarkdown(xpp));
2263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
2264        res.setUsageElement(parseString(xpp));
2265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2266        res.setCopyrightElement(parseMarkdown(xpp));
2267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
2268        res.setApprovalDateElement(parseDate(xpp));
2269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
2270        res.setLastReviewDateElement(parseDate(xpp));
2271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
2272        res.setEffectivePeriod(parsePeriod(xpp));
2273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
2274        res.getTopic().add(parseCodeableConcept(xpp));
2275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2276        res.getAuthor().add(parseContactDetail(xpp));
2277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
2278        res.getEditor().add(parseContactDetail(xpp));
2279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
2280        res.getReviewer().add(parseContactDetail(xpp));
2281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
2282        res.getEndorser().add(parseContactDetail(xpp));
2283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
2284        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
2285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
2286        res.getLibrary().add(parseCanonical(xpp));
2287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2288        res.setKindElement(parseEnumeration(xpp, ActivityDefinition.ActivityDefinitionKind.NULL, new ActivityDefinition.ActivityDefinitionKindEnumFactory()));
2289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
2290        res.setProfileElement(parseCanonical(xpp));
2291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2292        res.setCode(parseCodeableConcept(xpp));
2293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
2294        res.setIntentElement(parseEnumeration(xpp, ActivityDefinition.RequestIntent.NULL, new ActivityDefinition.RequestIntentEnumFactory()));
2295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2296        res.setPriorityElement(parseEnumeration(xpp, ActivityDefinition.RequestPriority.NULL, new ActivityDefinition.RequestPriorityEnumFactory()));
2297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
2298        res.setDoNotPerformElement(parseBoolean(xpp));
2299      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
2300        res.setTiming(parseType("timing", xpp));
2301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2302        res.setLocation(parseReference(xpp));
2303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2304        res.getParticipant().add(parseActivityDefinitionActivityDefinitionParticipantComponent(xpp, res));
2305      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2306        res.setProduct(parseType("product", xpp));
2307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2308        res.setQuantity(parseQuantity(xpp));
2309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
2310        res.getDosage().add(parseDosage(xpp));
2311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2312        res.getBodySite().add(parseCodeableConcept(xpp));
2313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenRequirement")) {
2314        res.getSpecimenRequirement().add(parseReference(xpp));
2315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationRequirement")) {
2316        res.getObservationRequirement().add(parseReference(xpp));
2317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationResultRequirement")) {
2318        res.getObservationResultRequirement().add(parseReference(xpp));
2319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
2320        res.setTransformElement(parseCanonical(xpp));
2321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
2322        res.getDynamicValue().add(parseActivityDefinitionActivityDefinitionDynamicValueComponent(xpp, res));
2323      } else if (!parseDomainResourceContent(eventType, xpp, res))
2324        return false;
2325    return true;
2326  }
2327
2328  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionActivityDefinitionParticipantComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2329    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2330    parseBackboneAttributes(xpp, res);
2331    next(xpp);
2332    int eventType = nextNoWhitespace(xpp);
2333    while (eventType != XmlPullParser.END_TAG) {
2334  if (!parseActivityDefinitionActivityDefinitionParticipantComponentContent(eventType, xpp, owner, res))
2335        unknownContent(xpp);
2336      eventType = nextNoWhitespace(xpp);
2337    }
2338    next(xpp);
2339    parseElementClose(res);
2340    return res;
2341  }
2342
2343  protected boolean parseActivityDefinitionActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2344      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2345        res.setTypeElement(parseEnumeration(xpp, ActivityDefinition.ActivityParticipantType.NULL, new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
2346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2347        res.setRole(parseCodeableConcept(xpp));
2348      } else if (!parseBackboneElementContent(eventType, xpp, res))
2349        return false;
2350    return true;
2351  }
2352
2353  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionActivityDefinitionDynamicValueComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2354    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2355    parseBackboneAttributes(xpp, res);
2356    next(xpp);
2357    int eventType = nextNoWhitespace(xpp);
2358    while (eventType != XmlPullParser.END_TAG) {
2359  if (!parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(eventType, xpp, owner, res))
2360        unknownContent(xpp);
2361      eventType = nextNoWhitespace(xpp);
2362    }
2363    next(xpp);
2364    parseElementClose(res);
2365    return res;
2366  }
2367
2368  protected boolean parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2369      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2370        res.setPathElement(parseString(xpp));
2371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2372        res.setExpression(parseExpression(xpp));
2373      } else if (!parseBackboneElementContent(eventType, xpp, res))
2374        return false;
2375    return true;
2376  }
2377
2378  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2379    AdverseEvent res = new AdverseEvent();
2380    parseDomainResourceAttributes(xpp, res);
2381    next(xpp);
2382    int eventType = nextNoWhitespace(xpp);
2383    while (eventType != XmlPullParser.END_TAG) {
2384  if (!parseAdverseEventContent(eventType, xpp, res))
2385        unknownContent(xpp);
2386      eventType = nextNoWhitespace(xpp);
2387    }
2388    next(xpp);
2389    parseElementClose(res);
2390    return res;
2391  }
2392
2393  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2394      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2395        res.setIdentifier(parseIdentifier(xpp));
2396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actuality")) {
2397        res.setActualityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventActuality.NULL, new AdverseEvent.AdverseEventActualityEnumFactory()));
2398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2399        res.getCategory().add(parseCodeableConcept(xpp));
2400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
2401        res.setEvent(parseCodeableConcept(xpp));
2402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2403        res.setSubject(parseReference(xpp));
2404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2405        res.setEncounter(parseReference(xpp));
2406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2407        res.setDateElement(parseDateTime(xpp));
2408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detected")) {
2409        res.setDetectedElement(parseDateTime(xpp));
2410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2411        res.setRecordedDateElement(parseDateTime(xpp));
2412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultingCondition")) {
2413        res.getResultingCondition().add(parseReference(xpp));
2414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2415        res.setLocation(parseReference(xpp));
2416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
2417        res.setSeriousness(parseCodeableConcept(xpp));
2418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2419        res.setSeverity(parseCodeableConcept(xpp));
2420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2421        res.setOutcome(parseCodeableConcept(xpp));
2422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2423        res.setRecorder(parseReference(xpp));
2424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
2425        res.getContributor().add(parseReference(xpp));
2426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
2427        res.getSuspectEntity().add(parseAdverseEventAdverseEventSuspectEntityComponent(xpp, res));
2428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectMedicalHistory")) {
2429        res.getSubjectMedicalHistory().add(parseReference(xpp));
2430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceDocument")) {
2431        res.getReferenceDocument().add(parseReference(xpp));
2432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
2433        res.getStudy().add(parseReference(xpp));
2434      } else if (!parseDomainResourceContent(eventType, xpp, res))
2435        return false;
2436    return true;
2437  }
2438
2439  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventAdverseEventSuspectEntityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2440    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
2441    parseBackboneAttributes(xpp, res);
2442    next(xpp);
2443    int eventType = nextNoWhitespace(xpp);
2444    while (eventType != XmlPullParser.END_TAG) {
2445  if (!parseAdverseEventAdverseEventSuspectEntityComponentContent(eventType, xpp, owner, res))
2446        unknownContent(xpp);
2447      eventType = nextNoWhitespace(xpp);
2448    }
2449    next(xpp);
2450    parseElementClose(res);
2451    return res;
2452  }
2453
2454  protected boolean parseAdverseEventAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
2456        res.setInstance(parseReference(xpp));
2457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
2458        res.getCausality().add(parseAdverseEventAdverseEventSuspectEntityCausalityComponent(xpp, owner));
2459      } else if (!parseBackboneElementContent(eventType, xpp, res))
2460        return false;
2461    return true;
2462  }
2463
2464  protected AdverseEvent.AdverseEventSuspectEntityCausalityComponent parseAdverseEventAdverseEventSuspectEntityCausalityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2465    AdverseEvent.AdverseEventSuspectEntityCausalityComponent res = new AdverseEvent.AdverseEventSuspectEntityCausalityComponent();
2466    parseBackboneAttributes(xpp, res);
2467    next(xpp);
2468    int eventType = nextNoWhitespace(xpp);
2469    while (eventType != XmlPullParser.END_TAG) {
2470  if (!parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(eventType, xpp, owner, res))
2471        unknownContent(xpp);
2472      eventType = nextNoWhitespace(xpp);
2473    }
2474    next(xpp);
2475    parseElementClose(res);
2476    return res;
2477  }
2478
2479  protected boolean parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityCausalityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2480      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
2481        res.setAssessment(parseCodeableConcept(xpp));
2482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productRelatedness")) {
2483        res.setProductRelatednessElement(parseString(xpp));
2484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2485        res.setAuthor(parseReference(xpp));
2486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2487        res.setMethod(parseCodeableConcept(xpp));
2488      } else if (!parseBackboneElementContent(eventType, xpp, res))
2489        return false;
2490    return true;
2491  }
2492
2493  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2494    AllergyIntolerance res = new AllergyIntolerance();
2495    parseDomainResourceAttributes(xpp, res);
2496    next(xpp);
2497    int eventType = nextNoWhitespace(xpp);
2498    while (eventType != XmlPullParser.END_TAG) {
2499  if (!parseAllergyIntoleranceContent(eventType, xpp, res))
2500        unknownContent(xpp);
2501      eventType = nextNoWhitespace(xpp);
2502    }
2503    next(xpp);
2504    parseElementClose(res);
2505    return res;
2506  }
2507
2508  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
2509      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2510        res.getIdentifier().add(parseIdentifier(xpp));
2511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
2512        res.setClinicalStatus(parseCodeableConcept(xpp));
2513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
2514        res.setVerificationStatus(parseCodeableConcept(xpp));
2515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2516        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
2517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2518        res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
2519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
2520        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
2521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2522        res.setCode(parseCodeableConcept(xpp));
2523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2524        res.setPatient(parseReference(xpp));
2525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2526        res.setEncounter(parseReference(xpp));
2527      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
2528        res.setOnset(parseType("onset", xpp));
2529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2530        res.setRecordedDateElement(parseDateTime(xpp));
2531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2532        res.setRecorder(parseReference(xpp));
2533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
2534        res.setAsserter(parseReference(xpp));
2535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
2536        res.setLastOccurrenceElement(parseDateTime(xpp));
2537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2538        res.getNote().add(parseAnnotation(xpp));
2539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2540        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
2541      } else if (!parseDomainResourceContent(eventType, xpp, res))
2542        return false;
2543    return true;
2544  }
2545
2546  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
2547    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
2548    parseBackboneAttributes(xpp, res);
2549    next(xpp);
2550    int eventType = nextNoWhitespace(xpp);
2551    while (eventType != XmlPullParser.END_TAG) {
2552  if (!parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(eventType, xpp, owner, res))
2553        unknownContent(xpp);
2554      eventType = nextNoWhitespace(xpp);
2555    }
2556    next(xpp);
2557    parseElementClose(res);
2558    return res;
2559  }
2560
2561  protected boolean parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance owner, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2562      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
2563        res.setSubstance(parseCodeableConcept(xpp));
2564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
2565        res.getManifestation().add(parseCodeableConcept(xpp));
2566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2567        res.setDescriptionElement(parseString(xpp));
2568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2569        res.setOnsetElement(parseDateTime(xpp));
2570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2571        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
2572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
2573        res.setExposureRoute(parseCodeableConcept(xpp));
2574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2575        res.getNote().add(parseAnnotation(xpp));
2576      } else if (!parseBackboneElementContent(eventType, xpp, res))
2577        return false;
2578    return true;
2579  }
2580
2581  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2582    Appointment res = new Appointment();
2583    parseDomainResourceAttributes(xpp, res);
2584    next(xpp);
2585    int eventType = nextNoWhitespace(xpp);
2586    while (eventType != XmlPullParser.END_TAG) {
2587  if (!parseAppointmentContent(eventType, xpp, res))
2588        unknownContent(xpp);
2589      eventType = nextNoWhitespace(xpp);
2590    }
2591    next(xpp);
2592    parseElementClose(res);
2593    return res;
2594  }
2595
2596  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
2597      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2598        res.getIdentifier().add(parseIdentifier(xpp));
2599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2600        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
2601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelationReason")) {
2602        res.setCancelationReason(parseCodeableConcept(xpp));
2603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
2604        res.getServiceCategory().add(parseCodeableConcept(xpp));
2605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
2606        res.getServiceType().add(parseCodeableConcept(xpp));
2607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
2608        res.getSpecialty().add(parseCodeableConcept(xpp));
2609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
2610        res.setAppointmentType(parseCodeableConcept(xpp));
2611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
2612        res.getReasonCode().add(parseCodeableConcept(xpp));
2613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
2614        res.getReasonReference().add(parseReference(xpp));
2615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2616        res.setPriorityElement(parseUnsignedInt(xpp));
2617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2618        res.setDescriptionElement(parseString(xpp));
2619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2620        res.getSupportingInformation().add(parseReference(xpp));
2621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2622        res.setStartElement(parseInstant(xpp));
2623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2624        res.setEndElement(parseInstant(xpp));
2625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
2626        res.setMinutesDurationElement(parsePositiveInt(xpp));
2627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
2628        res.getSlot().add(parseReference(xpp));
2629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2630        res.setCreatedElement(parseDateTime(xpp));
2631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2632        res.setCommentElement(parseString(xpp));
2633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
2634        res.setPatientInstructionElement(parseString(xpp));
2635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
2636        res.getBasedOn().add(parseReference(xpp));
2637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2638        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
2639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
2640        res.getRequestedPeriod().add(parsePeriod(xpp));
2641      } else if (!parseDomainResourceContent(eventType, xpp, res))
2642        return false;
2643    return true;
2644  }
2645
2646  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
2647    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
2648    parseBackboneAttributes(xpp, res);
2649    next(xpp);
2650    int eventType = nextNoWhitespace(xpp);
2651    while (eventType != XmlPullParser.END_TAG) {
2652  if (!parseAppointmentAppointmentParticipantComponentContent(eventType, xpp, owner, res))
2653        unknownContent(xpp);
2654      eventType = nextNoWhitespace(xpp);
2655    }
2656    next(xpp);
2657    parseElementClose(res);
2658    return res;
2659  }
2660
2661  protected boolean parseAppointmentAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment owner, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2662      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2663        res.getType().add(parseCodeableConcept(xpp));
2664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2665        res.setActor(parseReference(xpp));
2666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
2667        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
2668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2669        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
2670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2671        res.setPeriod(parsePeriod(xpp));
2672      } else if (!parseBackboneElementContent(eventType, xpp, res))
2673        return false;
2674    return true;
2675  }
2676
2677  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2678    AppointmentResponse res = new AppointmentResponse();
2679    parseDomainResourceAttributes(xpp, res);
2680    next(xpp);
2681    int eventType = nextNoWhitespace(xpp);
2682    while (eventType != XmlPullParser.END_TAG) {
2683  if (!parseAppointmentResponseContent(eventType, xpp, res))
2684        unknownContent(xpp);
2685      eventType = nextNoWhitespace(xpp);
2686    }
2687    next(xpp);
2688    parseElementClose(res);
2689    return res;
2690  }
2691
2692  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
2693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2694        res.getIdentifier().add(parseIdentifier(xpp));
2695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
2696        res.setAppointment(parseReference(xpp));
2697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2698        res.setStartElement(parseInstant(xpp));
2699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2700        res.setEndElement(parseInstant(xpp));
2701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
2702        res.getParticipantType().add(parseCodeableConcept(xpp));
2703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2704        res.setActor(parseReference(xpp));
2705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
2706        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL, new AppointmentResponse.ParticipantStatusEnumFactory()));
2707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2708        res.setCommentElement(parseString(xpp));
2709      } else if (!parseDomainResourceContent(eventType, xpp, res))
2710        return false;
2711    return true;
2712  }
2713
2714  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2715    AuditEvent res = new AuditEvent();
2716    parseDomainResourceAttributes(xpp, res);
2717    next(xpp);
2718    int eventType = nextNoWhitespace(xpp);
2719    while (eventType != XmlPullParser.END_TAG) {
2720  if (!parseAuditEventContent(eventType, xpp, res))
2721        unknownContent(xpp);
2722      eventType = nextNoWhitespace(xpp);
2723    }
2724    next(xpp);
2725    parseElementClose(res);
2726    return res;
2727  }
2728
2729  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2730      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2731        res.setType(parseCoding(xpp));
2732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
2733        res.getSubtype().add(parseCoding(xpp));
2734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2735        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
2736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2737        res.setPeriod(parsePeriod(xpp));
2738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
2739        res.setRecordedElement(parseInstant(xpp));
2740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2741        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
2742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
2743        res.setOutcomeDescElement(parseString(xpp));
2744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
2745        res.getPurposeOfEvent().add(parseCodeableConcept(xpp));
2746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
2747        res.getAgent().add(parseAuditEventAuditEventAgentComponent(xpp, res));
2748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
2749        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
2750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
2751        res.getEntity().add(parseAuditEventAuditEventEntityComponent(xpp, res));
2752      } else if (!parseDomainResourceContent(eventType, xpp, res))
2753        return false;
2754    return true;
2755  }
2756
2757  protected AuditEvent.AuditEventAgentComponent parseAuditEventAuditEventAgentComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2758    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
2759    parseBackboneAttributes(xpp, res);
2760    next(xpp);
2761    int eventType = nextNoWhitespace(xpp);
2762    while (eventType != XmlPullParser.END_TAG) {
2763  if (!parseAuditEventAuditEventAgentComponentContent(eventType, xpp, owner, res))
2764        unknownContent(xpp);
2765      eventType = nextNoWhitespace(xpp);
2766    }
2767    next(xpp);
2768    parseElementClose(res);
2769    return res;
2770  }
2771
2772  protected boolean parseAuditEventAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2773      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2774        res.setType(parseCodeableConcept(xpp));
2775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2776        res.getRole().add(parseCodeableConcept(xpp));
2777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
2778        res.setWho(parseReference(xpp));
2779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
2780        res.setAltIdElement(parseString(xpp));
2781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2782        res.setNameElement(parseString(xpp));
2783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
2784        res.setRequestorElement(parseBoolean(xpp));
2785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2786        res.setLocation(parseReference(xpp));
2787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
2788        res.getPolicy().add(parseUri(xpp));
2789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
2790        res.setMedia(parseCoding(xpp));
2791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
2792        res.setNetwork(parseAuditEventAuditEventAgentNetworkComponent(xpp, owner));
2793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
2794        res.getPurposeOfUse().add(parseCodeableConcept(xpp));
2795      } else if (!parseBackboneElementContent(eventType, xpp, res))
2796        return false;
2797    return true;
2798  }
2799
2800  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAuditEventAgentNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2801    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
2802    parseBackboneAttributes(xpp, res);
2803    next(xpp);
2804    int eventType = nextNoWhitespace(xpp);
2805    while (eventType != XmlPullParser.END_TAG) {
2806  if (!parseAuditEventAuditEventAgentNetworkComponentContent(eventType, xpp, owner, res))
2807        unknownContent(xpp);
2808      eventType = nextNoWhitespace(xpp);
2809    }
2810    next(xpp);
2811    parseElementClose(res);
2812    return res;
2813  }
2814
2815  protected boolean parseAuditEventAuditEventAgentNetworkComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentNetworkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2816      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
2817        res.setAddressElement(parseString(xpp));
2818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2819        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventAgentNetworkType.NULL, new AuditEvent.AuditEventAgentNetworkTypeEnumFactory()));
2820      } else if (!parseBackboneElementContent(eventType, xpp, res))
2821        return false;
2822    return true;
2823  }
2824
2825  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2826    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
2827    parseBackboneAttributes(xpp, res);
2828    next(xpp);
2829    int eventType = nextNoWhitespace(xpp);
2830    while (eventType != XmlPullParser.END_TAG) {
2831  if (!parseAuditEventAuditEventSourceComponentContent(eventType, xpp, owner, res))
2832        unknownContent(xpp);
2833      eventType = nextNoWhitespace(xpp);
2834    }
2835    next(xpp);
2836    parseElementClose(res);
2837    return res;
2838  }
2839
2840  protected boolean parseAuditEventAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2841      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
2842        res.setSiteElement(parseString(xpp));
2843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observer")) {
2844        res.setObserver(parseReference(xpp));
2845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2846        res.getType().add(parseCoding(xpp));
2847      } else if (!parseBackboneElementContent(eventType, xpp, res))
2848        return false;
2849    return true;
2850  }
2851
2852  protected AuditEvent.AuditEventEntityComponent parseAuditEventAuditEventEntityComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2853    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
2854    parseBackboneAttributes(xpp, res);
2855    next(xpp);
2856    int eventType = nextNoWhitespace(xpp);
2857    while (eventType != XmlPullParser.END_TAG) {
2858  if (!parseAuditEventAuditEventEntityComponentContent(eventType, xpp, owner, res))
2859        unknownContent(xpp);
2860      eventType = nextNoWhitespace(xpp);
2861    }
2862    next(xpp);
2863    parseElementClose(res);
2864    return res;
2865  }
2866
2867  protected boolean parseAuditEventAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2868      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
2869        res.setWhat(parseReference(xpp));
2870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2871        res.setType(parseCoding(xpp));
2872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2873        res.setRole(parseCoding(xpp));
2874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
2875        res.setLifecycle(parseCoding(xpp));
2876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
2877        res.getSecurityLabel().add(parseCoding(xpp));
2878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2879        res.setNameElement(parseString(xpp));
2880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2881        res.setDescriptionElement(parseString(xpp));
2882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
2883        res.setQueryElement(parseBase64Binary(xpp));
2884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2885        res.getDetail().add(parseAuditEventAuditEventEntityDetailComponent(xpp, owner));
2886      } else if (!parseBackboneElementContent(eventType, xpp, res))
2887        return false;
2888    return true;
2889  }
2890
2891  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventAuditEventEntityDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2892    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
2893    parseBackboneAttributes(xpp, res);
2894    next(xpp);
2895    int eventType = nextNoWhitespace(xpp);
2896    while (eventType != XmlPullParser.END_TAG) {
2897  if (!parseAuditEventAuditEventEntityDetailComponentContent(eventType, xpp, owner, res))
2898        unknownContent(xpp);
2899      eventType = nextNoWhitespace(xpp);
2900    }
2901    next(xpp);
2902    parseElementClose(res);
2903    return res;
2904  }
2905
2906  protected boolean parseAuditEventAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2907      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2908        res.setTypeElement(parseString(xpp));
2909      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2910        res.setValue(parseType("value", xpp));
2911      } else if (!parseBackboneElementContent(eventType, xpp, res))
2912        return false;
2913    return true;
2914  }
2915
2916  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2917    Basic res = new Basic();
2918    parseDomainResourceAttributes(xpp, res);
2919    next(xpp);
2920    int eventType = nextNoWhitespace(xpp);
2921    while (eventType != XmlPullParser.END_TAG) {
2922  if (!parseBasicContent(eventType, xpp, res))
2923        unknownContent(xpp);
2924      eventType = nextNoWhitespace(xpp);
2925    }
2926    next(xpp);
2927    parseElementClose(res);
2928    return res;
2929  }
2930
2931  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
2932      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2933        res.getIdentifier().add(parseIdentifier(xpp));
2934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2935        res.setCode(parseCodeableConcept(xpp));
2936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2937        res.setSubject(parseReference(xpp));
2938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2939        res.setCreatedElement(parseDate(xpp));
2940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2941        res.setAuthor(parseReference(xpp));
2942      } else if (!parseDomainResourceContent(eventType, xpp, res))
2943        return false;
2944    return true;
2945  }
2946
2947  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2948    Binary res = new Binary();
2949    parseResourceAttributes(xpp, res);
2950    next(xpp);
2951    int eventType = nextNoWhitespace(xpp);
2952    while (eventType != XmlPullParser.END_TAG) {
2953  if (!parseBinaryContent(eventType, xpp, res))
2954        unknownContent(xpp);
2955      eventType = nextNoWhitespace(xpp);
2956    }
2957    next(xpp);
2958    parseElementClose(res);
2959    return res;
2960  }
2961
2962  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
2963      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
2964        res.setContentTypeElement(parseCode(xpp));
2965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
2966        res.setSecurityContext(parseReference(xpp));
2967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
2968        res.setDataElement(parseBase64Binary(xpp));
2969      } else if (!parseResourceContent(eventType, xpp, res))
2970        return false;
2971    return true;
2972  }
2973
2974  protected BiologicallyDerivedProduct parseBiologicallyDerivedProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2975    BiologicallyDerivedProduct res = new BiologicallyDerivedProduct();
2976    parseDomainResourceAttributes(xpp, res);
2977    next(xpp);
2978    int eventType = nextNoWhitespace(xpp);
2979    while (eventType != XmlPullParser.END_TAG) {
2980  if (!parseBiologicallyDerivedProductContent(eventType, xpp, res))
2981        unknownContent(xpp);
2982      eventType = nextNoWhitespace(xpp);
2983    }
2984    next(xpp);
2985    parseElementClose(res);
2986    return res;
2987  }
2988
2989  protected boolean parseBiologicallyDerivedProductContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
2990      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2991        res.getIdentifier().add(parseIdentifier(xpp));
2992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCategory")) {
2993        res.setProductCategoryElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductCategory.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory()));
2994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCode")) {
2995        res.setProductCode(parseCodeableConcept(xpp));
2996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2997        res.setStatusElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStatus.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory()));
2998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
2999        res.getRequest().add(parseReference(xpp));
3000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3001        res.setQuantityElement(parseInteger(xpp));
3002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
3003        res.getParent().add(parseReference(xpp));
3004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
3005        res.setCollection(parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(xpp, res));
3006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
3007        res.getProcessing().add(parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(xpp, res));
3008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulation")) {
3009        res.setManipulation(parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(xpp, res));
3010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("storage")) {
3011        res.getStorage().add(parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(xpp, res));
3012      } else if (!parseDomainResourceContent(eventType, xpp, res))
3013        return false;
3014    return true;
3015  }
3016
3017  protected BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3018    BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent();
3019    parseBackboneAttributes(xpp, res);
3020    next(xpp);
3021    int eventType = nextNoWhitespace(xpp);
3022    while (eventType != XmlPullParser.END_TAG) {
3023  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(eventType, xpp, owner, res))
3024        unknownContent(xpp);
3025      eventType = nextNoWhitespace(xpp);
3026    }
3027    next(xpp);
3028    parseElementClose(res);
3029    return res;
3030  }
3031
3032  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3033      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
3034        res.setCollector(parseReference(xpp));
3035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
3036        res.setSource(parseReference(xpp));
3037      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
3038        res.setCollected(parseType("collected", xpp));
3039      } else if (!parseBackboneElementContent(eventType, xpp, res))
3040        return false;
3041    return true;
3042  }
3043
3044  protected BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3045    BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent();
3046    parseBackboneAttributes(xpp, res);
3047    next(xpp);
3048    int eventType = nextNoWhitespace(xpp);
3049    while (eventType != XmlPullParser.END_TAG) {
3050  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(eventType, xpp, owner, res))
3051        unknownContent(xpp);
3052      eventType = nextNoWhitespace(xpp);
3053    }
3054    next(xpp);
3055    parseElementClose(res);
3056    return res;
3057  }
3058
3059  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3060      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3061        res.setDescriptionElement(parseString(xpp));
3062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
3063        res.setProcedure(parseCodeableConcept(xpp));
3064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
3065        res.setAdditive(parseReference(xpp));
3066      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3067        res.setTime(parseType("time", xpp));
3068      } else if (!parseBackboneElementContent(eventType, xpp, res))
3069        return false;
3070    return true;
3071  }
3072
3073  protected BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3074    BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent();
3075    parseBackboneAttributes(xpp, res);
3076    next(xpp);
3077    int eventType = nextNoWhitespace(xpp);
3078    while (eventType != XmlPullParser.END_TAG) {
3079  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(eventType, xpp, owner, res))
3080        unknownContent(xpp);
3081      eventType = nextNoWhitespace(xpp);
3082    }
3083    next(xpp);
3084    parseElementClose(res);
3085    return res;
3086  }
3087
3088  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3090        res.setDescriptionElement(parseString(xpp));
3091      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3092        res.setTime(parseType("time", xpp));
3093      } else if (!parseBackboneElementContent(eventType, xpp, res))
3094        return false;
3095    return true;
3096  }
3097
3098  protected BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3099    BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent();
3100    parseBackboneAttributes(xpp, res);
3101    next(xpp);
3102    int eventType = nextNoWhitespace(xpp);
3103    while (eventType != XmlPullParser.END_TAG) {
3104  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(eventType, xpp, owner, res))
3105        unknownContent(xpp);
3106      eventType = nextNoWhitespace(xpp);
3107    }
3108    next(xpp);
3109    parseElementClose(res);
3110    return res;
3111  }
3112
3113  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3114      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3115        res.setDescriptionElement(parseString(xpp));
3116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperature")) {
3117        res.setTemperatureElement(parseDecimal(xpp));
3118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scale")) {
3119        res.setScaleElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScale.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory()));
3120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
3121        res.setDuration(parsePeriod(xpp));
3122      } else if (!parseBackboneElementContent(eventType, xpp, res))
3123        return false;
3124    return true;
3125  }
3126
3127  protected BodyStructure parseBodyStructure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3128    BodyStructure res = new BodyStructure();
3129    parseDomainResourceAttributes(xpp, res);
3130    next(xpp);
3131    int eventType = nextNoWhitespace(xpp);
3132    while (eventType != XmlPullParser.END_TAG) {
3133  if (!parseBodyStructureContent(eventType, xpp, res))
3134        unknownContent(xpp);
3135      eventType = nextNoWhitespace(xpp);
3136    }
3137    next(xpp);
3138    parseElementClose(res);
3139    return res;
3140  }
3141
3142  protected boolean parseBodyStructureContent(int eventType, XmlPullParser xpp, BodyStructure res) throws XmlPullParserException, IOException, FHIRFormatError {
3143      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3144        res.getIdentifier().add(parseIdentifier(xpp));
3145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
3146        res.setActiveElement(parseBoolean(xpp));
3147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("morphology")) {
3148        res.setMorphology(parseCodeableConcept(xpp));
3149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3150        res.setLocation(parseCodeableConcept(xpp));
3151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationQualifier")) {
3152        res.getLocationQualifier().add(parseCodeableConcept(xpp));
3153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3154        res.setDescriptionElement(parseString(xpp));
3155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
3156        res.getImage().add(parseAttachment(xpp));
3157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3158        res.setPatient(parseReference(xpp));
3159      } else if (!parseDomainResourceContent(eventType, xpp, res))
3160        return false;
3161    return true;
3162  }
3163
3164  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3165    Bundle res = new Bundle();
3166    parseResourceAttributes(xpp, res);
3167    next(xpp);
3168    int eventType = nextNoWhitespace(xpp);
3169    while (eventType != XmlPullParser.END_TAG) {
3170  if (!parseBundleContent(eventType, xpp, res))
3171        unknownContent(xpp);
3172      eventType = nextNoWhitespace(xpp);
3173    }
3174    next(xpp);
3175    parseElementClose(res);
3176    return res;
3177  }
3178
3179  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
3180      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3181        res.setIdentifier(parseIdentifier(xpp));
3182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3183        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
3184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
3185        res.setTimestampElement(parseInstant(xpp));
3186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
3187        res.setTotalElement(parseUnsignedInt(xpp));
3188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3189        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
3190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
3191        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
3192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
3193        res.setSignature(parseSignature(xpp));
3194      } else if (!parseResourceContent(eventType, xpp, res))
3195        return false;
3196    return true;
3197  }
3198
3199  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3200    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
3201    parseBackboneAttributes(xpp, res);
3202    next(xpp);
3203    int eventType = nextNoWhitespace(xpp);
3204    while (eventType != XmlPullParser.END_TAG) {
3205  if (!parseBundleBundleLinkComponentContent(eventType, xpp, owner, res))
3206        unknownContent(xpp);
3207      eventType = nextNoWhitespace(xpp);
3208    }
3209    next(xpp);
3210    parseElementClose(res);
3211    return res;
3212  }
3213
3214  protected boolean parseBundleBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3215      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
3216        res.setRelationElement(parseString(xpp));
3217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3218        res.setUrlElement(parseUri(xpp));
3219      } else if (!parseBackboneElementContent(eventType, xpp, res))
3220        return false;
3221    return true;
3222  }
3223
3224  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3225    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
3226    parseBackboneAttributes(xpp, res);
3227    next(xpp);
3228    int eventType = nextNoWhitespace(xpp);
3229    while (eventType != XmlPullParser.END_TAG) {
3230  if (!parseBundleBundleEntryComponentContent(eventType, xpp, owner, res))
3231        unknownContent(xpp);
3232      eventType = nextNoWhitespace(xpp);
3233    }
3234    next(xpp);
3235    parseElementClose(res);
3236    return res;
3237  }
3238
3239  protected boolean parseBundleBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3240      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3241        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
3242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
3243        res.setFullUrlElement(parseUri(xpp));
3244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3245        res.setResource(parseResourceContained(xpp));
3246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
3247        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
3248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3249        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
3250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3251        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
3252      } else if (!parseBackboneElementContent(eventType, xpp, res))
3253        return false;
3254    return true;
3255  }
3256
3257  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3258    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
3259    parseBackboneAttributes(xpp, res);
3260    next(xpp);
3261    int eventType = nextNoWhitespace(xpp);
3262    while (eventType != XmlPullParser.END_TAG) {
3263  if (!parseBundleBundleEntrySearchComponentContent(eventType, xpp, owner, res))
3264        unknownContent(xpp);
3265      eventType = nextNoWhitespace(xpp);
3266    }
3267    next(xpp);
3268    parseElementClose(res);
3269    return res;
3270  }
3271
3272  protected boolean parseBundleBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3273      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3274        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
3275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
3276        res.setScoreElement(parseDecimal(xpp));
3277      } else if (!parseBackboneElementContent(eventType, xpp, res))
3278        return false;
3279    return true;
3280  }
3281
3282  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3283    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
3284    parseBackboneAttributes(xpp, res);
3285    next(xpp);
3286    int eventType = nextNoWhitespace(xpp);
3287    while (eventType != XmlPullParser.END_TAG) {
3288  if (!parseBundleBundleEntryRequestComponentContent(eventType, xpp, owner, res))
3289        unknownContent(xpp);
3290      eventType = nextNoWhitespace(xpp);
3291    }
3292    next(xpp);
3293    parseElementClose(res);
3294    return res;
3295  }
3296
3297  protected boolean parseBundleBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3298      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
3299        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
3300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3301        res.setUrlElement(parseUri(xpp));
3302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
3303        res.setIfNoneMatchElement(parseString(xpp));
3304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
3305        res.setIfModifiedSinceElement(parseInstant(xpp));
3306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
3307        res.setIfMatchElement(parseString(xpp));
3308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
3309        res.setIfNoneExistElement(parseString(xpp));
3310      } else if (!parseBackboneElementContent(eventType, xpp, res))
3311        return false;
3312    return true;
3313  }
3314
3315  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3316    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
3317    parseBackboneAttributes(xpp, res);
3318    next(xpp);
3319    int eventType = nextNoWhitespace(xpp);
3320    while (eventType != XmlPullParser.END_TAG) {
3321  if (!parseBundleBundleEntryResponseComponentContent(eventType, xpp, owner, res))
3322        unknownContent(xpp);
3323      eventType = nextNoWhitespace(xpp);
3324    }
3325    next(xpp);
3326    parseElementClose(res);
3327    return res;
3328  }
3329
3330  protected boolean parseBundleBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3331      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3332        res.setStatusElement(parseString(xpp));
3333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3334        res.setLocationElement(parseUri(xpp));
3335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
3336        res.setEtagElement(parseString(xpp));
3337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
3338        res.setLastModifiedElement(parseInstant(xpp));
3339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
3340        res.setOutcome(parseResourceContained(xpp));
3341      } else if (!parseBackboneElementContent(eventType, xpp, res))
3342        return false;
3343    return true;
3344  }
3345
3346  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3347    CapabilityStatement res = new CapabilityStatement();
3348    parseDomainResourceAttributes(xpp, res);
3349    next(xpp);
3350    int eventType = nextNoWhitespace(xpp);
3351    while (eventType != XmlPullParser.END_TAG) {
3352  if (!parseCapabilityStatementContent(eventType, xpp, res))
3353        unknownContent(xpp);
3354      eventType = nextNoWhitespace(xpp);
3355    }
3356    next(xpp);
3357    parseElementClose(res);
3358    return res;
3359  }
3360
3361  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
3362      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3363        res.setUrlElement(parseUri(xpp));
3364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3365        res.setVersionElement(parseString(xpp));
3366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3367        res.setNameElement(parseString(xpp));
3368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3369        res.setTitleElement(parseString(xpp));
3370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3371        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
3372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3373        res.setExperimentalElement(parseBoolean(xpp));
3374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3375        res.setDateElement(parseDateTime(xpp));
3376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3377        res.setPublisherElement(parseString(xpp));
3378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3379        res.getContact().add(parseContactDetail(xpp));
3380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3381        res.setDescriptionElement(parseMarkdown(xpp));
3382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3383        res.getUseContext().add(parseUsageContext(xpp));
3384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
3385        res.getJurisdiction().add(parseCodeableConcept(xpp));
3386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
3387        res.setPurposeElement(parseMarkdown(xpp));
3388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3389        res.setCopyrightElement(parseMarkdown(xpp));
3390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3391        res.setKindElement(parseEnumeration(xpp, CapabilityStatement.CapabilityStatementKind.NULL, new CapabilityStatement.CapabilityStatementKindEnumFactory()));
3392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
3393        res.getInstantiates().add(parseCanonical(xpp));
3394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imports")) {
3395        res.getImports().add(parseCanonical(xpp));
3396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
3397        res.setSoftware(parseCapabilityStatementCapabilityStatementSoftwareComponent(xpp, res));
3398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
3399        res.setImplementation(parseCapabilityStatementCapabilityStatementImplementationComponent(xpp, res));
3400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
3401        res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
3402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
3403        res.getFormat().add(parseCode(xpp));
3404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
3405        res.getPatchFormat().add(parseCode(xpp));
3406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
3407        res.getImplementationGuide().add(parseCanonical(xpp));
3408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
3409        res.getRest().add(parseCapabilityStatementCapabilityStatementRestComponent(xpp, res));
3410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
3411        res.getMessaging().add(parseCapabilityStatementCapabilityStatementMessagingComponent(xpp, res));
3412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
3413        res.getDocument().add(parseCapabilityStatementCapabilityStatementDocumentComponent(xpp, res));
3414      } else if (!parseDomainResourceContent(eventType, xpp, res))
3415        return false;
3416    return true;
3417  }
3418
3419  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementCapabilityStatementSoftwareComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3420    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
3421    parseBackboneAttributes(xpp, res);
3422    next(xpp);
3423    int eventType = nextNoWhitespace(xpp);
3424    while (eventType != XmlPullParser.END_TAG) {
3425  if (!parseCapabilityStatementCapabilityStatementSoftwareComponentContent(eventType, xpp, owner, res))
3426        unknownContent(xpp);
3427      eventType = nextNoWhitespace(xpp);
3428    }
3429    next(xpp);
3430    parseElementClose(res);
3431    return res;
3432  }
3433
3434  protected boolean parseCapabilityStatementCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3435      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3436        res.setNameElement(parseString(xpp));
3437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3438        res.setVersionElement(parseString(xpp));
3439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
3440        res.setReleaseDateElement(parseDateTime(xpp));
3441      } else if (!parseBackboneElementContent(eventType, xpp, res))
3442        return false;
3443    return true;
3444  }
3445
3446  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementCapabilityStatementImplementationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3447    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
3448    parseBackboneAttributes(xpp, res);
3449    next(xpp);
3450    int eventType = nextNoWhitespace(xpp);
3451    while (eventType != XmlPullParser.END_TAG) {
3452  if (!parseCapabilityStatementCapabilityStatementImplementationComponentContent(eventType, xpp, owner, res))
3453        unknownContent(xpp);
3454      eventType = nextNoWhitespace(xpp);
3455    }
3456    next(xpp);
3457    parseElementClose(res);
3458    return res;
3459  }
3460
3461  protected boolean parseCapabilityStatementCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3462      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3463        res.setDescriptionElement(parseString(xpp));
3464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3465        res.setUrlElement(parseUrl(xpp));
3466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
3467        res.setCustodian(parseReference(xpp));
3468      } else if (!parseBackboneElementContent(eventType, xpp, res))
3469        return false;
3470    return true;
3471  }
3472
3473  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementCapabilityStatementRestComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3474    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
3475    parseBackboneAttributes(xpp, res);
3476    next(xpp);
3477    int eventType = nextNoWhitespace(xpp);
3478    while (eventType != XmlPullParser.END_TAG) {
3479  if (!parseCapabilityStatementCapabilityStatementRestComponentContent(eventType, xpp, owner, res))
3480        unknownContent(xpp);
3481      eventType = nextNoWhitespace(xpp);
3482    }
3483    next(xpp);
3484    parseElementClose(res);
3485    return res;
3486  }
3487
3488  protected boolean parseCapabilityStatementCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3489      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3490        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
3491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3492        res.setDocumentationElement(parseMarkdown(xpp));
3493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
3494        res.setSecurity(parseCapabilityStatementCapabilityStatementRestSecurityComponent(xpp, owner));
3495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3496        res.getResource().add(parseCapabilityStatementCapabilityStatementRestResourceComponent(xpp, owner));
3497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3498        res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp, owner));
3499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3500        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3502        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3504        res.getCompartment().add(parseCanonical(xpp));
3505      } else if (!parseBackboneElementContent(eventType, xpp, res))
3506        return false;
3507    return true;
3508  }
3509
3510  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementCapabilityStatementRestSecurityComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3511    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
3512    parseBackboneAttributes(xpp, res);
3513    next(xpp);
3514    int eventType = nextNoWhitespace(xpp);
3515    while (eventType != XmlPullParser.END_TAG) {
3516  if (!parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(eventType, xpp, owner, res))
3517        unknownContent(xpp);
3518      eventType = nextNoWhitespace(xpp);
3519    }
3520    next(xpp);
3521    parseElementClose(res);
3522    return res;
3523  }
3524
3525  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3526      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3527        res.setCorsElement(parseBoolean(xpp));
3528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3529        res.getService().add(parseCodeableConcept(xpp));
3530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3531        res.setDescriptionElement(parseMarkdown(xpp));
3532      } else if (!parseBackboneElementContent(eventType, xpp, res))
3533        return false;
3534    return true;
3535  }
3536
3537  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementCapabilityStatementRestResourceComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3538    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
3539    parseBackboneAttributes(xpp, res);
3540    next(xpp);
3541    int eventType = nextNoWhitespace(xpp);
3542    while (eventType != XmlPullParser.END_TAG) {
3543  if (!parseCapabilityStatementCapabilityStatementRestResourceComponentContent(eventType, xpp, owner, res))
3544        unknownContent(xpp);
3545      eventType = nextNoWhitespace(xpp);
3546    }
3547    next(xpp);
3548    parseElementClose(res);
3549    return res;
3550  }
3551
3552  protected boolean parseCapabilityStatementCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3553      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3554        res.setTypeElement(parseCode(xpp));
3555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3556        res.setProfileElement(parseCanonical(xpp));
3557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedProfile")) {
3558        res.getSupportedProfile().add(parseCanonical(xpp));
3559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3560        res.setDocumentationElement(parseMarkdown(xpp));
3561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3562        res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp, owner));
3563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3564        res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
3565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3566        res.setReadHistoryElement(parseBoolean(xpp));
3567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3568        res.setUpdateCreateElement(parseBoolean(xpp));
3569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3570        res.setConditionalCreateElement(parseBoolean(xpp));
3571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
3572        res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
3573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3574        res.setConditionalUpdateElement(parseBoolean(xpp));
3575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3576        res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
3577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
3578        res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
3579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3580        res.getSearchInclude().add(parseString(xpp));
3581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3582        res.getSearchRevInclude().add(parseString(xpp));
3583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3584        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3586        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3587      } else if (!parseBackboneElementContent(eventType, xpp, res))
3588        return false;
3589    return true;
3590  }
3591
3592  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3593    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
3594    parseBackboneAttributes(xpp, res);
3595    next(xpp);
3596    int eventType = nextNoWhitespace(xpp);
3597    while (eventType != XmlPullParser.END_TAG) {
3598  if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, owner, res))
3599        unknownContent(xpp);
3600      eventType = nextNoWhitespace(xpp);
3601    }
3602    next(xpp);
3603    parseElementClose(res);
3604    return res;
3605  }
3606
3607  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3608      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3609        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
3610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3611        res.setDocumentationElement(parseMarkdown(xpp));
3612      } else if (!parseBackboneElementContent(eventType, xpp, res))
3613        return false;
3614    return true;
3615  }
3616
3617  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3618    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
3619    parseBackboneAttributes(xpp, res);
3620    next(xpp);
3621    int eventType = nextNoWhitespace(xpp);
3622    while (eventType != XmlPullParser.END_TAG) {
3623  if (!parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, owner, res))
3624        unknownContent(xpp);
3625      eventType = nextNoWhitespace(xpp);
3626    }
3627    next(xpp);
3628    parseElementClose(res);
3629    return res;
3630  }
3631
3632  protected boolean parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3634        res.setNameElement(parseString(xpp));
3635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3636        res.setDefinitionElement(parseCanonical(xpp));
3637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3638        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3640        res.setDocumentationElement(parseMarkdown(xpp));
3641      } else if (!parseBackboneElementContent(eventType, xpp, res))
3642        return false;
3643    return true;
3644  }
3645
3646  protected CapabilityStatement.CapabilityStatementRestResourceOperationComponent parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3647    CapabilityStatement.CapabilityStatementRestResourceOperationComponent res = new CapabilityStatement.CapabilityStatementRestResourceOperationComponent();
3648    parseBackboneAttributes(xpp, res);
3649    next(xpp);
3650    int eventType = nextNoWhitespace(xpp);
3651    while (eventType != XmlPullParser.END_TAG) {
3652  if (!parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(eventType, xpp, owner, res))
3653        unknownContent(xpp);
3654      eventType = nextNoWhitespace(xpp);
3655    }
3656    next(xpp);
3657    parseElementClose(res);
3658    return res;
3659  }
3660
3661  protected boolean parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3662      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3663        res.setNameElement(parseString(xpp));
3664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3665        res.setDefinitionElement(parseCanonical(xpp));
3666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3667        res.setDocumentationElement(parseMarkdown(xpp));
3668      } else if (!parseBackboneElementContent(eventType, xpp, res))
3669        return false;
3670    return true;
3671  }
3672
3673  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3674    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
3675    parseBackboneAttributes(xpp, res);
3676    next(xpp);
3677    int eventType = nextNoWhitespace(xpp);
3678    while (eventType != XmlPullParser.END_TAG) {
3679  if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, owner, res))
3680        unknownContent(xpp);
3681      eventType = nextNoWhitespace(xpp);
3682    }
3683    next(xpp);
3684    parseElementClose(res);
3685    return res;
3686  }
3687
3688  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3689      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3690        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
3691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3692        res.setDocumentationElement(parseMarkdown(xpp));
3693      } else if (!parseBackboneElementContent(eventType, xpp, res))
3694        return false;
3695    return true;
3696  }
3697
3698  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementCapabilityStatementMessagingComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3699    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
3700    parseBackboneAttributes(xpp, res);
3701    next(xpp);
3702    int eventType = nextNoWhitespace(xpp);
3703    while (eventType != XmlPullParser.END_TAG) {
3704  if (!parseCapabilityStatementCapabilityStatementMessagingComponentContent(eventType, xpp, owner, res))
3705        unknownContent(xpp);
3706      eventType = nextNoWhitespace(xpp);
3707    }
3708    next(xpp);
3709    parseElementClose(res);
3710    return res;
3711  }
3712
3713  protected boolean parseCapabilityStatementCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3714      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3715        res.getEndpoint().add(parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(xpp, owner));
3716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3717        res.setReliableCacheElement(parseUnsignedInt(xpp));
3718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3719        res.setDocumentationElement(parseMarkdown(xpp));
3720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
3721        res.getSupportedMessage().add(parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(xpp, owner));
3722      } else if (!parseBackboneElementContent(eventType, xpp, res))
3723        return false;
3724    return true;
3725  }
3726
3727  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3728    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
3729    parseBackboneAttributes(xpp, res);
3730    next(xpp);
3731    int eventType = nextNoWhitespace(xpp);
3732    while (eventType != XmlPullParser.END_TAG) {
3733  if (!parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, owner, res))
3734        unknownContent(xpp);
3735      eventType = nextNoWhitespace(xpp);
3736    }
3737    next(xpp);
3738    parseElementClose(res);
3739    return res;
3740  }
3741
3742  protected boolean parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3744        res.setProtocol(parseCoding(xpp));
3745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3746        res.setAddressElement(parseUrl(xpp));
3747      } else if (!parseBackboneElementContent(eventType, xpp, res))
3748        return false;
3749    return true;
3750  }
3751
3752  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3753    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
3754    parseBackboneAttributes(xpp, res);
3755    next(xpp);
3756    int eventType = nextNoWhitespace(xpp);
3757    while (eventType != XmlPullParser.END_TAG) {
3758  if (!parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, owner, res))
3759        unknownContent(xpp);
3760      eventType = nextNoWhitespace(xpp);
3761    }
3762    next(xpp);
3763    parseElementClose(res);
3764    return res;
3765  }
3766
3767  protected boolean parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3768      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3769        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3771        res.setDefinitionElement(parseCanonical(xpp));
3772      } else if (!parseBackboneElementContent(eventType, xpp, res))
3773        return false;
3774    return true;
3775  }
3776
3777  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementCapabilityStatementDocumentComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3778    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
3779    parseBackboneAttributes(xpp, res);
3780    next(xpp);
3781    int eventType = nextNoWhitespace(xpp);
3782    while (eventType != XmlPullParser.END_TAG) {
3783  if (!parseCapabilityStatementCapabilityStatementDocumentComponentContent(eventType, xpp, owner, res))
3784        unknownContent(xpp);
3785      eventType = nextNoWhitespace(xpp);
3786    }
3787    next(xpp);
3788    parseElementClose(res);
3789    return res;
3790  }
3791
3792  protected boolean parseCapabilityStatementCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3793      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3794        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
3795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3796        res.setDocumentationElement(parseMarkdown(xpp));
3797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3798        res.setProfileElement(parseCanonical(xpp));
3799      } else if (!parseBackboneElementContent(eventType, xpp, res))
3800        return false;
3801    return true;
3802  }
3803
3804  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3805    CarePlan res = new CarePlan();
3806    parseDomainResourceAttributes(xpp, res);
3807    next(xpp);
3808    int eventType = nextNoWhitespace(xpp);
3809    while (eventType != XmlPullParser.END_TAG) {
3810  if (!parseCarePlanContent(eventType, xpp, res))
3811        unknownContent(xpp);
3812      eventType = nextNoWhitespace(xpp);
3813    }
3814    next(xpp);
3815    parseElementClose(res);
3816    return res;
3817  }
3818
3819  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
3820      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3821        res.getIdentifier().add(parseIdentifier(xpp));
3822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
3823        res.getInstantiatesCanonical().add(parseCanonical(xpp));
3824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
3825        res.getInstantiatesUri().add(parseUri(xpp));
3826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3827        res.getBasedOn().add(parseReference(xpp));
3828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
3829        res.getReplaces().add(parseReference(xpp));
3830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3831        res.getPartOf().add(parseReference(xpp));
3832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3833        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
3834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
3835        res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
3836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3837        res.getCategory().add(parseCodeableConcept(xpp));
3838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3839        res.setTitleElement(parseString(xpp));
3840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3841        res.setDescriptionElement(parseString(xpp));
3842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3843        res.setSubject(parseReference(xpp));
3844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3845        res.setEncounter(parseReference(xpp));
3846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3847        res.setPeriod(parsePeriod(xpp));
3848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3849        res.setCreatedElement(parseDateTime(xpp));
3850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3851        res.setAuthor(parseReference(xpp));
3852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
3853        res.getContributor().add(parseReference(xpp));
3854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3855        res.getCareTeam().add(parseReference(xpp));
3856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
3857        res.getAddresses().add(parseReference(xpp));
3858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
3859        res.getSupportingInfo().add(parseReference(xpp));
3860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3861        res.getGoal().add(parseReference(xpp));
3862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
3863        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
3864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3865        res.getNote().add(parseAnnotation(xpp));
3866      } else if (!parseDomainResourceContent(eventType, xpp, res))
3867        return false;
3868    return true;
3869  }
3870
3871  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3872    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
3873    parseBackboneAttributes(xpp, res);
3874    next(xpp);
3875    int eventType = nextNoWhitespace(xpp);
3876    while (eventType != XmlPullParser.END_TAG) {
3877  if (!parseCarePlanCarePlanActivityComponentContent(eventType, xpp, owner, res))
3878        unknownContent(xpp);
3879      eventType = nextNoWhitespace(xpp);
3880    }
3881    next(xpp);
3882    parseElementClose(res);
3883    return res;
3884  }
3885
3886  protected boolean parseCarePlanCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3887      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCodeableConcept")) {
3888        res.getOutcomeCodeableConcept().add(parseCodeableConcept(xpp));
3889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
3890        res.getOutcomeReference().add(parseReference(xpp));
3891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
3892        res.getProgress().add(parseAnnotation(xpp));
3893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3894        res.setReference(parseReference(xpp));
3895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3896        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
3897      } else if (!parseBackboneElementContent(eventType, xpp, res))
3898        return false;
3899    return true;
3900  }
3901
3902  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3903    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
3904    parseBackboneAttributes(xpp, res);
3905    next(xpp);
3906    int eventType = nextNoWhitespace(xpp);
3907    while (eventType != XmlPullParser.END_TAG) {
3908  if (!parseCarePlanCarePlanActivityDetailComponentContent(eventType, xpp, owner, res))
3909        unknownContent(xpp);
3910      eventType = nextNoWhitespace(xpp);
3911    }
3912    next(xpp);
3913    parseElementClose(res);
3914    return res;
3915  }
3916
3917  protected boolean parseCarePlanCarePlanActivityDetailComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3919        res.setKindElement(parseEnumeration(xpp, CarePlan.CarePlanActivityKind.NULL, new CarePlan.CarePlanActivityKindEnumFactory()));
3920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
3921        res.getInstantiatesCanonical().add(parseCanonical(xpp));
3922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
3923        res.getInstantiatesUri().add(parseUri(xpp));
3924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3925        res.setCode(parseCodeableConcept(xpp));
3926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3927        res.getReasonCode().add(parseCodeableConcept(xpp));
3928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3929        res.getReasonReference().add(parseReference(xpp));
3930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3931        res.getGoal().add(parseReference(xpp));
3932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3933        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
3934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
3935        res.setStatusReason(parseCodeableConcept(xpp));
3936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
3937        res.setDoNotPerformElement(parseBoolean(xpp));
3938      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
3939        res.setScheduled(parseType("scheduled", xpp));
3940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3941        res.setLocation(parseReference(xpp));
3942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
3943        res.getPerformer().add(parseReference(xpp));
3944      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
3945        res.setProduct(parseType("product", xpp));
3946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
3947        res.setDailyAmount(parseQuantity(xpp));
3948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3949        res.setQuantity(parseQuantity(xpp));
3950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3951        res.setDescriptionElement(parseString(xpp));
3952      } else if (!parseBackboneElementContent(eventType, xpp, res))
3953        return false;
3954    return true;
3955  }
3956
3957  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3958    CareTeam res = new CareTeam();
3959    parseDomainResourceAttributes(xpp, res);
3960    next(xpp);
3961    int eventType = nextNoWhitespace(xpp);
3962    while (eventType != XmlPullParser.END_TAG) {
3963  if (!parseCareTeamContent(eventType, xpp, res))
3964        unknownContent(xpp);
3965      eventType = nextNoWhitespace(xpp);
3966    }
3967    next(xpp);
3968    parseElementClose(res);
3969    return res;
3970  }
3971
3972  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
3973      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3974        res.getIdentifier().add(parseIdentifier(xpp));
3975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3976        res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
3977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3978        res.getCategory().add(parseCodeableConcept(xpp));
3979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3980        res.setNameElement(parseString(xpp));
3981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3982        res.setSubject(parseReference(xpp));
3983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3984        res.setEncounter(parseReference(xpp));
3985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3986        res.setPeriod(parsePeriod(xpp));
3987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3988        res.getParticipant().add(parseCareTeamCareTeamParticipantComponent(xpp, res));
3989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3990        res.getReasonCode().add(parseCodeableConcept(xpp));
3991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3992        res.getReasonReference().add(parseReference(xpp));
3993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
3994        res.getManagingOrganization().add(parseReference(xpp));
3995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
3996        res.getTelecom().add(parseContactPoint(xpp));
3997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3998        res.getNote().add(parseAnnotation(xpp));
3999      } else if (!parseDomainResourceContent(eventType, xpp, res))
4000        return false;
4001    return true;
4002  }
4003
4004  protected CareTeam.CareTeamParticipantComponent parseCareTeamCareTeamParticipantComponent(XmlPullParser xpp, CareTeam owner) throws XmlPullParserException, IOException, FHIRFormatError {
4005    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
4006    parseBackboneAttributes(xpp, res);
4007    next(xpp);
4008    int eventType = nextNoWhitespace(xpp);
4009    while (eventType != XmlPullParser.END_TAG) {
4010  if (!parseCareTeamCareTeamParticipantComponentContent(eventType, xpp, owner, res))
4011        unknownContent(xpp);
4012      eventType = nextNoWhitespace(xpp);
4013    }
4014    next(xpp);
4015    parseElementClose(res);
4016    return res;
4017  }
4018
4019  protected boolean parseCareTeamCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam owner, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4020      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4021        res.getRole().add(parseCodeableConcept(xpp));
4022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
4023        res.setMember(parseReference(xpp));
4024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
4025        res.setOnBehalfOf(parseReference(xpp));
4026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4027        res.setPeriod(parsePeriod(xpp));
4028      } else if (!parseBackboneElementContent(eventType, xpp, res))
4029        return false;
4030    return true;
4031  }
4032
4033  protected CatalogEntry parseCatalogEntry(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4034    CatalogEntry res = new CatalogEntry();
4035    parseDomainResourceAttributes(xpp, res);
4036    next(xpp);
4037    int eventType = nextNoWhitespace(xpp);
4038    while (eventType != XmlPullParser.END_TAG) {
4039  if (!parseCatalogEntryContent(eventType, xpp, res))
4040        unknownContent(xpp);
4041      eventType = nextNoWhitespace(xpp);
4042    }
4043    next(xpp);
4044    parseElementClose(res);
4045    return res;
4046  }
4047
4048  protected boolean parseCatalogEntryContent(int eventType, XmlPullParser xpp, CatalogEntry res) throws XmlPullParserException, IOException, FHIRFormatError {
4049      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4050        res.getIdentifier().add(parseIdentifier(xpp));
4051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4052        res.setType(parseCodeableConcept(xpp));
4053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderable")) {
4054        res.setOrderableElement(parseBoolean(xpp));
4055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedItem")) {
4056        res.setReferencedItem(parseReference(xpp));
4057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalIdentifier")) {
4058        res.getAdditionalIdentifier().add(parseIdentifier(xpp));
4059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
4060        res.getClassification().add(parseCodeableConcept(xpp));
4061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4062        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
4064        res.setValidityPeriod(parsePeriod(xpp));
4065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validTo")) {
4066        res.setValidToElement(parseDateTime(xpp));
4067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
4068        res.setLastUpdatedElement(parseDateTime(xpp));
4069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalCharacteristic")) {
4070        res.getAdditionalCharacteristic().add(parseCodeableConcept(xpp));
4071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalClassification")) {
4072        res.getAdditionalClassification().add(parseCodeableConcept(xpp));
4073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedEntry")) {
4074        res.getRelatedEntry().add(parseCatalogEntryCatalogEntryRelatedEntryComponent(xpp, res));
4075      } else if (!parseDomainResourceContent(eventType, xpp, res))
4076        return false;
4077    return true;
4078  }
4079
4080  protected CatalogEntry.CatalogEntryRelatedEntryComponent parseCatalogEntryCatalogEntryRelatedEntryComponent(XmlPullParser xpp, CatalogEntry owner) throws XmlPullParserException, IOException, FHIRFormatError {
4081    CatalogEntry.CatalogEntryRelatedEntryComponent res = new CatalogEntry.CatalogEntryRelatedEntryComponent();
4082    parseBackboneAttributes(xpp, res);
4083    next(xpp);
4084    int eventType = nextNoWhitespace(xpp);
4085    while (eventType != XmlPullParser.END_TAG) {
4086  if (!parseCatalogEntryCatalogEntryRelatedEntryComponentContent(eventType, xpp, owner, res))
4087        unknownContent(xpp);
4088      eventType = nextNoWhitespace(xpp);
4089    }
4090    next(xpp);
4091    parseElementClose(res);
4092    return res;
4093  }
4094
4095  protected boolean parseCatalogEntryCatalogEntryRelatedEntryComponentContent(int eventType, XmlPullParser xpp, CatalogEntry owner, CatalogEntry.CatalogEntryRelatedEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4096      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationtype")) {
4097        res.setRelationtypeElement(parseEnumeration(xpp, CatalogEntry.CatalogEntryRelationType.NULL, new CatalogEntry.CatalogEntryRelationTypeEnumFactory()));
4098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4099        res.setItem(parseReference(xpp));
4100      } else if (!parseBackboneElementContent(eventType, xpp, res))
4101        return false;
4102    return true;
4103  }
4104
4105  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4106    ChargeItem res = new ChargeItem();
4107    parseDomainResourceAttributes(xpp, res);
4108    next(xpp);
4109    int eventType = nextNoWhitespace(xpp);
4110    while (eventType != XmlPullParser.END_TAG) {
4111  if (!parseChargeItemContent(eventType, xpp, res))
4112        unknownContent(xpp);
4113      eventType = nextNoWhitespace(xpp);
4114    }
4115    next(xpp);
4116    parseElementClose(res);
4117    return res;
4118  }
4119
4120  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
4121      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4122        res.getIdentifier().add(parseIdentifier(xpp));
4123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionUri")) {
4124        res.getDefinitionUri().add(parseUri(xpp));
4125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionCanonical")) {
4126        res.getDefinitionCanonical().add(parseCanonical(xpp));
4127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4128        res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
4129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4130        res.getPartOf().add(parseReference(xpp));
4131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4132        res.setCode(parseCodeableConcept(xpp));
4133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4134        res.setSubject(parseReference(xpp));
4135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4136        res.setContext(parseReference(xpp));
4137      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
4138        res.setOccurrence(parseType("occurrence", xpp));
4139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
4140        res.getPerformer().add(parseChargeItemChargeItemPerformerComponent(xpp, res));
4141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
4142        res.setPerformingOrganization(parseReference(xpp));
4143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
4144        res.setRequestingOrganization(parseReference(xpp));
4145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costCenter")) {
4146        res.setCostCenter(parseReference(xpp));
4147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4148        res.setQuantity(parseQuantity(xpp));
4149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
4150        res.getBodysite().add(parseCodeableConcept(xpp));
4151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factorOverride")) {
4152        res.setFactorOverrideElement(parseDecimal(xpp));
4153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceOverride")) {
4154        res.setPriceOverride(parseMoney(xpp));
4155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
4156        res.setOverrideReasonElement(parseString(xpp));
4157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4158        res.setEnterer(parseReference(xpp));
4159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
4160        res.setEnteredDateElement(parseDateTime(xpp));
4161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4162        res.getReason().add(parseCodeableConcept(xpp));
4163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4164        res.getService().add(parseReference(xpp));
4165      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
4166        res.setProduct(parseType("product", xpp));
4167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
4168        res.getAccount().add(parseReference(xpp));
4169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4170        res.getNote().add(parseAnnotation(xpp));
4171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
4172        res.getSupportingInformation().add(parseReference(xpp));
4173      } else if (!parseDomainResourceContent(eventType, xpp, res))
4174        return false;
4175    return true;
4176  }
4177
4178  protected ChargeItem.ChargeItemPerformerComponent parseChargeItemChargeItemPerformerComponent(XmlPullParser xpp, ChargeItem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4179    ChargeItem.ChargeItemPerformerComponent res = new ChargeItem.ChargeItemPerformerComponent();
4180    parseBackboneAttributes(xpp, res);
4181    next(xpp);
4182    int eventType = nextNoWhitespace(xpp);
4183    while (eventType != XmlPullParser.END_TAG) {
4184  if (!parseChargeItemChargeItemPerformerComponentContent(eventType, xpp, owner, res))
4185        unknownContent(xpp);
4186      eventType = nextNoWhitespace(xpp);
4187    }
4188    next(xpp);
4189    parseElementClose(res);
4190    return res;
4191  }
4192
4193  protected boolean parseChargeItemChargeItemPerformerComponentContent(int eventType, XmlPullParser xpp, ChargeItem owner, ChargeItem.ChargeItemPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4194      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
4195        res.setFunction(parseCodeableConcept(xpp));
4196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4197        res.setActor(parseReference(xpp));
4198      } else if (!parseBackboneElementContent(eventType, xpp, res))
4199        return false;
4200    return true;
4201  }
4202
4203  protected ChargeItemDefinition parseChargeItemDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4204    ChargeItemDefinition res = new ChargeItemDefinition();
4205    parseDomainResourceAttributes(xpp, res);
4206    next(xpp);
4207    int eventType = nextNoWhitespace(xpp);
4208    while (eventType != XmlPullParser.END_TAG) {
4209  if (!parseChargeItemDefinitionContent(eventType, xpp, res))
4210        unknownContent(xpp);
4211      eventType = nextNoWhitespace(xpp);
4212    }
4213    next(xpp);
4214    parseElementClose(res);
4215    return res;
4216  }
4217
4218  protected boolean parseChargeItemDefinitionContent(int eventType, XmlPullParser xpp, ChargeItemDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
4219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4220        res.setUrlElement(parseUri(xpp));
4221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4222        res.getIdentifier().add(parseIdentifier(xpp));
4223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4224        res.setVersionElement(parseString(xpp));
4225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4226        res.setTitleElement(parseString(xpp));
4227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromUri")) {
4228        res.getDerivedFromUri().add(parseUri(xpp));
4229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4230        res.getPartOf().add(parseCanonical(xpp));
4231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4232        res.getReplaces().add(parseCanonical(xpp));
4233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4234        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4236        res.setExperimentalElement(parseBoolean(xpp));
4237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4238        res.setDateElement(parseDateTime(xpp));
4239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4240        res.setPublisherElement(parseString(xpp));
4241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4242        res.getContact().add(parseContactDetail(xpp));
4243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4244        res.setDescriptionElement(parseMarkdown(xpp));
4245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4246        res.getUseContext().add(parseUsageContext(xpp));
4247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4248        res.getJurisdiction().add(parseCodeableConcept(xpp));
4249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4250        res.setCopyrightElement(parseMarkdown(xpp));
4251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
4252        res.setApprovalDateElement(parseDate(xpp));
4253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
4254        res.setLastReviewDateElement(parseDate(xpp));
4255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
4256        res.setEffectivePeriod(parsePeriod(xpp));
4257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4258        res.setCode(parseCodeableConcept(xpp));
4259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
4260        res.getInstance().add(parseReference(xpp));
4261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4262        res.getApplicability().add(parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(xpp, res));
4263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("propertyGroup")) {
4264        res.getPropertyGroup().add(parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(xpp, res));
4265      } else if (!parseDomainResourceContent(eventType, xpp, res))
4266        return false;
4267    return true;
4268  }
4269
4270  protected ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4271    ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res = new ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent();
4272    parseBackboneAttributes(xpp, res);
4273    next(xpp);
4274    int eventType = nextNoWhitespace(xpp);
4275    while (eventType != XmlPullParser.END_TAG) {
4276  if (!parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponentContent(eventType, xpp, owner, res))
4277        unknownContent(xpp);
4278      eventType = nextNoWhitespace(xpp);
4279    }
4280    next(xpp);
4281    parseElementClose(res);
4282    return res;
4283  }
4284
4285  protected boolean parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4286      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4287        res.setDescriptionElement(parseString(xpp));
4288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4289        res.setLanguageElement(parseString(xpp));
4290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
4291        res.setExpressionElement(parseString(xpp));
4292      } else if (!parseBackboneElementContent(eventType, xpp, res))
4293        return false;
4294    return true;
4295  }
4296
4297  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4298    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent();
4299    parseBackboneAttributes(xpp, res);
4300    next(xpp);
4301    int eventType = nextNoWhitespace(xpp);
4302    while (eventType != XmlPullParser.END_TAG) {
4303  if (!parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentContent(eventType, xpp, owner, res))
4304        unknownContent(xpp);
4305      eventType = nextNoWhitespace(xpp);
4306    }
4307    next(xpp);
4308    parseElementClose(res);
4309    return res;
4310  }
4311
4312  protected boolean parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4313      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4314        res.getApplicability().add(parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(xpp, owner));
4315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
4316        res.getPriceComponent().add(parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(xpp, owner));
4317      } else if (!parseBackboneElementContent(eventType, xpp, res))
4318        return false;
4319    return true;
4320  }
4321
4322  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4323    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent();
4324    parseBackboneAttributes(xpp, res);
4325    next(xpp);
4326    int eventType = nextNoWhitespace(xpp);
4327    while (eventType != XmlPullParser.END_TAG) {
4328  if (!parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentContent(eventType, xpp, owner, res))
4329        unknownContent(xpp);
4330      eventType = nextNoWhitespace(xpp);
4331    }
4332    next(xpp);
4333    parseElementClose(res);
4334    return res;
4335  }
4336
4337  protected boolean parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4338      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4339        res.setTypeElement(parseEnumeration(xpp, ChargeItemDefinition.ChargeItemDefinitionPriceComponentType.NULL, new ChargeItemDefinition.ChargeItemDefinitionPriceComponentTypeEnumFactory()));
4340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4341        res.setCode(parseCodeableConcept(xpp));
4342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4343        res.setFactorElement(parseDecimal(xpp));
4344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4345        res.setAmount(parseMoney(xpp));
4346      } else if (!parseBackboneElementContent(eventType, xpp, res))
4347        return false;
4348    return true;
4349  }
4350
4351  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4352    Claim res = new Claim();
4353    parseDomainResourceAttributes(xpp, res);
4354    next(xpp);
4355    int eventType = nextNoWhitespace(xpp);
4356    while (eventType != XmlPullParser.END_TAG) {
4357  if (!parseClaimContent(eventType, xpp, res))
4358        unknownContent(xpp);
4359      eventType = nextNoWhitespace(xpp);
4360    }
4361    next(xpp);
4362    parseElementClose(res);
4363    return res;
4364  }
4365
4366  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
4367      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4368        res.getIdentifier().add(parseIdentifier(xpp));
4369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4370        res.setStatusElement(parseEnumeration(xpp, Claim.ClaimStatus.NULL, new Claim.ClaimStatusEnumFactory()));
4371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4372        res.setType(parseCodeableConcept(xpp));
4373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4374        res.setSubType(parseCodeableConcept(xpp));
4375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4376        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
4377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4378        res.setPatient(parseReference(xpp));
4379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
4380        res.setBillablePeriod(parsePeriod(xpp));
4381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4382        res.setCreatedElement(parseDateTime(xpp));
4383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4384        res.setEnterer(parseReference(xpp));
4385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4386        res.setInsurer(parseReference(xpp));
4387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4388        res.setProvider(parseReference(xpp));
4389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4390        res.setPriority(parseCodeableConcept(xpp));
4391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
4392        res.setFundsReserve(parseCodeableConcept(xpp));
4393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
4394        res.getRelated().add(parseClaimRelatedClaimComponent(xpp, res));
4395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
4396        res.setPrescription(parseReference(xpp));
4397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
4398        res.setOriginalPrescription(parseReference(xpp));
4399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
4400        res.setPayee(parseClaimPayeeComponent(xpp, res));
4401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
4402        res.setReferral(parseReference(xpp));
4403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
4404        res.setFacility(parseReference(xpp));
4405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
4406        res.getCareTeam().add(parseClaimCareTeamComponent(xpp, res));
4407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
4408        res.getSupportingInfo().add(parseClaimSupportingInformationComponent(xpp, res));
4409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
4410        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
4411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
4412        res.getProcedure().add(parseClaimProcedureComponent(xpp, res));
4413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4414        res.getInsurance().add(parseClaimInsuranceComponent(xpp, res));
4415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
4416        res.setAccident(parseClaimAccidentComponent(xpp, res));
4417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4418        res.getItem().add(parseClaimItemComponent(xpp, res));
4419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4420        res.setTotal(parseMoney(xpp));
4421      } else if (!parseDomainResourceContent(eventType, xpp, res))
4422        return false;
4423    return true;
4424  }
4425
4426  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4427    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
4428    parseBackboneAttributes(xpp, res);
4429    next(xpp);
4430    int eventType = nextNoWhitespace(xpp);
4431    while (eventType != XmlPullParser.END_TAG) {
4432  if (!parseClaimRelatedClaimComponentContent(eventType, xpp, owner, res))
4433        unknownContent(xpp);
4434      eventType = nextNoWhitespace(xpp);
4435    }
4436    next(xpp);
4437    parseElementClose(res);
4438    return res;
4439  }
4440
4441  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
4443        res.setClaim(parseReference(xpp));
4444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
4445        res.setRelationship(parseCodeableConcept(xpp));
4446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
4447        res.setReference(parseIdentifier(xpp));
4448      } else if (!parseBackboneElementContent(eventType, xpp, res))
4449        return false;
4450    return true;
4451  }
4452
4453  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4454    Claim.PayeeComponent res = new Claim.PayeeComponent();
4455    parseBackboneAttributes(xpp, res);
4456    next(xpp);
4457    int eventType = nextNoWhitespace(xpp);
4458    while (eventType != XmlPullParser.END_TAG) {
4459  if (!parseClaimPayeeComponentContent(eventType, xpp, owner, res))
4460        unknownContent(xpp);
4461      eventType = nextNoWhitespace(xpp);
4462    }
4463    next(xpp);
4464    parseElementClose(res);
4465    return res;
4466  }
4467
4468  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4470        res.setType(parseCodeableConcept(xpp));
4471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
4472        res.setParty(parseReference(xpp));
4473      } else if (!parseBackboneElementContent(eventType, xpp, res))
4474        return false;
4475    return true;
4476  }
4477
4478  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4479    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
4480    parseBackboneAttributes(xpp, res);
4481    next(xpp);
4482    int eventType = nextNoWhitespace(xpp);
4483    while (eventType != XmlPullParser.END_TAG) {
4484  if (!parseClaimCareTeamComponentContent(eventType, xpp, owner, res))
4485        unknownContent(xpp);
4486      eventType = nextNoWhitespace(xpp);
4487    }
4488    next(xpp);
4489    parseElementClose(res);
4490    return res;
4491  }
4492
4493  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4494      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4495        res.setSequenceElement(parsePositiveInt(xpp));
4496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4497        res.setProvider(parseReference(xpp));
4498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
4499        res.setResponsibleElement(parseBoolean(xpp));
4500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4501        res.setRole(parseCodeableConcept(xpp));
4502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
4503        res.setQualification(parseCodeableConcept(xpp));
4504      } else if (!parseBackboneElementContent(eventType, xpp, res))
4505        return false;
4506    return true;
4507  }
4508
4509  protected Claim.SupportingInformationComponent parseClaimSupportingInformationComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4510    Claim.SupportingInformationComponent res = new Claim.SupportingInformationComponent();
4511    parseBackboneAttributes(xpp, res);
4512    next(xpp);
4513    int eventType = nextNoWhitespace(xpp);
4514    while (eventType != XmlPullParser.END_TAG) {
4515  if (!parseClaimSupportingInformationComponentContent(eventType, xpp, owner, res))
4516        unknownContent(xpp);
4517      eventType = nextNoWhitespace(xpp);
4518    }
4519    next(xpp);
4520    parseElementClose(res);
4521    return res;
4522  }
4523
4524  protected boolean parseClaimSupportingInformationComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4525      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4526        res.setSequenceElement(parsePositiveInt(xpp));
4527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4528        res.setCategory(parseCodeableConcept(xpp));
4529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4530        res.setCode(parseCodeableConcept(xpp));
4531      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
4532        res.setTiming(parseType("timing", xpp));
4533      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
4534        res.setValue(parseType("value", xpp));
4535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4536        res.setReason(parseCodeableConcept(xpp));
4537      } else if (!parseBackboneElementContent(eventType, xpp, res))
4538        return false;
4539    return true;
4540  }
4541
4542  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4543    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
4544    parseBackboneAttributes(xpp, res);
4545    next(xpp);
4546    int eventType = nextNoWhitespace(xpp);
4547    while (eventType != XmlPullParser.END_TAG) {
4548  if (!parseClaimDiagnosisComponentContent(eventType, xpp, owner, res))
4549        unknownContent(xpp);
4550      eventType = nextNoWhitespace(xpp);
4551    }
4552    next(xpp);
4553    parseElementClose(res);
4554    return res;
4555  }
4556
4557  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4559        res.setSequenceElement(parsePositiveInt(xpp));
4560      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
4561        res.setDiagnosis(parseType("diagnosis", xpp));
4562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4563        res.getType().add(parseCodeableConcept(xpp));
4564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
4565        res.setOnAdmission(parseCodeableConcept(xpp));
4566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
4567        res.setPackageCode(parseCodeableConcept(xpp));
4568      } else if (!parseBackboneElementContent(eventType, xpp, res))
4569        return false;
4570    return true;
4571  }
4572
4573  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4574    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
4575    parseBackboneAttributes(xpp, res);
4576    next(xpp);
4577    int eventType = nextNoWhitespace(xpp);
4578    while (eventType != XmlPullParser.END_TAG) {
4579  if (!parseClaimProcedureComponentContent(eventType, xpp, owner, res))
4580        unknownContent(xpp);
4581      eventType = nextNoWhitespace(xpp);
4582    }
4583    next(xpp);
4584    parseElementClose(res);
4585    return res;
4586  }
4587
4588  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4589      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4590        res.setSequenceElement(parsePositiveInt(xpp));
4591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4592        res.getType().add(parseCodeableConcept(xpp));
4593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4594        res.setDateElement(parseDateTime(xpp));
4595      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
4596        res.setProcedure(parseType("procedure", xpp));
4597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4598        res.getUdi().add(parseReference(xpp));
4599      } else if (!parseBackboneElementContent(eventType, xpp, res))
4600        return false;
4601    return true;
4602  }
4603
4604  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4605    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
4606    parseBackboneAttributes(xpp, res);
4607    next(xpp);
4608    int eventType = nextNoWhitespace(xpp);
4609    while (eventType != XmlPullParser.END_TAG) {
4610  if (!parseClaimInsuranceComponentContent(eventType, xpp, owner, res))
4611        unknownContent(xpp);
4612      eventType = nextNoWhitespace(xpp);
4613    }
4614    next(xpp);
4615    parseElementClose(res);
4616    return res;
4617  }
4618
4619  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4620      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4621        res.setSequenceElement(parsePositiveInt(xpp));
4622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
4623        res.setFocalElement(parseBoolean(xpp));
4624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4625        res.setIdentifier(parseIdentifier(xpp));
4626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4627        res.setCoverage(parseReference(xpp));
4628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
4629        res.setBusinessArrangementElement(parseString(xpp));
4630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4631        res.getPreAuthRef().add(parseString(xpp));
4632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
4633        res.setClaimResponse(parseReference(xpp));
4634      } else if (!parseBackboneElementContent(eventType, xpp, res))
4635        return false;
4636    return true;
4637  }
4638
4639  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4640    Claim.AccidentComponent res = new Claim.AccidentComponent();
4641    parseBackboneAttributes(xpp, res);
4642    next(xpp);
4643    int eventType = nextNoWhitespace(xpp);
4644    while (eventType != XmlPullParser.END_TAG) {
4645  if (!parseClaimAccidentComponentContent(eventType, xpp, owner, res))
4646        unknownContent(xpp);
4647      eventType = nextNoWhitespace(xpp);
4648    }
4649    next(xpp);
4650    parseElementClose(res);
4651    return res;
4652  }
4653
4654  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4655      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4656        res.setDateElement(parseDate(xpp));
4657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4658        res.setType(parseCodeableConcept(xpp));
4659      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4660        res.setLocation(parseType("location", xpp));
4661      } else if (!parseBackboneElementContent(eventType, xpp, res))
4662        return false;
4663    return true;
4664  }
4665
4666  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4667    Claim.ItemComponent res = new Claim.ItemComponent();
4668    parseBackboneAttributes(xpp, res);
4669    next(xpp);
4670    int eventType = nextNoWhitespace(xpp);
4671    while (eventType != XmlPullParser.END_TAG) {
4672  if (!parseClaimItemComponentContent(eventType, xpp, owner, res))
4673        unknownContent(xpp);
4674      eventType = nextNoWhitespace(xpp);
4675    }
4676    next(xpp);
4677    parseElementClose(res);
4678    return res;
4679  }
4680
4681  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4682      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4683        res.setSequenceElement(parsePositiveInt(xpp));
4684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
4685        res.getCareTeamSequence().add(parsePositiveInt(xpp));
4686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
4687        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
4688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
4689        res.getProcedureSequence().add(parsePositiveInt(xpp));
4690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
4691        res.getInformationSequence().add(parsePositiveInt(xpp));
4692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4693        res.setRevenue(parseCodeableConcept(xpp));
4694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4695        res.setCategory(parseCodeableConcept(xpp));
4696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
4697        res.setProductOrService(parseCodeableConcept(xpp));
4698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4699        res.getModifier().add(parseCodeableConcept(xpp));
4700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4701        res.getProgramCode().add(parseCodeableConcept(xpp));
4702      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
4703        res.setServiced(parseType("serviced", xpp));
4704      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4705        res.setLocation(parseType("location", xpp));
4706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4707        res.setQuantity(parseQuantity(xpp));
4708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4709        res.setUnitPrice(parseMoney(xpp));
4710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4711        res.setFactorElement(parseDecimal(xpp));
4712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4713        res.setNet(parseMoney(xpp));
4714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4715        res.getUdi().add(parseReference(xpp));
4716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4717        res.setBodySite(parseCodeableConcept(xpp));
4718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
4719        res.getSubSite().add(parseCodeableConcept(xpp));
4720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4721        res.getEncounter().add(parseReference(xpp));
4722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4723        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
4724      } else if (!parseBackboneElementContent(eventType, xpp, res))
4725        return false;
4726    return true;
4727  }
4728
4729  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4730    Claim.DetailComponent res = new Claim.DetailComponent();
4731    parseBackboneAttributes(xpp, res);
4732    next(xpp);
4733    int eventType = nextNoWhitespace(xpp);
4734    while (eventType != XmlPullParser.END_TAG) {
4735  if (!parseClaimDetailComponentContent(eventType, xpp, owner, res))
4736        unknownContent(xpp);
4737      eventType = nextNoWhitespace(xpp);
4738    }
4739    next(xpp);
4740    parseElementClose(res);
4741    return res;
4742  }
4743
4744  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4745      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4746        res.setSequenceElement(parsePositiveInt(xpp));
4747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4748        res.setRevenue(parseCodeableConcept(xpp));
4749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4750        res.setCategory(parseCodeableConcept(xpp));
4751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
4752        res.setProductOrService(parseCodeableConcept(xpp));
4753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4754        res.getModifier().add(parseCodeableConcept(xpp));
4755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4756        res.getProgramCode().add(parseCodeableConcept(xpp));
4757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4758        res.setQuantity(parseQuantity(xpp));
4759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4760        res.setUnitPrice(parseMoney(xpp));
4761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4762        res.setFactorElement(parseDecimal(xpp));
4763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4764        res.setNet(parseMoney(xpp));
4765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4766        res.getUdi().add(parseReference(xpp));
4767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4768        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
4769      } else if (!parseBackboneElementContent(eventType, xpp, res))
4770        return false;
4771    return true;
4772  }
4773
4774  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4775    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
4776    parseBackboneAttributes(xpp, res);
4777    next(xpp);
4778    int eventType = nextNoWhitespace(xpp);
4779    while (eventType != XmlPullParser.END_TAG) {
4780  if (!parseClaimSubDetailComponentContent(eventType, xpp, owner, res))
4781        unknownContent(xpp);
4782      eventType = nextNoWhitespace(xpp);
4783    }
4784    next(xpp);
4785    parseElementClose(res);
4786    return res;
4787  }
4788
4789  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4790      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4791        res.setSequenceElement(parsePositiveInt(xpp));
4792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4793        res.setRevenue(parseCodeableConcept(xpp));
4794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4795        res.setCategory(parseCodeableConcept(xpp));
4796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
4797        res.setProductOrService(parseCodeableConcept(xpp));
4798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4799        res.getModifier().add(parseCodeableConcept(xpp));
4800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4801        res.getProgramCode().add(parseCodeableConcept(xpp));
4802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4803        res.setQuantity(parseQuantity(xpp));
4804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4805        res.setUnitPrice(parseMoney(xpp));
4806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4807        res.setFactorElement(parseDecimal(xpp));
4808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4809        res.setNet(parseMoney(xpp));
4810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4811        res.getUdi().add(parseReference(xpp));
4812      } else if (!parseBackboneElementContent(eventType, xpp, res))
4813        return false;
4814    return true;
4815  }
4816
4817  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4818    ClaimResponse res = new ClaimResponse();
4819    parseDomainResourceAttributes(xpp, res);
4820    next(xpp);
4821    int eventType = nextNoWhitespace(xpp);
4822    while (eventType != XmlPullParser.END_TAG) {
4823  if (!parseClaimResponseContent(eventType, xpp, res))
4824        unknownContent(xpp);
4825      eventType = nextNoWhitespace(xpp);
4826    }
4827    next(xpp);
4828    parseElementClose(res);
4829    return res;
4830  }
4831
4832  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
4833      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4834        res.getIdentifier().add(parseIdentifier(xpp));
4835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4836        res.setStatusElement(parseEnumeration(xpp, ClaimResponse.ClaimResponseStatus.NULL, new ClaimResponse.ClaimResponseStatusEnumFactory()));
4837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4838        res.setType(parseCodeableConcept(xpp));
4839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4840        res.setSubType(parseCodeableConcept(xpp));
4841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4842        res.setUseElement(parseEnumeration(xpp, ClaimResponse.Use.NULL, new ClaimResponse.UseEnumFactory()));
4843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4844        res.setPatient(parseReference(xpp));
4845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4846        res.setCreatedElement(parseDateTime(xpp));
4847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4848        res.setInsurer(parseReference(xpp));
4849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
4850        res.setRequestor(parseReference(xpp));
4851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4852        res.setRequest(parseReference(xpp));
4853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4854        res.setOutcomeElement(parseEnumeration(xpp, ClaimResponse.RemittanceOutcome.NULL, new ClaimResponse.RemittanceOutcomeEnumFactory()));
4855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4856        res.setDispositionElement(parseString(xpp));
4857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4858        res.setPreAuthRefElement(parseString(xpp));
4859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthPeriod")) {
4860        res.setPreAuthPeriod(parsePeriod(xpp));
4861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
4862        res.setPayeeType(parseCodeableConcept(xpp));
4863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4864        res.getItem().add(parseClaimResponseItemComponent(xpp, res));
4865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
4866        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
4867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4868        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, res));
4869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4870        res.getTotal().add(parseClaimResponseTotalComponent(xpp, res));
4871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
4872        res.setPayment(parseClaimResponsePaymentComponent(xpp, res));
4873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
4874        res.setFundsReserve(parseCodeableConcept(xpp));
4875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
4876        res.setFormCode(parseCodeableConcept(xpp));
4877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
4878        res.setForm(parseAttachment(xpp));
4879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
4880        res.getProcessNote().add(parseClaimResponseNoteComponent(xpp, res));
4881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
4882        res.getCommunicationRequest().add(parseReference(xpp));
4883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4884        res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp, res));
4885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
4886        res.getError().add(parseClaimResponseErrorComponent(xpp, res));
4887      } else if (!parseDomainResourceContent(eventType, xpp, res))
4888        return false;
4889    return true;
4890  }
4891
4892  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4893    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
4894    parseBackboneAttributes(xpp, res);
4895    next(xpp);
4896    int eventType = nextNoWhitespace(xpp);
4897    while (eventType != XmlPullParser.END_TAG) {
4898  if (!parseClaimResponseItemComponentContent(eventType, xpp, owner, res))
4899        unknownContent(xpp);
4900      eventType = nextNoWhitespace(xpp);
4901    }
4902    next(xpp);
4903    parseElementClose(res);
4904    return res;
4905  }
4906
4907  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4908      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
4909        res.setItemSequenceElement(parsePositiveInt(xpp));
4910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4911        res.getNoteNumber().add(parsePositiveInt(xpp));
4912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4913        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4915        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
4916      } else if (!parseBackboneElementContent(eventType, xpp, res))
4917        return false;
4918    return true;
4919  }
4920
4921  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4922    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
4923    parseBackboneAttributes(xpp, res);
4924    next(xpp);
4925    int eventType = nextNoWhitespace(xpp);
4926    while (eventType != XmlPullParser.END_TAG) {
4927  if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, owner, res))
4928        unknownContent(xpp);
4929      eventType = nextNoWhitespace(xpp);
4930    }
4931    next(xpp);
4932    parseElementClose(res);
4933    return res;
4934  }
4935
4936  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4937      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4938        res.setCategory(parseCodeableConcept(xpp));
4939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4940        res.setReason(parseCodeableConcept(xpp));
4941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4942        res.setAmount(parseMoney(xpp));
4943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4944        res.setValueElement(parseDecimal(xpp));
4945      } else if (!parseBackboneElementContent(eventType, xpp, res))
4946        return false;
4947    return true;
4948  }
4949
4950  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4951    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
4952    parseBackboneAttributes(xpp, res);
4953    next(xpp);
4954    int eventType = nextNoWhitespace(xpp);
4955    while (eventType != XmlPullParser.END_TAG) {
4956  if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, owner, res))
4957        unknownContent(xpp);
4958      eventType = nextNoWhitespace(xpp);
4959    }
4960    next(xpp);
4961    parseElementClose(res);
4962    return res;
4963  }
4964
4965  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4966      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
4967        res.setDetailSequenceElement(parsePositiveInt(xpp));
4968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4969        res.getNoteNumber().add(parsePositiveInt(xpp));
4970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4971        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4973        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
4974      } else if (!parseBackboneElementContent(eventType, xpp, res))
4975        return false;
4976    return true;
4977  }
4978
4979  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4980    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
4981    parseBackboneAttributes(xpp, res);
4982    next(xpp);
4983    int eventType = nextNoWhitespace(xpp);
4984    while (eventType != XmlPullParser.END_TAG) {
4985  if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, owner, res))
4986        unknownContent(xpp);
4987      eventType = nextNoWhitespace(xpp);
4988    }
4989    next(xpp);
4990    parseElementClose(res);
4991    return res;
4992  }
4993
4994  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4995      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
4996        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
4997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4998        res.getNoteNumber().add(parsePositiveInt(xpp));
4999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5000        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5001      } else if (!parseBackboneElementContent(eventType, xpp, res))
5002        return false;
5003    return true;
5004  }
5005
5006  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5007    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
5008    parseBackboneAttributes(xpp, res);
5009    next(xpp);
5010    int eventType = nextNoWhitespace(xpp);
5011    while (eventType != XmlPullParser.END_TAG) {
5012  if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, owner, res))
5013        unknownContent(xpp);
5014      eventType = nextNoWhitespace(xpp);
5015    }
5016    next(xpp);
5017    parseElementClose(res);
5018    return res;
5019  }
5020
5021  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5022      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
5023        res.getItemSequence().add(parsePositiveInt(xpp));
5024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
5025        res.getDetailSequence().add(parsePositiveInt(xpp));
5026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequence")) {
5027        res.getSubdetailSequence().add(parsePositiveInt(xpp));
5028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
5029        res.getProvider().add(parseReference(xpp));
5030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5031        res.setProductOrService(parseCodeableConcept(xpp));
5032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5033        res.getModifier().add(parseCodeableConcept(xpp));
5034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
5035        res.getProgramCode().add(parseCodeableConcept(xpp));
5036      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
5037        res.setServiced(parseType("serviced", xpp));
5038      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
5039        res.setLocation(parseType("location", xpp));
5040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5041        res.setQuantity(parseQuantity(xpp));
5042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5043        res.setUnitPrice(parseMoney(xpp));
5044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5045        res.setFactorElement(parseDecimal(xpp));
5046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5047        res.setNet(parseMoney(xpp));
5048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5049        res.setBodySite(parseCodeableConcept(xpp));
5050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
5051        res.getSubSite().add(parseCodeableConcept(xpp));
5052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5053        res.getNoteNumber().add(parsePositiveInt(xpp));
5054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5055        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5057        res.getDetail().add(parseClaimResponseAddedItemDetailComponent(xpp, owner));
5058      } else if (!parseBackboneElementContent(eventType, xpp, res))
5059        return false;
5060    return true;
5061  }
5062
5063  protected ClaimResponse.AddedItemDetailComponent parseClaimResponseAddedItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5064    ClaimResponse.AddedItemDetailComponent res = new ClaimResponse.AddedItemDetailComponent();
5065    parseBackboneAttributes(xpp, res);
5066    next(xpp);
5067    int eventType = nextNoWhitespace(xpp);
5068    while (eventType != XmlPullParser.END_TAG) {
5069  if (!parseClaimResponseAddedItemDetailComponentContent(eventType, xpp, owner, res))
5070        unknownContent(xpp);
5071      eventType = nextNoWhitespace(xpp);
5072    }
5073    next(xpp);
5074    parseElementClose(res);
5075    return res;
5076  }
5077
5078  protected boolean parseClaimResponseAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5079      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5080        res.setProductOrService(parseCodeableConcept(xpp));
5081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5082        res.getModifier().add(parseCodeableConcept(xpp));
5083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5084        res.setQuantity(parseQuantity(xpp));
5085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5086        res.setUnitPrice(parseMoney(xpp));
5087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5088        res.setFactorElement(parseDecimal(xpp));
5089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5090        res.setNet(parseMoney(xpp));
5091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5092        res.getNoteNumber().add(parsePositiveInt(xpp));
5093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5094        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
5096        res.getSubDetail().add(parseClaimResponseAddedItemSubDetailComponent(xpp, owner));
5097      } else if (!parseBackboneElementContent(eventType, xpp, res))
5098        return false;
5099    return true;
5100  }
5101
5102  protected ClaimResponse.AddedItemSubDetailComponent parseClaimResponseAddedItemSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5103    ClaimResponse.AddedItemSubDetailComponent res = new ClaimResponse.AddedItemSubDetailComponent();
5104    parseBackboneAttributes(xpp, res);
5105    next(xpp);
5106    int eventType = nextNoWhitespace(xpp);
5107    while (eventType != XmlPullParser.END_TAG) {
5108  if (!parseClaimResponseAddedItemSubDetailComponentContent(eventType, xpp, owner, res))
5109        unknownContent(xpp);
5110      eventType = nextNoWhitespace(xpp);
5111    }
5112    next(xpp);
5113    parseElementClose(res);
5114    return res;
5115  }
5116
5117  protected boolean parseClaimResponseAddedItemSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5118      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5119        res.setProductOrService(parseCodeableConcept(xpp));
5120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5121        res.getModifier().add(parseCodeableConcept(xpp));
5122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5123        res.setQuantity(parseQuantity(xpp));
5124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5125        res.setUnitPrice(parseMoney(xpp));
5126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5127        res.setFactorElement(parseDecimal(xpp));
5128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5129        res.setNet(parseMoney(xpp));
5130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5131        res.getNoteNumber().add(parsePositiveInt(xpp));
5132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5133        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5134      } else if (!parseBackboneElementContent(eventType, xpp, res))
5135        return false;
5136    return true;
5137  }
5138
5139  protected ClaimResponse.TotalComponent parseClaimResponseTotalComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5140    ClaimResponse.TotalComponent res = new ClaimResponse.TotalComponent();
5141    parseBackboneAttributes(xpp, res);
5142    next(xpp);
5143    int eventType = nextNoWhitespace(xpp);
5144    while (eventType != XmlPullParser.END_TAG) {
5145  if (!parseClaimResponseTotalComponentContent(eventType, xpp, owner, res))
5146        unknownContent(xpp);
5147      eventType = nextNoWhitespace(xpp);
5148    }
5149    next(xpp);
5150    parseElementClose(res);
5151    return res;
5152  }
5153
5154  protected boolean parseClaimResponseTotalComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5155      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5156        res.setCategory(parseCodeableConcept(xpp));
5157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
5158        res.setAmount(parseMoney(xpp));
5159      } else if (!parseBackboneElementContent(eventType, xpp, res))
5160        return false;
5161    return true;
5162  }
5163
5164  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5165    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
5166    parseBackboneAttributes(xpp, res);
5167    next(xpp);
5168    int eventType = nextNoWhitespace(xpp);
5169    while (eventType != XmlPullParser.END_TAG) {
5170  if (!parseClaimResponsePaymentComponentContent(eventType, xpp, owner, res))
5171        unknownContent(xpp);
5172      eventType = nextNoWhitespace(xpp);
5173    }
5174    next(xpp);
5175    parseElementClose(res);
5176    return res;
5177  }
5178
5179  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5180      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5181        res.setType(parseCodeableConcept(xpp));
5182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
5183        res.setAdjustment(parseMoney(xpp));
5184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
5185        res.setAdjustmentReason(parseCodeableConcept(xpp));
5186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5187        res.setDateElement(parseDate(xpp));
5188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
5189        res.setAmount(parseMoney(xpp));
5190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5191        res.setIdentifier(parseIdentifier(xpp));
5192      } else if (!parseBackboneElementContent(eventType, xpp, res))
5193        return false;
5194    return true;
5195  }
5196
5197  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5198    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
5199    parseBackboneAttributes(xpp, res);
5200    next(xpp);
5201    int eventType = nextNoWhitespace(xpp);
5202    while (eventType != XmlPullParser.END_TAG) {
5203  if (!parseClaimResponseNoteComponentContent(eventType, xpp, owner, res))
5204        unknownContent(xpp);
5205      eventType = nextNoWhitespace(xpp);
5206    }
5207    next(xpp);
5208    parseElementClose(res);
5209    return res;
5210  }
5211
5212  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5213      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
5214        res.setNumberElement(parsePositiveInt(xpp));
5215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5216        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
5217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5218        res.setTextElement(parseString(xpp));
5219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5220        res.setLanguage(parseCodeableConcept(xpp));
5221      } else if (!parseBackboneElementContent(eventType, xpp, res))
5222        return false;
5223    return true;
5224  }
5225
5226  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5227    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
5228    parseBackboneAttributes(xpp, res);
5229    next(xpp);
5230    int eventType = nextNoWhitespace(xpp);
5231    while (eventType != XmlPullParser.END_TAG) {
5232  if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, owner, res))
5233        unknownContent(xpp);
5234      eventType = nextNoWhitespace(xpp);
5235    }
5236    next(xpp);
5237    parseElementClose(res);
5238    return res;
5239  }
5240
5241  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5242      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5243        res.setSequenceElement(parsePositiveInt(xpp));
5244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
5245        res.setFocalElement(parseBoolean(xpp));
5246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
5247        res.setCoverage(parseReference(xpp));
5248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
5249        res.setBusinessArrangementElement(parseString(xpp));
5250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
5251        res.setClaimResponse(parseReference(xpp));
5252      } else if (!parseBackboneElementContent(eventType, xpp, res))
5253        return false;
5254    return true;
5255  }
5256
5257  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5258    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
5259    parseBackboneAttributes(xpp, res);
5260    next(xpp);
5261    int eventType = nextNoWhitespace(xpp);
5262    while (eventType != XmlPullParser.END_TAG) {
5263  if (!parseClaimResponseErrorComponentContent(eventType, xpp, owner, res))
5264        unknownContent(xpp);
5265      eventType = nextNoWhitespace(xpp);
5266    }
5267    next(xpp);
5268    parseElementClose(res);
5269    return res;
5270  }
5271
5272  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5273      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
5274        res.setItemSequenceElement(parsePositiveInt(xpp));
5275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
5276        res.setDetailSequenceElement(parsePositiveInt(xpp));
5277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
5278        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
5279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5280        res.setCode(parseCodeableConcept(xpp));
5281      } else if (!parseBackboneElementContent(eventType, xpp, res))
5282        return false;
5283    return true;
5284  }
5285
5286  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5287    ClinicalImpression res = new ClinicalImpression();
5288    parseDomainResourceAttributes(xpp, res);
5289    next(xpp);
5290    int eventType = nextNoWhitespace(xpp);
5291    while (eventType != XmlPullParser.END_TAG) {
5292  if (!parseClinicalImpressionContent(eventType, xpp, res))
5293        unknownContent(xpp);
5294      eventType = nextNoWhitespace(xpp);
5295    }
5296    next(xpp);
5297    parseElementClose(res);
5298    return res;
5299  }
5300
5301  protected boolean parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression res) throws XmlPullParserException, IOException, FHIRFormatError {
5302      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5303        res.getIdentifier().add(parseIdentifier(xpp));
5304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5305        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
5306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5307        res.setStatusReason(parseCodeableConcept(xpp));
5308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5309        res.setCode(parseCodeableConcept(xpp));
5310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5311        res.setDescriptionElement(parseString(xpp));
5312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5313        res.setSubject(parseReference(xpp));
5314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5315        res.setEncounter(parseReference(xpp));
5316      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
5317        res.setEffective(parseType("effective", xpp));
5318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5319        res.setDateElement(parseDateTime(xpp));
5320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
5321        res.setAssessor(parseReference(xpp));
5322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
5323        res.setPrevious(parseReference(xpp));
5324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
5325        res.getProblem().add(parseReference(xpp));
5326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigation")) {
5327        res.getInvestigation().add(parseClinicalImpressionClinicalImpressionInvestigationComponent(xpp, res));
5328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
5329        res.getProtocol().add(parseUri(xpp));
5330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5331        res.setSummaryElement(parseString(xpp));
5332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
5333        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
5334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
5335        res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
5336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
5337        res.getPrognosisReference().add(parseReference(xpp));
5338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
5339        res.getSupportingInfo().add(parseReference(xpp));
5340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5341        res.getNote().add(parseAnnotation(xpp));
5342      } else if (!parseDomainResourceContent(eventType, xpp, res))
5343        return false;
5344    return true;
5345  }
5346
5347  protected ClinicalImpression.ClinicalImpressionInvestigationComponent parseClinicalImpressionClinicalImpressionInvestigationComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5348    ClinicalImpression.ClinicalImpressionInvestigationComponent res = new ClinicalImpression.ClinicalImpressionInvestigationComponent();
5349    parseBackboneAttributes(xpp, res);
5350    next(xpp);
5351    int eventType = nextNoWhitespace(xpp);
5352    while (eventType != XmlPullParser.END_TAG) {
5353  if (!parseClinicalImpressionClinicalImpressionInvestigationComponentContent(eventType, xpp, owner, res))
5354        unknownContent(xpp);
5355      eventType = nextNoWhitespace(xpp);
5356    }
5357    next(xpp);
5358    parseElementClose(res);
5359    return res;
5360  }
5361
5362  protected boolean parseClinicalImpressionClinicalImpressionInvestigationComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionInvestigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5363      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5364        res.setCode(parseCodeableConcept(xpp));
5365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
5366        res.getItem().add(parseReference(xpp));
5367      } else if (!parseBackboneElementContent(eventType, xpp, res))
5368        return false;
5369    return true;
5370  }
5371
5372  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5373    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
5374    parseBackboneAttributes(xpp, res);
5375    next(xpp);
5376    int eventType = nextNoWhitespace(xpp);
5377    while (eventType != XmlPullParser.END_TAG) {
5378  if (!parseClinicalImpressionClinicalImpressionFindingComponentContent(eventType, xpp, owner, res))
5379        unknownContent(xpp);
5380      eventType = nextNoWhitespace(xpp);
5381    }
5382    next(xpp);
5383    parseElementClose(res);
5384    return res;
5385  }
5386
5387  protected boolean parseClinicalImpressionClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5388      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemCodeableConcept")) {
5389        res.setItemCodeableConcept(parseCodeableConcept(xpp));
5390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemReference")) {
5391        res.setItemReference(parseReference(xpp));
5392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
5393        res.setBasisElement(parseString(xpp));
5394      } else if (!parseBackboneElementContent(eventType, xpp, res))
5395        return false;
5396    return true;
5397  }
5398
5399  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5400    CodeSystem res = new CodeSystem();
5401    parseDomainResourceAttributes(xpp, res);
5402    next(xpp);
5403    int eventType = nextNoWhitespace(xpp);
5404    while (eventType != XmlPullParser.END_TAG) {
5405  if (!parseCodeSystemContent(eventType, xpp, res))
5406        unknownContent(xpp);
5407      eventType = nextNoWhitespace(xpp);
5408    }
5409    next(xpp);
5410    parseElementClose(res);
5411    return res;
5412  }
5413
5414  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
5415      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5416        res.setUrlElement(parseUri(xpp));
5417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5418        res.getIdentifier().add(parseIdentifier(xpp));
5419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5420        res.setVersionElement(parseString(xpp));
5421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5422        res.setNameElement(parseString(xpp));
5423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5424        res.setTitleElement(parseString(xpp));
5425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5426        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5428        res.setExperimentalElement(parseBoolean(xpp));
5429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5430        res.setDateElement(parseDateTime(xpp));
5431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5432        res.setPublisherElement(parseString(xpp));
5433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5434        res.getContact().add(parseContactDetail(xpp));
5435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5436        res.setDescriptionElement(parseMarkdown(xpp));
5437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5438        res.getUseContext().add(parseUsageContext(xpp));
5439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5440        res.getJurisdiction().add(parseCodeableConcept(xpp));
5441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5442        res.setPurposeElement(parseMarkdown(xpp));
5443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5444        res.setCopyrightElement(parseMarkdown(xpp));
5445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
5446        res.setCaseSensitiveElement(parseBoolean(xpp));
5447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
5448        res.setValueSetElement(parseCanonical(xpp));
5449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
5450        res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
5451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
5452        res.setCompositionalElement(parseBoolean(xpp));
5453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
5454        res.setVersionNeededElement(parseBoolean(xpp));
5455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
5456        res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
5457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplements")) {
5458        res.setSupplementsElement(parseCanonical(xpp));
5459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
5460        res.setCountElement(parseUnsignedInt(xpp));
5461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
5462        res.getFilter().add(parseCodeSystemCodeSystemFilterComponent(xpp, res));
5463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5464        res.getProperty().add(parseCodeSystemPropertyComponent(xpp, res));
5465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5466        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, res));
5467      } else if (!parseDomainResourceContent(eventType, xpp, res))
5468        return false;
5469    return true;
5470  }
5471
5472  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemCodeSystemFilterComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5473    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
5474    parseBackboneAttributes(xpp, res);
5475    next(xpp);
5476    int eventType = nextNoWhitespace(xpp);
5477    while (eventType != XmlPullParser.END_TAG) {
5478  if (!parseCodeSystemCodeSystemFilterComponentContent(eventType, xpp, owner, res))
5479        unknownContent(xpp);
5480      eventType = nextNoWhitespace(xpp);
5481    }
5482    next(xpp);
5483    parseElementClose(res);
5484    return res;
5485  }
5486
5487  protected boolean parseCodeSystemCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5488      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5489        res.setCodeElement(parseCode(xpp));
5490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5491        res.setDescriptionElement(parseString(xpp));
5492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
5493        res.getOperator().add(parseEnumeration(xpp, CodeSystem.FilterOperator.NULL, new CodeSystem.FilterOperatorEnumFactory()));
5494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5495        res.setValueElement(parseString(xpp));
5496      } else if (!parseBackboneElementContent(eventType, xpp, res))
5497        return false;
5498    return true;
5499  }
5500
5501  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5502    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
5503    parseBackboneAttributes(xpp, res);
5504    next(xpp);
5505    int eventType = nextNoWhitespace(xpp);
5506    while (eventType != XmlPullParser.END_TAG) {
5507  if (!parseCodeSystemPropertyComponentContent(eventType, xpp, owner, res))
5508        unknownContent(xpp);
5509      eventType = nextNoWhitespace(xpp);
5510    }
5511    next(xpp);
5512    parseElementClose(res);
5513    return res;
5514  }
5515
5516  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5517      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5518        res.setCodeElement(parseCode(xpp));
5519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
5520        res.setUriElement(parseUri(xpp));
5521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5522        res.setDescriptionElement(parseString(xpp));
5523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5524        res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
5525      } else if (!parseBackboneElementContent(eventType, xpp, res))
5526        return false;
5527    return true;
5528  }
5529
5530  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5531    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
5532    parseBackboneAttributes(xpp, res);
5533    next(xpp);
5534    int eventType = nextNoWhitespace(xpp);
5535    while (eventType != XmlPullParser.END_TAG) {
5536  if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, owner, res))
5537        unknownContent(xpp);
5538      eventType = nextNoWhitespace(xpp);
5539    }
5540    next(xpp);
5541    parseElementClose(res);
5542    return res;
5543  }
5544
5545  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5546      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5547        res.setCodeElement(parseCode(xpp));
5548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5549        res.setDisplayElement(parseString(xpp));
5550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
5551        res.setDefinitionElement(parseString(xpp));
5552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
5553        res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp, owner));
5554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5555        res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp, owner));
5556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5557        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, owner));
5558      } else if (!parseBackboneElementContent(eventType, xpp, res))
5559        return false;
5560    return true;
5561  }
5562
5563  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5564    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
5565    parseBackboneAttributes(xpp, res);
5566    next(xpp);
5567    int eventType = nextNoWhitespace(xpp);
5568    while (eventType != XmlPullParser.END_TAG) {
5569  if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, owner, res))
5570        unknownContent(xpp);
5571      eventType = nextNoWhitespace(xpp);
5572    }
5573    next(xpp);
5574    parseElementClose(res);
5575    return res;
5576  }
5577
5578  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5579      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5580        res.setLanguageElement(parseCode(xpp));
5581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
5582        res.setUse(parseCoding(xpp));
5583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5584        res.setValueElement(parseString(xpp));
5585      } else if (!parseBackboneElementContent(eventType, xpp, res))
5586        return false;
5587    return true;
5588  }
5589
5590  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5591    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
5592    parseBackboneAttributes(xpp, res);
5593    next(xpp);
5594    int eventType = nextNoWhitespace(xpp);
5595    while (eventType != XmlPullParser.END_TAG) {
5596  if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, owner, res))
5597        unknownContent(xpp);
5598      eventType = nextNoWhitespace(xpp);
5599    }
5600    next(xpp);
5601    parseElementClose(res);
5602    return res;
5603  }
5604
5605  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5606      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5607        res.setCodeElement(parseCode(xpp));
5608      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
5609        res.setValue(parseType("value", xpp));
5610      } else if (!parseBackboneElementContent(eventType, xpp, res))
5611        return false;
5612    return true;
5613  }
5614
5615  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5616    Communication res = new Communication();
5617    parseDomainResourceAttributes(xpp, res);
5618    next(xpp);
5619    int eventType = nextNoWhitespace(xpp);
5620    while (eventType != XmlPullParser.END_TAG) {
5621  if (!parseCommunicationContent(eventType, xpp, res))
5622        unknownContent(xpp);
5623      eventType = nextNoWhitespace(xpp);
5624    }
5625    next(xpp);
5626    parseElementClose(res);
5627    return res;
5628  }
5629
5630  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
5631      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5632        res.getIdentifier().add(parseIdentifier(xpp));
5633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
5634        res.getInstantiatesCanonical().add(parseCanonical(xpp));
5635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
5636        res.getInstantiatesUri().add(parseUri(xpp));
5637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5638        res.getBasedOn().add(parseReference(xpp));
5639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5640        res.getPartOf().add(parseReference(xpp));
5641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inResponseTo")) {
5642        res.getInResponseTo().add(parseReference(xpp));
5643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5644        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
5645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5646        res.setStatusReason(parseCodeableConcept(xpp));
5647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5648        res.getCategory().add(parseCodeableConcept(xpp));
5649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5650        res.setPriorityElement(parseEnumeration(xpp, Communication.CommunicationPriority.NULL, new Communication.CommunicationPriorityEnumFactory()));
5651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5652        res.getMedium().add(parseCodeableConcept(xpp));
5653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5654        res.setSubject(parseReference(xpp));
5655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5656        res.setTopic(parseCodeableConcept(xpp));
5657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5658        res.getAbout().add(parseReference(xpp));
5659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5660        res.setEncounter(parseReference(xpp));
5661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
5662        res.setSentElement(parseDateTime(xpp));
5663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
5664        res.setReceivedElement(parseDateTime(xpp));
5665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5666        res.getRecipient().add(parseReference(xpp));
5667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5668        res.setSender(parseReference(xpp));
5669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5670        res.getReasonCode().add(parseCodeableConcept(xpp));
5671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5672        res.getReasonReference().add(parseReference(xpp));
5673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5674        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
5675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5676        res.getNote().add(parseAnnotation(xpp));
5677      } else if (!parseDomainResourceContent(eventType, xpp, res))
5678        return false;
5679    return true;
5680  }
5681
5682  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
5683    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
5684    parseBackboneAttributes(xpp, res);
5685    next(xpp);
5686    int eventType = nextNoWhitespace(xpp);
5687    while (eventType != XmlPullParser.END_TAG) {
5688  if (!parseCommunicationCommunicationPayloadComponentContent(eventType, xpp, owner, res))
5689        unknownContent(xpp);
5690      eventType = nextNoWhitespace(xpp);
5691    }
5692    next(xpp);
5693    parseElementClose(res);
5694    return res;
5695  }
5696
5697  protected boolean parseCommunicationCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication owner, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5698      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5699        res.setContent(parseType("content", xpp));
5700      } else if (!parseBackboneElementContent(eventType, xpp, res))
5701        return false;
5702    return true;
5703  }
5704
5705  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5706    CommunicationRequest res = new CommunicationRequest();
5707    parseDomainResourceAttributes(xpp, res);
5708    next(xpp);
5709    int eventType = nextNoWhitespace(xpp);
5710    while (eventType != XmlPullParser.END_TAG) {
5711  if (!parseCommunicationRequestContent(eventType, xpp, res))
5712        unknownContent(xpp);
5713      eventType = nextNoWhitespace(xpp);
5714    }
5715    next(xpp);
5716    parseElementClose(res);
5717    return res;
5718  }
5719
5720  protected boolean parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
5721      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5722        res.getIdentifier().add(parseIdentifier(xpp));
5723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5724        res.getBasedOn().add(parseReference(xpp));
5725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
5726        res.getReplaces().add(parseReference(xpp));
5727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
5728        res.setGroupIdentifier(parseIdentifier(xpp));
5729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5730        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
5731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5732        res.setStatusReason(parseCodeableConcept(xpp));
5733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5734        res.getCategory().add(parseCodeableConcept(xpp));
5735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5736        res.setPriorityElement(parseEnumeration(xpp, CommunicationRequest.CommunicationPriority.NULL, new CommunicationRequest.CommunicationPriorityEnumFactory()));
5737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
5738        res.setDoNotPerformElement(parseBoolean(xpp));
5739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5740        res.getMedium().add(parseCodeableConcept(xpp));
5741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5742        res.setSubject(parseReference(xpp));
5743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5744        res.getAbout().add(parseReference(xpp));
5745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5746        res.setEncounter(parseReference(xpp));
5747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5748        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
5749      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
5750        res.setOccurrence(parseType("occurrence", xpp));
5751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
5752        res.setAuthoredOnElement(parseDateTime(xpp));
5753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
5754        res.setRequester(parseReference(xpp));
5755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5756        res.getRecipient().add(parseReference(xpp));
5757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5758        res.setSender(parseReference(xpp));
5759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5760        res.getReasonCode().add(parseCodeableConcept(xpp));
5761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5762        res.getReasonReference().add(parseReference(xpp));
5763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5764        res.getNote().add(parseAnnotation(xpp));
5765      } else if (!parseDomainResourceContent(eventType, xpp, res))
5766        return false;
5767    return true;
5768  }
5769
5770  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
5771    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
5772    parseBackboneAttributes(xpp, res);
5773    next(xpp);
5774    int eventType = nextNoWhitespace(xpp);
5775    while (eventType != XmlPullParser.END_TAG) {
5776  if (!parseCommunicationRequestCommunicationRequestPayloadComponentContent(eventType, xpp, owner, res))
5777        unknownContent(xpp);
5778      eventType = nextNoWhitespace(xpp);
5779    }
5780    next(xpp);
5781    parseElementClose(res);
5782    return res;
5783  }
5784
5785  protected boolean parseCommunicationRequestCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5786      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5787        res.setContent(parseType("content", xpp));
5788      } else if (!parseBackboneElementContent(eventType, xpp, res))
5789        return false;
5790    return true;
5791  }
5792
5793  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5794    CompartmentDefinition res = new CompartmentDefinition();
5795    parseDomainResourceAttributes(xpp, res);
5796    next(xpp);
5797    int eventType = nextNoWhitespace(xpp);
5798    while (eventType != XmlPullParser.END_TAG) {
5799  if (!parseCompartmentDefinitionContent(eventType, xpp, res))
5800        unknownContent(xpp);
5801      eventType = nextNoWhitespace(xpp);
5802    }
5803    next(xpp);
5804    parseElementClose(res);
5805    return res;
5806  }
5807
5808  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
5809      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5810        res.setUrlElement(parseUri(xpp));
5811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5812        res.setVersionElement(parseString(xpp));
5813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5814        res.setNameElement(parseString(xpp));
5815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5816        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5818        res.setExperimentalElement(parseBoolean(xpp));
5819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5820        res.setDateElement(parseDateTime(xpp));
5821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5822        res.setPublisherElement(parseString(xpp));
5823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5824        res.getContact().add(parseContactDetail(xpp));
5825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5826        res.setDescriptionElement(parseMarkdown(xpp));
5827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5828        res.getUseContext().add(parseUsageContext(xpp));
5829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5830        res.setPurposeElement(parseMarkdown(xpp));
5831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5832        res.setCodeElement(parseEnumeration(xpp, CompartmentDefinition.CompartmentType.NULL, new CompartmentDefinition.CompartmentTypeEnumFactory()));
5833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
5834        res.setSearchElement(parseBoolean(xpp));
5835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
5836        res.getResource().add(parseCompartmentDefinitionCompartmentDefinitionResourceComponent(xpp, res));
5837      } else if (!parseDomainResourceContent(eventType, xpp, res))
5838        return false;
5839    return true;
5840  }
5841
5842  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionCompartmentDefinitionResourceComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5843    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
5844    parseBackboneAttributes(xpp, res);
5845    next(xpp);
5846    int eventType = nextNoWhitespace(xpp);
5847    while (eventType != XmlPullParser.END_TAG) {
5848  if (!parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(eventType, xpp, owner, res))
5849        unknownContent(xpp);
5850      eventType = nextNoWhitespace(xpp);
5851    }
5852    next(xpp);
5853    parseElementClose(res);
5854    return res;
5855  }
5856
5857  protected boolean parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition owner, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5858      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5859        res.setCodeElement(parseCode(xpp));
5860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
5861        res.getParam().add(parseString(xpp));
5862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
5863        res.setDocumentationElement(parseString(xpp));
5864      } else if (!parseBackboneElementContent(eventType, xpp, res))
5865        return false;
5866    return true;
5867  }
5868
5869  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5870    Composition res = new Composition();
5871    parseDomainResourceAttributes(xpp, res);
5872    next(xpp);
5873    int eventType = nextNoWhitespace(xpp);
5874    while (eventType != XmlPullParser.END_TAG) {
5875  if (!parseCompositionContent(eventType, xpp, res))
5876        unknownContent(xpp);
5877      eventType = nextNoWhitespace(xpp);
5878    }
5879    next(xpp);
5880    parseElementClose(res);
5881    return res;
5882  }
5883
5884  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
5885      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5886        res.setIdentifier(parseIdentifier(xpp));
5887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5888        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
5889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5890        res.setType(parseCodeableConcept(xpp));
5891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5892        res.getCategory().add(parseCodeableConcept(xpp));
5893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5894        res.setSubject(parseReference(xpp));
5895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5896        res.setEncounter(parseReference(xpp));
5897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5898        res.setDateElement(parseDateTime(xpp));
5899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5900        res.getAuthor().add(parseReference(xpp));
5901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5902        res.setTitleElement(parseString(xpp));
5903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
5904        res.setConfidentialityElement(parseEnumeration(xpp, Composition.DocumentConfidentiality.NULL, new Composition.DocumentConfidentialityEnumFactory()));
5905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
5906        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
5907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5908        res.setCustodian(parseReference(xpp));
5909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5910        res.getRelatesTo().add(parseCompositionCompositionRelatesToComponent(xpp, res));
5911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5912        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
5913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5914        res.getSection().add(parseCompositionSectionComponent(xpp, res));
5915      } else if (!parseDomainResourceContent(eventType, xpp, res))
5916        return false;
5917    return true;
5918  }
5919
5920  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5921    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
5922    parseBackboneAttributes(xpp, res);
5923    next(xpp);
5924    int eventType = nextNoWhitespace(xpp);
5925    while (eventType != XmlPullParser.END_TAG) {
5926  if (!parseCompositionCompositionAttesterComponentContent(eventType, xpp, owner, res))
5927        unknownContent(xpp);
5928      eventType = nextNoWhitespace(xpp);
5929    }
5930    next(xpp);
5931    parseElementClose(res);
5932    return res;
5933  }
5934
5935  protected boolean parseCompositionCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5936      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5937        res.setModeElement(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
5938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5939        res.setTimeElement(parseDateTime(xpp));
5940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5941        res.setParty(parseReference(xpp));
5942      } else if (!parseBackboneElementContent(eventType, xpp, res))
5943        return false;
5944    return true;
5945  }
5946
5947  protected Composition.CompositionRelatesToComponent parseCompositionCompositionRelatesToComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5948    Composition.CompositionRelatesToComponent res = new Composition.CompositionRelatesToComponent();
5949    parseBackboneAttributes(xpp, res);
5950    next(xpp);
5951    int eventType = nextNoWhitespace(xpp);
5952    while (eventType != XmlPullParser.END_TAG) {
5953  if (!parseCompositionCompositionRelatesToComponentContent(eventType, xpp, owner, res))
5954        unknownContent(xpp);
5955      eventType = nextNoWhitespace(xpp);
5956    }
5957    next(xpp);
5958    parseElementClose(res);
5959    return res;
5960  }
5961
5962  protected boolean parseCompositionCompositionRelatesToComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5963      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5964        res.setCodeElement(parseEnumeration(xpp, Composition.DocumentRelationshipType.NULL, new Composition.DocumentRelationshipTypeEnumFactory()));
5965      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5966        res.setTarget(parseType("target", xpp));
5967      } else if (!parseBackboneElementContent(eventType, xpp, res))
5968        return false;
5969    return true;
5970  }
5971
5972  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5973    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
5974    parseBackboneAttributes(xpp, res);
5975    next(xpp);
5976    int eventType = nextNoWhitespace(xpp);
5977    while (eventType != XmlPullParser.END_TAG) {
5978  if (!parseCompositionCompositionEventComponentContent(eventType, xpp, owner, res))
5979        unknownContent(xpp);
5980      eventType = nextNoWhitespace(xpp);
5981    }
5982    next(xpp);
5983    parseElementClose(res);
5984    return res;
5985  }
5986
5987  protected boolean parseCompositionCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5988      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5989        res.getCode().add(parseCodeableConcept(xpp));
5990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5991        res.setPeriod(parsePeriod(xpp));
5992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5993        res.getDetail().add(parseReference(xpp));
5994      } else if (!parseBackboneElementContent(eventType, xpp, res))
5995        return false;
5996    return true;
5997  }
5998
5999  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6000    Composition.SectionComponent res = new Composition.SectionComponent();
6001    parseBackboneAttributes(xpp, res);
6002    next(xpp);
6003    int eventType = nextNoWhitespace(xpp);
6004    while (eventType != XmlPullParser.END_TAG) {
6005  if (!parseCompositionSectionComponentContent(eventType, xpp, owner, res))
6006        unknownContent(xpp);
6007      eventType = nextNoWhitespace(xpp);
6008    }
6009    next(xpp);
6010    parseElementClose(res);
6011    return res;
6012  }
6013
6014  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6015      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6016        res.setTitleElement(parseString(xpp));
6017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6018        res.setCode(parseCodeableConcept(xpp));
6019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6020        res.getAuthor().add(parseReference(xpp));
6021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
6022        res.setFocus(parseReference(xpp));
6023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6024        res.setText(parseNarrative(xpp));
6025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6026        res.setModeElement(parseEnumeration(xpp, Composition.SectionMode.NULL, new Composition.SectionModeEnumFactory()));
6027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
6028        res.setOrderedBy(parseCodeableConcept(xpp));
6029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
6030        res.getEntry().add(parseReference(xpp));
6031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
6032        res.setEmptyReason(parseCodeableConcept(xpp));
6033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
6034        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
6035      } else if (!parseBackboneElementContent(eventType, xpp, res))
6036        return false;
6037    return true;
6038  }
6039
6040  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6041    ConceptMap res = new ConceptMap();
6042    parseDomainResourceAttributes(xpp, res);
6043    next(xpp);
6044    int eventType = nextNoWhitespace(xpp);
6045    while (eventType != XmlPullParser.END_TAG) {
6046  if (!parseConceptMapContent(eventType, xpp, res))
6047        unknownContent(xpp);
6048      eventType = nextNoWhitespace(xpp);
6049    }
6050    next(xpp);
6051    parseElementClose(res);
6052    return res;
6053  }
6054
6055  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
6056      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6057        res.setUrlElement(parseUri(xpp));
6058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6059        res.setIdentifier(parseIdentifier(xpp));
6060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6061        res.setVersionElement(parseString(xpp));
6062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6063        res.setNameElement(parseString(xpp));
6064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6065        res.setTitleElement(parseString(xpp));
6066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6067        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
6068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6069        res.setExperimentalElement(parseBoolean(xpp));
6070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6071        res.setDateElement(parseDateTime(xpp));
6072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6073        res.setPublisherElement(parseString(xpp));
6074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6075        res.getContact().add(parseContactDetail(xpp));
6076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6077        res.setDescriptionElement(parseMarkdown(xpp));
6078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6079        res.getUseContext().add(parseUsageContext(xpp));
6080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6081        res.getJurisdiction().add(parseCodeableConcept(xpp));
6082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6083        res.setPurposeElement(parseMarkdown(xpp));
6084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6085        res.setCopyrightElement(parseMarkdown(xpp));
6086      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6087        res.setSource(parseType("source", xpp));
6088      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
6089        res.setTarget(parseType("target", xpp));
6090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6091        res.getGroup().add(parseConceptMapConceptMapGroupComponent(xpp, res));
6092      } else if (!parseDomainResourceContent(eventType, xpp, res))
6093        return false;
6094    return true;
6095  }
6096
6097  protected ConceptMap.ConceptMapGroupComponent parseConceptMapConceptMapGroupComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6098    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
6099    parseBackboneAttributes(xpp, res);
6100    next(xpp);
6101    int eventType = nextNoWhitespace(xpp);
6102    while (eventType != XmlPullParser.END_TAG) {
6103  if (!parseConceptMapConceptMapGroupComponentContent(eventType, xpp, owner, res))
6104        unknownContent(xpp);
6105      eventType = nextNoWhitespace(xpp);
6106    }
6107    next(xpp);
6108    parseElementClose(res);
6109    return res;
6110  }
6111
6112  protected boolean parseConceptMapConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6113      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6114        res.setSourceElement(parseUri(xpp));
6115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceVersion")) {
6116        res.setSourceVersionElement(parseString(xpp));
6117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
6118        res.setTargetElement(parseUri(xpp));
6119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetVersion")) {
6120        res.setTargetVersionElement(parseString(xpp));
6121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
6122        res.getElement().add(parseConceptMapSourceElementComponent(xpp, owner));
6123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
6124        res.setUnmapped(parseConceptMapConceptMapGroupUnmappedComponent(xpp, owner));
6125      } else if (!parseBackboneElementContent(eventType, xpp, res))
6126        return false;
6127    return true;
6128  }
6129
6130  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6131    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
6132    parseBackboneAttributes(xpp, res);
6133    next(xpp);
6134    int eventType = nextNoWhitespace(xpp);
6135    while (eventType != XmlPullParser.END_TAG) {
6136  if (!parseConceptMapSourceElementComponentContent(eventType, xpp, owner, res))
6137        unknownContent(xpp);
6138      eventType = nextNoWhitespace(xpp);
6139    }
6140    next(xpp);
6141    parseElementClose(res);
6142    return res;
6143  }
6144
6145  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6146      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6147        res.setCodeElement(parseCode(xpp));
6148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6149        res.setDisplayElement(parseString(xpp));
6150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
6151        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
6152      } else if (!parseBackboneElementContent(eventType, xpp, res))
6153        return false;
6154    return true;
6155  }
6156
6157  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6158    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
6159    parseBackboneAttributes(xpp, res);
6160    next(xpp);
6161    int eventType = nextNoWhitespace(xpp);
6162    while (eventType != XmlPullParser.END_TAG) {
6163  if (!parseConceptMapTargetElementComponentContent(eventType, xpp, owner, res))
6164        unknownContent(xpp);
6165      eventType = nextNoWhitespace(xpp);
6166    }
6167    next(xpp);
6168    parseElementClose(res);
6169    return res;
6170  }
6171
6172  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6174        res.setCodeElement(parseCode(xpp));
6175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6176        res.setDisplayElement(parseString(xpp));
6177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
6178        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
6179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
6180        res.setCommentElement(parseString(xpp));
6181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
6182        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
6183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
6184        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
6185      } else if (!parseBackboneElementContent(eventType, xpp, res))
6186        return false;
6187    return true;
6188  }
6189
6190  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6191    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
6192    parseBackboneAttributes(xpp, res);
6193    next(xpp);
6194    int eventType = nextNoWhitespace(xpp);
6195    while (eventType != XmlPullParser.END_TAG) {
6196  if (!parseConceptMapOtherElementComponentContent(eventType, xpp, owner, res))
6197        unknownContent(xpp);
6198      eventType = nextNoWhitespace(xpp);
6199    }
6200    next(xpp);
6201    parseElementClose(res);
6202    return res;
6203  }
6204
6205  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6206      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
6207        res.setPropertyElement(parseUri(xpp));
6208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
6209        res.setSystemElement(parseCanonical(xpp));
6210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6211        res.setValueElement(parseString(xpp));
6212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6213        res.setDisplayElement(parseString(xpp));
6214      } else if (!parseBackboneElementContent(eventType, xpp, res))
6215        return false;
6216    return true;
6217  }
6218
6219  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapConceptMapGroupUnmappedComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6220    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
6221    parseBackboneAttributes(xpp, res);
6222    next(xpp);
6223    int eventType = nextNoWhitespace(xpp);
6224    while (eventType != XmlPullParser.END_TAG) {
6225  if (!parseConceptMapConceptMapGroupUnmappedComponentContent(eventType, xpp, owner, res))
6226        unknownContent(xpp);
6227      eventType = nextNoWhitespace(xpp);
6228    }
6229    next(xpp);
6230    parseElementClose(res);
6231    return res;
6232  }
6233
6234  protected boolean parseConceptMapConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6235      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6236        res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
6237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6238        res.setCodeElement(parseCode(xpp));
6239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6240        res.setDisplayElement(parseString(xpp));
6241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6242        res.setUrlElement(parseCanonical(xpp));
6243      } else if (!parseBackboneElementContent(eventType, xpp, res))
6244        return false;
6245    return true;
6246  }
6247
6248  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6249    Condition res = new Condition();
6250    parseDomainResourceAttributes(xpp, res);
6251    next(xpp);
6252    int eventType = nextNoWhitespace(xpp);
6253    while (eventType != XmlPullParser.END_TAG) {
6254  if (!parseConditionContent(eventType, xpp, res))
6255        unknownContent(xpp);
6256      eventType = nextNoWhitespace(xpp);
6257    }
6258    next(xpp);
6259    parseElementClose(res);
6260    return res;
6261  }
6262
6263  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
6264      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6265        res.getIdentifier().add(parseIdentifier(xpp));
6266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
6267        res.setClinicalStatus(parseCodeableConcept(xpp));
6268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
6269        res.setVerificationStatus(parseCodeableConcept(xpp));
6270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6271        res.getCategory().add(parseCodeableConcept(xpp));
6272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
6273        res.setSeverity(parseCodeableConcept(xpp));
6274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6275        res.setCode(parseCodeableConcept(xpp));
6276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6277        res.getBodySite().add(parseCodeableConcept(xpp));
6278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6279        res.setSubject(parseReference(xpp));
6280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6281        res.setEncounter(parseReference(xpp));
6282      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
6283        res.setOnset(parseType("onset", xpp));
6284      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
6285        res.setAbatement(parseType("abatement", xpp));
6286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
6287        res.setRecordedDateElement(parseDateTime(xpp));
6288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
6289        res.setRecorder(parseReference(xpp));
6290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
6291        res.setAsserter(parseReference(xpp));
6292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
6293        res.getStage().add(parseConditionConditionStageComponent(xpp, res));
6294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
6295        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
6296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6297        res.getNote().add(parseAnnotation(xpp));
6298      } else if (!parseDomainResourceContent(eventType, xpp, res))
6299        return false;
6300    return true;
6301  }
6302
6303  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6304    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
6305    parseBackboneAttributes(xpp, res);
6306    next(xpp);
6307    int eventType = nextNoWhitespace(xpp);
6308    while (eventType != XmlPullParser.END_TAG) {
6309  if (!parseConditionConditionStageComponentContent(eventType, xpp, owner, res))
6310        unknownContent(xpp);
6311      eventType = nextNoWhitespace(xpp);
6312    }
6313    next(xpp);
6314    parseElementClose(res);
6315    return res;
6316  }
6317
6318  protected boolean parseConditionConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6319      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
6320        res.setSummary(parseCodeableConcept(xpp));
6321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
6322        res.getAssessment().add(parseReference(xpp));
6323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6324        res.setType(parseCodeableConcept(xpp));
6325      } else if (!parseBackboneElementContent(eventType, xpp, res))
6326        return false;
6327    return true;
6328  }
6329
6330  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6331    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
6332    parseBackboneAttributes(xpp, res);
6333    next(xpp);
6334    int eventType = nextNoWhitespace(xpp);
6335    while (eventType != XmlPullParser.END_TAG) {
6336  if (!parseConditionConditionEvidenceComponentContent(eventType, xpp, owner, res))
6337        unknownContent(xpp);
6338      eventType = nextNoWhitespace(xpp);
6339    }
6340    next(xpp);
6341    parseElementClose(res);
6342    return res;
6343  }
6344
6345  protected boolean parseConditionConditionEvidenceComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6346      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6347        res.getCode().add(parseCodeableConcept(xpp));
6348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6349        res.getDetail().add(parseReference(xpp));
6350      } else if (!parseBackboneElementContent(eventType, xpp, res))
6351        return false;
6352    return true;
6353  }
6354
6355  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6356    Consent res = new Consent();
6357    parseDomainResourceAttributes(xpp, res);
6358    next(xpp);
6359    int eventType = nextNoWhitespace(xpp);
6360    while (eventType != XmlPullParser.END_TAG) {
6361  if (!parseConsentContent(eventType, xpp, res))
6362        unknownContent(xpp);
6363      eventType = nextNoWhitespace(xpp);
6364    }
6365    next(xpp);
6366    parseElementClose(res);
6367    return res;
6368  }
6369
6370  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
6371      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6372        res.getIdentifier().add(parseIdentifier(xpp));
6373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6374        res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
6375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6376        res.setScope(parseCodeableConcept(xpp));
6377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6378        res.getCategory().add(parseCodeableConcept(xpp));
6379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6380        res.setPatient(parseReference(xpp));
6381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
6382        res.setDateTimeElement(parseDateTime(xpp));
6383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6384        res.getPerformer().add(parseReference(xpp));
6385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
6386        res.getOrganization().add(parseReference(xpp));
6387      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6388        res.setSource(parseType("source", xpp));
6389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
6390        res.getPolicy().add(parseConsentConsentPolicyComponent(xpp, res));
6391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyRule")) {
6392        res.setPolicyRule(parseCodeableConcept(xpp));
6393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verification")) {
6394        res.getVerification().add(parseConsentConsentVerificationComponent(xpp, res));
6395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6396        res.setProvision(parseConsentprovisionComponent(xpp, res));
6397      } else if (!parseDomainResourceContent(eventType, xpp, res))
6398        return false;
6399    return true;
6400  }
6401
6402  protected Consent.ConsentPolicyComponent parseConsentConsentPolicyComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6403    Consent.ConsentPolicyComponent res = new Consent.ConsentPolicyComponent();
6404    parseBackboneAttributes(xpp, res);
6405    next(xpp);
6406    int eventType = nextNoWhitespace(xpp);
6407    while (eventType != XmlPullParser.END_TAG) {
6408  if (!parseConsentConsentPolicyComponentContent(eventType, xpp, owner, res))
6409        unknownContent(xpp);
6410      eventType = nextNoWhitespace(xpp);
6411    }
6412    next(xpp);
6413    parseElementClose(res);
6414    return res;
6415  }
6416
6417  protected boolean parseConsentConsentPolicyComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentPolicyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6418      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6419        res.setAuthorityElement(parseUri(xpp));
6420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6421        res.setUriElement(parseUri(xpp));
6422      } else if (!parseBackboneElementContent(eventType, xpp, res))
6423        return false;
6424    return true;
6425  }
6426
6427  protected Consent.ConsentVerificationComponent parseConsentConsentVerificationComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6428    Consent.ConsentVerificationComponent res = new Consent.ConsentVerificationComponent();
6429    parseBackboneAttributes(xpp, res);
6430    next(xpp);
6431    int eventType = nextNoWhitespace(xpp);
6432    while (eventType != XmlPullParser.END_TAG) {
6433  if (!parseConsentConsentVerificationComponentContent(eventType, xpp, owner, res))
6434        unknownContent(xpp);
6435      eventType = nextNoWhitespace(xpp);
6436    }
6437    next(xpp);
6438    parseElementClose(res);
6439    return res;
6440  }
6441
6442  protected boolean parseConsentConsentVerificationComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentVerificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6443      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verified")) {
6444        res.setVerifiedElement(parseBoolean(xpp));
6445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verifiedWith")) {
6446        res.setVerifiedWith(parseReference(xpp));
6447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationDate")) {
6448        res.setVerificationDateElement(parseDateTime(xpp));
6449      } else if (!parseBackboneElementContent(eventType, xpp, res))
6450        return false;
6451    return true;
6452  }
6453
6454  protected Consent.provisionComponent parseConsentprovisionComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6455    Consent.provisionComponent res = new Consent.provisionComponent();
6456    parseBackboneAttributes(xpp, res);
6457    next(xpp);
6458    int eventType = nextNoWhitespace(xpp);
6459    while (eventType != XmlPullParser.END_TAG) {
6460  if (!parseConsentprovisionComponentContent(eventType, xpp, owner, res))
6461        unknownContent(xpp);
6462      eventType = nextNoWhitespace(xpp);
6463    }
6464    next(xpp);
6465    parseElementClose(res);
6466    return res;
6467  }
6468
6469  protected boolean parseConsentprovisionComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6470      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6471        res.setTypeElement(parseEnumeration(xpp, Consent.ConsentProvisionType.NULL, new Consent.ConsentProvisionTypeEnumFactory()));
6472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6473        res.setPeriod(parsePeriod(xpp));
6474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6475        res.getActor().add(parseConsentprovisionActorComponent(xpp, owner));
6476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6477        res.getAction().add(parseCodeableConcept(xpp));
6478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6479        res.getSecurityLabel().add(parseCoding(xpp));
6480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6481        res.getPurpose().add(parseCoding(xpp));
6482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6483        res.getClass_().add(parseCoding(xpp));
6484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6485        res.getCode().add(parseCodeableConcept(xpp));
6486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
6487        res.setDataPeriod(parsePeriod(xpp));
6488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
6489        res.getData().add(parseConsentprovisionDataComponent(xpp, owner));
6490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6491        res.getProvision().add(parseConsentprovisionComponent(xpp, owner));
6492      } else if (!parseBackboneElementContent(eventType, xpp, res))
6493        return false;
6494    return true;
6495  }
6496
6497  protected Consent.provisionActorComponent parseConsentprovisionActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6498    Consent.provisionActorComponent res = new Consent.provisionActorComponent();
6499    parseBackboneAttributes(xpp, res);
6500    next(xpp);
6501    int eventType = nextNoWhitespace(xpp);
6502    while (eventType != XmlPullParser.END_TAG) {
6503  if (!parseConsentprovisionActorComponentContent(eventType, xpp, owner, res))
6504        unknownContent(xpp);
6505      eventType = nextNoWhitespace(xpp);
6506    }
6507    next(xpp);
6508    parseElementClose(res);
6509    return res;
6510  }
6511
6512  protected boolean parseConsentprovisionActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6513      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6514        res.setRole(parseCodeableConcept(xpp));
6515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6516        res.setReference(parseReference(xpp));
6517      } else if (!parseBackboneElementContent(eventType, xpp, res))
6518        return false;
6519    return true;
6520  }
6521
6522  protected Consent.provisionDataComponent parseConsentprovisionDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6523    Consent.provisionDataComponent res = new Consent.provisionDataComponent();
6524    parseBackboneAttributes(xpp, res);
6525    next(xpp);
6526    int eventType = nextNoWhitespace(xpp);
6527    while (eventType != XmlPullParser.END_TAG) {
6528  if (!parseConsentprovisionDataComponentContent(eventType, xpp, owner, res))
6529        unknownContent(xpp);
6530      eventType = nextNoWhitespace(xpp);
6531    }
6532    next(xpp);
6533    parseElementClose(res);
6534    return res;
6535  }
6536
6537  protected boolean parseConsentprovisionDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6538      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
6539        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
6540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6541        res.setReference(parseReference(xpp));
6542      } else if (!parseBackboneElementContent(eventType, xpp, res))
6543        return false;
6544    return true;
6545  }
6546
6547  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6548    Contract res = new Contract();
6549    parseDomainResourceAttributes(xpp, res);
6550    next(xpp);
6551    int eventType = nextNoWhitespace(xpp);
6552    while (eventType != XmlPullParser.END_TAG) {
6553  if (!parseContractContent(eventType, xpp, res))
6554        unknownContent(xpp);
6555      eventType = nextNoWhitespace(xpp);
6556    }
6557    next(xpp);
6558    parseElementClose(res);
6559    return res;
6560  }
6561
6562  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
6563      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6564        res.getIdentifier().add(parseIdentifier(xpp));
6565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6566        res.setUrlElement(parseUri(xpp));
6567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6568        res.setVersionElement(parseString(xpp));
6569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6570        res.setStatusElement(parseEnumeration(xpp, Contract.ContractStatus.NULL, new Contract.ContractStatusEnumFactory()));
6571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalState")) {
6572        res.setLegalState(parseCodeableConcept(xpp));
6573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
6574        res.setInstantiatesCanonical(parseReference(xpp));
6575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
6576        res.setInstantiatesUriElement(parseUri(xpp));
6577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
6578        res.setContentDerivative(parseCodeableConcept(xpp));
6579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6580        res.setIssuedElement(parseDateTime(xpp));
6581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6582        res.setApplies(parsePeriod(xpp));
6583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationType")) {
6584        res.setExpirationType(parseCodeableConcept(xpp));
6585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6586        res.getSubject().add(parseReference(xpp));
6587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6588        res.getAuthority().add(parseReference(xpp));
6589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
6590        res.getDomain().add(parseReference(xpp));
6591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
6592        res.getSite().add(parseReference(xpp));
6593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6594        res.setNameElement(parseString(xpp));
6595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6596        res.setTitleElement(parseString(xpp));
6597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
6598        res.setSubtitleElement(parseString(xpp));
6599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
6600        res.getAlias().add(parseString(xpp));
6601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6602        res.setAuthor(parseReference(xpp));
6603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6604        res.setScope(parseCodeableConcept(xpp));
6605      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
6606        res.setTopic(parseType("topic", xpp));
6607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6608        res.setType(parseCodeableConcept(xpp));
6609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6610        res.getSubType().add(parseCodeableConcept(xpp));
6611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDefinition")) {
6612        res.setContentDefinition(parseContractContentDefinitionComponent(xpp, res));
6613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
6614        res.getTerm().add(parseContractTermComponent(xpp, res));
6615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
6616        res.getSupportingInfo().add(parseReference(xpp));
6617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
6618        res.getRelevantHistory().add(parseReference(xpp));
6619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
6620        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
6621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
6622        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
6623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
6624        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
6625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
6626        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
6627      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "legallyBinding")) {
6628        res.setLegallyBinding(parseType("legallyBinding", xpp));
6629      } else if (!parseDomainResourceContent(eventType, xpp, res))
6630        return false;
6631    return true;
6632  }
6633
6634  protected Contract.ContentDefinitionComponent parseContractContentDefinitionComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6635    Contract.ContentDefinitionComponent res = new Contract.ContentDefinitionComponent();
6636    parseBackboneAttributes(xpp, res);
6637    next(xpp);
6638    int eventType = nextNoWhitespace(xpp);
6639    while (eventType != XmlPullParser.END_TAG) {
6640  if (!parseContractContentDefinitionComponentContent(eventType, xpp, owner, res))
6641        unknownContent(xpp);
6642      eventType = nextNoWhitespace(xpp);
6643    }
6644    next(xpp);
6645    parseElementClose(res);
6646    return res;
6647  }
6648
6649  protected boolean parseContractContentDefinitionComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContentDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6650      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6651        res.setType(parseCodeableConcept(xpp));
6652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6653        res.setSubType(parseCodeableConcept(xpp));
6654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6655        res.setPublisher(parseReference(xpp));
6656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
6657        res.setPublicationDateElement(parseDateTime(xpp));
6658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationStatus")) {
6659        res.setPublicationStatusElement(parseEnumeration(xpp, Contract.ContractPublicationStatus.NULL, new Contract.ContractPublicationStatusEnumFactory()));
6660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6661        res.setCopyrightElement(parseMarkdown(xpp));
6662      } else if (!parseBackboneElementContent(eventType, xpp, res))
6663        return false;
6664    return true;
6665  }
6666
6667  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6668    Contract.TermComponent res = new Contract.TermComponent();
6669    parseBackboneAttributes(xpp, res);
6670    next(xpp);
6671    int eventType = nextNoWhitespace(xpp);
6672    while (eventType != XmlPullParser.END_TAG) {
6673  if (!parseContractTermComponentContent(eventType, xpp, owner, res))
6674        unknownContent(xpp);
6675      eventType = nextNoWhitespace(xpp);
6676    }
6677    next(xpp);
6678    parseElementClose(res);
6679    return res;
6680  }
6681
6682  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6683      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6684        res.setIdentifier(parseIdentifier(xpp));
6685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6686        res.setIssuedElement(parseDateTime(xpp));
6687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6688        res.setApplies(parsePeriod(xpp));
6689      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
6690        res.setTopic(parseType("topic", xpp));
6691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6692        res.setType(parseCodeableConcept(xpp));
6693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6694        res.setSubType(parseCodeableConcept(xpp));
6695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6696        res.setTextElement(parseString(xpp));
6697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6698        res.getSecurityLabel().add(parseContractSecurityLabelComponent(xpp, owner));
6699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offer")) {
6700        res.setOffer(parseContractContractOfferComponent(xpp, owner));
6701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asset")) {
6702        res.getAsset().add(parseContractContractAssetComponent(xpp, owner));
6703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6704        res.getAction().add(parseContractActionComponent(xpp, owner));
6705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6706        res.getGroup().add(parseContractTermComponent(xpp, owner));
6707      } else if (!parseBackboneElementContent(eventType, xpp, res))
6708        return false;
6709    return true;
6710  }
6711
6712  protected Contract.SecurityLabelComponent parseContractSecurityLabelComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6713    Contract.SecurityLabelComponent res = new Contract.SecurityLabelComponent();
6714    parseBackboneAttributes(xpp, res);
6715    next(xpp);
6716    int eventType = nextNoWhitespace(xpp);
6717    while (eventType != XmlPullParser.END_TAG) {
6718  if (!parseContractSecurityLabelComponentContent(eventType, xpp, owner, res))
6719        unknownContent(xpp);
6720      eventType = nextNoWhitespace(xpp);
6721    }
6722    next(xpp);
6723    parseElementClose(res);
6724    return res;
6725  }
6726
6727  protected boolean parseContractSecurityLabelComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SecurityLabelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
6729        res.getNumber().add(parseUnsignedInt(xpp));
6730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
6731        res.setClassification(parseCoding(xpp));
6732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6733        res.getCategory().add(parseCoding(xpp));
6734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("control")) {
6735        res.getControl().add(parseCoding(xpp));
6736      } else if (!parseBackboneElementContent(eventType, xpp, res))
6737        return false;
6738    return true;
6739  }
6740
6741  protected Contract.ContractOfferComponent parseContractContractOfferComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6742    Contract.ContractOfferComponent res = new Contract.ContractOfferComponent();
6743    parseBackboneAttributes(xpp, res);
6744    next(xpp);
6745    int eventType = nextNoWhitespace(xpp);
6746    while (eventType != XmlPullParser.END_TAG) {
6747  if (!parseContractContractOfferComponentContent(eventType, xpp, owner, res))
6748        unknownContent(xpp);
6749      eventType = nextNoWhitespace(xpp);
6750    }
6751    next(xpp);
6752    parseElementClose(res);
6753    return res;
6754  }
6755
6756  protected boolean parseContractContractOfferComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractOfferComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6757      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6758        res.getIdentifier().add(parseIdentifier(xpp));
6759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
6760        res.getParty().add(parseContractContractPartyComponent(xpp, owner));
6761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
6762        res.setTopic(parseReference(xpp));
6763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6764        res.setType(parseCodeableConcept(xpp));
6765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
6766        res.setDecision(parseCodeableConcept(xpp));
6767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decisionMode")) {
6768        res.getDecisionMode().add(parseCodeableConcept(xpp));
6769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
6770        res.getAnswer().add(parseContractAnswerComponent(xpp, owner));
6771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6772        res.setTextElement(parseString(xpp));
6773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6774        res.getLinkId().add(parseString(xpp));
6775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6776        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6777      } else if (!parseBackboneElementContent(eventType, xpp, res))
6778        return false;
6779    return true;
6780  }
6781
6782  protected Contract.ContractPartyComponent parseContractContractPartyComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6783    Contract.ContractPartyComponent res = new Contract.ContractPartyComponent();
6784    parseBackboneAttributes(xpp, res);
6785    next(xpp);
6786    int eventType = nextNoWhitespace(xpp);
6787    while (eventType != XmlPullParser.END_TAG) {
6788  if (!parseContractContractPartyComponentContent(eventType, xpp, owner, res))
6789        unknownContent(xpp);
6790      eventType = nextNoWhitespace(xpp);
6791    }
6792    next(xpp);
6793    parseElementClose(res);
6794    return res;
6795  }
6796
6797  protected boolean parseContractContractPartyComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractPartyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6798      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6799        res.getReference().add(parseReference(xpp));
6800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6801        res.setRole(parseCodeableConcept(xpp));
6802      } else if (!parseBackboneElementContent(eventType, xpp, res))
6803        return false;
6804    return true;
6805  }
6806
6807  protected Contract.AnswerComponent parseContractAnswerComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6808    Contract.AnswerComponent res = new Contract.AnswerComponent();
6809    parseBackboneAttributes(xpp, res);
6810    next(xpp);
6811    int eventType = nextNoWhitespace(xpp);
6812    while (eventType != XmlPullParser.END_TAG) {
6813  if (!parseContractAnswerComponentContent(eventType, xpp, owner, res))
6814        unknownContent(xpp);
6815      eventType = nextNoWhitespace(xpp);
6816    }
6817    next(xpp);
6818    parseElementClose(res);
6819    return res;
6820  }
6821
6822  protected boolean parseContractAnswerComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6823      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
6824        res.setValue(parseType("value", xpp));
6825      } else if (!parseBackboneElementContent(eventType, xpp, res))
6826        return false;
6827    return true;
6828  }
6829
6830  protected Contract.ContractAssetComponent parseContractContractAssetComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6831    Contract.ContractAssetComponent res = new Contract.ContractAssetComponent();
6832    parseBackboneAttributes(xpp, res);
6833    next(xpp);
6834    int eventType = nextNoWhitespace(xpp);
6835    while (eventType != XmlPullParser.END_TAG) {
6836  if (!parseContractContractAssetComponentContent(eventType, xpp, owner, res))
6837        unknownContent(xpp);
6838      eventType = nextNoWhitespace(xpp);
6839    }
6840    next(xpp);
6841    parseElementClose(res);
6842    return res;
6843  }
6844
6845  protected boolean parseContractContractAssetComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractAssetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6846      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6847        res.setScope(parseCodeableConcept(xpp));
6848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6849        res.getType().add(parseCodeableConcept(xpp));
6850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
6851        res.getTypeReference().add(parseReference(xpp));
6852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
6853        res.getSubtype().add(parseCodeableConcept(xpp));
6854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6855        res.setRelationship(parseCoding(xpp));
6856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6857        res.getContext().add(parseContractAssetContextComponent(xpp, owner));
6858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
6859        res.setConditionElement(parseString(xpp));
6860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodType")) {
6861        res.getPeriodType().add(parseCodeableConcept(xpp));
6862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6863        res.getPeriod().add(parsePeriod(xpp));
6864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usePeriod")) {
6865        res.getUsePeriod().add(parsePeriod(xpp));
6866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6867        res.setTextElement(parseString(xpp));
6868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6869        res.getLinkId().add(parseString(xpp));
6870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
6871        res.getAnswer().add(parseContractAnswerComponent(xpp, owner));
6872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6873        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
6875        res.getValuedItem().add(parseContractValuedItemComponent(xpp, owner));
6876      } else if (!parseBackboneElementContent(eventType, xpp, res))
6877        return false;
6878    return true;
6879  }
6880
6881  protected Contract.AssetContextComponent parseContractAssetContextComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6882    Contract.AssetContextComponent res = new Contract.AssetContextComponent();
6883    parseBackboneAttributes(xpp, res);
6884    next(xpp);
6885    int eventType = nextNoWhitespace(xpp);
6886    while (eventType != XmlPullParser.END_TAG) {
6887  if (!parseContractAssetContextComponentContent(eventType, xpp, owner, res))
6888        unknownContent(xpp);
6889      eventType = nextNoWhitespace(xpp);
6890    }
6891    next(xpp);
6892    parseElementClose(res);
6893    return res;
6894  }
6895
6896  protected boolean parseContractAssetContextComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AssetContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6897      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6898        res.setReference(parseReference(xpp));
6899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6900        res.getCode().add(parseCodeableConcept(xpp));
6901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6902        res.setTextElement(parseString(xpp));
6903      } else if (!parseBackboneElementContent(eventType, xpp, res))
6904        return false;
6905    return true;
6906  }
6907
6908  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6909    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
6910    parseBackboneAttributes(xpp, res);
6911    next(xpp);
6912    int eventType = nextNoWhitespace(xpp);
6913    while (eventType != XmlPullParser.END_TAG) {
6914  if (!parseContractValuedItemComponentContent(eventType, xpp, owner, res))
6915        unknownContent(xpp);
6916      eventType = nextNoWhitespace(xpp);
6917    }
6918    next(xpp);
6919    parseElementClose(res);
6920    return res;
6921  }
6922
6923  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6924      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
6925        res.setEntity(parseType("entity", xpp));
6926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6927        res.setIdentifier(parseIdentifier(xpp));
6928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
6929        res.setEffectiveTimeElement(parseDateTime(xpp));
6930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6931        res.setQuantity(parseQuantity(xpp));
6932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6933        res.setUnitPrice(parseMoney(xpp));
6934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6935        res.setFactorElement(parseDecimal(xpp));
6936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6937        res.setPointsElement(parseDecimal(xpp));
6938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6939        res.setNet(parseMoney(xpp));
6940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
6941        res.setPaymentElement(parseString(xpp));
6942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
6943        res.setPaymentDateElement(parseDateTime(xpp));
6944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
6945        res.setResponsible(parseReference(xpp));
6946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
6947        res.setRecipient(parseReference(xpp));
6948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6949        res.getLinkId().add(parseString(xpp));
6950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6951        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6952      } else if (!parseBackboneElementContent(eventType, xpp, res))
6953        return false;
6954    return true;
6955  }
6956
6957  protected Contract.ActionComponent parseContractActionComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6958    Contract.ActionComponent res = new Contract.ActionComponent();
6959    parseBackboneAttributes(xpp, res);
6960    next(xpp);
6961    int eventType = nextNoWhitespace(xpp);
6962    while (eventType != XmlPullParser.END_TAG) {
6963  if (!parseContractActionComponentContent(eventType, xpp, owner, res))
6964        unknownContent(xpp);
6965      eventType = nextNoWhitespace(xpp);
6966    }
6967    next(xpp);
6968    parseElementClose(res);
6969    return res;
6970  }
6971
6972  protected boolean parseContractActionComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6973      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
6974        res.setDoNotPerformElement(parseBoolean(xpp));
6975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6976        res.setType(parseCodeableConcept(xpp));
6977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6978        res.getSubject().add(parseContractActionSubjectComponent(xpp, owner));
6979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
6980        res.setIntent(parseCodeableConcept(xpp));
6981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6982        res.getLinkId().add(parseString(xpp));
6983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6984        res.setStatus(parseCodeableConcept(xpp));
6985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6986        res.setContext(parseReference(xpp));
6987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextLinkId")) {
6988        res.getContextLinkId().add(parseString(xpp));
6989      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
6990        res.setOccurrence(parseType("occurrence", xpp));
6991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
6992        res.getRequester().add(parseReference(xpp));
6993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requesterLinkId")) {
6994        res.getRequesterLinkId().add(parseString(xpp));
6995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
6996        res.getPerformerType().add(parseCodeableConcept(xpp));
6997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerRole")) {
6998        res.setPerformerRole(parseCodeableConcept(xpp));
6999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7000        res.setPerformer(parseReference(xpp));
7001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerLinkId")) {
7002        res.getPerformerLinkId().add(parseString(xpp));
7003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
7004        res.getReasonCode().add(parseCodeableConcept(xpp));
7005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
7006        res.getReasonReference().add(parseReference(xpp));
7007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7008        res.getReason().add(parseString(xpp));
7009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonLinkId")) {
7010        res.getReasonLinkId().add(parseString(xpp));
7011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7012        res.getNote().add(parseAnnotation(xpp));
7013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
7014        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
7015      } else if (!parseBackboneElementContent(eventType, xpp, res))
7016        return false;
7017    return true;
7018  }
7019
7020  protected Contract.ActionSubjectComponent parseContractActionSubjectComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7021    Contract.ActionSubjectComponent res = new Contract.ActionSubjectComponent();
7022    parseBackboneAttributes(xpp, res);
7023    next(xpp);
7024    int eventType = nextNoWhitespace(xpp);
7025    while (eventType != XmlPullParser.END_TAG) {
7026  if (!parseContractActionSubjectComponentContent(eventType, xpp, owner, res))
7027        unknownContent(xpp);
7028      eventType = nextNoWhitespace(xpp);
7029    }
7030    next(xpp);
7031    parseElementClose(res);
7032    return res;
7033  }
7034
7035  protected boolean parseContractActionSubjectComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ActionSubjectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7036      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7037        res.getReference().add(parseReference(xpp));
7038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7039        res.setRole(parseCodeableConcept(xpp));
7040      } else if (!parseBackboneElementContent(eventType, xpp, res))
7041        return false;
7042    return true;
7043  }
7044
7045  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7046    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
7047    parseBackboneAttributes(xpp, res);
7048    next(xpp);
7049    int eventType = nextNoWhitespace(xpp);
7050    while (eventType != XmlPullParser.END_TAG) {
7051  if (!parseContractSignatoryComponentContent(eventType, xpp, owner, res))
7052        unknownContent(xpp);
7053      eventType = nextNoWhitespace(xpp);
7054    }
7055    next(xpp);
7056    parseElementClose(res);
7057    return res;
7058  }
7059
7060  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7061      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7062        res.setType(parseCoding(xpp));
7063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
7064        res.setParty(parseReference(xpp));
7065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
7066        res.getSignature().add(parseSignature(xpp));
7067      } else if (!parseBackboneElementContent(eventType, xpp, res))
7068        return false;
7069    return true;
7070  }
7071
7072  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7073    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
7074    parseBackboneAttributes(xpp, res);
7075    next(xpp);
7076    int eventType = nextNoWhitespace(xpp);
7077    while (eventType != XmlPullParser.END_TAG) {
7078  if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, owner, res))
7079        unknownContent(xpp);
7080      eventType = nextNoWhitespace(xpp);
7081    }
7082    next(xpp);
7083    parseElementClose(res);
7084    return res;
7085  }
7086
7087  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7088      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7089        res.setContent(parseType("content", xpp));
7090      } else if (!parseBackboneElementContent(eventType, xpp, res))
7091        return false;
7092    return true;
7093  }
7094
7095  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7096    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
7097    parseBackboneAttributes(xpp, res);
7098    next(xpp);
7099    int eventType = nextNoWhitespace(xpp);
7100    while (eventType != XmlPullParser.END_TAG) {
7101  if (!parseContractLegalLanguageComponentContent(eventType, xpp, owner, res))
7102        unknownContent(xpp);
7103      eventType = nextNoWhitespace(xpp);
7104    }
7105    next(xpp);
7106    parseElementClose(res);
7107    return res;
7108  }
7109
7110  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7111      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7112        res.setContent(parseType("content", xpp));
7113      } else if (!parseBackboneElementContent(eventType, xpp, res))
7114        return false;
7115    return true;
7116  }
7117
7118  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7119    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
7120    parseBackboneAttributes(xpp, res);
7121    next(xpp);
7122    int eventType = nextNoWhitespace(xpp);
7123    while (eventType != XmlPullParser.END_TAG) {
7124  if (!parseContractComputableLanguageComponentContent(eventType, xpp, owner, res))
7125        unknownContent(xpp);
7126      eventType = nextNoWhitespace(xpp);
7127    }
7128    next(xpp);
7129    parseElementClose(res);
7130    return res;
7131  }
7132
7133  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7134      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7135        res.setContent(parseType("content", xpp));
7136      } else if (!parseBackboneElementContent(eventType, xpp, res))
7137        return false;
7138    return true;
7139  }
7140
7141  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7142    Coverage res = new Coverage();
7143    parseDomainResourceAttributes(xpp, res);
7144    next(xpp);
7145    int eventType = nextNoWhitespace(xpp);
7146    while (eventType != XmlPullParser.END_TAG) {
7147  if (!parseCoverageContent(eventType, xpp, res))
7148        unknownContent(xpp);
7149      eventType = nextNoWhitespace(xpp);
7150    }
7151    next(xpp);
7152    parseElementClose(res);
7153    return res;
7154  }
7155
7156  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
7157      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7158        res.getIdentifier().add(parseIdentifier(xpp));
7159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7160        res.setStatusElement(parseEnumeration(xpp, Coverage.CoverageStatus.NULL, new Coverage.CoverageStatusEnumFactory()));
7161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7162        res.setType(parseCodeableConcept(xpp));
7163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
7164        res.setPolicyHolder(parseReference(xpp));
7165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
7166        res.setSubscriber(parseReference(xpp));
7167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
7168        res.setSubscriberIdElement(parseString(xpp));
7169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
7170        res.setBeneficiary(parseReference(xpp));
7171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
7172        res.setDependentElement(parseString(xpp));
7173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
7174        res.setRelationship(parseCodeableConcept(xpp));
7175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7176        res.setPeriod(parsePeriod(xpp));
7177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payor")) {
7178        res.getPayor().add(parseReference(xpp));
7179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7180        res.getClass_().add(parseCoverageClassComponent(xpp, res));
7181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
7182        res.setOrderElement(parsePositiveInt(xpp));
7183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7184        res.setNetworkElement(parseString(xpp));
7185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costToBeneficiary")) {
7186        res.getCostToBeneficiary().add(parseCoverageCostToBeneficiaryComponent(xpp, res));
7187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subrogation")) {
7188        res.setSubrogationElement(parseBoolean(xpp));
7189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
7190        res.getContract().add(parseReference(xpp));
7191      } else if (!parseDomainResourceContent(eventType, xpp, res))
7192        return false;
7193    return true;
7194  }
7195
7196  protected Coverage.ClassComponent parseCoverageClassComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7197    Coverage.ClassComponent res = new Coverage.ClassComponent();
7198    parseBackboneAttributes(xpp, res);
7199    next(xpp);
7200    int eventType = nextNoWhitespace(xpp);
7201    while (eventType != XmlPullParser.END_TAG) {
7202  if (!parseCoverageClassComponentContent(eventType, xpp, owner, res))
7203        unknownContent(xpp);
7204      eventType = nextNoWhitespace(xpp);
7205    }
7206    next(xpp);
7207    parseElementClose(res);
7208    return res;
7209  }
7210
7211  protected boolean parseCoverageClassComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.ClassComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7212      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7213        res.setType(parseCodeableConcept(xpp));
7214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7215        res.setValueElement(parseString(xpp));
7216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7217        res.setNameElement(parseString(xpp));
7218      } else if (!parseBackboneElementContent(eventType, xpp, res))
7219        return false;
7220    return true;
7221  }
7222
7223  protected Coverage.CostToBeneficiaryComponent parseCoverageCostToBeneficiaryComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7224    Coverage.CostToBeneficiaryComponent res = new Coverage.CostToBeneficiaryComponent();
7225    parseBackboneAttributes(xpp, res);
7226    next(xpp);
7227    int eventType = nextNoWhitespace(xpp);
7228    while (eventType != XmlPullParser.END_TAG) {
7229  if (!parseCoverageCostToBeneficiaryComponentContent(eventType, xpp, owner, res))
7230        unknownContent(xpp);
7231      eventType = nextNoWhitespace(xpp);
7232    }
7233    next(xpp);
7234    parseElementClose(res);
7235    return res;
7236  }
7237
7238  protected boolean parseCoverageCostToBeneficiaryComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.CostToBeneficiaryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7239      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7240        res.setType(parseCodeableConcept(xpp));
7241      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7242        res.setValue(parseType("value", xpp));
7243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exception")) {
7244        res.getException().add(parseCoverageExemptionComponent(xpp, owner));
7245      } else if (!parseBackboneElementContent(eventType, xpp, res))
7246        return false;
7247    return true;
7248  }
7249
7250  protected Coverage.ExemptionComponent parseCoverageExemptionComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7251    Coverage.ExemptionComponent res = new Coverage.ExemptionComponent();
7252    parseBackboneAttributes(xpp, res);
7253    next(xpp);
7254    int eventType = nextNoWhitespace(xpp);
7255    while (eventType != XmlPullParser.END_TAG) {
7256  if (!parseCoverageExemptionComponentContent(eventType, xpp, owner, res))
7257        unknownContent(xpp);
7258      eventType = nextNoWhitespace(xpp);
7259    }
7260    next(xpp);
7261    parseElementClose(res);
7262    return res;
7263  }
7264
7265  protected boolean parseCoverageExemptionComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.ExemptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7266      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7267        res.setType(parseCodeableConcept(xpp));
7268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7269        res.setPeriod(parsePeriod(xpp));
7270      } else if (!parseBackboneElementContent(eventType, xpp, res))
7271        return false;
7272    return true;
7273  }
7274
7275  protected CoverageEligibilityRequest parseCoverageEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7276    CoverageEligibilityRequest res = new CoverageEligibilityRequest();
7277    parseDomainResourceAttributes(xpp, res);
7278    next(xpp);
7279    int eventType = nextNoWhitespace(xpp);
7280    while (eventType != XmlPullParser.END_TAG) {
7281  if (!parseCoverageEligibilityRequestContent(eventType, xpp, res))
7282        unknownContent(xpp);
7283      eventType = nextNoWhitespace(xpp);
7284    }
7285    next(xpp);
7286    parseElementClose(res);
7287    return res;
7288  }
7289
7290  protected boolean parseCoverageEligibilityRequestContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7291      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7292        res.getIdentifier().add(parseIdentifier(xpp));
7293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7294        res.setStatusElement(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestStatus.NULL, new CoverageEligibilityRequest.EligibilityRequestStatusEnumFactory()));
7295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7296        res.setPriority(parseCodeableConcept(xpp));
7297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7298        res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestPurpose.NULL, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory()));
7299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7300        res.setPatient(parseReference(xpp));
7301      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7302        res.setServiced(parseType("serviced", xpp));
7303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7304        res.setCreatedElement(parseDateTime(xpp));
7305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
7306        res.setEnterer(parseReference(xpp));
7307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7308        res.setProvider(parseReference(xpp));
7309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7310        res.setInsurer(parseReference(xpp));
7311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7312        res.setFacility(parseReference(xpp));
7313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
7314        res.getSupportingInfo().add(parseCoverageEligibilityRequestSupportingInformationComponent(xpp, res));
7315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7316        res.getInsurance().add(parseCoverageEligibilityRequestInsuranceComponent(xpp, res));
7317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
7318        res.getItem().add(parseCoverageEligibilityRequestDetailsComponent(xpp, res));
7319      } else if (!parseDomainResourceContent(eventType, xpp, res))
7320        return false;
7321    return true;
7322  }
7323
7324  protected CoverageEligibilityRequest.SupportingInformationComponent parseCoverageEligibilityRequestSupportingInformationComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7325    CoverageEligibilityRequest.SupportingInformationComponent res = new CoverageEligibilityRequest.SupportingInformationComponent();
7326    parseBackboneAttributes(xpp, res);
7327    next(xpp);
7328    int eventType = nextNoWhitespace(xpp);
7329    while (eventType != XmlPullParser.END_TAG) {
7330  if (!parseCoverageEligibilityRequestSupportingInformationComponentContent(eventType, xpp, owner, res))
7331        unknownContent(xpp);
7332      eventType = nextNoWhitespace(xpp);
7333    }
7334    next(xpp);
7335    parseElementClose(res);
7336    return res;
7337  }
7338
7339  protected boolean parseCoverageEligibilityRequestSupportingInformationComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7340      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
7341        res.setSequenceElement(parsePositiveInt(xpp));
7342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
7343        res.setInformation(parseReference(xpp));
7344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesToAll")) {
7345        res.setAppliesToAllElement(parseBoolean(xpp));
7346      } else if (!parseBackboneElementContent(eventType, xpp, res))
7347        return false;
7348    return true;
7349  }
7350
7351  protected CoverageEligibilityRequest.InsuranceComponent parseCoverageEligibilityRequestInsuranceComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7352    CoverageEligibilityRequest.InsuranceComponent res = new CoverageEligibilityRequest.InsuranceComponent();
7353    parseBackboneAttributes(xpp, res);
7354    next(xpp);
7355    int eventType = nextNoWhitespace(xpp);
7356    while (eventType != XmlPullParser.END_TAG) {
7357  if (!parseCoverageEligibilityRequestInsuranceComponentContent(eventType, xpp, owner, res))
7358        unknownContent(xpp);
7359      eventType = nextNoWhitespace(xpp);
7360    }
7361    next(xpp);
7362    parseElementClose(res);
7363    return res;
7364  }
7365
7366  protected boolean parseCoverageEligibilityRequestInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7367      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
7368        res.setFocalElement(parseBoolean(xpp));
7369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7370        res.setCoverage(parseReference(xpp));
7371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
7372        res.setBusinessArrangementElement(parseString(xpp));
7373      } else if (!parseBackboneElementContent(eventType, xpp, res))
7374        return false;
7375    return true;
7376  }
7377
7378  protected CoverageEligibilityRequest.DetailsComponent parseCoverageEligibilityRequestDetailsComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7379    CoverageEligibilityRequest.DetailsComponent res = new CoverageEligibilityRequest.DetailsComponent();
7380    parseBackboneAttributes(xpp, res);
7381    next(xpp);
7382    int eventType = nextNoWhitespace(xpp);
7383    while (eventType != XmlPullParser.END_TAG) {
7384  if (!parseCoverageEligibilityRequestDetailsComponentContent(eventType, xpp, owner, res))
7385        unknownContent(xpp);
7386      eventType = nextNoWhitespace(xpp);
7387    }
7388    next(xpp);
7389    parseElementClose(res);
7390    return res;
7391  }
7392
7393  protected boolean parseCoverageEligibilityRequestDetailsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7394      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfoSequence")) {
7395        res.getSupportingInfoSequence().add(parsePositiveInt(xpp));
7396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7397        res.setCategory(parseCodeableConcept(xpp));
7398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
7399        res.setProductOrService(parseCodeableConcept(xpp));
7400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7401        res.getModifier().add(parseCodeableConcept(xpp));
7402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7403        res.setProvider(parseReference(xpp));
7404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7405        res.setQuantity(parseQuantity(xpp));
7406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
7407        res.setUnitPrice(parseMoney(xpp));
7408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7409        res.setFacility(parseReference(xpp));
7410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7411        res.getDiagnosis().add(parseCoverageEligibilityRequestDiagnosisComponent(xpp, owner));
7412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7413        res.getDetail().add(parseReference(xpp));
7414      } else if (!parseBackboneElementContent(eventType, xpp, res))
7415        return false;
7416    return true;
7417  }
7418
7419  protected CoverageEligibilityRequest.DiagnosisComponent parseCoverageEligibilityRequestDiagnosisComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7420    CoverageEligibilityRequest.DiagnosisComponent res = new CoverageEligibilityRequest.DiagnosisComponent();
7421    parseBackboneAttributes(xpp, res);
7422    next(xpp);
7423    int eventType = nextNoWhitespace(xpp);
7424    while (eventType != XmlPullParser.END_TAG) {
7425  if (!parseCoverageEligibilityRequestDiagnosisComponentContent(eventType, xpp, owner, res))
7426        unknownContent(xpp);
7427      eventType = nextNoWhitespace(xpp);
7428    }
7429    next(xpp);
7430    parseElementClose(res);
7431    return res;
7432  }
7433
7434  protected boolean parseCoverageEligibilityRequestDiagnosisComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7435      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
7436        res.setDiagnosis(parseType("diagnosis", xpp));
7437      } else if (!parseBackboneElementContent(eventType, xpp, res))
7438        return false;
7439    return true;
7440  }
7441
7442  protected CoverageEligibilityResponse parseCoverageEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7443    CoverageEligibilityResponse res = new CoverageEligibilityResponse();
7444    parseDomainResourceAttributes(xpp, res);
7445    next(xpp);
7446    int eventType = nextNoWhitespace(xpp);
7447    while (eventType != XmlPullParser.END_TAG) {
7448  if (!parseCoverageEligibilityResponseContent(eventType, xpp, res))
7449        unknownContent(xpp);
7450      eventType = nextNoWhitespace(xpp);
7451    }
7452    next(xpp);
7453    parseElementClose(res);
7454    return res;
7455  }
7456
7457  protected boolean parseCoverageEligibilityResponseContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7458      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7459        res.getIdentifier().add(parseIdentifier(xpp));
7460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7461        res.setStatusElement(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponseStatus.NULL, new CoverageEligibilityResponse.EligibilityResponseStatusEnumFactory()));
7462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7463        res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponsePurpose.NULL, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory()));
7464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7465        res.setPatient(parseReference(xpp));
7466      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7467        res.setServiced(parseType("serviced", xpp));
7468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7469        res.setCreatedElement(parseDateTime(xpp));
7470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
7471        res.setRequestor(parseReference(xpp));
7472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7473        res.setRequest(parseReference(xpp));
7474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7475        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
7476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7477        res.setDispositionElement(parseString(xpp));
7478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7479        res.setInsurer(parseReference(xpp));
7480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7481        res.getInsurance().add(parseCoverageEligibilityResponseInsuranceComponent(xpp, res));
7482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
7483        res.setPreAuthRefElement(parseString(xpp));
7484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
7485        res.setForm(parseCodeableConcept(xpp));
7486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
7487        res.getError().add(parseCoverageEligibilityResponseErrorsComponent(xpp, res));
7488      } else if (!parseDomainResourceContent(eventType, xpp, res))
7489        return false;
7490    return true;
7491  }
7492
7493  protected CoverageEligibilityResponse.InsuranceComponent parseCoverageEligibilityResponseInsuranceComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7494    CoverageEligibilityResponse.InsuranceComponent res = new CoverageEligibilityResponse.InsuranceComponent();
7495    parseBackboneAttributes(xpp, res);
7496    next(xpp);
7497    int eventType = nextNoWhitespace(xpp);
7498    while (eventType != XmlPullParser.END_TAG) {
7499  if (!parseCoverageEligibilityResponseInsuranceComponentContent(eventType, xpp, owner, res))
7500        unknownContent(xpp);
7501      eventType = nextNoWhitespace(xpp);
7502    }
7503    next(xpp);
7504    parseElementClose(res);
7505    return res;
7506  }
7507
7508  protected boolean parseCoverageEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7509      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7510        res.setCoverage(parseReference(xpp));
7511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
7512        res.setInforceElement(parseBoolean(xpp));
7513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
7514        res.setBenefitPeriod(parsePeriod(xpp));
7515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
7516        res.getItem().add(parseCoverageEligibilityResponseItemsComponent(xpp, owner));
7517      } else if (!parseBackboneElementContent(eventType, xpp, res))
7518        return false;
7519    return true;
7520  }
7521
7522  protected CoverageEligibilityResponse.ItemsComponent parseCoverageEligibilityResponseItemsComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7523    CoverageEligibilityResponse.ItemsComponent res = new CoverageEligibilityResponse.ItemsComponent();
7524    parseBackboneAttributes(xpp, res);
7525    next(xpp);
7526    int eventType = nextNoWhitespace(xpp);
7527    while (eventType != XmlPullParser.END_TAG) {
7528  if (!parseCoverageEligibilityResponseItemsComponentContent(eventType, xpp, owner, res))
7529        unknownContent(xpp);
7530      eventType = nextNoWhitespace(xpp);
7531    }
7532    next(xpp);
7533    parseElementClose(res);
7534    return res;
7535  }
7536
7537  protected boolean parseCoverageEligibilityResponseItemsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7538      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7539        res.setCategory(parseCodeableConcept(xpp));
7540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
7541        res.setProductOrService(parseCodeableConcept(xpp));
7542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7543        res.getModifier().add(parseCodeableConcept(xpp));
7544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7545        res.setProvider(parseReference(xpp));
7546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
7547        res.setExcludedElement(parseBoolean(xpp));
7548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7549        res.setNameElement(parseString(xpp));
7550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7551        res.setDescriptionElement(parseString(xpp));
7552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7553        res.setNetwork(parseCodeableConcept(xpp));
7554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
7555        res.setUnit(parseCodeableConcept(xpp));
7556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
7557        res.setTerm(parseCodeableConcept(xpp));
7558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
7559        res.getBenefit().add(parseCoverageEligibilityResponseBenefitComponent(xpp, owner));
7560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationRequired")) {
7561        res.setAuthorizationRequiredElement(parseBoolean(xpp));
7562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationSupporting")) {
7563        res.getAuthorizationSupporting().add(parseCodeableConcept(xpp));
7564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationUrl")) {
7565        res.setAuthorizationUrlElement(parseUri(xpp));
7566      } else if (!parseBackboneElementContent(eventType, xpp, res))
7567        return false;
7568    return true;
7569  }
7570
7571  protected CoverageEligibilityResponse.BenefitComponent parseCoverageEligibilityResponseBenefitComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7572    CoverageEligibilityResponse.BenefitComponent res = new CoverageEligibilityResponse.BenefitComponent();
7573    parseBackboneAttributes(xpp, res);
7574    next(xpp);
7575    int eventType = nextNoWhitespace(xpp);
7576    while (eventType != XmlPullParser.END_TAG) {
7577  if (!parseCoverageEligibilityResponseBenefitComponentContent(eventType, xpp, owner, res))
7578        unknownContent(xpp);
7579      eventType = nextNoWhitespace(xpp);
7580    }
7581    next(xpp);
7582    parseElementClose(res);
7583    return res;
7584  }
7585
7586  protected boolean parseCoverageEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7587      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7588        res.setType(parseCodeableConcept(xpp));
7589      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
7590        res.setAllowed(parseType("allowed", xpp));
7591      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
7592        res.setUsed(parseType("used", xpp));
7593      } else if (!parseBackboneElementContent(eventType, xpp, res))
7594        return false;
7595    return true;
7596  }
7597
7598  protected CoverageEligibilityResponse.ErrorsComponent parseCoverageEligibilityResponseErrorsComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7599    CoverageEligibilityResponse.ErrorsComponent res = new CoverageEligibilityResponse.ErrorsComponent();
7600    parseBackboneAttributes(xpp, res);
7601    next(xpp);
7602    int eventType = nextNoWhitespace(xpp);
7603    while (eventType != XmlPullParser.END_TAG) {
7604  if (!parseCoverageEligibilityResponseErrorsComponentContent(eventType, xpp, owner, res))
7605        unknownContent(xpp);
7606      eventType = nextNoWhitespace(xpp);
7607    }
7608    next(xpp);
7609    parseElementClose(res);
7610    return res;
7611  }
7612
7613  protected boolean parseCoverageEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7614      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7615        res.setCode(parseCodeableConcept(xpp));
7616      } else if (!parseBackboneElementContent(eventType, xpp, res))
7617        return false;
7618    return true;
7619  }
7620
7621  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7622    DetectedIssue res = new DetectedIssue();
7623    parseDomainResourceAttributes(xpp, res);
7624    next(xpp);
7625    int eventType = nextNoWhitespace(xpp);
7626    while (eventType != XmlPullParser.END_TAG) {
7627  if (!parseDetectedIssueContent(eventType, xpp, res))
7628        unknownContent(xpp);
7629      eventType = nextNoWhitespace(xpp);
7630    }
7631    next(xpp);
7632    parseElementClose(res);
7633    return res;
7634  }
7635
7636  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
7637      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7638        res.getIdentifier().add(parseIdentifier(xpp));
7639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7640        res.setStatusElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueStatus.NULL, new DetectedIssue.DetectedIssueStatusEnumFactory()));
7641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7642        res.setCode(parseCodeableConcept(xpp));
7643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
7644        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
7645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7646        res.setPatient(parseReference(xpp));
7647      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "identified")) {
7648        res.setIdentified(parseType("identified", xpp));
7649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7650        res.setAuthor(parseReference(xpp));
7651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
7652        res.getImplicated().add(parseReference(xpp));
7653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
7654        res.getEvidence().add(parseDetectedIssueDetectedIssueEvidenceComponent(xpp, res));
7655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7656        res.setDetailElement(parseString(xpp));
7657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7658        res.setReferenceElement(parseUri(xpp));
7659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
7660        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
7661      } else if (!parseDomainResourceContent(eventType, xpp, res))
7662        return false;
7663    return true;
7664  }
7665
7666  protected DetectedIssue.DetectedIssueEvidenceComponent parseDetectedIssueDetectedIssueEvidenceComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
7667    DetectedIssue.DetectedIssueEvidenceComponent res = new DetectedIssue.DetectedIssueEvidenceComponent();
7668    parseBackboneAttributes(xpp, res);
7669    next(xpp);
7670    int eventType = nextNoWhitespace(xpp);
7671    while (eventType != XmlPullParser.END_TAG) {
7672  if (!parseDetectedIssueDetectedIssueEvidenceComponentContent(eventType, xpp, owner, res))
7673        unknownContent(xpp);
7674      eventType = nextNoWhitespace(xpp);
7675    }
7676    next(xpp);
7677    parseElementClose(res);
7678    return res;
7679  }
7680
7681  protected boolean parseDetectedIssueDetectedIssueEvidenceComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7682      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7683        res.getCode().add(parseCodeableConcept(xpp));
7684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7685        res.getDetail().add(parseReference(xpp));
7686      } else if (!parseBackboneElementContent(eventType, xpp, res))
7687        return false;
7688    return true;
7689  }
7690
7691  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
7692    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
7693    parseBackboneAttributes(xpp, res);
7694    next(xpp);
7695    int eventType = nextNoWhitespace(xpp);
7696    while (eventType != XmlPullParser.END_TAG) {
7697  if (!parseDetectedIssueDetectedIssueMitigationComponentContent(eventType, xpp, owner, res))
7698        unknownContent(xpp);
7699      eventType = nextNoWhitespace(xpp);
7700    }
7701    next(xpp);
7702    parseElementClose(res);
7703    return res;
7704  }
7705
7706  protected boolean parseDetectedIssueDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7707      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
7708        res.setAction(parseCodeableConcept(xpp));
7709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7710        res.setDateElement(parseDateTime(xpp));
7711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7712        res.setAuthor(parseReference(xpp));
7713      } else if (!parseBackboneElementContent(eventType, xpp, res))
7714        return false;
7715    return true;
7716  }
7717
7718  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7719    Device res = new Device();
7720    parseDomainResourceAttributes(xpp, res);
7721    next(xpp);
7722    int eventType = nextNoWhitespace(xpp);
7723    while (eventType != XmlPullParser.END_TAG) {
7724  if (!parseDeviceContent(eventType, xpp, res))
7725        unknownContent(xpp);
7726      eventType = nextNoWhitespace(xpp);
7727    }
7728    next(xpp);
7729    parseElementClose(res);
7730    return res;
7731  }
7732
7733  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
7734      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7735        res.getIdentifier().add(parseIdentifier(xpp));
7736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
7737        res.setDefinition(parseReference(xpp));
7738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiCarrier")) {
7739        res.getUdiCarrier().add(parseDeviceDeviceUdiCarrierComponent(xpp, res));
7740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7741        res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
7742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
7743        res.getStatusReason().add(parseCodeableConcept(xpp));
7744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("distinctIdentifier")) {
7745        res.setDistinctIdentifierElement(parseString(xpp));
7746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
7747        res.setManufacturerElement(parseString(xpp));
7748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
7749        res.setManufactureDateElement(parseDateTime(xpp));
7750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
7751        res.setExpirationDateElement(parseDateTime(xpp));
7752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
7753        res.setLotNumberElement(parseString(xpp));
7754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
7755        res.setSerialNumberElement(parseString(xpp));
7756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
7757        res.getDeviceName().add(parseDeviceDeviceDeviceNameComponent(xpp, res));
7758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
7759        res.setModelNumberElement(parseString(xpp));
7760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partNumber")) {
7761        res.setPartNumberElement(parseString(xpp));
7762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7763        res.setType(parseCodeableConcept(xpp));
7764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
7765        res.getSpecialization().add(parseDeviceDeviceSpecializationComponent(xpp, res));
7766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7767        res.getVersion().add(parseDeviceDeviceVersionComponent(xpp, res));
7768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7769        res.getProperty().add(parseDeviceDevicePropertyComponent(xpp, res));
7770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7771        res.setPatient(parseReference(xpp));
7772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
7773        res.setOwner(parseReference(xpp));
7774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7775        res.getContact().add(parseContactPoint(xpp));
7776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7777        res.setLocation(parseReference(xpp));
7778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7779        res.setUrlElement(parseUri(xpp));
7780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7781        res.getNote().add(parseAnnotation(xpp));
7782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
7783        res.getSafety().add(parseCodeableConcept(xpp));
7784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
7785        res.setParent(parseReference(xpp));
7786      } else if (!parseDomainResourceContent(eventType, xpp, res))
7787        return false;
7788    return true;
7789  }
7790
7791  protected Device.DeviceUdiCarrierComponent parseDeviceDeviceUdiCarrierComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7792    Device.DeviceUdiCarrierComponent res = new Device.DeviceUdiCarrierComponent();
7793    parseBackboneAttributes(xpp, res);
7794    next(xpp);
7795    int eventType = nextNoWhitespace(xpp);
7796    while (eventType != XmlPullParser.END_TAG) {
7797  if (!parseDeviceDeviceUdiCarrierComponentContent(eventType, xpp, owner, res))
7798        unknownContent(xpp);
7799      eventType = nextNoWhitespace(xpp);
7800    }
7801    next(xpp);
7802    parseElementClose(res);
7803    return res;
7804  }
7805
7806  protected boolean parseDeviceDeviceUdiCarrierComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceUdiCarrierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
7808        res.setDeviceIdentifierElement(parseString(xpp));
7809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
7810        res.setIssuerElement(parseUri(xpp));
7811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7812        res.setJurisdictionElement(parseUri(xpp));
7813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
7814        res.setCarrierAIDCElement(parseBase64Binary(xpp));
7815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
7816        res.setCarrierHRFElement(parseString(xpp));
7817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
7818        res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
7819      } else if (!parseBackboneElementContent(eventType, xpp, res))
7820        return false;
7821    return true;
7822  }
7823
7824  protected Device.DeviceDeviceNameComponent parseDeviceDeviceDeviceNameComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7825    Device.DeviceDeviceNameComponent res = new Device.DeviceDeviceNameComponent();
7826    parseBackboneAttributes(xpp, res);
7827    next(xpp);
7828    int eventType = nextNoWhitespace(xpp);
7829    while (eventType != XmlPullParser.END_TAG) {
7830  if (!parseDeviceDeviceDeviceNameComponentContent(eventType, xpp, owner, res))
7831        unknownContent(xpp);
7832      eventType = nextNoWhitespace(xpp);
7833    }
7834    next(xpp);
7835    parseElementClose(res);
7836    return res;
7837  }
7838
7839  protected boolean parseDeviceDeviceDeviceNameComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7840      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7841        res.setNameElement(parseString(xpp));
7842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7843        res.setTypeElement(parseEnumeration(xpp, Device.DeviceNameType.NULL, new Device.DeviceNameTypeEnumFactory()));
7844      } else if (!parseBackboneElementContent(eventType, xpp, res))
7845        return false;
7846    return true;
7847  }
7848
7849  protected Device.DeviceSpecializationComponent parseDeviceDeviceSpecializationComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7850    Device.DeviceSpecializationComponent res = new Device.DeviceSpecializationComponent();
7851    parseBackboneAttributes(xpp, res);
7852    next(xpp);
7853    int eventType = nextNoWhitespace(xpp);
7854    while (eventType != XmlPullParser.END_TAG) {
7855  if (!parseDeviceDeviceSpecializationComponentContent(eventType, xpp, owner, res))
7856        unknownContent(xpp);
7857      eventType = nextNoWhitespace(xpp);
7858    }
7859    next(xpp);
7860    parseElementClose(res);
7861    return res;
7862  }
7863
7864  protected boolean parseDeviceDeviceSpecializationComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7865      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
7866        res.setSystemType(parseCodeableConcept(xpp));
7867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7868        res.setVersionElement(parseString(xpp));
7869      } else if (!parseBackboneElementContent(eventType, xpp, res))
7870        return false;
7871    return true;
7872  }
7873
7874  protected Device.DeviceVersionComponent parseDeviceDeviceVersionComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7875    Device.DeviceVersionComponent res = new Device.DeviceVersionComponent();
7876    parseBackboneAttributes(xpp, res);
7877    next(xpp);
7878    int eventType = nextNoWhitespace(xpp);
7879    while (eventType != XmlPullParser.END_TAG) {
7880  if (!parseDeviceDeviceVersionComponentContent(eventType, xpp, owner, res))
7881        unknownContent(xpp);
7882      eventType = nextNoWhitespace(xpp);
7883    }
7884    next(xpp);
7885    parseElementClose(res);
7886    return res;
7887  }
7888
7889  protected boolean parseDeviceDeviceVersionComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7890      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7891        res.setType(parseCodeableConcept(xpp));
7892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
7893        res.setComponent(parseIdentifier(xpp));
7894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7895        res.setValueElement(parseString(xpp));
7896      } else if (!parseBackboneElementContent(eventType, xpp, res))
7897        return false;
7898    return true;
7899  }
7900
7901  protected Device.DevicePropertyComponent parseDeviceDevicePropertyComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7902    Device.DevicePropertyComponent res = new Device.DevicePropertyComponent();
7903    parseBackboneAttributes(xpp, res);
7904    next(xpp);
7905    int eventType = nextNoWhitespace(xpp);
7906    while (eventType != XmlPullParser.END_TAG) {
7907  if (!parseDeviceDevicePropertyComponentContent(eventType, xpp, owner, res))
7908        unknownContent(xpp);
7909      eventType = nextNoWhitespace(xpp);
7910    }
7911    next(xpp);
7912    parseElementClose(res);
7913    return res;
7914  }
7915
7916  protected boolean parseDeviceDevicePropertyComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DevicePropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7917      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7918        res.setType(parseCodeableConcept(xpp));
7919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
7920        res.getValueQuantity().add(parseQuantity(xpp));
7921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
7922        res.getValueCode().add(parseCodeableConcept(xpp));
7923      } else if (!parseBackboneElementContent(eventType, xpp, res))
7924        return false;
7925    return true;
7926  }
7927
7928  protected DeviceDefinition parseDeviceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7929    DeviceDefinition res = new DeviceDefinition();
7930    parseDomainResourceAttributes(xpp, res);
7931    next(xpp);
7932    int eventType = nextNoWhitespace(xpp);
7933    while (eventType != XmlPullParser.END_TAG) {
7934  if (!parseDeviceDefinitionContent(eventType, xpp, res))
7935        unknownContent(xpp);
7936      eventType = nextNoWhitespace(xpp);
7937    }
7938    next(xpp);
7939    parseElementClose(res);
7940    return res;
7941  }
7942
7943  protected boolean parseDeviceDefinitionContent(int eventType, XmlPullParser xpp, DeviceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
7944      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7945        res.getIdentifier().add(parseIdentifier(xpp));
7946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiDeviceIdentifier")) {
7947        res.getUdiDeviceIdentifier().add(parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(xpp, res));
7948      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "manufacturer")) {
7949        res.setManufacturer(parseType("manufacturer", xpp));
7950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
7951        res.getDeviceName().add(parseDeviceDefinitionDeviceDefinitionDeviceNameComponent(xpp, res));
7952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
7953        res.setModelNumberElement(parseString(xpp));
7954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7955        res.setType(parseCodeableConcept(xpp));
7956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
7957        res.getSpecialization().add(parseDeviceDefinitionDeviceDefinitionSpecializationComponent(xpp, res));
7958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7959        res.getVersion().add(parseString(xpp));
7960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
7961        res.getSafety().add(parseCodeableConcept(xpp));
7962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
7963        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
7964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
7965        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
7966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
7967        res.getLanguageCode().add(parseCodeableConcept(xpp));
7968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
7969        res.getCapability().add(parseDeviceDefinitionDeviceDefinitionCapabilityComponent(xpp, res));
7970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7971        res.getProperty().add(parseDeviceDefinitionDeviceDefinitionPropertyComponent(xpp, res));
7972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
7973        res.setOwner(parseReference(xpp));
7974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7975        res.getContact().add(parseContactPoint(xpp));
7976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7977        res.setUrlElement(parseUri(xpp));
7978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onlineInformation")) {
7979        res.setOnlineInformationElement(parseUri(xpp));
7980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7981        res.getNote().add(parseAnnotation(xpp));
7982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7983        res.setQuantity(parseQuantity(xpp));
7984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentDevice")) {
7985        res.setParentDevice(parseReference(xpp));
7986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
7987        res.getMaterial().add(parseDeviceDefinitionDeviceDefinitionMaterialComponent(xpp, res));
7988      } else if (!parseDomainResourceContent(eventType, xpp, res))
7989        return false;
7990    return true;
7991  }
7992
7993  protected DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7994    DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res = new DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent();
7995    parseBackboneAttributes(xpp, res);
7996    next(xpp);
7997    int eventType = nextNoWhitespace(xpp);
7998    while (eventType != XmlPullParser.END_TAG) {
7999  if (!parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentContent(eventType, xpp, owner, res))
8000        unknownContent(xpp);
8001      eventType = nextNoWhitespace(xpp);
8002    }
8003    next(xpp);
8004    parseElementClose(res);
8005    return res;
8006  }
8007
8008  protected boolean parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8009      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
8010        res.setDeviceIdentifierElement(parseString(xpp));
8011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
8012        res.setIssuerElement(parseUri(xpp));
8013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8014        res.setJurisdictionElement(parseUri(xpp));
8015      } else if (!parseBackboneElementContent(eventType, xpp, res))
8016        return false;
8017    return true;
8018  }
8019
8020  protected DeviceDefinition.DeviceDefinitionDeviceNameComponent parseDeviceDefinitionDeviceDefinitionDeviceNameComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8021    DeviceDefinition.DeviceDefinitionDeviceNameComponent res = new DeviceDefinition.DeviceDefinitionDeviceNameComponent();
8022    parseBackboneAttributes(xpp, res);
8023    next(xpp);
8024    int eventType = nextNoWhitespace(xpp);
8025    while (eventType != XmlPullParser.END_TAG) {
8026  if (!parseDeviceDefinitionDeviceDefinitionDeviceNameComponentContent(eventType, xpp, owner, res))
8027        unknownContent(xpp);
8028      eventType = nextNoWhitespace(xpp);
8029    }
8030    next(xpp);
8031    parseElementClose(res);
8032    return res;
8033  }
8034
8035  protected boolean parseDeviceDefinitionDeviceDefinitionDeviceNameComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8036      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8037        res.setNameElement(parseString(xpp));
8038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8039        res.setTypeElement(parseEnumeration(xpp, DeviceDefinition.DeviceNameType.NULL, new DeviceDefinition.DeviceNameTypeEnumFactory()));
8040      } else if (!parseBackboneElementContent(eventType, xpp, res))
8041        return false;
8042    return true;
8043  }
8044
8045  protected DeviceDefinition.DeviceDefinitionSpecializationComponent parseDeviceDefinitionDeviceDefinitionSpecializationComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8046    DeviceDefinition.DeviceDefinitionSpecializationComponent res = new DeviceDefinition.DeviceDefinitionSpecializationComponent();
8047    parseBackboneAttributes(xpp, res);
8048    next(xpp);
8049    int eventType = nextNoWhitespace(xpp);
8050    while (eventType != XmlPullParser.END_TAG) {
8051  if (!parseDeviceDefinitionDeviceDefinitionSpecializationComponentContent(eventType, xpp, owner, res))
8052        unknownContent(xpp);
8053      eventType = nextNoWhitespace(xpp);
8054    }
8055    next(xpp);
8056    parseElementClose(res);
8057    return res;
8058  }
8059
8060  protected boolean parseDeviceDefinitionDeviceDefinitionSpecializationComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8061      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
8062        res.setSystemTypeElement(parseString(xpp));
8063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8064        res.setVersionElement(parseString(xpp));
8065      } else if (!parseBackboneElementContent(eventType, xpp, res))
8066        return false;
8067    return true;
8068  }
8069
8070  protected DeviceDefinition.DeviceDefinitionCapabilityComponent parseDeviceDefinitionDeviceDefinitionCapabilityComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8071    DeviceDefinition.DeviceDefinitionCapabilityComponent res = new DeviceDefinition.DeviceDefinitionCapabilityComponent();
8072    parseBackboneAttributes(xpp, res);
8073    next(xpp);
8074    int eventType = nextNoWhitespace(xpp);
8075    while (eventType != XmlPullParser.END_TAG) {
8076  if (!parseDeviceDefinitionDeviceDefinitionCapabilityComponentContent(eventType, xpp, owner, res))
8077        unknownContent(xpp);
8078      eventType = nextNoWhitespace(xpp);
8079    }
8080    next(xpp);
8081    parseElementClose(res);
8082    return res;
8083  }
8084
8085  protected boolean parseDeviceDefinitionDeviceDefinitionCapabilityComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8086      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8087        res.setType(parseCodeableConcept(xpp));
8088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8089        res.getDescription().add(parseCodeableConcept(xpp));
8090      } else if (!parseBackboneElementContent(eventType, xpp, res))
8091        return false;
8092    return true;
8093  }
8094
8095  protected DeviceDefinition.DeviceDefinitionPropertyComponent parseDeviceDefinitionDeviceDefinitionPropertyComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8096    DeviceDefinition.DeviceDefinitionPropertyComponent res = new DeviceDefinition.DeviceDefinitionPropertyComponent();
8097    parseBackboneAttributes(xpp, res);
8098    next(xpp);
8099    int eventType = nextNoWhitespace(xpp);
8100    while (eventType != XmlPullParser.END_TAG) {
8101  if (!parseDeviceDefinitionDeviceDefinitionPropertyComponentContent(eventType, xpp, owner, res))
8102        unknownContent(xpp);
8103      eventType = nextNoWhitespace(xpp);
8104    }
8105    next(xpp);
8106    parseElementClose(res);
8107    return res;
8108  }
8109
8110  protected boolean parseDeviceDefinitionDeviceDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8111      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8112        res.setType(parseCodeableConcept(xpp));
8113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
8114        res.getValueQuantity().add(parseQuantity(xpp));
8115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
8116        res.getValueCode().add(parseCodeableConcept(xpp));
8117      } else if (!parseBackboneElementContent(eventType, xpp, res))
8118        return false;
8119    return true;
8120  }
8121
8122  protected DeviceDefinition.DeviceDefinitionMaterialComponent parseDeviceDefinitionDeviceDefinitionMaterialComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8123    DeviceDefinition.DeviceDefinitionMaterialComponent res = new DeviceDefinition.DeviceDefinitionMaterialComponent();
8124    parseBackboneAttributes(xpp, res);
8125    next(xpp);
8126    int eventType = nextNoWhitespace(xpp);
8127    while (eventType != XmlPullParser.END_TAG) {
8128  if (!parseDeviceDefinitionDeviceDefinitionMaterialComponentContent(eventType, xpp, owner, res))
8129        unknownContent(xpp);
8130      eventType = nextNoWhitespace(xpp);
8131    }
8132    next(xpp);
8133    parseElementClose(res);
8134    return res;
8135  }
8136
8137  protected boolean parseDeviceDefinitionDeviceDefinitionMaterialComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8138      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
8139        res.setSubstance(parseCodeableConcept(xpp));
8140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternate")) {
8141        res.setAlternateElement(parseBoolean(xpp));
8142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
8143        res.setAllergenicIndicatorElement(parseBoolean(xpp));
8144      } else if (!parseBackboneElementContent(eventType, xpp, res))
8145        return false;
8146    return true;
8147  }
8148
8149  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8150    DeviceMetric res = new DeviceMetric();
8151    parseDomainResourceAttributes(xpp, res);
8152    next(xpp);
8153    int eventType = nextNoWhitespace(xpp);
8154    while (eventType != XmlPullParser.END_TAG) {
8155  if (!parseDeviceMetricContent(eventType, xpp, res))
8156        unknownContent(xpp);
8157      eventType = nextNoWhitespace(xpp);
8158    }
8159    next(xpp);
8160    parseElementClose(res);
8161    return res;
8162  }
8163
8164  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
8165      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8166        res.getIdentifier().add(parseIdentifier(xpp));
8167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8168        res.setType(parseCodeableConcept(xpp));
8169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
8170        res.setUnit(parseCodeableConcept(xpp));
8171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8172        res.setSource(parseReference(xpp));
8173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
8174        res.setParent(parseReference(xpp));
8175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
8176        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
8177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
8178        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
8179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8180        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
8181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
8182        res.setMeasurementPeriod(parseTiming(xpp));
8183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
8184        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
8185      } else if (!parseDomainResourceContent(eventType, xpp, res))
8186        return false;
8187    return true;
8188  }
8189
8190  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
8191    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
8192    parseBackboneAttributes(xpp, res);
8193    next(xpp);
8194    int eventType = nextNoWhitespace(xpp);
8195    while (eventType != XmlPullParser.END_TAG) {
8196  if (!parseDeviceMetricDeviceMetricCalibrationComponentContent(eventType, xpp, owner, res))
8197        unknownContent(xpp);
8198      eventType = nextNoWhitespace(xpp);
8199    }
8200    next(xpp);
8201    parseElementClose(res);
8202    return res;
8203  }
8204
8205  protected boolean parseDeviceMetricDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric owner, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8206      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8207        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
8208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
8209        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
8210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
8211        res.setTimeElement(parseInstant(xpp));
8212      } else if (!parseBackboneElementContent(eventType, xpp, res))
8213        return false;
8214    return true;
8215  }
8216
8217  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8218    DeviceRequest res = new DeviceRequest();
8219    parseDomainResourceAttributes(xpp, res);
8220    next(xpp);
8221    int eventType = nextNoWhitespace(xpp);
8222    while (eventType != XmlPullParser.END_TAG) {
8223  if (!parseDeviceRequestContent(eventType, xpp, res))
8224        unknownContent(xpp);
8225      eventType = nextNoWhitespace(xpp);
8226    }
8227    next(xpp);
8228    parseElementClose(res);
8229    return res;
8230  }
8231
8232  protected boolean parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
8233      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8234        res.getIdentifier().add(parseIdentifier(xpp));
8235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
8236        res.getInstantiatesCanonical().add(parseCanonical(xpp));
8237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
8238        res.getInstantiatesUri().add(parseUri(xpp));
8239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8240        res.getBasedOn().add(parseReference(xpp));
8241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorRequest")) {
8242        res.getPriorRequest().add(parseReference(xpp));
8243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
8244        res.setGroupIdentifier(parseIdentifier(xpp));
8245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8246        res.setStatusElement(parseEnumeration(xpp, DeviceRequest.DeviceRequestStatus.NULL, new DeviceRequest.DeviceRequestStatusEnumFactory()));
8247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
8248        res.setIntentElement(parseEnumeration(xpp, DeviceRequest.RequestIntent.NULL, new DeviceRequest.RequestIntentEnumFactory()));
8249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8250        res.setPriorityElement(parseEnumeration(xpp, DeviceRequest.RequestPriority.NULL, new DeviceRequest.RequestPriorityEnumFactory()));
8251      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "code")) {
8252        res.setCode(parseType("code", xpp));
8253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
8254        res.getParameter().add(parseDeviceRequestDeviceRequestParameterComponent(xpp, res));
8255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8256        res.setSubject(parseReference(xpp));
8257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8258        res.setEncounter(parseReference(xpp));
8259      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
8260        res.setOccurrence(parseType("occurrence", xpp));
8261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
8262        res.setAuthoredOnElement(parseDateTime(xpp));
8263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
8264        res.setRequester(parseReference(xpp));
8265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
8266        res.setPerformerType(parseCodeableConcept(xpp));
8267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8268        res.setPerformer(parseReference(xpp));
8269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8270        res.getReasonCode().add(parseCodeableConcept(xpp));
8271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8272        res.getReasonReference().add(parseReference(xpp));
8273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
8274        res.getInsurance().add(parseReference(xpp));
8275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
8276        res.getSupportingInfo().add(parseReference(xpp));
8277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8278        res.getNote().add(parseAnnotation(xpp));
8279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
8280        res.getRelevantHistory().add(parseReference(xpp));
8281      } else if (!parseDomainResourceContent(eventType, xpp, res))
8282        return false;
8283    return true;
8284  }
8285
8286  protected DeviceRequest.DeviceRequestParameterComponent parseDeviceRequestDeviceRequestParameterComponent(XmlPullParser xpp, DeviceRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8287    DeviceRequest.DeviceRequestParameterComponent res = new DeviceRequest.DeviceRequestParameterComponent();
8288    parseBackboneAttributes(xpp, res);
8289    next(xpp);
8290    int eventType = nextNoWhitespace(xpp);
8291    while (eventType != XmlPullParser.END_TAG) {
8292  if (!parseDeviceRequestDeviceRequestParameterComponentContent(eventType, xpp, owner, res))
8293        unknownContent(xpp);
8294      eventType = nextNoWhitespace(xpp);
8295    }
8296    next(xpp);
8297    parseElementClose(res);
8298    return res;
8299  }
8300
8301  protected boolean parseDeviceRequestDeviceRequestParameterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest owner, DeviceRequest.DeviceRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8302      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8303        res.setCode(parseCodeableConcept(xpp));
8304      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8305        res.setValue(parseType("value", xpp));
8306      } else if (!parseBackboneElementContent(eventType, xpp, res))
8307        return false;
8308    return true;
8309  }
8310
8311  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8312    DeviceUseStatement res = new DeviceUseStatement();
8313    parseDomainResourceAttributes(xpp, res);
8314    next(xpp);
8315    int eventType = nextNoWhitespace(xpp);
8316    while (eventType != XmlPullParser.END_TAG) {
8317  if (!parseDeviceUseStatementContent(eventType, xpp, res))
8318        unknownContent(xpp);
8319      eventType = nextNoWhitespace(xpp);
8320    }
8321    next(xpp);
8322    parseElementClose(res);
8323    return res;
8324  }
8325
8326  protected boolean parseDeviceUseStatementContent(int eventType, XmlPullParser xpp, DeviceUseStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
8327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8328        res.getIdentifier().add(parseIdentifier(xpp));
8329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8330        res.getBasedOn().add(parseReference(xpp));
8331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8332        res.setStatusElement(parseEnumeration(xpp, DeviceUseStatement.DeviceUseStatementStatus.NULL, new DeviceUseStatement.DeviceUseStatementStatusEnumFactory()));
8333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8334        res.setSubject(parseReference(xpp));
8335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
8336        res.getDerivedFrom().add(parseReference(xpp));
8337      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
8338        res.setTiming(parseType("timing", xpp));
8339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
8340        res.setRecordedOnElement(parseDateTime(xpp));
8341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8342        res.setSource(parseReference(xpp));
8343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
8344        res.setDevice(parseReference(xpp));
8345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8346        res.getReasonCode().add(parseCodeableConcept(xpp));
8347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8348        res.getReasonReference().add(parseReference(xpp));
8349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8350        res.setBodySite(parseCodeableConcept(xpp));
8351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8352        res.getNote().add(parseAnnotation(xpp));
8353      } else if (!parseDomainResourceContent(eventType, xpp, res))
8354        return false;
8355    return true;
8356  }
8357
8358  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8359    DiagnosticReport res = new DiagnosticReport();
8360    parseDomainResourceAttributes(xpp, res);
8361    next(xpp);
8362    int eventType = nextNoWhitespace(xpp);
8363    while (eventType != XmlPullParser.END_TAG) {
8364  if (!parseDiagnosticReportContent(eventType, xpp, res))
8365        unknownContent(xpp);
8366      eventType = nextNoWhitespace(xpp);
8367    }
8368    next(xpp);
8369    parseElementClose(res);
8370    return res;
8371  }
8372
8373  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
8374      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8375        res.getIdentifier().add(parseIdentifier(xpp));
8376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8377        res.getBasedOn().add(parseReference(xpp));
8378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8379        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
8380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8381        res.getCategory().add(parseCodeableConcept(xpp));
8382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8383        res.setCode(parseCodeableConcept(xpp));
8384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8385        res.setSubject(parseReference(xpp));
8386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8387        res.setEncounter(parseReference(xpp));
8388      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
8389        res.setEffective(parseType("effective", xpp));
8390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
8391        res.setIssuedElement(parseInstant(xpp));
8392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8393        res.getPerformer().add(parseReference(xpp));
8394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsInterpreter")) {
8395        res.getResultsInterpreter().add(parseReference(xpp));
8396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
8397        res.getSpecimen().add(parseReference(xpp));
8398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
8399        res.getResult().add(parseReference(xpp));
8400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
8401        res.getImagingStudy().add(parseReference(xpp));
8402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
8403        res.getMedia().add(parseDiagnosticReportDiagnosticReportMediaComponent(xpp, res));
8404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
8405        res.setConclusionElement(parseString(xpp));
8406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusionCode")) {
8407        res.getConclusionCode().add(parseCodeableConcept(xpp));
8408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
8409        res.getPresentedForm().add(parseAttachment(xpp));
8410      } else if (!parseDomainResourceContent(eventType, xpp, res))
8411        return false;
8412    return true;
8413  }
8414
8415  protected DiagnosticReport.DiagnosticReportMediaComponent parseDiagnosticReportDiagnosticReportMediaComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8416    DiagnosticReport.DiagnosticReportMediaComponent res = new DiagnosticReport.DiagnosticReportMediaComponent();
8417    parseBackboneAttributes(xpp, res);
8418    next(xpp);
8419    int eventType = nextNoWhitespace(xpp);
8420    while (eventType != XmlPullParser.END_TAG) {
8421  if (!parseDiagnosticReportDiagnosticReportMediaComponentContent(eventType, xpp, owner, res))
8422        unknownContent(xpp);
8423      eventType = nextNoWhitespace(xpp);
8424    }
8425    next(xpp);
8426    parseElementClose(res);
8427    return res;
8428  }
8429
8430  protected boolean parseDiagnosticReportDiagnosticReportMediaComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportMediaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8431      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
8432        res.setCommentElement(parseString(xpp));
8433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
8434        res.setLink(parseReference(xpp));
8435      } else if (!parseBackboneElementContent(eventType, xpp, res))
8436        return false;
8437    return true;
8438  }
8439
8440  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8441    DocumentManifest res = new DocumentManifest();
8442    parseDomainResourceAttributes(xpp, res);
8443    next(xpp);
8444    int eventType = nextNoWhitespace(xpp);
8445    while (eventType != XmlPullParser.END_TAG) {
8446  if (!parseDocumentManifestContent(eventType, xpp, res))
8447        unknownContent(xpp);
8448      eventType = nextNoWhitespace(xpp);
8449    }
8450    next(xpp);
8451    parseElementClose(res);
8452    return res;
8453  }
8454
8455  protected boolean parseDocumentManifestContent(int eventType, XmlPullParser xpp, DocumentManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
8456      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
8457        res.setMasterIdentifier(parseIdentifier(xpp));
8458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8459        res.getIdentifier().add(parseIdentifier(xpp));
8460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8461        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
8462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8463        res.setType(parseCodeableConcept(xpp));
8464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8465        res.setSubject(parseReference(xpp));
8466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8467        res.setCreatedElement(parseDateTime(xpp));
8468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8469        res.getAuthor().add(parseReference(xpp));
8470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
8471        res.getRecipient().add(parseReference(xpp));
8472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8473        res.setSourceElement(parseUri(xpp));
8474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8475        res.setDescriptionElement(parseString(xpp));
8476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8477        res.getContent().add(parseReference(xpp));
8478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8479        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
8480      } else if (!parseDomainResourceContent(eventType, xpp, res))
8481        return false;
8482    return true;
8483  }
8484
8485  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8486    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
8487    parseBackboneAttributes(xpp, res);
8488    next(xpp);
8489    int eventType = nextNoWhitespace(xpp);
8490    while (eventType != XmlPullParser.END_TAG) {
8491  if (!parseDocumentManifestDocumentManifestRelatedComponentContent(eventType, xpp, owner, res))
8492        unknownContent(xpp);
8493      eventType = nextNoWhitespace(xpp);
8494    }
8495    next(xpp);
8496    parseElementClose(res);
8497    return res;
8498  }
8499
8500  protected boolean parseDocumentManifestDocumentManifestRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8502        res.setIdentifier(parseIdentifier(xpp));
8503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
8504        res.setRef(parseReference(xpp));
8505      } else if (!parseBackboneElementContent(eventType, xpp, res))
8506        return false;
8507    return true;
8508  }
8509
8510  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8511    DocumentReference res = new DocumentReference();
8512    parseDomainResourceAttributes(xpp, res);
8513    next(xpp);
8514    int eventType = nextNoWhitespace(xpp);
8515    while (eventType != XmlPullParser.END_TAG) {
8516  if (!parseDocumentReferenceContent(eventType, xpp, res))
8517        unknownContent(xpp);
8518      eventType = nextNoWhitespace(xpp);
8519    }
8520    next(xpp);
8521    parseElementClose(res);
8522    return res;
8523  }
8524
8525  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
8526      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
8527        res.setMasterIdentifier(parseIdentifier(xpp));
8528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8529        res.getIdentifier().add(parseIdentifier(xpp));
8530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8531        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
8532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
8533        res.setDocStatusElement(parseEnumeration(xpp, DocumentReference.ReferredDocumentStatus.NULL, new DocumentReference.ReferredDocumentStatusEnumFactory()));
8534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8535        res.setType(parseCodeableConcept(xpp));
8536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8537        res.getCategory().add(parseCodeableConcept(xpp));
8538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8539        res.setSubject(parseReference(xpp));
8540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8541        res.setDateElement(parseInstant(xpp));
8542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8543        res.getAuthor().add(parseReference(xpp));
8544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
8545        res.setAuthenticator(parseReference(xpp));
8546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
8547        res.setCustodian(parseReference(xpp));
8548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
8549        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
8550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8551        res.setDescriptionElement(parseString(xpp));
8552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
8553        res.getSecurityLabel().add(parseCodeableConcept(xpp));
8554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8555        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
8556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
8557        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
8558      } else if (!parseDomainResourceContent(eventType, xpp, res))
8559        return false;
8560    return true;
8561  }
8562
8563  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8564    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
8565    parseBackboneAttributes(xpp, res);
8566    next(xpp);
8567    int eventType = nextNoWhitespace(xpp);
8568    while (eventType != XmlPullParser.END_TAG) {
8569  if (!parseDocumentReferenceDocumentReferenceRelatesToComponentContent(eventType, xpp, owner, res))
8570        unknownContent(xpp);
8571      eventType = nextNoWhitespace(xpp);
8572    }
8573    next(xpp);
8574    parseElementClose(res);
8575    return res;
8576  }
8577
8578  protected boolean parseDocumentReferenceDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8579      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8580        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
8581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8582        res.setTarget(parseReference(xpp));
8583      } else if (!parseBackboneElementContent(eventType, xpp, res))
8584        return false;
8585    return true;
8586  }
8587
8588  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8589    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
8590    parseBackboneAttributes(xpp, res);
8591    next(xpp);
8592    int eventType = nextNoWhitespace(xpp);
8593    while (eventType != XmlPullParser.END_TAG) {
8594  if (!parseDocumentReferenceDocumentReferenceContentComponentContent(eventType, xpp, owner, res))
8595        unknownContent(xpp);
8596      eventType = nextNoWhitespace(xpp);
8597    }
8598    next(xpp);
8599    parseElementClose(res);
8600    return res;
8601  }
8602
8603  protected boolean parseDocumentReferenceDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8604      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
8605        res.setAttachment(parseAttachment(xpp));
8606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
8607        res.setFormat(parseCoding(xpp));
8608      } else if (!parseBackboneElementContent(eventType, xpp, res))
8609        return false;
8610    return true;
8611  }
8612
8613  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8614    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
8615    parseBackboneAttributes(xpp, res);
8616    next(xpp);
8617    int eventType = nextNoWhitespace(xpp);
8618    while (eventType != XmlPullParser.END_TAG) {
8619  if (!parseDocumentReferenceDocumentReferenceContextComponentContent(eventType, xpp, owner, res))
8620        unknownContent(xpp);
8621      eventType = nextNoWhitespace(xpp);
8622    }
8623    next(xpp);
8624    parseElementClose(res);
8625    return res;
8626  }
8627
8628  protected boolean parseDocumentReferenceDocumentReferenceContextComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8630        res.getEncounter().add(parseReference(xpp));
8631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
8632        res.getEvent().add(parseCodeableConcept(xpp));
8633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8634        res.setPeriod(parsePeriod(xpp));
8635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
8636        res.setFacilityType(parseCodeableConcept(xpp));
8637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
8638        res.setPracticeSetting(parseCodeableConcept(xpp));
8639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
8640        res.setSourcePatientInfo(parseReference(xpp));
8641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8642        res.getRelated().add(parseReference(xpp));
8643      } else if (!parseBackboneElementContent(eventType, xpp, res))
8644        return false;
8645    return true;
8646  }
8647
8648  protected EffectEvidenceSynthesis parseEffectEvidenceSynthesis(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8649    EffectEvidenceSynthesis res = new EffectEvidenceSynthesis();
8650    parseDomainResourceAttributes(xpp, res);
8651    next(xpp);
8652    int eventType = nextNoWhitespace(xpp);
8653    while (eventType != XmlPullParser.END_TAG) {
8654  if (!parseEffectEvidenceSynthesisContent(eventType, xpp, res))
8655        unknownContent(xpp);
8656      eventType = nextNoWhitespace(xpp);
8657    }
8658    next(xpp);
8659    parseElementClose(res);
8660    return res;
8661  }
8662
8663  protected boolean parseEffectEvidenceSynthesisContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis res) throws XmlPullParserException, IOException, FHIRFormatError {
8664      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8665        res.setUrlElement(parseUri(xpp));
8666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8667        res.getIdentifier().add(parseIdentifier(xpp));
8668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8669        res.setVersionElement(parseString(xpp));
8670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8671        res.setNameElement(parseString(xpp));
8672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8673        res.setTitleElement(parseString(xpp));
8674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8675        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8677        res.setDateElement(parseDateTime(xpp));
8678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8679        res.setPublisherElement(parseString(xpp));
8680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8681        res.getContact().add(parseContactDetail(xpp));
8682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8683        res.setDescriptionElement(parseMarkdown(xpp));
8684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8685        res.getNote().add(parseAnnotation(xpp));
8686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8687        res.getUseContext().add(parseUsageContext(xpp));
8688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8689        res.getJurisdiction().add(parseCodeableConcept(xpp));
8690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
8691        res.setCopyrightElement(parseMarkdown(xpp));
8692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
8693        res.setApprovalDateElement(parseDate(xpp));
8694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
8695        res.setLastReviewDateElement(parseDate(xpp));
8696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
8697        res.setEffectivePeriod(parsePeriod(xpp));
8698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
8699        res.getTopic().add(parseCodeableConcept(xpp));
8700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8701        res.getAuthor().add(parseContactDetail(xpp));
8702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
8703        res.getEditor().add(parseContactDetail(xpp));
8704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
8705        res.getReviewer().add(parseContactDetail(xpp));
8706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
8707        res.getEndorser().add(parseContactDetail(xpp));
8708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
8709        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
8710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synthesisType")) {
8711        res.setSynthesisType(parseCodeableConcept(xpp));
8712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyType")) {
8713        res.setStudyType(parseCodeableConcept(xpp));
8714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
8715        res.setPopulation(parseReference(xpp));
8716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
8717        res.setExposure(parseReference(xpp));
8718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureAlternative")) {
8719        res.setExposureAlternative(parseReference(xpp));
8720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8721        res.setOutcome(parseReference(xpp));
8722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sampleSize")) {
8723        res.setSampleSize(parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(xpp, res));
8724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsByExposure")) {
8725        res.getResultsByExposure().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(xpp, res));
8726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectEstimate")) {
8727        res.getEffectEstimate().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(xpp, res));
8728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
8729        res.getCertainty().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(xpp, res));
8730      } else if (!parseDomainResourceContent(eventType, xpp, res))
8731        return false;
8732    return true;
8733  }
8734
8735  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8736    EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent();
8737    parseBackboneAttributes(xpp, res);
8738    next(xpp);
8739    int eventType = nextNoWhitespace(xpp);
8740    while (eventType != XmlPullParser.END_TAG) {
8741  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentContent(eventType, xpp, owner, res))
8742        unknownContent(xpp);
8743      eventType = nextNoWhitespace(xpp);
8744    }
8745    next(xpp);
8746    parseElementClose(res);
8747    return res;
8748  }
8749
8750  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8752        res.setDescriptionElement(parseString(xpp));
8753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfStudies")) {
8754        res.setNumberOfStudiesElement(parseInteger(xpp));
8755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfParticipants")) {
8756        res.setNumberOfParticipantsElement(parseInteger(xpp));
8757      } else if (!parseBackboneElementContent(eventType, xpp, res))
8758        return false;
8759    return true;
8760  }
8761
8762  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8763    EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent();
8764    parseBackboneAttributes(xpp, res);
8765    next(xpp);
8766    int eventType = nextNoWhitespace(xpp);
8767    while (eventType != XmlPullParser.END_TAG) {
8768  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentContent(eventType, xpp, owner, res))
8769        unknownContent(xpp);
8770      eventType = nextNoWhitespace(xpp);
8771    }
8772    next(xpp);
8773    parseElementClose(res);
8774    return res;
8775  }
8776
8777  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8778      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8779        res.setDescriptionElement(parseString(xpp));
8780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureState")) {
8781        res.setExposureStateElement(parseEnumeration(xpp, EffectEvidenceSynthesis.ExposureState.NULL, new EffectEvidenceSynthesis.ExposureStateEnumFactory()));
8782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantState")) {
8783        res.setVariantState(parseCodeableConcept(xpp));
8784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskEvidenceSynthesis")) {
8785        res.setRiskEvidenceSynthesis(parseReference(xpp));
8786      } else if (!parseBackboneElementContent(eventType, xpp, res))
8787        return false;
8788    return true;
8789  }
8790
8791  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8792    EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent();
8793    parseBackboneAttributes(xpp, res);
8794    next(xpp);
8795    int eventType = nextNoWhitespace(xpp);
8796    while (eventType != XmlPullParser.END_TAG) {
8797  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentContent(eventType, xpp, owner, res))
8798        unknownContent(xpp);
8799      eventType = nextNoWhitespace(xpp);
8800    }
8801    next(xpp);
8802    parseElementClose(res);
8803    return res;
8804  }
8805
8806  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8808        res.setDescriptionElement(parseString(xpp));
8809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8810        res.setType(parseCodeableConcept(xpp));
8811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantState")) {
8812        res.setVariantState(parseCodeableConcept(xpp));
8813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
8814        res.setValueElement(parseDecimal(xpp));
8815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
8816        res.setUnitOfMeasure(parseCodeableConcept(xpp));
8817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precisionEstimate")) {
8818        res.getPrecisionEstimate().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(xpp, owner));
8819      } else if (!parseBackboneElementContent(eventType, xpp, res))
8820        return false;
8821    return true;
8822  }
8823
8824  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8825    EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent();
8826    parseBackboneAttributes(xpp, res);
8827    next(xpp);
8828    int eventType = nextNoWhitespace(xpp);
8829    while (eventType != XmlPullParser.END_TAG) {
8830  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentContent(eventType, xpp, owner, res))
8831        unknownContent(xpp);
8832      eventType = nextNoWhitespace(xpp);
8833    }
8834    next(xpp);
8835    parseElementClose(res);
8836    return res;
8837  }
8838
8839  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8840      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8841        res.setType(parseCodeableConcept(xpp));
8842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("level")) {
8843        res.setLevelElement(parseDecimal(xpp));
8844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("from")) {
8845        res.setFromElement(parseDecimal(xpp));
8846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("to")) {
8847        res.setToElement(parseDecimal(xpp));
8848      } else if (!parseBackboneElementContent(eventType, xpp, res))
8849        return false;
8850    return true;
8851  }
8852
8853  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8854    EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent();
8855    parseBackboneAttributes(xpp, res);
8856    next(xpp);
8857    int eventType = nextNoWhitespace(xpp);
8858    while (eventType != XmlPullParser.END_TAG) {
8859  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentContent(eventType, xpp, owner, res))
8860        unknownContent(xpp);
8861      eventType = nextNoWhitespace(xpp);
8862    }
8863    next(xpp);
8864    parseElementClose(res);
8865    return res;
8866  }
8867
8868  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8869      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
8870        res.getRating().add(parseCodeableConcept(xpp));
8871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8872        res.getNote().add(parseAnnotation(xpp));
8873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certaintySubcomponent")) {
8874        res.getCertaintySubcomponent().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(xpp, owner));
8875      } else if (!parseBackboneElementContent(eventType, xpp, res))
8876        return false;
8877    return true;
8878  }
8879
8880  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8881    EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent();
8882    parseBackboneAttributes(xpp, res);
8883    next(xpp);
8884    int eventType = nextNoWhitespace(xpp);
8885    while (eventType != XmlPullParser.END_TAG) {
8886  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(eventType, xpp, owner, res))
8887        unknownContent(xpp);
8888      eventType = nextNoWhitespace(xpp);
8889    }
8890    next(xpp);
8891    parseElementClose(res);
8892    return res;
8893  }
8894
8895  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8896      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8897        res.setType(parseCodeableConcept(xpp));
8898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
8899        res.getRating().add(parseCodeableConcept(xpp));
8900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8901        res.getNote().add(parseAnnotation(xpp));
8902      } else if (!parseBackboneElementContent(eventType, xpp, res))
8903        return false;
8904    return true;
8905  }
8906
8907  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8908    Encounter res = new Encounter();
8909    parseDomainResourceAttributes(xpp, res);
8910    next(xpp);
8911    int eventType = nextNoWhitespace(xpp);
8912    while (eventType != XmlPullParser.END_TAG) {
8913  if (!parseEncounterContent(eventType, xpp, res))
8914        unknownContent(xpp);
8915      eventType = nextNoWhitespace(xpp);
8916    }
8917    next(xpp);
8918    parseElementClose(res);
8919    return res;
8920  }
8921
8922  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
8923      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8924        res.getIdentifier().add(parseIdentifier(xpp));
8925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8926        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
8927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
8928        res.getStatusHistory().add(parseEncounterStatusHistoryComponent(xpp, res));
8929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
8930        res.setClass_(parseCoding(xpp));
8931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classHistory")) {
8932        res.getClassHistory().add(parseEncounterClassHistoryComponent(xpp, res));
8933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8934        res.getType().add(parseCodeableConcept(xpp));
8935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
8936        res.setServiceType(parseCodeableConcept(xpp));
8937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8938        res.setPriority(parseCodeableConcept(xpp));
8939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8940        res.setSubject(parseReference(xpp));
8941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
8942        res.getEpisodeOfCare().add(parseReference(xpp));
8943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8944        res.getBasedOn().add(parseReference(xpp));
8945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
8946        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
8947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
8948        res.getAppointment().add(parseReference(xpp));
8949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8950        res.setPeriod(parsePeriod(xpp));
8951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
8952        res.setLength(parseDuration(xpp));
8953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8954        res.getReasonCode().add(parseCodeableConcept(xpp));
8955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8956        res.getReasonReference().add(parseReference(xpp));
8957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
8958        res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp, res));
8959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
8960        res.getAccount().add(parseReference(xpp));
8961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
8962        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
8963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8964        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
8965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
8966        res.setServiceProvider(parseReference(xpp));
8967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
8968        res.setPartOf(parseReference(xpp));
8969      } else if (!parseDomainResourceContent(eventType, xpp, res))
8970        return false;
8971    return true;
8972  }
8973
8974  protected Encounter.StatusHistoryComponent parseEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8975    Encounter.StatusHistoryComponent res = new Encounter.StatusHistoryComponent();
8976    parseBackboneAttributes(xpp, res);
8977    next(xpp);
8978    int eventType = nextNoWhitespace(xpp);
8979    while (eventType != XmlPullParser.END_TAG) {
8980  if (!parseEncounterStatusHistoryComponentContent(eventType, xpp, owner, res))
8981        unknownContent(xpp);
8982      eventType = nextNoWhitespace(xpp);
8983    }
8984    next(xpp);
8985    parseElementClose(res);
8986    return res;
8987  }
8988
8989  protected boolean parseEncounterStatusHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.StatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8990      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8991        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
8992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8993        res.setPeriod(parsePeriod(xpp));
8994      } else if (!parseBackboneElementContent(eventType, xpp, res))
8995        return false;
8996    return true;
8997  }
8998
8999  protected Encounter.ClassHistoryComponent parseEncounterClassHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9000    Encounter.ClassHistoryComponent res = new Encounter.ClassHistoryComponent();
9001    parseBackboneAttributes(xpp, res);
9002    next(xpp);
9003    int eventType = nextNoWhitespace(xpp);
9004    while (eventType != XmlPullParser.END_TAG) {
9005  if (!parseEncounterClassHistoryComponentContent(eventType, xpp, owner, res))
9006        unknownContent(xpp);
9007      eventType = nextNoWhitespace(xpp);
9008    }
9009    next(xpp);
9010    parseElementClose(res);
9011    return res;
9012  }
9013
9014  protected boolean parseEncounterClassHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.ClassHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9015      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
9016        res.setClass_(parseCoding(xpp));
9017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9018        res.setPeriod(parsePeriod(xpp));
9019      } else if (!parseBackboneElementContent(eventType, xpp, res))
9020        return false;
9021    return true;
9022  }
9023
9024  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9025    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
9026    parseBackboneAttributes(xpp, res);
9027    next(xpp);
9028    int eventType = nextNoWhitespace(xpp);
9029    while (eventType != XmlPullParser.END_TAG) {
9030  if (!parseEncounterEncounterParticipantComponentContent(eventType, xpp, owner, res))
9031        unknownContent(xpp);
9032      eventType = nextNoWhitespace(xpp);
9033    }
9034    next(xpp);
9035    parseElementClose(res);
9036    return res;
9037  }
9038
9039  protected boolean parseEncounterEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9040      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9041        res.getType().add(parseCodeableConcept(xpp));
9042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9043        res.setPeriod(parsePeriod(xpp));
9044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
9045        res.setIndividual(parseReference(xpp));
9046      } else if (!parseBackboneElementContent(eventType, xpp, res))
9047        return false;
9048    return true;
9049  }
9050
9051  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9052    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
9053    parseBackboneAttributes(xpp, res);
9054    next(xpp);
9055    int eventType = nextNoWhitespace(xpp);
9056    while (eventType != XmlPullParser.END_TAG) {
9057  if (!parseEncounterDiagnosisComponentContent(eventType, xpp, owner, res))
9058        unknownContent(xpp);
9059      eventType = nextNoWhitespace(xpp);
9060    }
9061    next(xpp);
9062    parseElementClose(res);
9063    return res;
9064  }
9065
9066  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9067      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
9068        res.setCondition(parseReference(xpp));
9069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9070        res.setUse(parseCodeableConcept(xpp));
9071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
9072        res.setRankElement(parsePositiveInt(xpp));
9073      } else if (!parseBackboneElementContent(eventType, xpp, res))
9074        return false;
9075    return true;
9076  }
9077
9078  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9079    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
9080    parseBackboneAttributes(xpp, res);
9081    next(xpp);
9082    int eventType = nextNoWhitespace(xpp);
9083    while (eventType != XmlPullParser.END_TAG) {
9084  if (!parseEncounterEncounterHospitalizationComponentContent(eventType, xpp, owner, res))
9085        unknownContent(xpp);
9086      eventType = nextNoWhitespace(xpp);
9087    }
9088    next(xpp);
9089    parseElementClose(res);
9090    return res;
9091  }
9092
9093  protected boolean parseEncounterEncounterHospitalizationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterHospitalizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9094      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
9095        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
9096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
9097        res.setOrigin(parseReference(xpp));
9098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
9099        res.setAdmitSource(parseCodeableConcept(xpp));
9100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
9101        res.setReAdmission(parseCodeableConcept(xpp));
9102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
9103        res.getDietPreference().add(parseCodeableConcept(xpp));
9104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
9105        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
9106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
9107        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
9108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9109        res.setDestination(parseReference(xpp));
9110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
9111        res.setDischargeDisposition(parseCodeableConcept(xpp));
9112      } else if (!parseBackboneElementContent(eventType, xpp, res))
9113        return false;
9114    return true;
9115  }
9116
9117  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9118    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
9119    parseBackboneAttributes(xpp, res);
9120    next(xpp);
9121    int eventType = nextNoWhitespace(xpp);
9122    while (eventType != XmlPullParser.END_TAG) {
9123  if (!parseEncounterEncounterLocationComponentContent(eventType, xpp, owner, res))
9124        unknownContent(xpp);
9125      eventType = nextNoWhitespace(xpp);
9126    }
9127    next(xpp);
9128    parseElementClose(res);
9129    return res;
9130  }
9131
9132  protected boolean parseEncounterEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9133      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9134        res.setLocation(parseReference(xpp));
9135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9136        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
9137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
9138        res.setPhysicalType(parseCodeableConcept(xpp));
9139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9140        res.setPeriod(parsePeriod(xpp));
9141      } else if (!parseBackboneElementContent(eventType, xpp, res))
9142        return false;
9143    return true;
9144  }
9145
9146  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9147    Endpoint res = new Endpoint();
9148    parseDomainResourceAttributes(xpp, res);
9149    next(xpp);
9150    int eventType = nextNoWhitespace(xpp);
9151    while (eventType != XmlPullParser.END_TAG) {
9152  if (!parseEndpointContent(eventType, xpp, res))
9153        unknownContent(xpp);
9154      eventType = nextNoWhitespace(xpp);
9155    }
9156    next(xpp);
9157    parseElementClose(res);
9158    return res;
9159  }
9160
9161  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
9162      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9163        res.getIdentifier().add(parseIdentifier(xpp));
9164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9165        res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
9166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
9167        res.setConnectionType(parseCoding(xpp));
9168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9169        res.setNameElement(parseString(xpp));
9170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
9171        res.setManagingOrganization(parseReference(xpp));
9172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9173        res.getContact().add(parseContactPoint(xpp));
9174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9175        res.setPeriod(parsePeriod(xpp));
9176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadType")) {
9177        res.getPayloadType().add(parseCodeableConcept(xpp));
9178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadMimeType")) {
9179        res.getPayloadMimeType().add(parseCode(xpp));
9180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
9181        res.setAddressElement(parseUrl(xpp));
9182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
9183        res.getHeader().add(parseString(xpp));
9184      } else if (!parseDomainResourceContent(eventType, xpp, res))
9185        return false;
9186    return true;
9187  }
9188
9189  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9190    EnrollmentRequest res = new EnrollmentRequest();
9191    parseDomainResourceAttributes(xpp, res);
9192    next(xpp);
9193    int eventType = nextNoWhitespace(xpp);
9194    while (eventType != XmlPullParser.END_TAG) {
9195  if (!parseEnrollmentRequestContent(eventType, xpp, res))
9196        unknownContent(xpp);
9197      eventType = nextNoWhitespace(xpp);
9198    }
9199    next(xpp);
9200    parseElementClose(res);
9201    return res;
9202  }
9203
9204  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
9205      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9206        res.getIdentifier().add(parseIdentifier(xpp));
9207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9208        res.setStatusElement(parseEnumeration(xpp, EnrollmentRequest.EnrollmentRequestStatus.NULL, new EnrollmentRequest.EnrollmentRequestStatusEnumFactory()));
9209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9210        res.setCreatedElement(parseDateTime(xpp));
9211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
9212        res.setInsurer(parseReference(xpp));
9213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9214        res.setProvider(parseReference(xpp));
9215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("candidate")) {
9216        res.setCandidate(parseReference(xpp));
9217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
9218        res.setCoverage(parseReference(xpp));
9219      } else if (!parseDomainResourceContent(eventType, xpp, res))
9220        return false;
9221    return true;
9222  }
9223
9224  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9225    EnrollmentResponse res = new EnrollmentResponse();
9226    parseDomainResourceAttributes(xpp, res);
9227    next(xpp);
9228    int eventType = nextNoWhitespace(xpp);
9229    while (eventType != XmlPullParser.END_TAG) {
9230  if (!parseEnrollmentResponseContent(eventType, xpp, res))
9231        unknownContent(xpp);
9232      eventType = nextNoWhitespace(xpp);
9233    }
9234    next(xpp);
9235    parseElementClose(res);
9236    return res;
9237  }
9238
9239  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
9240      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9241        res.getIdentifier().add(parseIdentifier(xpp));
9242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9243        res.setStatusElement(parseEnumeration(xpp, EnrollmentResponse.EnrollmentResponseStatus.NULL, new EnrollmentResponse.EnrollmentResponseStatusEnumFactory()));
9244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
9245        res.setRequest(parseReference(xpp));
9246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9247        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
9248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
9249        res.setDispositionElement(parseString(xpp));
9250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9251        res.setCreatedElement(parseDateTime(xpp));
9252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
9253        res.setOrganization(parseReference(xpp));
9254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
9255        res.setRequestProvider(parseReference(xpp));
9256      } else if (!parseDomainResourceContent(eventType, xpp, res))
9257        return false;
9258    return true;
9259  }
9260
9261  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9262    EpisodeOfCare res = new EpisodeOfCare();
9263    parseDomainResourceAttributes(xpp, res);
9264    next(xpp);
9265    int eventType = nextNoWhitespace(xpp);
9266    while (eventType != XmlPullParser.END_TAG) {
9267  if (!parseEpisodeOfCareContent(eventType, xpp, res))
9268        unknownContent(xpp);
9269      eventType = nextNoWhitespace(xpp);
9270    }
9271    next(xpp);
9272    parseElementClose(res);
9273    return res;
9274  }
9275
9276  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
9277      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9278        res.getIdentifier().add(parseIdentifier(xpp));
9279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9280        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
9281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
9282        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
9283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9284        res.getType().add(parseCodeableConcept(xpp));
9285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
9286        res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp, res));
9287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9288        res.setPatient(parseReference(xpp));
9289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
9290        res.setManagingOrganization(parseReference(xpp));
9291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9292        res.setPeriod(parsePeriod(xpp));
9293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
9294        res.getReferralRequest().add(parseReference(xpp));
9295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
9296        res.setCareManager(parseReference(xpp));
9297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
9298        res.getTeam().add(parseReference(xpp));
9299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
9300        res.getAccount().add(parseReference(xpp));
9301      } else if (!parseDomainResourceContent(eventType, xpp, res))
9302        return false;
9303    return true;
9304  }
9305
9306  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
9307    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
9308    parseBackboneAttributes(xpp, res);
9309    next(xpp);
9310    int eventType = nextNoWhitespace(xpp);
9311    while (eventType != XmlPullParser.END_TAG) {
9312  if (!parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, owner, res))
9313        unknownContent(xpp);
9314      eventType = nextNoWhitespace(xpp);
9315    }
9316    next(xpp);
9317    parseElementClose(res);
9318    return res;
9319  }
9320
9321  protected boolean parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9322      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9323        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
9324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9325        res.setPeriod(parsePeriod(xpp));
9326      } else if (!parseBackboneElementContent(eventType, xpp, res))
9327        return false;
9328    return true;
9329  }
9330
9331  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
9332    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
9333    parseBackboneAttributes(xpp, res);
9334    next(xpp);
9335    int eventType = nextNoWhitespace(xpp);
9336    while (eventType != XmlPullParser.END_TAG) {
9337  if (!parseEpisodeOfCareDiagnosisComponentContent(eventType, xpp, owner, res))
9338        unknownContent(xpp);
9339      eventType = nextNoWhitespace(xpp);
9340    }
9341    next(xpp);
9342    parseElementClose(res);
9343    return res;
9344  }
9345
9346  protected boolean parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9347      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
9348        res.setCondition(parseReference(xpp));
9349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9350        res.setRole(parseCodeableConcept(xpp));
9351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
9352        res.setRankElement(parsePositiveInt(xpp));
9353      } else if (!parseBackboneElementContent(eventType, xpp, res))
9354        return false;
9355    return true;
9356  }
9357
9358  protected EventDefinition parseEventDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9359    EventDefinition res = new EventDefinition();
9360    parseDomainResourceAttributes(xpp, res);
9361    next(xpp);
9362    int eventType = nextNoWhitespace(xpp);
9363    while (eventType != XmlPullParser.END_TAG) {
9364  if (!parseEventDefinitionContent(eventType, xpp, res))
9365        unknownContent(xpp);
9366      eventType = nextNoWhitespace(xpp);
9367    }
9368    next(xpp);
9369    parseElementClose(res);
9370    return res;
9371  }
9372
9373  protected boolean parseEventDefinitionContent(int eventType, XmlPullParser xpp, EventDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
9374      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9375        res.setUrlElement(parseUri(xpp));
9376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9377        res.getIdentifier().add(parseIdentifier(xpp));
9378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9379        res.setVersionElement(parseString(xpp));
9380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9381        res.setNameElement(parseString(xpp));
9382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9383        res.setTitleElement(parseString(xpp));
9384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9385        res.setSubtitleElement(parseString(xpp));
9386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9387        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9389        res.setExperimentalElement(parseBoolean(xpp));
9390      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
9391        res.setSubject(parseType("subject", xpp));
9392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9393        res.setDateElement(parseDateTime(xpp));
9394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9395        res.setPublisherElement(parseString(xpp));
9396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9397        res.getContact().add(parseContactDetail(xpp));
9398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9399        res.setDescriptionElement(parseMarkdown(xpp));
9400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9401        res.getUseContext().add(parseUsageContext(xpp));
9402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9403        res.getJurisdiction().add(parseCodeableConcept(xpp));
9404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9405        res.setPurposeElement(parseMarkdown(xpp));
9406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
9407        res.setUsageElement(parseString(xpp));
9408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9409        res.setCopyrightElement(parseMarkdown(xpp));
9410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9411        res.setApprovalDateElement(parseDate(xpp));
9412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9413        res.setLastReviewDateElement(parseDate(xpp));
9414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9415        res.setEffectivePeriod(parsePeriod(xpp));
9416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9417        res.getTopic().add(parseCodeableConcept(xpp));
9418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9419        res.getAuthor().add(parseContactDetail(xpp));
9420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9421        res.getEditor().add(parseContactDetail(xpp));
9422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9423        res.getReviewer().add(parseContactDetail(xpp));
9424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9425        res.getEndorser().add(parseContactDetail(xpp));
9426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9427        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
9429        res.getTrigger().add(parseTriggerDefinition(xpp));
9430      } else if (!parseDomainResourceContent(eventType, xpp, res))
9431        return false;
9432    return true;
9433  }
9434
9435  protected Evidence parseEvidence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9436    Evidence res = new Evidence();
9437    parseDomainResourceAttributes(xpp, res);
9438    next(xpp);
9439    int eventType = nextNoWhitespace(xpp);
9440    while (eventType != XmlPullParser.END_TAG) {
9441  if (!parseEvidenceContent(eventType, xpp, res))
9442        unknownContent(xpp);
9443      eventType = nextNoWhitespace(xpp);
9444    }
9445    next(xpp);
9446    parseElementClose(res);
9447    return res;
9448  }
9449
9450  protected boolean parseEvidenceContent(int eventType, XmlPullParser xpp, Evidence res) throws XmlPullParserException, IOException, FHIRFormatError {
9451      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9452        res.setUrlElement(parseUri(xpp));
9453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9454        res.getIdentifier().add(parseIdentifier(xpp));
9455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9456        res.setVersionElement(parseString(xpp));
9457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9458        res.setNameElement(parseString(xpp));
9459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9460        res.setTitleElement(parseString(xpp));
9461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
9462        res.setShortTitleElement(parseString(xpp));
9463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9464        res.setSubtitleElement(parseString(xpp));
9465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9466        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9468        res.setDateElement(parseDateTime(xpp));
9469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9470        res.setPublisherElement(parseString(xpp));
9471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9472        res.getContact().add(parseContactDetail(xpp));
9473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9474        res.setDescriptionElement(parseMarkdown(xpp));
9475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9476        res.getNote().add(parseAnnotation(xpp));
9477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9478        res.getUseContext().add(parseUsageContext(xpp));
9479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9480        res.getJurisdiction().add(parseCodeableConcept(xpp));
9481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9482        res.setCopyrightElement(parseMarkdown(xpp));
9483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9484        res.setApprovalDateElement(parseDate(xpp));
9485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9486        res.setLastReviewDateElement(parseDate(xpp));
9487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9488        res.setEffectivePeriod(parsePeriod(xpp));
9489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9490        res.getTopic().add(parseCodeableConcept(xpp));
9491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9492        res.getAuthor().add(parseContactDetail(xpp));
9493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9494        res.getEditor().add(parseContactDetail(xpp));
9495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9496        res.getReviewer().add(parseContactDetail(xpp));
9497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9498        res.getEndorser().add(parseContactDetail(xpp));
9499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9500        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureBackground")) {
9502        res.setExposureBackground(parseReference(xpp));
9503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureVariant")) {
9504        res.getExposureVariant().add(parseReference(xpp));
9505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9506        res.getOutcome().add(parseReference(xpp));
9507      } else if (!parseDomainResourceContent(eventType, xpp, res))
9508        return false;
9509    return true;
9510  }
9511
9512  protected EvidenceVariable parseEvidenceVariable(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9513    EvidenceVariable res = new EvidenceVariable();
9514    parseDomainResourceAttributes(xpp, res);
9515    next(xpp);
9516    int eventType = nextNoWhitespace(xpp);
9517    while (eventType != XmlPullParser.END_TAG) {
9518  if (!parseEvidenceVariableContent(eventType, xpp, res))
9519        unknownContent(xpp);
9520      eventType = nextNoWhitespace(xpp);
9521    }
9522    next(xpp);
9523    parseElementClose(res);
9524    return res;
9525  }
9526
9527  protected boolean parseEvidenceVariableContent(int eventType, XmlPullParser xpp, EvidenceVariable res) throws XmlPullParserException, IOException, FHIRFormatError {
9528      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9529        res.setUrlElement(parseUri(xpp));
9530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9531        res.getIdentifier().add(parseIdentifier(xpp));
9532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9533        res.setVersionElement(parseString(xpp));
9534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9535        res.setNameElement(parseString(xpp));
9536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9537        res.setTitleElement(parseString(xpp));
9538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
9539        res.setShortTitleElement(parseString(xpp));
9540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9541        res.setSubtitleElement(parseString(xpp));
9542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9543        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9545        res.setDateElement(parseDateTime(xpp));
9546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9547        res.setPublisherElement(parseString(xpp));
9548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9549        res.getContact().add(parseContactDetail(xpp));
9550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9551        res.setDescriptionElement(parseMarkdown(xpp));
9552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9553        res.getNote().add(parseAnnotation(xpp));
9554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9555        res.getUseContext().add(parseUsageContext(xpp));
9556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9557        res.getJurisdiction().add(parseCodeableConcept(xpp));
9558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9559        res.setCopyrightElement(parseMarkdown(xpp));
9560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9561        res.setApprovalDateElement(parseDate(xpp));
9562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9563        res.setLastReviewDateElement(parseDate(xpp));
9564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9565        res.setEffectivePeriod(parsePeriod(xpp));
9566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9567        res.getTopic().add(parseCodeableConcept(xpp));
9568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9569        res.getAuthor().add(parseContactDetail(xpp));
9570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9571        res.getEditor().add(parseContactDetail(xpp));
9572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9573        res.getReviewer().add(parseContactDetail(xpp));
9574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9575        res.getEndorser().add(parseContactDetail(xpp));
9576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9577        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9579        res.setTypeElement(parseEnumeration(xpp, EvidenceVariable.EvidenceVariableType.NULL, new EvidenceVariable.EvidenceVariableTypeEnumFactory()));
9580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
9581        res.getCharacteristic().add(parseEvidenceVariableEvidenceVariableCharacteristicComponent(xpp, res));
9582      } else if (!parseDomainResourceContent(eventType, xpp, res))
9583        return false;
9584    return true;
9585  }
9586
9587  protected EvidenceVariable.EvidenceVariableCharacteristicComponent parseEvidenceVariableEvidenceVariableCharacteristicComponent(XmlPullParser xpp, EvidenceVariable owner) throws XmlPullParserException, IOException, FHIRFormatError {
9588    EvidenceVariable.EvidenceVariableCharacteristicComponent res = new EvidenceVariable.EvidenceVariableCharacteristicComponent();
9589    parseBackboneAttributes(xpp, res);
9590    next(xpp);
9591    int eventType = nextNoWhitespace(xpp);
9592    while (eventType != XmlPullParser.END_TAG) {
9593  if (!parseEvidenceVariableEvidenceVariableCharacteristicComponentContent(eventType, xpp, owner, res))
9594        unknownContent(xpp);
9595      eventType = nextNoWhitespace(xpp);
9596    }
9597    next(xpp);
9598    parseElementClose(res);
9599    return res;
9600  }
9601
9602  protected boolean parseEvidenceVariableEvidenceVariableCharacteristicComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable owner, EvidenceVariable.EvidenceVariableCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9603      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9604        res.setDescriptionElement(parseString(xpp));
9605      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
9606        res.setDefinition(parseType("definition", xpp));
9607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageContext")) {
9608        res.getUsageContext().add(parseUsageContext(xpp));
9609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
9610        res.setExcludeElement(parseBoolean(xpp));
9611      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "participantEffective")) {
9612        res.setParticipantEffective(parseType("participantEffective", xpp));
9613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeFromStart")) {
9614        res.setTimeFromStart(parseDuration(xpp));
9615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupMeasure")) {
9616        res.setGroupMeasureElement(parseEnumeration(xpp, EvidenceVariable.GroupMeasure.NULL, new EvidenceVariable.GroupMeasureEnumFactory()));
9617      } else if (!parseBackboneElementContent(eventType, xpp, res))
9618        return false;
9619    return true;
9620  }
9621
9622  protected ExampleScenario parseExampleScenario(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9623    ExampleScenario res = new ExampleScenario();
9624    parseDomainResourceAttributes(xpp, res);
9625    next(xpp);
9626    int eventType = nextNoWhitespace(xpp);
9627    while (eventType != XmlPullParser.END_TAG) {
9628  if (!parseExampleScenarioContent(eventType, xpp, res))
9629        unknownContent(xpp);
9630      eventType = nextNoWhitespace(xpp);
9631    }
9632    next(xpp);
9633    parseElementClose(res);
9634    return res;
9635  }
9636
9637  protected boolean parseExampleScenarioContent(int eventType, XmlPullParser xpp, ExampleScenario res) throws XmlPullParserException, IOException, FHIRFormatError {
9638      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9639        res.setUrlElement(parseUri(xpp));
9640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9641        res.getIdentifier().add(parseIdentifier(xpp));
9642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9643        res.setVersionElement(parseString(xpp));
9644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9645        res.setNameElement(parseString(xpp));
9646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9647        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9649        res.setExperimentalElement(parseBoolean(xpp));
9650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9651        res.setDateElement(parseDateTime(xpp));
9652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9653        res.setPublisherElement(parseString(xpp));
9654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9655        res.getContact().add(parseContactDetail(xpp));
9656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9657        res.getUseContext().add(parseUsageContext(xpp));
9658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9659        res.getJurisdiction().add(parseCodeableConcept(xpp));
9660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9661        res.setCopyrightElement(parseMarkdown(xpp));
9662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9663        res.setPurposeElement(parseMarkdown(xpp));
9664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
9665        res.getActor().add(parseExampleScenarioExampleScenarioActorComponent(xpp, res));
9666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9667        res.getInstance().add(parseExampleScenarioExampleScenarioInstanceComponent(xpp, res));
9668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
9669        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, res));
9670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workflow")) {
9671        res.getWorkflow().add(parseCanonical(xpp));
9672      } else if (!parseDomainResourceContent(eventType, xpp, res))
9673        return false;
9674    return true;
9675  }
9676
9677  protected ExampleScenario.ExampleScenarioActorComponent parseExampleScenarioExampleScenarioActorComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9678    ExampleScenario.ExampleScenarioActorComponent res = new ExampleScenario.ExampleScenarioActorComponent();
9679    parseBackboneAttributes(xpp, res);
9680    next(xpp);
9681    int eventType = nextNoWhitespace(xpp);
9682    while (eventType != XmlPullParser.END_TAG) {
9683  if (!parseExampleScenarioExampleScenarioActorComponentContent(eventType, xpp, owner, res))
9684        unknownContent(xpp);
9685      eventType = nextNoWhitespace(xpp);
9686    }
9687    next(xpp);
9688    parseElementClose(res);
9689    return res;
9690  }
9691
9692  protected boolean parseExampleScenarioExampleScenarioActorComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actorId")) {
9694        res.setActorIdElement(parseString(xpp));
9695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9696        res.setTypeElement(parseEnumeration(xpp, ExampleScenario.ExampleScenarioActorType.NULL, new ExampleScenario.ExampleScenarioActorTypeEnumFactory()));
9697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9698        res.setNameElement(parseString(xpp));
9699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9700        res.setDescriptionElement(parseMarkdown(xpp));
9701      } else if (!parseBackboneElementContent(eventType, xpp, res))
9702        return false;
9703    return true;
9704  }
9705
9706  protected ExampleScenario.ExampleScenarioInstanceComponent parseExampleScenarioExampleScenarioInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9707    ExampleScenario.ExampleScenarioInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceComponent();
9708    parseBackboneAttributes(xpp, res);
9709    next(xpp);
9710    int eventType = nextNoWhitespace(xpp);
9711    while (eventType != XmlPullParser.END_TAG) {
9712  if (!parseExampleScenarioExampleScenarioInstanceComponentContent(eventType, xpp, owner, res))
9713        unknownContent(xpp);
9714      eventType = nextNoWhitespace(xpp);
9715    }
9716    next(xpp);
9717    parseElementClose(res);
9718    return res;
9719  }
9720
9721  protected boolean parseExampleScenarioExampleScenarioInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9722      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
9723        res.setResourceIdElement(parseString(xpp));
9724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
9725        res.setResourceTypeElement(parseEnumeration(xpp, ExampleScenario.FHIRResourceType.NULL, new ExampleScenario.FHIRResourceTypeEnumFactory()));
9726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9727        res.setNameElement(parseString(xpp));
9728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9729        res.setDescriptionElement(parseMarkdown(xpp));
9730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9731        res.getVersion().add(parseExampleScenarioExampleScenarioInstanceVersionComponent(xpp, owner));
9732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedInstance")) {
9733        res.getContainedInstance().add(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9734      } else if (!parseBackboneElementContent(eventType, xpp, res))
9735        return false;
9736    return true;
9737  }
9738
9739  protected ExampleScenario.ExampleScenarioInstanceVersionComponent parseExampleScenarioExampleScenarioInstanceVersionComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9740    ExampleScenario.ExampleScenarioInstanceVersionComponent res = new ExampleScenario.ExampleScenarioInstanceVersionComponent();
9741    parseBackboneAttributes(xpp, res);
9742    next(xpp);
9743    int eventType = nextNoWhitespace(xpp);
9744    while (eventType != XmlPullParser.END_TAG) {
9745  if (!parseExampleScenarioExampleScenarioInstanceVersionComponentContent(eventType, xpp, owner, res))
9746        unknownContent(xpp);
9747      eventType = nextNoWhitespace(xpp);
9748    }
9749    next(xpp);
9750    parseElementClose(res);
9751    return res;
9752  }
9753
9754  protected boolean parseExampleScenarioExampleScenarioInstanceVersionComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9755      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
9756        res.setVersionIdElement(parseString(xpp));
9757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9758        res.setDescriptionElement(parseMarkdown(xpp));
9759      } else if (!parseBackboneElementContent(eventType, xpp, res))
9760        return false;
9761    return true;
9762  }
9763
9764  protected ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9765    ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent();
9766    parseBackboneAttributes(xpp, res);
9767    next(xpp);
9768    int eventType = nextNoWhitespace(xpp);
9769    while (eventType != XmlPullParser.END_TAG) {
9770  if (!parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(eventType, xpp, owner, res))
9771        unknownContent(xpp);
9772      eventType = nextNoWhitespace(xpp);
9773    }
9774    next(xpp);
9775    parseElementClose(res);
9776    return res;
9777  }
9778
9779  protected boolean parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9780      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
9781        res.setResourceIdElement(parseString(xpp));
9782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
9783        res.setVersionIdElement(parseString(xpp));
9784      } else if (!parseBackboneElementContent(eventType, xpp, res))
9785        return false;
9786    return true;
9787  }
9788
9789  protected ExampleScenario.ExampleScenarioProcessComponent parseExampleScenarioExampleScenarioProcessComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9790    ExampleScenario.ExampleScenarioProcessComponent res = new ExampleScenario.ExampleScenarioProcessComponent();
9791    parseBackboneAttributes(xpp, res);
9792    next(xpp);
9793    int eventType = nextNoWhitespace(xpp);
9794    while (eventType != XmlPullParser.END_TAG) {
9795  if (!parseExampleScenarioExampleScenarioProcessComponentContent(eventType, xpp, owner, res))
9796        unknownContent(xpp);
9797      eventType = nextNoWhitespace(xpp);
9798    }
9799    next(xpp);
9800    parseElementClose(res);
9801    return res;
9802  }
9803
9804  protected boolean parseExampleScenarioExampleScenarioProcessComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9805      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9806        res.setTitleElement(parseString(xpp));
9807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9808        res.setDescriptionElement(parseMarkdown(xpp));
9809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preConditions")) {
9810        res.setPreConditionsElement(parseMarkdown(xpp));
9811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postConditions")) {
9812        res.setPostConditionsElement(parseMarkdown(xpp));
9813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
9814        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
9815      } else if (!parseBackboneElementContent(eventType, xpp, res))
9816        return false;
9817    return true;
9818  }
9819
9820  protected ExampleScenario.ExampleScenarioProcessStepComponent parseExampleScenarioExampleScenarioProcessStepComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9821    ExampleScenario.ExampleScenarioProcessStepComponent res = new ExampleScenario.ExampleScenarioProcessStepComponent();
9822    parseBackboneAttributes(xpp, res);
9823    next(xpp);
9824    int eventType = nextNoWhitespace(xpp);
9825    while (eventType != XmlPullParser.END_TAG) {
9826  if (!parseExampleScenarioExampleScenarioProcessStepComponentContent(eventType, xpp, owner, res))
9827        unknownContent(xpp);
9828      eventType = nextNoWhitespace(xpp);
9829    }
9830    next(xpp);
9831    parseElementClose(res);
9832    return res;
9833  }
9834
9835  protected boolean parseExampleScenarioExampleScenarioProcessStepComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9836      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
9837        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, owner));
9838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pause")) {
9839        res.setPauseElement(parseBoolean(xpp));
9840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
9841        res.setOperation(parseExampleScenarioExampleScenarioProcessStepOperationComponent(xpp, owner));
9842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternative")) {
9843        res.getAlternative().add(parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(xpp, owner));
9844      } else if (!parseBackboneElementContent(eventType, xpp, res))
9845        return false;
9846    return true;
9847  }
9848
9849  protected ExampleScenario.ExampleScenarioProcessStepOperationComponent parseExampleScenarioExampleScenarioProcessStepOperationComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9850    ExampleScenario.ExampleScenarioProcessStepOperationComponent res = new ExampleScenario.ExampleScenarioProcessStepOperationComponent();
9851    parseBackboneAttributes(xpp, res);
9852    next(xpp);
9853    int eventType = nextNoWhitespace(xpp);
9854    while (eventType != XmlPullParser.END_TAG) {
9855  if (!parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(eventType, xpp, owner, res))
9856        unknownContent(xpp);
9857      eventType = nextNoWhitespace(xpp);
9858    }
9859    next(xpp);
9860    parseElementClose(res);
9861    return res;
9862  }
9863
9864  protected boolean parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9865      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9866        res.setNumberElement(parseString(xpp));
9867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9868        res.setTypeElement(parseString(xpp));
9869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9870        res.setNameElement(parseString(xpp));
9871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiator")) {
9872        res.setInitiatorElement(parseString(xpp));
9873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
9874        res.setReceiverElement(parseString(xpp));
9875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9876        res.setDescriptionElement(parseMarkdown(xpp));
9877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiatorActive")) {
9878        res.setInitiatorActiveElement(parseBoolean(xpp));
9879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiverActive")) {
9880        res.setReceiverActiveElement(parseBoolean(xpp));
9881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
9882        res.setRequest(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
9884        res.setResponse(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9885      } else if (!parseBackboneElementContent(eventType, xpp, res))
9886        return false;
9887    return true;
9888  }
9889
9890  protected ExampleScenario.ExampleScenarioProcessStepAlternativeComponent parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9891    ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res = new ExampleScenario.ExampleScenarioProcessStepAlternativeComponent();
9892    parseBackboneAttributes(xpp, res);
9893    next(xpp);
9894    int eventType = nextNoWhitespace(xpp);
9895    while (eventType != XmlPullParser.END_TAG) {
9896  if (!parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(eventType, xpp, owner, res))
9897        unknownContent(xpp);
9898      eventType = nextNoWhitespace(xpp);
9899    }
9900    next(xpp);
9901    parseElementClose(res);
9902    return res;
9903  }
9904
9905  protected boolean parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9906      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9907        res.setTitleElement(parseString(xpp));
9908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9909        res.setDescriptionElement(parseMarkdown(xpp));
9910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
9911        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
9912      } else if (!parseBackboneElementContent(eventType, xpp, res))
9913        return false;
9914    return true;
9915  }
9916
9917  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9918    ExplanationOfBenefit res = new ExplanationOfBenefit();
9919    parseDomainResourceAttributes(xpp, res);
9920    next(xpp);
9921    int eventType = nextNoWhitespace(xpp);
9922    while (eventType != XmlPullParser.END_TAG) {
9923  if (!parseExplanationOfBenefitContent(eventType, xpp, res))
9924        unknownContent(xpp);
9925      eventType = nextNoWhitespace(xpp);
9926    }
9927    next(xpp);
9928    parseElementClose(res);
9929    return res;
9930  }
9931
9932  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
9933      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9934        res.getIdentifier().add(parseIdentifier(xpp));
9935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9936        res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
9937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9938        res.setType(parseCodeableConcept(xpp));
9939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
9940        res.setSubType(parseCodeableConcept(xpp));
9941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9942        res.setUseElement(parseEnumeration(xpp, ExplanationOfBenefit.Use.NULL, new ExplanationOfBenefit.UseEnumFactory()));
9943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9944        res.setPatient(parseReference(xpp));
9945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
9946        res.setBillablePeriod(parsePeriod(xpp));
9947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9948        res.setCreatedElement(parseDateTime(xpp));
9949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
9950        res.setEnterer(parseReference(xpp));
9951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
9952        res.setInsurer(parseReference(xpp));
9953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9954        res.setProvider(parseReference(xpp));
9955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
9956        res.setPriority(parseCodeableConcept(xpp));
9957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserveRequested")) {
9958        res.setFundsReserveRequested(parseCodeableConcept(xpp));
9959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
9960        res.setFundsReserve(parseCodeableConcept(xpp));
9961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
9962        res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp, res));
9963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
9964        res.setPrescription(parseReference(xpp));
9965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
9966        res.setOriginalPrescription(parseReference(xpp));
9967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
9968        res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp, res));
9969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
9970        res.setReferral(parseReference(xpp));
9971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
9972        res.setFacility(parseReference(xpp));
9973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
9974        res.setClaim(parseReference(xpp));
9975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
9976        res.setClaimResponse(parseReference(xpp));
9977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9978        res.setOutcomeElement(parseEnumeration(xpp, ExplanationOfBenefit.RemittanceOutcome.NULL, new ExplanationOfBenefit.RemittanceOutcomeEnumFactory()));
9979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
9980        res.setDispositionElement(parseString(xpp));
9981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
9982        res.getPreAuthRef().add(parseString(xpp));
9983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRefPeriod")) {
9984        res.getPreAuthRefPeriod().add(parsePeriod(xpp));
9985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
9986        res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp, res));
9987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
9988        res.getSupportingInfo().add(parseExplanationOfBenefitSupportingInformationComponent(xpp, res));
9989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
9990        res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp, res));
9991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
9992        res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp, res));
9993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
9994        res.setPrecedenceElement(parsePositiveInt(xpp));
9995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
9996        res.getInsurance().add(parseExplanationOfBenefitInsuranceComponent(xpp, res));
9997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
9998        res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp, res));
9999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10000        res.getItem().add(parseExplanationOfBenefitItemComponent(xpp, res));
10001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
10002        res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp, res));
10003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10004        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, res));
10005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
10006        res.getTotal().add(parseExplanationOfBenefitTotalComponent(xpp, res));
10007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
10008        res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp, res));
10009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
10010        res.setFormCode(parseCodeableConcept(xpp));
10011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
10012        res.setForm(parseAttachment(xpp));
10013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
10014        res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp, res));
10015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
10016        res.setBenefitPeriod(parsePeriod(xpp));
10017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
10018        res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp, res));
10019      } else if (!parseDomainResourceContent(eventType, xpp, res))
10020        return false;
10021    return true;
10022  }
10023
10024  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10025    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
10026    parseBackboneAttributes(xpp, res);
10027    next(xpp);
10028    int eventType = nextNoWhitespace(xpp);
10029    while (eventType != XmlPullParser.END_TAG) {
10030  if (!parseExplanationOfBenefitRelatedClaimComponentContent(eventType, xpp, owner, res))
10031        unknownContent(xpp);
10032      eventType = nextNoWhitespace(xpp);
10033    }
10034    next(xpp);
10035    parseElementClose(res);
10036    return res;
10037  }
10038
10039  protected boolean parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10040      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
10041        res.setClaim(parseReference(xpp));
10042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
10043        res.setRelationship(parseCodeableConcept(xpp));
10044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
10045        res.setReference(parseIdentifier(xpp));
10046      } else if (!parseBackboneElementContent(eventType, xpp, res))
10047        return false;
10048    return true;
10049  }
10050
10051  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10052    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
10053    parseBackboneAttributes(xpp, res);
10054    next(xpp);
10055    int eventType = nextNoWhitespace(xpp);
10056    while (eventType != XmlPullParser.END_TAG) {
10057  if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, owner, res))
10058        unknownContent(xpp);
10059      eventType = nextNoWhitespace(xpp);
10060    }
10061    next(xpp);
10062    parseElementClose(res);
10063    return res;
10064  }
10065
10066  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10067      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10068        res.setType(parseCodeableConcept(xpp));
10069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
10070        res.setParty(parseReference(xpp));
10071      } else if (!parseBackboneElementContent(eventType, xpp, res))
10072        return false;
10073    return true;
10074  }
10075
10076  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10077    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
10078    parseBackboneAttributes(xpp, res);
10079    next(xpp);
10080    int eventType = nextNoWhitespace(xpp);
10081    while (eventType != XmlPullParser.END_TAG) {
10082  if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, owner, res))
10083        unknownContent(xpp);
10084      eventType = nextNoWhitespace(xpp);
10085    }
10086    next(xpp);
10087    parseElementClose(res);
10088    return res;
10089  }
10090
10091  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10092      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10093        res.setSequenceElement(parsePositiveInt(xpp));
10094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10095        res.setProvider(parseReference(xpp));
10096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
10097        res.setResponsibleElement(parseBoolean(xpp));
10098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
10099        res.setRole(parseCodeableConcept(xpp));
10100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
10101        res.setQualification(parseCodeableConcept(xpp));
10102      } else if (!parseBackboneElementContent(eventType, xpp, res))
10103        return false;
10104    return true;
10105  }
10106
10107  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10108    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
10109    parseBackboneAttributes(xpp, res);
10110    next(xpp);
10111    int eventType = nextNoWhitespace(xpp);
10112    while (eventType != XmlPullParser.END_TAG) {
10113  if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, owner, res))
10114        unknownContent(xpp);
10115      eventType = nextNoWhitespace(xpp);
10116    }
10117    next(xpp);
10118    parseElementClose(res);
10119    return res;
10120  }
10121
10122  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10123      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10124        res.setSequenceElement(parsePositiveInt(xpp));
10125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10126        res.setCategory(parseCodeableConcept(xpp));
10127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10128        res.setCode(parseCodeableConcept(xpp));
10129      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
10130        res.setTiming(parseType("timing", xpp));
10131      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
10132        res.setValue(parseType("value", xpp));
10133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
10134        res.setReason(parseCoding(xpp));
10135      } else if (!parseBackboneElementContent(eventType, xpp, res))
10136        return false;
10137    return true;
10138  }
10139
10140  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10141    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
10142    parseBackboneAttributes(xpp, res);
10143    next(xpp);
10144    int eventType = nextNoWhitespace(xpp);
10145    while (eventType != XmlPullParser.END_TAG) {
10146  if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, owner, res))
10147        unknownContent(xpp);
10148      eventType = nextNoWhitespace(xpp);
10149    }
10150    next(xpp);
10151    parseElementClose(res);
10152    return res;
10153  }
10154
10155  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10156      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10157        res.setSequenceElement(parsePositiveInt(xpp));
10158      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
10159        res.setDiagnosis(parseType("diagnosis", xpp));
10160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10161        res.getType().add(parseCodeableConcept(xpp));
10162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
10163        res.setOnAdmission(parseCodeableConcept(xpp));
10164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
10165        res.setPackageCode(parseCodeableConcept(xpp));
10166      } else if (!parseBackboneElementContent(eventType, xpp, res))
10167        return false;
10168    return true;
10169  }
10170
10171  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10172    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
10173    parseBackboneAttributes(xpp, res);
10174    next(xpp);
10175    int eventType = nextNoWhitespace(xpp);
10176    while (eventType != XmlPullParser.END_TAG) {
10177  if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, owner, res))
10178        unknownContent(xpp);
10179      eventType = nextNoWhitespace(xpp);
10180    }
10181    next(xpp);
10182    parseElementClose(res);
10183    return res;
10184  }
10185
10186  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10187      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10188        res.setSequenceElement(parsePositiveInt(xpp));
10189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10190        res.getType().add(parseCodeableConcept(xpp));
10191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10192        res.setDateElement(parseDateTime(xpp));
10193      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
10194        res.setProcedure(parseType("procedure", xpp));
10195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10196        res.getUdi().add(parseReference(xpp));
10197      } else if (!parseBackboneElementContent(eventType, xpp, res))
10198        return false;
10199    return true;
10200  }
10201
10202  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10203    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
10204    parseBackboneAttributes(xpp, res);
10205    next(xpp);
10206    int eventType = nextNoWhitespace(xpp);
10207    while (eventType != XmlPullParser.END_TAG) {
10208  if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, owner, res))
10209        unknownContent(xpp);
10210      eventType = nextNoWhitespace(xpp);
10211    }
10212    next(xpp);
10213    parseElementClose(res);
10214    return res;
10215  }
10216
10217  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10218      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
10219        res.setFocalElement(parseBoolean(xpp));
10220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
10221        res.setCoverage(parseReference(xpp));
10222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
10223        res.getPreAuthRef().add(parseString(xpp));
10224      } else if (!parseBackboneElementContent(eventType, xpp, res))
10225        return false;
10226    return true;
10227  }
10228
10229  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10230    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
10231    parseBackboneAttributes(xpp, res);
10232    next(xpp);
10233    int eventType = nextNoWhitespace(xpp);
10234    while (eventType != XmlPullParser.END_TAG) {
10235  if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, owner, res))
10236        unknownContent(xpp);
10237      eventType = nextNoWhitespace(xpp);
10238    }
10239    next(xpp);
10240    parseElementClose(res);
10241    return res;
10242  }
10243
10244  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10245      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10246        res.setDateElement(parseDate(xpp));
10247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10248        res.setType(parseCodeableConcept(xpp));
10249      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10250        res.setLocation(parseType("location", xpp));
10251      } else if (!parseBackboneElementContent(eventType, xpp, res))
10252        return false;
10253    return true;
10254  }
10255
10256  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10257    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
10258    parseBackboneAttributes(xpp, res);
10259    next(xpp);
10260    int eventType = nextNoWhitespace(xpp);
10261    while (eventType != XmlPullParser.END_TAG) {
10262  if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, owner, res))
10263        unknownContent(xpp);
10264      eventType = nextNoWhitespace(xpp);
10265    }
10266    next(xpp);
10267    parseElementClose(res);
10268    return res;
10269  }
10270
10271  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10272      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10273        res.setSequenceElement(parsePositiveInt(xpp));
10274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
10275        res.getCareTeamSequence().add(parsePositiveInt(xpp));
10276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
10277        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
10278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
10279        res.getProcedureSequence().add(parsePositiveInt(xpp));
10280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
10281        res.getInformationSequence().add(parsePositiveInt(xpp));
10282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
10283        res.setRevenue(parseCodeableConcept(xpp));
10284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10285        res.setCategory(parseCodeableConcept(xpp));
10286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10287        res.setProductOrService(parseCodeableConcept(xpp));
10288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10289        res.getModifier().add(parseCodeableConcept(xpp));
10290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10291        res.getProgramCode().add(parseCodeableConcept(xpp));
10292      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
10293        res.setServiced(parseType("serviced", xpp));
10294      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10295        res.setLocation(parseType("location", xpp));
10296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10297        res.setQuantity(parseQuantity(xpp));
10298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10299        res.setUnitPrice(parseMoney(xpp));
10300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10301        res.setFactorElement(parseDecimal(xpp));
10302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10303        res.setNet(parseMoney(xpp));
10304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10305        res.getUdi().add(parseReference(xpp));
10306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10307        res.setBodySite(parseCodeableConcept(xpp));
10308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
10309        res.getSubSite().add(parseCodeableConcept(xpp));
10310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10311        res.getEncounter().add(parseReference(xpp));
10312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10313        res.getNoteNumber().add(parsePositiveInt(xpp));
10314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10315        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10317        res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp, owner));
10318      } else if (!parseBackboneElementContent(eventType, xpp, res))
10319        return false;
10320    return true;
10321  }
10322
10323  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10324    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
10325    parseBackboneAttributes(xpp, res);
10326    next(xpp);
10327    int eventType = nextNoWhitespace(xpp);
10328    while (eventType != XmlPullParser.END_TAG) {
10329  if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, owner, res))
10330        unknownContent(xpp);
10331      eventType = nextNoWhitespace(xpp);
10332    }
10333    next(xpp);
10334    parseElementClose(res);
10335    return res;
10336  }
10337
10338  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10340        res.setCategory(parseCodeableConcept(xpp));
10341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
10342        res.setReason(parseCodeableConcept(xpp));
10343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10344        res.setAmount(parseMoney(xpp));
10345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10346        res.setValueElement(parseDecimal(xpp));
10347      } else if (!parseBackboneElementContent(eventType, xpp, res))
10348        return false;
10349    return true;
10350  }
10351
10352  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10353    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
10354    parseBackboneAttributes(xpp, res);
10355    next(xpp);
10356    int eventType = nextNoWhitespace(xpp);
10357    while (eventType != XmlPullParser.END_TAG) {
10358  if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, owner, res))
10359        unknownContent(xpp);
10360      eventType = nextNoWhitespace(xpp);
10361    }
10362    next(xpp);
10363    parseElementClose(res);
10364    return res;
10365  }
10366
10367  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10368      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10369        res.setSequenceElement(parsePositiveInt(xpp));
10370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
10371        res.setRevenue(parseCodeableConcept(xpp));
10372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10373        res.setCategory(parseCodeableConcept(xpp));
10374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10375        res.setProductOrService(parseCodeableConcept(xpp));
10376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10377        res.getModifier().add(parseCodeableConcept(xpp));
10378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10379        res.getProgramCode().add(parseCodeableConcept(xpp));
10380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10381        res.setQuantity(parseQuantity(xpp));
10382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10383        res.setUnitPrice(parseMoney(xpp));
10384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10385        res.setFactorElement(parseDecimal(xpp));
10386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10387        res.setNet(parseMoney(xpp));
10388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10389        res.getUdi().add(parseReference(xpp));
10390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10391        res.getNoteNumber().add(parsePositiveInt(xpp));
10392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10393        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
10395        res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp, owner));
10396      } else if (!parseBackboneElementContent(eventType, xpp, res))
10397        return false;
10398    return true;
10399  }
10400
10401  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10402    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
10403    parseBackboneAttributes(xpp, res);
10404    next(xpp);
10405    int eventType = nextNoWhitespace(xpp);
10406    while (eventType != XmlPullParser.END_TAG) {
10407  if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, owner, res))
10408        unknownContent(xpp);
10409      eventType = nextNoWhitespace(xpp);
10410    }
10411    next(xpp);
10412    parseElementClose(res);
10413    return res;
10414  }
10415
10416  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10417      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10418        res.setSequenceElement(parsePositiveInt(xpp));
10419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
10420        res.setRevenue(parseCodeableConcept(xpp));
10421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10422        res.setCategory(parseCodeableConcept(xpp));
10423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10424        res.setProductOrService(parseCodeableConcept(xpp));
10425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10426        res.getModifier().add(parseCodeableConcept(xpp));
10427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10428        res.getProgramCode().add(parseCodeableConcept(xpp));
10429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10430        res.setQuantity(parseQuantity(xpp));
10431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10432        res.setUnitPrice(parseMoney(xpp));
10433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10434        res.setFactorElement(parseDecimal(xpp));
10435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10436        res.setNet(parseMoney(xpp));
10437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10438        res.getUdi().add(parseReference(xpp));
10439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10440        res.getNoteNumber().add(parsePositiveInt(xpp));
10441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10442        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10443      } else if (!parseBackboneElementContent(eventType, xpp, res))
10444        return false;
10445    return true;
10446  }
10447
10448  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10449    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
10450    parseBackboneAttributes(xpp, res);
10451    next(xpp);
10452    int eventType = nextNoWhitespace(xpp);
10453    while (eventType != XmlPullParser.END_TAG) {
10454  if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, owner, res))
10455        unknownContent(xpp);
10456      eventType = nextNoWhitespace(xpp);
10457    }
10458    next(xpp);
10459    parseElementClose(res);
10460    return res;
10461  }
10462
10463  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10464      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
10465        res.getItemSequence().add(parsePositiveInt(xpp));
10466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
10467        res.getDetailSequence().add(parsePositiveInt(xpp));
10468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
10469        res.getSubDetailSequence().add(parsePositiveInt(xpp));
10470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10471        res.getProvider().add(parseReference(xpp));
10472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10473        res.setProductOrService(parseCodeableConcept(xpp));
10474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10475        res.getModifier().add(parseCodeableConcept(xpp));
10476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10477        res.getProgramCode().add(parseCodeableConcept(xpp));
10478      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
10479        res.setServiced(parseType("serviced", xpp));
10480      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10481        res.setLocation(parseType("location", xpp));
10482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10483        res.setQuantity(parseQuantity(xpp));
10484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10485        res.setUnitPrice(parseMoney(xpp));
10486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10487        res.setFactorElement(parseDecimal(xpp));
10488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10489        res.setNet(parseMoney(xpp));
10490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10491        res.setBodySite(parseCodeableConcept(xpp));
10492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
10493        res.getSubSite().add(parseCodeableConcept(xpp));
10494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10495        res.getNoteNumber().add(parsePositiveInt(xpp));
10496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10497        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10499        res.getDetail().add(parseExplanationOfBenefitAddedItemDetailComponent(xpp, owner));
10500      } else if (!parseBackboneElementContent(eventType, xpp, res))
10501        return false;
10502    return true;
10503  }
10504
10505  protected ExplanationOfBenefit.AddedItemDetailComponent parseExplanationOfBenefitAddedItemDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10506    ExplanationOfBenefit.AddedItemDetailComponent res = new ExplanationOfBenefit.AddedItemDetailComponent();
10507    parseBackboneAttributes(xpp, res);
10508    next(xpp);
10509    int eventType = nextNoWhitespace(xpp);
10510    while (eventType != XmlPullParser.END_TAG) {
10511  if (!parseExplanationOfBenefitAddedItemDetailComponentContent(eventType, xpp, owner, res))
10512        unknownContent(xpp);
10513      eventType = nextNoWhitespace(xpp);
10514    }
10515    next(xpp);
10516    parseElementClose(res);
10517    return res;
10518  }
10519
10520  protected boolean parseExplanationOfBenefitAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10521      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10522        res.setProductOrService(parseCodeableConcept(xpp));
10523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10524        res.getModifier().add(parseCodeableConcept(xpp));
10525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10526        res.setQuantity(parseQuantity(xpp));
10527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10528        res.setUnitPrice(parseMoney(xpp));
10529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10530        res.setFactorElement(parseDecimal(xpp));
10531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10532        res.setNet(parseMoney(xpp));
10533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10534        res.getNoteNumber().add(parsePositiveInt(xpp));
10535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10536        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
10538        res.getSubDetail().add(parseExplanationOfBenefitAddedItemDetailSubDetailComponent(xpp, owner));
10539      } else if (!parseBackboneElementContent(eventType, xpp, res))
10540        return false;
10541    return true;
10542  }
10543
10544  protected ExplanationOfBenefit.AddedItemDetailSubDetailComponent parseExplanationOfBenefitAddedItemDetailSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10545    ExplanationOfBenefit.AddedItemDetailSubDetailComponent res = new ExplanationOfBenefit.AddedItemDetailSubDetailComponent();
10546    parseBackboneAttributes(xpp, res);
10547    next(xpp);
10548    int eventType = nextNoWhitespace(xpp);
10549    while (eventType != XmlPullParser.END_TAG) {
10550  if (!parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(eventType, xpp, owner, res))
10551        unknownContent(xpp);
10552      eventType = nextNoWhitespace(xpp);
10553    }
10554    next(xpp);
10555    parseElementClose(res);
10556    return res;
10557  }
10558
10559  protected boolean parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemDetailSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10560      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10561        res.setProductOrService(parseCodeableConcept(xpp));
10562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10563        res.getModifier().add(parseCodeableConcept(xpp));
10564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10565        res.setQuantity(parseQuantity(xpp));
10566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10567        res.setUnitPrice(parseMoney(xpp));
10568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10569        res.setFactorElement(parseDecimal(xpp));
10570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10571        res.setNet(parseMoney(xpp));
10572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10573        res.getNoteNumber().add(parsePositiveInt(xpp));
10574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10575        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10576      } else if (!parseBackboneElementContent(eventType, xpp, res))
10577        return false;
10578    return true;
10579  }
10580
10581  protected ExplanationOfBenefit.TotalComponent parseExplanationOfBenefitTotalComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10582    ExplanationOfBenefit.TotalComponent res = new ExplanationOfBenefit.TotalComponent();
10583    parseBackboneAttributes(xpp, res);
10584    next(xpp);
10585    int eventType = nextNoWhitespace(xpp);
10586    while (eventType != XmlPullParser.END_TAG) {
10587  if (!parseExplanationOfBenefitTotalComponentContent(eventType, xpp, owner, res))
10588        unknownContent(xpp);
10589      eventType = nextNoWhitespace(xpp);
10590    }
10591    next(xpp);
10592    parseElementClose(res);
10593    return res;
10594  }
10595
10596  protected boolean parseExplanationOfBenefitTotalComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10597      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10598        res.setCategory(parseCodeableConcept(xpp));
10599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10600        res.setAmount(parseMoney(xpp));
10601      } else if (!parseBackboneElementContent(eventType, xpp, res))
10602        return false;
10603    return true;
10604  }
10605
10606  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10607    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
10608    parseBackboneAttributes(xpp, res);
10609    next(xpp);
10610    int eventType = nextNoWhitespace(xpp);
10611    while (eventType != XmlPullParser.END_TAG) {
10612  if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, owner, res))
10613        unknownContent(xpp);
10614      eventType = nextNoWhitespace(xpp);
10615    }
10616    next(xpp);
10617    parseElementClose(res);
10618    return res;
10619  }
10620
10621  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10622      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10623        res.setType(parseCodeableConcept(xpp));
10624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
10625        res.setAdjustment(parseMoney(xpp));
10626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
10627        res.setAdjustmentReason(parseCodeableConcept(xpp));
10628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10629        res.setDateElement(parseDate(xpp));
10630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10631        res.setAmount(parseMoney(xpp));
10632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10633        res.setIdentifier(parseIdentifier(xpp));
10634      } else if (!parseBackboneElementContent(eventType, xpp, res))
10635        return false;
10636    return true;
10637  }
10638
10639  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10640    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
10641    parseBackboneAttributes(xpp, res);
10642    next(xpp);
10643    int eventType = nextNoWhitespace(xpp);
10644    while (eventType != XmlPullParser.END_TAG) {
10645  if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, owner, res))
10646        unknownContent(xpp);
10647      eventType = nextNoWhitespace(xpp);
10648    }
10649    next(xpp);
10650    parseElementClose(res);
10651    return res;
10652  }
10653
10654  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10655      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
10656        res.setNumberElement(parsePositiveInt(xpp));
10657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10658        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
10659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
10660        res.setTextElement(parseString(xpp));
10661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
10662        res.setLanguage(parseCodeableConcept(xpp));
10663      } else if (!parseBackboneElementContent(eventType, xpp, res))
10664        return false;
10665    return true;
10666  }
10667
10668  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10669    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
10670    parseBackboneAttributes(xpp, res);
10671    next(xpp);
10672    int eventType = nextNoWhitespace(xpp);
10673    while (eventType != XmlPullParser.END_TAG) {
10674  if (!parseExplanationOfBenefitBenefitBalanceComponentContent(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 parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10684      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10685        res.setCategory(parseCodeableConcept(xpp));
10686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
10687        res.setExcludedElement(parseBoolean(xpp));
10688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10689        res.setNameElement(parseString(xpp));
10690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10691        res.setDescriptionElement(parseString(xpp));
10692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
10693        res.setNetwork(parseCodeableConcept(xpp));
10694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
10695        res.setUnit(parseCodeableConcept(xpp));
10696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
10697        res.setTerm(parseCodeableConcept(xpp));
10698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
10699        res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp, owner));
10700      } else if (!parseBackboneElementContent(eventType, xpp, res))
10701        return false;
10702    return true;
10703  }
10704
10705  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10706    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
10707    parseBackboneAttributes(xpp, res);
10708    next(xpp);
10709    int eventType = nextNoWhitespace(xpp);
10710    while (eventType != XmlPullParser.END_TAG) {
10711  if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, owner, res))
10712        unknownContent(xpp);
10713      eventType = nextNoWhitespace(xpp);
10714    }
10715    next(xpp);
10716    parseElementClose(res);
10717    return res;
10718  }
10719
10720  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10721      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10722        res.setType(parseCodeableConcept(xpp));
10723      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
10724        res.setAllowed(parseType("allowed", xpp));
10725      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
10726        res.setUsed(parseType("used", xpp));
10727      } else if (!parseBackboneElementContent(eventType, xpp, res))
10728        return false;
10729    return true;
10730  }
10731
10732  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10733    FamilyMemberHistory res = new FamilyMemberHistory();
10734    parseDomainResourceAttributes(xpp, res);
10735    next(xpp);
10736    int eventType = nextNoWhitespace(xpp);
10737    while (eventType != XmlPullParser.END_TAG) {
10738  if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
10739        unknownContent(xpp);
10740      eventType = nextNoWhitespace(xpp);
10741    }
10742    next(xpp);
10743    parseElementClose(res);
10744    return res;
10745  }
10746
10747  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
10748      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10749        res.getIdentifier().add(parseIdentifier(xpp));
10750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
10751        res.getInstantiatesCanonical().add(parseCanonical(xpp));
10752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
10753        res.getInstantiatesUri().add(parseUri(xpp));
10754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10755        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
10756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
10757        res.setDataAbsentReason(parseCodeableConcept(xpp));
10758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10759        res.setPatient(parseReference(xpp));
10760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10761        res.setDateElement(parseDateTime(xpp));
10762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10763        res.setNameElement(parseString(xpp));
10764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
10765        res.setRelationship(parseCodeableConcept(xpp));
10766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sex")) {
10767        res.setSex(parseCodeableConcept(xpp));
10768      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
10769        res.setBorn(parseType("born", xpp));
10770      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
10771        res.setAge(parseType("age", xpp));
10772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
10773        res.setEstimatedAgeElement(parseBoolean(xpp));
10774      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
10775        res.setDeceased(parseType("deceased", xpp));
10776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10777        res.getReasonCode().add(parseCodeableConcept(xpp));
10778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10779        res.getReasonReference().add(parseReference(xpp));
10780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10781        res.getNote().add(parseAnnotation(xpp));
10782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
10783        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
10784      } else if (!parseDomainResourceContent(eventType, xpp, res))
10785        return false;
10786    return true;
10787  }
10788
10789  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
10790    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
10791    parseBackboneAttributes(xpp, res);
10792    next(xpp);
10793    int eventType = nextNoWhitespace(xpp);
10794    while (eventType != XmlPullParser.END_TAG) {
10795  if (!parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(eventType, xpp, owner, res))
10796        unknownContent(xpp);
10797      eventType = nextNoWhitespace(xpp);
10798    }
10799    next(xpp);
10800    parseElementClose(res);
10801    return res;
10802  }
10803
10804  protected boolean parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory owner, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10805      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10806        res.setCode(parseCodeableConcept(xpp));
10807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
10808        res.setOutcome(parseCodeableConcept(xpp));
10809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributedToDeath")) {
10810        res.setContributedToDeathElement(parseBoolean(xpp));
10811      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
10812        res.setOnset(parseType("onset", xpp));
10813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10814        res.getNote().add(parseAnnotation(xpp));
10815      } else if (!parseBackboneElementContent(eventType, xpp, res))
10816        return false;
10817    return true;
10818  }
10819
10820  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10821    Flag res = new Flag();
10822    parseDomainResourceAttributes(xpp, res);
10823    next(xpp);
10824    int eventType = nextNoWhitespace(xpp);
10825    while (eventType != XmlPullParser.END_TAG) {
10826  if (!parseFlagContent(eventType, xpp, res))
10827        unknownContent(xpp);
10828      eventType = nextNoWhitespace(xpp);
10829    }
10830    next(xpp);
10831    parseElementClose(res);
10832    return res;
10833  }
10834
10835  protected boolean parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
10836      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10837        res.getIdentifier().add(parseIdentifier(xpp));
10838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10839        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
10840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10841        res.getCategory().add(parseCodeableConcept(xpp));
10842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10843        res.setCode(parseCodeableConcept(xpp));
10844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10845        res.setSubject(parseReference(xpp));
10846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10847        res.setPeriod(parsePeriod(xpp));
10848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10849        res.setEncounter(parseReference(xpp));
10850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10851        res.setAuthor(parseReference(xpp));
10852      } else if (!parseDomainResourceContent(eventType, xpp, res))
10853        return false;
10854    return true;
10855  }
10856
10857  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10858    Goal res = new Goal();
10859    parseDomainResourceAttributes(xpp, res);
10860    next(xpp);
10861    int eventType = nextNoWhitespace(xpp);
10862    while (eventType != XmlPullParser.END_TAG) {
10863  if (!parseGoalContent(eventType, xpp, res))
10864        unknownContent(xpp);
10865      eventType = nextNoWhitespace(xpp);
10866    }
10867    next(xpp);
10868    parseElementClose(res);
10869    return res;
10870  }
10871
10872  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
10873      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10874        res.getIdentifier().add(parseIdentifier(xpp));
10875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycleStatus")) {
10876        res.setLifecycleStatusElement(parseEnumeration(xpp, Goal.GoalLifecycleStatus.NULL, new Goal.GoalLifecycleStatusEnumFactory()));
10877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("achievementStatus")) {
10878        res.setAchievementStatus(parseCodeableConcept(xpp));
10879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10880        res.getCategory().add(parseCodeableConcept(xpp));
10881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
10882        res.setPriority(parseCodeableConcept(xpp));
10883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10884        res.setDescription(parseCodeableConcept(xpp));
10885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10886        res.setSubject(parseReference(xpp));
10887      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
10888        res.setStart(parseType("start", xpp));
10889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
10890        res.getTarget().add(parseGoalGoalTargetComponent(xpp, res));
10891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
10892        res.setStatusDateElement(parseDate(xpp));
10893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
10894        res.setStatusReasonElement(parseString(xpp));
10895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expressedBy")) {
10896        res.setExpressedBy(parseReference(xpp));
10897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
10898        res.getAddresses().add(parseReference(xpp));
10899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10900        res.getNote().add(parseAnnotation(xpp));
10901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCode")) {
10902        res.getOutcomeCode().add(parseCodeableConcept(xpp));
10903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
10904        res.getOutcomeReference().add(parseReference(xpp));
10905      } else if (!parseDomainResourceContent(eventType, xpp, res))
10906        return false;
10907    return true;
10908  }
10909
10910  protected Goal.GoalTargetComponent parseGoalGoalTargetComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
10911    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
10912    parseBackboneAttributes(xpp, res);
10913    next(xpp);
10914    int eventType = nextNoWhitespace(xpp);
10915    while (eventType != XmlPullParser.END_TAG) {
10916  if (!parseGoalGoalTargetComponentContent(eventType, xpp, owner, res))
10917        unknownContent(xpp);
10918      eventType = nextNoWhitespace(xpp);
10919    }
10920    next(xpp);
10921    parseElementClose(res);
10922    return res;
10923  }
10924
10925  protected boolean parseGoalGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal owner, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10926      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
10927        res.setMeasure(parseCodeableConcept(xpp));
10928      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
10929        res.setDetail(parseType("detail", xpp));
10930      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
10931        res.setDue(parseType("due", xpp));
10932      } else if (!parseBackboneElementContent(eventType, xpp, res))
10933        return false;
10934    return true;
10935  }
10936
10937  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10938    GraphDefinition res = new GraphDefinition();
10939    parseDomainResourceAttributes(xpp, res);
10940    next(xpp);
10941    int eventType = nextNoWhitespace(xpp);
10942    while (eventType != XmlPullParser.END_TAG) {
10943  if (!parseGraphDefinitionContent(eventType, xpp, res))
10944        unknownContent(xpp);
10945      eventType = nextNoWhitespace(xpp);
10946    }
10947    next(xpp);
10948    parseElementClose(res);
10949    return res;
10950  }
10951
10952  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
10953      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10954        res.setUrlElement(parseUri(xpp));
10955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10956        res.setVersionElement(parseString(xpp));
10957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10958        res.setNameElement(parseString(xpp));
10959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10960        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10962        res.setExperimentalElement(parseBoolean(xpp));
10963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10964        res.setDateElement(parseDateTime(xpp));
10965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10966        res.setPublisherElement(parseString(xpp));
10967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10968        res.getContact().add(parseContactDetail(xpp));
10969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10970        res.setDescriptionElement(parseMarkdown(xpp));
10971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10972        res.getUseContext().add(parseUsageContext(xpp));
10973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10974        res.getJurisdiction().add(parseCodeableConcept(xpp));
10975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10976        res.setPurposeElement(parseMarkdown(xpp));
10977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
10978        res.setStartElement(parseCode(xpp));
10979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10980        res.setProfileElement(parseCanonical(xpp));
10981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
10982        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, res));
10983      } else if (!parseDomainResourceContent(eventType, xpp, res))
10984        return false;
10985    return true;
10986  }
10987
10988  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionGraphDefinitionLinkComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
10989    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
10990    parseBackboneAttributes(xpp, res);
10991    next(xpp);
10992    int eventType = nextNoWhitespace(xpp);
10993    while (eventType != XmlPullParser.END_TAG) {
10994  if (!parseGraphDefinitionGraphDefinitionLinkComponentContent(eventType, xpp, owner, res))
10995        unknownContent(xpp);
10996      eventType = nextNoWhitespace(xpp);
10997    }
10998    next(xpp);
10999    parseElementClose(res);
11000    return res;
11001  }
11002
11003  protected boolean parseGraphDefinitionGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11004      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
11005        res.setPathElement(parseString(xpp));
11006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
11007        res.setSliceNameElement(parseString(xpp));
11008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
11009        res.setMinElement(parseInteger(xpp));
11010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
11011        res.setMaxElement(parseString(xpp));
11012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11013        res.setDescriptionElement(parseString(xpp));
11014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11015        res.getTarget().add(parseGraphDefinitionGraphDefinitionLinkTargetComponent(xpp, owner));
11016      } else if (!parseBackboneElementContent(eventType, xpp, res))
11017        return false;
11018    return true;
11019  }
11020
11021  protected GraphDefinition.GraphDefinitionLinkTargetComponent parseGraphDefinitionGraphDefinitionLinkTargetComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11022    GraphDefinition.GraphDefinitionLinkTargetComponent res = new GraphDefinition.GraphDefinitionLinkTargetComponent();
11023    parseBackboneAttributes(xpp, res);
11024    next(xpp);
11025    int eventType = nextNoWhitespace(xpp);
11026    while (eventType != XmlPullParser.END_TAG) {
11027  if (!parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(eventType, xpp, owner, res))
11028        unknownContent(xpp);
11029      eventType = nextNoWhitespace(xpp);
11030    }
11031    next(xpp);
11032    parseElementClose(res);
11033    return res;
11034  }
11035
11036  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11037      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11038        res.setTypeElement(parseCode(xpp));
11039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
11040        res.setParamsElement(parseString(xpp));
11041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11042        res.setProfileElement(parseCanonical(xpp));
11043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
11044        res.getCompartment().add(parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(xpp, owner));
11045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
11046        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, owner));
11047      } else if (!parseBackboneElementContent(eventType, xpp, res))
11048        return false;
11049    return true;
11050  }
11051
11052  protected GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11053    GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent();
11054    parseBackboneAttributes(xpp, res);
11055    next(xpp);
11056    int eventType = nextNoWhitespace(xpp);
11057    while (eventType != XmlPullParser.END_TAG) {
11058  if (!parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(eventType, xpp, owner, res))
11059        unknownContent(xpp);
11060      eventType = nextNoWhitespace(xpp);
11061    }
11062    next(xpp);
11063    parseElementClose(res);
11064    return res;
11065  }
11066
11067  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11068      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
11069        res.setUseElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentUse.NULL, new GraphDefinition.GraphCompartmentUseEnumFactory()));
11070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11071        res.setCodeElement(parseEnumeration(xpp, GraphDefinition.CompartmentCode.NULL, new GraphDefinition.CompartmentCodeEnumFactory()));
11072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
11073        res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
11074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
11075        res.setExpressionElement(parseString(xpp));
11076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11077        res.setDescriptionElement(parseString(xpp));
11078      } else if (!parseBackboneElementContent(eventType, xpp, res))
11079        return false;
11080    return true;
11081  }
11082
11083  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11084    Group res = new Group();
11085    parseDomainResourceAttributes(xpp, res);
11086    next(xpp);
11087    int eventType = nextNoWhitespace(xpp);
11088    while (eventType != XmlPullParser.END_TAG) {
11089  if (!parseGroupContent(eventType, xpp, res))
11090        unknownContent(xpp);
11091      eventType = nextNoWhitespace(xpp);
11092    }
11093    next(xpp);
11094    parseElementClose(res);
11095    return res;
11096  }
11097
11098  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
11099      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11100        res.getIdentifier().add(parseIdentifier(xpp));
11101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
11102        res.setActiveElement(parseBoolean(xpp));
11103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11104        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
11105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
11106        res.setActualElement(parseBoolean(xpp));
11107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11108        res.setCode(parseCodeableConcept(xpp));
11109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11110        res.setNameElement(parseString(xpp));
11111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11112        res.setQuantityElement(parseUnsignedInt(xpp));
11113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingEntity")) {
11114        res.setManagingEntity(parseReference(xpp));
11115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
11116        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
11117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
11118        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
11119      } else if (!parseDomainResourceContent(eventType, xpp, res))
11120        return false;
11121    return true;
11122  }
11123
11124  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
11125    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
11126    parseBackboneAttributes(xpp, res);
11127    next(xpp);
11128    int eventType = nextNoWhitespace(xpp);
11129    while (eventType != XmlPullParser.END_TAG) {
11130  if (!parseGroupGroupCharacteristicComponentContent(eventType, xpp, owner, res))
11131        unknownContent(xpp);
11132      eventType = nextNoWhitespace(xpp);
11133    }
11134    next(xpp);
11135    parseElementClose(res);
11136    return res;
11137  }
11138
11139  protected boolean parseGroupGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11140      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11141        res.setCode(parseCodeableConcept(xpp));
11142      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11143        res.setValue(parseType("value", xpp));
11144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
11145        res.setExcludeElement(parseBoolean(xpp));
11146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11147        res.setPeriod(parsePeriod(xpp));
11148      } else if (!parseBackboneElementContent(eventType, xpp, res))
11149        return false;
11150    return true;
11151  }
11152
11153  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
11154    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
11155    parseBackboneAttributes(xpp, res);
11156    next(xpp);
11157    int eventType = nextNoWhitespace(xpp);
11158    while (eventType != XmlPullParser.END_TAG) {
11159  if (!parseGroupGroupMemberComponentContent(eventType, xpp, owner, res))
11160        unknownContent(xpp);
11161      eventType = nextNoWhitespace(xpp);
11162    }
11163    next(xpp);
11164    parseElementClose(res);
11165    return res;
11166  }
11167
11168  protected boolean parseGroupGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11169      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
11170        res.setEntity(parseReference(xpp));
11171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11172        res.setPeriod(parsePeriod(xpp));
11173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
11174        res.setInactiveElement(parseBoolean(xpp));
11175      } else if (!parseBackboneElementContent(eventType, xpp, res))
11176        return false;
11177    return true;
11178  }
11179
11180  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11181    GuidanceResponse res = new GuidanceResponse();
11182    parseDomainResourceAttributes(xpp, res);
11183    next(xpp);
11184    int eventType = nextNoWhitespace(xpp);
11185    while (eventType != XmlPullParser.END_TAG) {
11186  if (!parseGuidanceResponseContent(eventType, xpp, res))
11187        unknownContent(xpp);
11188      eventType = nextNoWhitespace(xpp);
11189    }
11190    next(xpp);
11191    parseElementClose(res);
11192    return res;
11193  }
11194
11195  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
11196      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestIdentifier")) {
11197        res.setRequestIdentifier(parseIdentifier(xpp));
11198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11199        res.getIdentifier().add(parseIdentifier(xpp));
11200      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "module")) {
11201        res.setModule(parseType("module", xpp));
11202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11203        res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
11204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11205        res.setSubject(parseReference(xpp));
11206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11207        res.setEncounter(parseReference(xpp));
11208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
11209        res.setOccurrenceDateTimeElement(parseDateTime(xpp));
11210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11211        res.setPerformer(parseReference(xpp));
11212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11213        res.getReasonCode().add(parseCodeableConcept(xpp));
11214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11215        res.getReasonReference().add(parseReference(xpp));
11216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11217        res.getNote().add(parseAnnotation(xpp));
11218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
11219        res.getEvaluationMessage().add(parseReference(xpp));
11220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
11221        res.setOutputParameters(parseReference(xpp));
11222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
11223        res.setResult(parseReference(xpp));
11224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
11225        res.getDataRequirement().add(parseDataRequirement(xpp));
11226      } else if (!parseDomainResourceContent(eventType, xpp, res))
11227        return false;
11228    return true;
11229  }
11230
11231  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11232    HealthcareService res = new HealthcareService();
11233    parseDomainResourceAttributes(xpp, res);
11234    next(xpp);
11235    int eventType = nextNoWhitespace(xpp);
11236    while (eventType != XmlPullParser.END_TAG) {
11237  if (!parseHealthcareServiceContent(eventType, xpp, res))
11238        unknownContent(xpp);
11239      eventType = nextNoWhitespace(xpp);
11240    }
11241    next(xpp);
11242    parseElementClose(res);
11243    return res;
11244  }
11245
11246  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
11247      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11248        res.getIdentifier().add(parseIdentifier(xpp));
11249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
11250        res.setActiveElement(parseBoolean(xpp));
11251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
11252        res.setProvidedBy(parseReference(xpp));
11253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11254        res.getCategory().add(parseCodeableConcept(xpp));
11255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11256        res.getType().add(parseCodeableConcept(xpp));
11257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
11258        res.getSpecialty().add(parseCodeableConcept(xpp));
11259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11260        res.getLocation().add(parseReference(xpp));
11261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11262        res.setNameElement(parseString(xpp));
11263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11264        res.setCommentElement(parseString(xpp));
11265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
11266        res.setExtraDetailsElement(parseMarkdown(xpp));
11267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
11268        res.setPhoto(parseAttachment(xpp));
11269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
11270        res.getTelecom().add(parseContactPoint(xpp));
11271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
11272        res.getCoverageArea().add(parseReference(xpp));
11273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
11274        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
11275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
11276        res.getEligibility().add(parseHealthcareServiceHealthcareServiceEligibilityComponent(xpp, res));
11277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("program")) {
11278        res.getProgram().add(parseCodeableConcept(xpp));
11279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
11280        res.getCharacteristic().add(parseCodeableConcept(xpp));
11281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
11282        res.getCommunication().add(parseCodeableConcept(xpp));
11283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
11284        res.getReferralMethod().add(parseCodeableConcept(xpp));
11285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
11286        res.setAppointmentRequiredElement(parseBoolean(xpp));
11287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
11288        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
11289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
11290        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
11291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
11292        res.setAvailabilityExceptionsElement(parseString(xpp));
11293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11294        res.getEndpoint().add(parseReference(xpp));
11295      } else if (!parseDomainResourceContent(eventType, xpp, res))
11296        return false;
11297    return true;
11298  }
11299
11300  protected HealthcareService.HealthcareServiceEligibilityComponent parseHealthcareServiceHealthcareServiceEligibilityComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
11301    HealthcareService.HealthcareServiceEligibilityComponent res = new HealthcareService.HealthcareServiceEligibilityComponent();
11302    parseBackboneAttributes(xpp, res);
11303    next(xpp);
11304    int eventType = nextNoWhitespace(xpp);
11305    while (eventType != XmlPullParser.END_TAG) {
11306  if (!parseHealthcareServiceHealthcareServiceEligibilityComponentContent(eventType, xpp, owner, res))
11307        unknownContent(xpp);
11308      eventType = nextNoWhitespace(xpp);
11309    }
11310    next(xpp);
11311    parseElementClose(res);
11312    return res;
11313  }
11314
11315  protected boolean parseHealthcareServiceHealthcareServiceEligibilityComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceEligibilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11317        res.setCode(parseCodeableConcept(xpp));
11318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11319        res.setCommentElement(parseMarkdown(xpp));
11320      } else if (!parseBackboneElementContent(eventType, xpp, res))
11321        return false;
11322    return true;
11323  }
11324
11325  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
11326    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
11327    parseBackboneAttributes(xpp, res);
11328    next(xpp);
11329    int eventType = nextNoWhitespace(xpp);
11330    while (eventType != XmlPullParser.END_TAG) {
11331  if (!parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(eventType, xpp, owner, res))
11332        unknownContent(xpp);
11333      eventType = nextNoWhitespace(xpp);
11334    }
11335    next(xpp);
11336    parseElementClose(res);
11337    return res;
11338  }
11339
11340  protected boolean parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11341      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
11342        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
11343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
11344        res.setAllDayElement(parseBoolean(xpp));
11345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
11346        res.setAvailableStartTimeElement(parseTime(xpp));
11347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
11348        res.setAvailableEndTimeElement(parseTime(xpp));
11349      } else if (!parseBackboneElementContent(eventType, xpp, res))
11350        return false;
11351    return true;
11352  }
11353
11354  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
11355    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
11356    parseBackboneAttributes(xpp, res);
11357    next(xpp);
11358    int eventType = nextNoWhitespace(xpp);
11359    while (eventType != XmlPullParser.END_TAG) {
11360  if (!parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(eventType, xpp, owner, res))
11361        unknownContent(xpp);
11362      eventType = nextNoWhitespace(xpp);
11363    }
11364    next(xpp);
11365    parseElementClose(res);
11366    return res;
11367  }
11368
11369  protected boolean parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11370      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11371        res.setDescriptionElement(parseString(xpp));
11372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
11373        res.setDuring(parsePeriod(xpp));
11374      } else if (!parseBackboneElementContent(eventType, xpp, res))
11375        return false;
11376    return true;
11377  }
11378
11379  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11380    ImagingStudy res = new ImagingStudy();
11381    parseDomainResourceAttributes(xpp, res);
11382    next(xpp);
11383    int eventType = nextNoWhitespace(xpp);
11384    while (eventType != XmlPullParser.END_TAG) {
11385  if (!parseImagingStudyContent(eventType, xpp, res))
11386        unknownContent(xpp);
11387      eventType = nextNoWhitespace(xpp);
11388    }
11389    next(xpp);
11390    parseElementClose(res);
11391    return res;
11392  }
11393
11394  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
11395      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11396        res.getIdentifier().add(parseIdentifier(xpp));
11397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11398        res.setStatusElement(parseEnumeration(xpp, ImagingStudy.ImagingStudyStatus.NULL, new ImagingStudy.ImagingStudyStatusEnumFactory()));
11399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
11400        res.getModality().add(parseCoding(xpp));
11401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11402        res.setSubject(parseReference(xpp));
11403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11404        res.setEncounter(parseReference(xpp));
11405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
11406        res.setStartedElement(parseDateTime(xpp));
11407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11408        res.getBasedOn().add(parseReference(xpp));
11409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
11410        res.setReferrer(parseReference(xpp));
11411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
11412        res.getInterpreter().add(parseReference(xpp));
11413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11414        res.getEndpoint().add(parseReference(xpp));
11415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
11416        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
11417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
11418        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
11419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureReference")) {
11420        res.setProcedureReference(parseReference(xpp));
11421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureCode")) {
11422        res.getProcedureCode().add(parseCodeableConcept(xpp));
11423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11424        res.setLocation(parseReference(xpp));
11425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11426        res.getReasonCode().add(parseCodeableConcept(xpp));
11427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11428        res.getReasonReference().add(parseReference(xpp));
11429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11430        res.getNote().add(parseAnnotation(xpp));
11431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11432        res.setDescriptionElement(parseString(xpp));
11433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11434        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
11435      } else if (!parseDomainResourceContent(eventType, xpp, res))
11436        return false;
11437    return true;
11438  }
11439
11440  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11441    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
11442    parseBackboneAttributes(xpp, res);
11443    next(xpp);
11444    int eventType = nextNoWhitespace(xpp);
11445    while (eventType != XmlPullParser.END_TAG) {
11446  if (!parseImagingStudyImagingStudySeriesComponentContent(eventType, xpp, owner, res))
11447        unknownContent(xpp);
11448      eventType = nextNoWhitespace(xpp);
11449    }
11450    next(xpp);
11451    parseElementClose(res);
11452    return res;
11453  }
11454
11455  protected boolean parseImagingStudyImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11456      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
11457        res.setUidElement(parseId(xpp));
11458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
11459        res.setNumberElement(parseUnsignedInt(xpp));
11460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
11461        res.setModality(parseCoding(xpp));
11462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11463        res.setDescriptionElement(parseString(xpp));
11464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
11465        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
11466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11467        res.getEndpoint().add(parseReference(xpp));
11468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
11469        res.setBodySite(parseCoding(xpp));
11470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
11471        res.setLaterality(parseCoding(xpp));
11472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
11473        res.getSpecimen().add(parseReference(xpp));
11474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
11475        res.setStartedElement(parseDateTime(xpp));
11476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11477        res.getPerformer().add(parseImagingStudyImagingStudySeriesPerformerComponent(xpp, owner));
11478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
11479        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
11480      } else if (!parseBackboneElementContent(eventType, xpp, res))
11481        return false;
11482    return true;
11483  }
11484
11485  protected ImagingStudy.ImagingStudySeriesPerformerComponent parseImagingStudyImagingStudySeriesPerformerComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11486    ImagingStudy.ImagingStudySeriesPerformerComponent res = new ImagingStudy.ImagingStudySeriesPerformerComponent();
11487    parseBackboneAttributes(xpp, res);
11488    next(xpp);
11489    int eventType = nextNoWhitespace(xpp);
11490    while (eventType != XmlPullParser.END_TAG) {
11491  if (!parseImagingStudyImagingStudySeriesPerformerComponentContent(eventType, xpp, owner, res))
11492        unknownContent(xpp);
11493      eventType = nextNoWhitespace(xpp);
11494    }
11495    next(xpp);
11496    parseElementClose(res);
11497    return res;
11498  }
11499
11500  protected boolean parseImagingStudyImagingStudySeriesPerformerComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
11502        res.setFunction(parseCodeableConcept(xpp));
11503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11504        res.setActor(parseReference(xpp));
11505      } else if (!parseBackboneElementContent(eventType, xpp, res))
11506        return false;
11507    return true;
11508  }
11509
11510  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11511    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
11512    parseBackboneAttributes(xpp, res);
11513    next(xpp);
11514    int eventType = nextNoWhitespace(xpp);
11515    while (eventType != XmlPullParser.END_TAG) {
11516  if (!parseImagingStudyImagingStudySeriesInstanceComponentContent(eventType, xpp, owner, res))
11517        unknownContent(xpp);
11518      eventType = nextNoWhitespace(xpp);
11519    }
11520    next(xpp);
11521    parseElementClose(res);
11522    return res;
11523  }
11524
11525  protected boolean parseImagingStudyImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11526      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
11527        res.setUidElement(parseId(xpp));
11528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
11529        res.setSopClass(parseCoding(xpp));
11530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
11531        res.setNumberElement(parseUnsignedInt(xpp));
11532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11533        res.setTitleElement(parseString(xpp));
11534      } else if (!parseBackboneElementContent(eventType, xpp, res))
11535        return false;
11536    return true;
11537  }
11538
11539  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11540    Immunization res = new Immunization();
11541    parseDomainResourceAttributes(xpp, res);
11542    next(xpp);
11543    int eventType = nextNoWhitespace(xpp);
11544    while (eventType != XmlPullParser.END_TAG) {
11545  if (!parseImmunizationContent(eventType, xpp, res))
11546        unknownContent(xpp);
11547      eventType = nextNoWhitespace(xpp);
11548    }
11549    next(xpp);
11550    parseElementClose(res);
11551    return res;
11552  }
11553
11554  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
11555      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11556        res.getIdentifier().add(parseIdentifier(xpp));
11557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11558        res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatus.NULL, new Immunization.ImmunizationStatusEnumFactory()));
11559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
11560        res.setStatusReason(parseCodeableConcept(xpp));
11561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
11562        res.setVaccineCode(parseCodeableConcept(xpp));
11563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11564        res.setPatient(parseReference(xpp));
11565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11566        res.setEncounter(parseReference(xpp));
11567      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
11568        res.setOccurrence(parseType("occurrence", xpp));
11569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
11570        res.setRecordedElement(parseDateTime(xpp));
11571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
11572        res.setPrimarySourceElement(parseBoolean(xpp));
11573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportOrigin")) {
11574        res.setReportOrigin(parseCodeableConcept(xpp));
11575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11576        res.setLocation(parseReference(xpp));
11577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
11578        res.setManufacturer(parseReference(xpp));
11579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
11580        res.setLotNumberElement(parseString(xpp));
11581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
11582        res.setExpirationDateElement(parseDate(xpp));
11583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
11584        res.setSite(parseCodeableConcept(xpp));
11585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
11586        res.setRoute(parseCodeableConcept(xpp));
11587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
11588        res.setDoseQuantity(parseQuantity(xpp));
11589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11590        res.getPerformer().add(parseImmunizationImmunizationPerformerComponent(xpp, res));
11591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11592        res.getNote().add(parseAnnotation(xpp));
11593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11594        res.getReasonCode().add(parseCodeableConcept(xpp));
11595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11596        res.getReasonReference().add(parseReference(xpp));
11597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSubpotent")) {
11598        res.setIsSubpotentElement(parseBoolean(xpp));
11599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subpotentReason")) {
11600        res.getSubpotentReason().add(parseCodeableConcept(xpp));
11601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("education")) {
11602        res.getEducation().add(parseImmunizationImmunizationEducationComponent(xpp, res));
11603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programEligibility")) {
11604        res.getProgramEligibility().add(parseCodeableConcept(xpp));
11605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundingSource")) {
11606        res.setFundingSource(parseCodeableConcept(xpp));
11607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
11608        res.getReaction().add(parseImmunizationImmunizationReactionComponent(xpp, res));
11609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocolApplied")) {
11610        res.getProtocolApplied().add(parseImmunizationImmunizationProtocolAppliedComponent(xpp, res));
11611      } else if (!parseDomainResourceContent(eventType, xpp, res))
11612        return false;
11613    return true;
11614  }
11615
11616  protected Immunization.ImmunizationPerformerComponent parseImmunizationImmunizationPerformerComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11617    Immunization.ImmunizationPerformerComponent res = new Immunization.ImmunizationPerformerComponent();
11618    parseBackboneAttributes(xpp, res);
11619    next(xpp);
11620    int eventType = nextNoWhitespace(xpp);
11621    while (eventType != XmlPullParser.END_TAG) {
11622  if (!parseImmunizationImmunizationPerformerComponentContent(eventType, xpp, owner, res))
11623        unknownContent(xpp);
11624      eventType = nextNoWhitespace(xpp);
11625    }
11626    next(xpp);
11627    parseElementClose(res);
11628    return res;
11629  }
11630
11631  protected boolean parseImmunizationImmunizationPerformerComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11632      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
11633        res.setFunction(parseCodeableConcept(xpp));
11634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11635        res.setActor(parseReference(xpp));
11636      } else if (!parseBackboneElementContent(eventType, xpp, res))
11637        return false;
11638    return true;
11639  }
11640
11641  protected Immunization.ImmunizationEducationComponent parseImmunizationImmunizationEducationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11642    Immunization.ImmunizationEducationComponent res = new Immunization.ImmunizationEducationComponent();
11643    parseBackboneAttributes(xpp, res);
11644    next(xpp);
11645    int eventType = nextNoWhitespace(xpp);
11646    while (eventType != XmlPullParser.END_TAG) {
11647  if (!parseImmunizationImmunizationEducationComponentContent(eventType, xpp, owner, res))
11648        unknownContent(xpp);
11649      eventType = nextNoWhitespace(xpp);
11650    }
11651    next(xpp);
11652    parseElementClose(res);
11653    return res;
11654  }
11655
11656  protected boolean parseImmunizationImmunizationEducationComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationEducationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11657      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentType")) {
11658        res.setDocumentTypeElement(parseString(xpp));
11659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11660        res.setReferenceElement(parseUri(xpp));
11661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
11662        res.setPublicationDateElement(parseDateTime(xpp));
11663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationDate")) {
11664        res.setPresentationDateElement(parseDateTime(xpp));
11665      } else if (!parseBackboneElementContent(eventType, xpp, res))
11666        return false;
11667    return true;
11668  }
11669
11670  protected Immunization.ImmunizationReactionComponent parseImmunizationImmunizationReactionComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11671    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
11672    parseBackboneAttributes(xpp, res);
11673    next(xpp);
11674    int eventType = nextNoWhitespace(xpp);
11675    while (eventType != XmlPullParser.END_TAG) {
11676  if (!parseImmunizationImmunizationReactionComponentContent(eventType, xpp, owner, res))
11677        unknownContent(xpp);
11678      eventType = nextNoWhitespace(xpp);
11679    }
11680    next(xpp);
11681    parseElementClose(res);
11682    return res;
11683  }
11684
11685  protected boolean parseImmunizationImmunizationReactionComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11686      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11687        res.setDateElement(parseDateTime(xpp));
11688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
11689        res.setDetail(parseReference(xpp));
11690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
11691        res.setReportedElement(parseBoolean(xpp));
11692      } else if (!parseBackboneElementContent(eventType, xpp, res))
11693        return false;
11694    return true;
11695  }
11696
11697  protected Immunization.ImmunizationProtocolAppliedComponent parseImmunizationImmunizationProtocolAppliedComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11698    Immunization.ImmunizationProtocolAppliedComponent res = new Immunization.ImmunizationProtocolAppliedComponent();
11699    parseBackboneAttributes(xpp, res);
11700    next(xpp);
11701    int eventType = nextNoWhitespace(xpp);
11702    while (eventType != XmlPullParser.END_TAG) {
11703  if (!parseImmunizationImmunizationProtocolAppliedComponentContent(eventType, xpp, owner, res))
11704        unknownContent(xpp);
11705      eventType = nextNoWhitespace(xpp);
11706    }
11707    next(xpp);
11708    parseElementClose(res);
11709    return res;
11710  }
11711
11712  protected boolean parseImmunizationImmunizationProtocolAppliedComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationProtocolAppliedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11713      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11714        res.setSeriesElement(parseString(xpp));
11715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11716        res.setAuthority(parseReference(xpp));
11717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11718        res.getTargetDisease().add(parseCodeableConcept(xpp));
11719      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11720        res.setDoseNumber(parseType("doseNumber", xpp));
11721      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11722        res.setSeriesDoses(parseType("seriesDoses", xpp));
11723      } else if (!parseBackboneElementContent(eventType, xpp, res))
11724        return false;
11725    return true;
11726  }
11727
11728  protected ImmunizationEvaluation parseImmunizationEvaluation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11729    ImmunizationEvaluation res = new ImmunizationEvaluation();
11730    parseDomainResourceAttributes(xpp, res);
11731    next(xpp);
11732    int eventType = nextNoWhitespace(xpp);
11733    while (eventType != XmlPullParser.END_TAG) {
11734  if (!parseImmunizationEvaluationContent(eventType, xpp, res))
11735        unknownContent(xpp);
11736      eventType = nextNoWhitespace(xpp);
11737    }
11738    next(xpp);
11739    parseElementClose(res);
11740    return res;
11741  }
11742
11743  protected boolean parseImmunizationEvaluationContent(int eventType, XmlPullParser xpp, ImmunizationEvaluation res) throws XmlPullParserException, IOException, FHIRFormatError {
11744      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11745        res.getIdentifier().add(parseIdentifier(xpp));
11746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11747        res.setStatusElement(parseEnumeration(xpp, ImmunizationEvaluation.ImmunizationEvaluationStatus.NULL, new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory()));
11748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11749        res.setPatient(parseReference(xpp));
11750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11751        res.setDateElement(parseDateTime(xpp));
11752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11753        res.setAuthority(parseReference(xpp));
11754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11755        res.setTargetDisease(parseCodeableConcept(xpp));
11756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immunizationEvent")) {
11757        res.setImmunizationEvent(parseReference(xpp));
11758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
11759        res.setDoseStatus(parseCodeableConcept(xpp));
11760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
11761        res.getDoseStatusReason().add(parseCodeableConcept(xpp));
11762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11763        res.setDescriptionElement(parseString(xpp));
11764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11765        res.setSeriesElement(parseString(xpp));
11766      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11767        res.setDoseNumber(parseType("doseNumber", xpp));
11768      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11769        res.setSeriesDoses(parseType("seriesDoses", xpp));
11770      } else if (!parseDomainResourceContent(eventType, xpp, res))
11771        return false;
11772    return true;
11773  }
11774
11775  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11776    ImmunizationRecommendation res = new ImmunizationRecommendation();
11777    parseDomainResourceAttributes(xpp, res);
11778    next(xpp);
11779    int eventType = nextNoWhitespace(xpp);
11780    while (eventType != XmlPullParser.END_TAG) {
11781  if (!parseImmunizationRecommendationContent(eventType, xpp, res))
11782        unknownContent(xpp);
11783      eventType = nextNoWhitespace(xpp);
11784    }
11785    next(xpp);
11786    parseElementClose(res);
11787    return res;
11788  }
11789
11790  protected boolean parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
11791      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11792        res.getIdentifier().add(parseIdentifier(xpp));
11793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11794        res.setPatient(parseReference(xpp));
11795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11796        res.setDateElement(parseDateTime(xpp));
11797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11798        res.setAuthority(parseReference(xpp));
11799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
11800        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
11801      } else if (!parseDomainResourceContent(eventType, xpp, res))
11802        return false;
11803    return true;
11804  }
11805
11806  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
11807    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
11808    parseBackboneAttributes(xpp, res);
11809    next(xpp);
11810    int eventType = nextNoWhitespace(xpp);
11811    while (eventType != XmlPullParser.END_TAG) {
11812  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(eventType, xpp, owner, res))
11813        unknownContent(xpp);
11814      eventType = nextNoWhitespace(xpp);
11815    }
11816    next(xpp);
11817    parseElementClose(res);
11818    return res;
11819  }
11820
11821  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11822      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
11823        res.getVaccineCode().add(parseCodeableConcept(xpp));
11824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11825        res.setTargetDisease(parseCodeableConcept(xpp));
11826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindicatedVaccineCode")) {
11827        res.getContraindicatedVaccineCode().add(parseCodeableConcept(xpp));
11828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
11829        res.setForecastStatus(parseCodeableConcept(xpp));
11830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastReason")) {
11831        res.getForecastReason().add(parseCodeableConcept(xpp));
11832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
11833        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
11834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11835        res.setDescriptionElement(parseString(xpp));
11836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11837        res.setSeriesElement(parseString(xpp));
11838      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11839        res.setDoseNumber(parseType("doseNumber", xpp));
11840      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11841        res.setSeriesDoses(parseType("seriesDoses", xpp));
11842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
11843        res.getSupportingImmunization().add(parseReference(xpp));
11844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
11845        res.getSupportingPatientInformation().add(parseReference(xpp));
11846      } else if (!parseBackboneElementContent(eventType, xpp, res))
11847        return false;
11848    return true;
11849  }
11850
11851  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
11852    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
11853    parseBackboneAttributes(xpp, res);
11854    next(xpp);
11855    int eventType = nextNoWhitespace(xpp);
11856    while (eventType != XmlPullParser.END_TAG) {
11857  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, owner, res))
11858        unknownContent(xpp);
11859      eventType = nextNoWhitespace(xpp);
11860    }
11861    next(xpp);
11862    parseElementClose(res);
11863    return res;
11864  }
11865
11866  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11867      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11868        res.setCode(parseCodeableConcept(xpp));
11869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11870        res.setValueElement(parseDateTime(xpp));
11871      } else if (!parseBackboneElementContent(eventType, xpp, res))
11872        return false;
11873    return true;
11874  }
11875
11876  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11877    ImplementationGuide res = new ImplementationGuide();
11878    parseDomainResourceAttributes(xpp, res);
11879    next(xpp);
11880    int eventType = nextNoWhitespace(xpp);
11881    while (eventType != XmlPullParser.END_TAG) {
11882  if (!parseImplementationGuideContent(eventType, xpp, res))
11883        unknownContent(xpp);
11884      eventType = nextNoWhitespace(xpp);
11885    }
11886    next(xpp);
11887    parseElementClose(res);
11888    return res;
11889  }
11890
11891  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
11892      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11893        res.setUrlElement(parseUri(xpp));
11894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11895        res.setVersionElement(parseString(xpp));
11896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11897        res.setNameElement(parseString(xpp));
11898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11899        res.setTitleElement(parseString(xpp));
11900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11901        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11903        res.setExperimentalElement(parseBoolean(xpp));
11904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11905        res.setDateElement(parseDateTime(xpp));
11906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11907        res.setPublisherElement(parseString(xpp));
11908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11909        res.getContact().add(parseContactDetail(xpp));
11910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11911        res.setDescriptionElement(parseMarkdown(xpp));
11912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11913        res.getUseContext().add(parseUsageContext(xpp));
11914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11915        res.getJurisdiction().add(parseCodeableConcept(xpp));
11916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11917        res.setCopyrightElement(parseMarkdown(xpp));
11918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
11919        res.setPackageIdElement(parseId(xpp));
11920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("license")) {
11921        res.setLicenseElement(parseEnumeration(xpp, ImplementationGuide.SPDXLicense.NULL, new ImplementationGuide.SPDXLicenseEnumFactory()));
11922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
11923        res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
11924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
11925        res.getDependsOn().add(parseImplementationGuideImplementationGuideDependsOnComponent(xpp, res));
11926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
11927        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
11928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
11929        res.setDefinition(parseImplementationGuideImplementationGuideDefinitionComponent(xpp, res));
11930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifest")) {
11931        res.setManifest(parseImplementationGuideImplementationGuideManifestComponent(xpp, res));
11932      } else if (!parseDomainResourceContent(eventType, xpp, res))
11933        return false;
11934    return true;
11935  }
11936
11937  protected ImplementationGuide.ImplementationGuideDependsOnComponent parseImplementationGuideImplementationGuideDependsOnComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11938    ImplementationGuide.ImplementationGuideDependsOnComponent res = new ImplementationGuide.ImplementationGuideDependsOnComponent();
11939    parseBackboneAttributes(xpp, res);
11940    next(xpp);
11941    int eventType = nextNoWhitespace(xpp);
11942    while (eventType != XmlPullParser.END_TAG) {
11943  if (!parseImplementationGuideImplementationGuideDependsOnComponentContent(eventType, xpp, owner, res))
11944        unknownContent(xpp);
11945      eventType = nextNoWhitespace(xpp);
11946    }
11947    next(xpp);
11948    parseElementClose(res);
11949    return res;
11950  }
11951
11952  protected boolean parseImplementationGuideImplementationGuideDependsOnComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDependsOnComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11953      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
11954        res.setUriElement(parseCanonical(xpp));
11955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
11956        res.setPackageIdElement(parseId(xpp));
11957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11958        res.setVersionElement(parseString(xpp));
11959      } else if (!parseBackboneElementContent(eventType, xpp, res))
11960        return false;
11961    return true;
11962  }
11963
11964  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11965    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
11966    parseBackboneAttributes(xpp, res);
11967    next(xpp);
11968    int eventType = nextNoWhitespace(xpp);
11969    while (eventType != XmlPullParser.END_TAG) {
11970  if (!parseImplementationGuideImplementationGuideGlobalComponentContent(eventType, xpp, owner, res))
11971        unknownContent(xpp);
11972      eventType = nextNoWhitespace(xpp);
11973    }
11974    next(xpp);
11975    parseElementClose(res);
11976    return res;
11977  }
11978
11979  protected boolean parseImplementationGuideImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11980      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11981        res.setTypeElement(parseCode(xpp));
11982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11983        res.setProfileElement(parseCanonical(xpp));
11984      } else if (!parseBackboneElementContent(eventType, xpp, res))
11985        return false;
11986    return true;
11987  }
11988
11989  protected ImplementationGuide.ImplementationGuideDefinitionComponent parseImplementationGuideImplementationGuideDefinitionComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11990    ImplementationGuide.ImplementationGuideDefinitionComponent res = new ImplementationGuide.ImplementationGuideDefinitionComponent();
11991    parseBackboneAttributes(xpp, res);
11992    next(xpp);
11993    int eventType = nextNoWhitespace(xpp);
11994    while (eventType != XmlPullParser.END_TAG) {
11995  if (!parseImplementationGuideImplementationGuideDefinitionComponentContent(eventType, xpp, owner, res))
11996        unknownContent(xpp);
11997      eventType = nextNoWhitespace(xpp);
11998    }
11999    next(xpp);
12000    parseElementClose(res);
12001    return res;
12002  }
12003
12004  protected boolean parseImplementationGuideImplementationGuideDefinitionComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12005      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grouping")) {
12006        res.getGrouping().add(parseImplementationGuideImplementationGuideDefinitionGroupingComponent(xpp, owner));
12007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12008        res.getResource().add(parseImplementationGuideImplementationGuideDefinitionResourceComponent(xpp, owner));
12009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
12010        res.setPage(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
12011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12012        res.getParameter().add(parseImplementationGuideImplementationGuideDefinitionParameterComponent(xpp, owner));
12013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("template")) {
12014        res.getTemplate().add(parseImplementationGuideImplementationGuideDefinitionTemplateComponent(xpp, owner));
12015      } else if (!parseBackboneElementContent(eventType, xpp, res))
12016        return false;
12017    return true;
12018  }
12019
12020  protected ImplementationGuide.ImplementationGuideDefinitionGroupingComponent parseImplementationGuideImplementationGuideDefinitionGroupingComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12021    ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res = new ImplementationGuide.ImplementationGuideDefinitionGroupingComponent();
12022    parseBackboneAttributes(xpp, res);
12023    next(xpp);
12024    int eventType = nextNoWhitespace(xpp);
12025    while (eventType != XmlPullParser.END_TAG) {
12026  if (!parseImplementationGuideImplementationGuideDefinitionGroupingComponentContent(eventType, xpp, owner, res))
12027        unknownContent(xpp);
12028      eventType = nextNoWhitespace(xpp);
12029    }
12030    next(xpp);
12031    parseElementClose(res);
12032    return res;
12033  }
12034
12035  protected boolean parseImplementationGuideImplementationGuideDefinitionGroupingComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12036      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12037        res.setNameElement(parseString(xpp));
12038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12039        res.setDescriptionElement(parseString(xpp));
12040      } else if (!parseBackboneElementContent(eventType, xpp, res))
12041        return false;
12042    return true;
12043  }
12044
12045  protected ImplementationGuide.ImplementationGuideDefinitionResourceComponent parseImplementationGuideImplementationGuideDefinitionResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12046    ImplementationGuide.ImplementationGuideDefinitionResourceComponent res = new ImplementationGuide.ImplementationGuideDefinitionResourceComponent();
12047    parseBackboneAttributes(xpp, res);
12048    next(xpp);
12049    int eventType = nextNoWhitespace(xpp);
12050    while (eventType != XmlPullParser.END_TAG) {
12051  if (!parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(eventType, xpp, owner, res))
12052        unknownContent(xpp);
12053      eventType = nextNoWhitespace(xpp);
12054    }
12055    next(xpp);
12056    parseElementClose(res);
12057    return res;
12058  }
12059
12060  protected boolean parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12061      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
12062        res.setReference(parseReference(xpp));
12063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
12064        res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
12065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12066        res.setNameElement(parseString(xpp));
12067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12068        res.setDescriptionElement(parseString(xpp));
12069      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
12070        res.setExample(parseType("example", xpp));
12071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingId")) {
12072        res.setGroupingIdElement(parseId(xpp));
12073      } else if (!parseBackboneElementContent(eventType, xpp, res))
12074        return false;
12075    return true;
12076  }
12077
12078  protected ImplementationGuide.ImplementationGuideDefinitionPageComponent parseImplementationGuideImplementationGuideDefinitionPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12079    ImplementationGuide.ImplementationGuideDefinitionPageComponent res = new ImplementationGuide.ImplementationGuideDefinitionPageComponent();
12080    parseBackboneAttributes(xpp, res);
12081    next(xpp);
12082    int eventType = nextNoWhitespace(xpp);
12083    while (eventType != XmlPullParser.END_TAG) {
12084  if (!parseImplementationGuideImplementationGuideDefinitionPageComponentContent(eventType, xpp, owner, res))
12085        unknownContent(xpp);
12086      eventType = nextNoWhitespace(xpp);
12087    }
12088    next(xpp);
12089    parseElementClose(res);
12090    return res;
12091  }
12092
12093  protected boolean parseImplementationGuideImplementationGuideDefinitionPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12094      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "name")) {
12095        res.setName(parseType("name", xpp));
12096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12097        res.setTitleElement(parseString(xpp));
12098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generation")) {
12099        res.setGenerationElement(parseEnumeration(xpp, ImplementationGuide.GuidePageGeneration.NULL, new ImplementationGuide.GuidePageGenerationEnumFactory()));
12100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
12101        res.getPage().add(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
12102      } else if (!parseBackboneElementContent(eventType, xpp, res))
12103        return false;
12104    return true;
12105  }
12106
12107  protected ImplementationGuide.ImplementationGuideDefinitionParameterComponent parseImplementationGuideImplementationGuideDefinitionParameterComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12108    ImplementationGuide.ImplementationGuideDefinitionParameterComponent res = new ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
12109    parseBackboneAttributes(xpp, res);
12110    next(xpp);
12111    int eventType = nextNoWhitespace(xpp);
12112    while (eventType != XmlPullParser.END_TAG) {
12113  if (!parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(eventType, xpp, owner, res))
12114        unknownContent(xpp);
12115      eventType = nextNoWhitespace(xpp);
12116    }
12117    next(xpp);
12118    parseElementClose(res);
12119    return res;
12120  }
12121
12122  protected boolean parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12123      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12124        res.setCodeElement(parseString(xpp));
12125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12126        res.setValueElement(parseString(xpp));
12127      } else if (!parseBackboneElementContent(eventType, xpp, res))
12128        return false;
12129    return true;
12130  }
12131
12132  protected ImplementationGuide.ImplementationGuideDefinitionTemplateComponent parseImplementationGuideImplementationGuideDefinitionTemplateComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12133    ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res = new ImplementationGuide.ImplementationGuideDefinitionTemplateComponent();
12134    parseBackboneAttributes(xpp, res);
12135    next(xpp);
12136    int eventType = nextNoWhitespace(xpp);
12137    while (eventType != XmlPullParser.END_TAG) {
12138  if (!parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(eventType, xpp, owner, res))
12139        unknownContent(xpp);
12140      eventType = nextNoWhitespace(xpp);
12141    }
12142    next(xpp);
12143    parseElementClose(res);
12144    return res;
12145  }
12146
12147  protected boolean parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12148      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12149        res.setCodeElement(parseCode(xpp));
12150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12151        res.setSourceElement(parseString(xpp));
12152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
12153        res.setScopeElement(parseString(xpp));
12154      } else if (!parseBackboneElementContent(eventType, xpp, res))
12155        return false;
12156    return true;
12157  }
12158
12159  protected ImplementationGuide.ImplementationGuideManifestComponent parseImplementationGuideImplementationGuideManifestComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12160    ImplementationGuide.ImplementationGuideManifestComponent res = new ImplementationGuide.ImplementationGuideManifestComponent();
12161    parseBackboneAttributes(xpp, res);
12162    next(xpp);
12163    int eventType = nextNoWhitespace(xpp);
12164    while (eventType != XmlPullParser.END_TAG) {
12165  if (!parseImplementationGuideImplementationGuideManifestComponentContent(eventType, xpp, owner, res))
12166        unknownContent(xpp);
12167      eventType = nextNoWhitespace(xpp);
12168    }
12169    next(xpp);
12170    parseElementClose(res);
12171    return res;
12172  }
12173
12174  protected boolean parseImplementationGuideImplementationGuideManifestComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideManifestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12175      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rendering")) {
12176        res.setRenderingElement(parseUrl(xpp));
12177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12178        res.getResource().add(parseImplementationGuideManifestResourceComponent(xpp, owner));
12179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
12180        res.getPage().add(parseImplementationGuideManifestPageComponent(xpp, owner));
12181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
12182        res.getImage().add(parseString(xpp));
12183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
12184        res.getOther().add(parseString(xpp));
12185      } else if (!parseBackboneElementContent(eventType, xpp, res))
12186        return false;
12187    return true;
12188  }
12189
12190  protected ImplementationGuide.ManifestResourceComponent parseImplementationGuideManifestResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12191    ImplementationGuide.ManifestResourceComponent res = new ImplementationGuide.ManifestResourceComponent();
12192    parseBackboneAttributes(xpp, res);
12193    next(xpp);
12194    int eventType = nextNoWhitespace(xpp);
12195    while (eventType != XmlPullParser.END_TAG) {
12196  if (!parseImplementationGuideManifestResourceComponentContent(eventType, xpp, owner, res))
12197        unknownContent(xpp);
12198      eventType = nextNoWhitespace(xpp);
12199    }
12200    next(xpp);
12201    parseElementClose(res);
12202    return res;
12203  }
12204
12205  protected boolean parseImplementationGuideManifestResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ManifestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12206      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
12207        res.setReference(parseReference(xpp));
12208      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
12209        res.setExample(parseType("example", xpp));
12210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativePath")) {
12211        res.setRelativePathElement(parseUrl(xpp));
12212      } else if (!parseBackboneElementContent(eventType, xpp, res))
12213        return false;
12214    return true;
12215  }
12216
12217  protected ImplementationGuide.ManifestPageComponent parseImplementationGuideManifestPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12218    ImplementationGuide.ManifestPageComponent res = new ImplementationGuide.ManifestPageComponent();
12219    parseBackboneAttributes(xpp, res);
12220    next(xpp);
12221    int eventType = nextNoWhitespace(xpp);
12222    while (eventType != XmlPullParser.END_TAG) {
12223  if (!parseImplementationGuideManifestPageComponentContent(eventType, xpp, owner, res))
12224        unknownContent(xpp);
12225      eventType = nextNoWhitespace(xpp);
12226    }
12227    next(xpp);
12228    parseElementClose(res);
12229    return res;
12230  }
12231
12232  protected boolean parseImplementationGuideManifestPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ManifestPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12233      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12234        res.setNameElement(parseString(xpp));
12235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12236        res.setTitleElement(parseString(xpp));
12237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("anchor")) {
12238        res.getAnchor().add(parseString(xpp));
12239      } else if (!parseBackboneElementContent(eventType, xpp, res))
12240        return false;
12241    return true;
12242  }
12243
12244  protected InsurancePlan parseInsurancePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12245    InsurancePlan res = new InsurancePlan();
12246    parseDomainResourceAttributes(xpp, res);
12247    next(xpp);
12248    int eventType = nextNoWhitespace(xpp);
12249    while (eventType != XmlPullParser.END_TAG) {
12250  if (!parseInsurancePlanContent(eventType, xpp, res))
12251        unknownContent(xpp);
12252      eventType = nextNoWhitespace(xpp);
12253    }
12254    next(xpp);
12255    parseElementClose(res);
12256    return res;
12257  }
12258
12259  protected boolean parseInsurancePlanContent(int eventType, XmlPullParser xpp, InsurancePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
12260      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12261        res.getIdentifier().add(parseIdentifier(xpp));
12262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12263        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12265        res.getType().add(parseCodeableConcept(xpp));
12266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12267        res.setNameElement(parseString(xpp));
12268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12269        res.getAlias().add(parseString(xpp));
12270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12271        res.setPeriod(parsePeriod(xpp));
12272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ownedBy")) {
12273        res.setOwnedBy(parseReference(xpp));
12274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administeredBy")) {
12275        res.setAdministeredBy(parseReference(xpp));
12276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
12277        res.getCoverageArea().add(parseReference(xpp));
12278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12279        res.getContact().add(parseInsurancePlanInsurancePlanContactComponent(xpp, res));
12280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12281        res.getEndpoint().add(parseReference(xpp));
12282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12283        res.getNetwork().add(parseReference(xpp));
12284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
12285        res.getCoverage().add(parseInsurancePlanInsurancePlanCoverageComponent(xpp, res));
12286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
12287        res.getPlan().add(parseInsurancePlanInsurancePlanPlanComponent(xpp, res));
12288      } else if (!parseDomainResourceContent(eventType, xpp, res))
12289        return false;
12290    return true;
12291  }
12292
12293  protected InsurancePlan.InsurancePlanContactComponent parseInsurancePlanInsurancePlanContactComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12294    InsurancePlan.InsurancePlanContactComponent res = new InsurancePlan.InsurancePlanContactComponent();
12295    parseBackboneAttributes(xpp, res);
12296    next(xpp);
12297    int eventType = nextNoWhitespace(xpp);
12298    while (eventType != XmlPullParser.END_TAG) {
12299  if (!parseInsurancePlanInsurancePlanContactComponentContent(eventType, xpp, owner, res))
12300        unknownContent(xpp);
12301      eventType = nextNoWhitespace(xpp);
12302    }
12303    next(xpp);
12304    parseElementClose(res);
12305    return res;
12306  }
12307
12308  protected boolean parseInsurancePlanInsurancePlanContactComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12309      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12310        res.setPurpose(parseCodeableConcept(xpp));
12311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12312        res.setName(parseHumanName(xpp));
12313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12314        res.getTelecom().add(parseContactPoint(xpp));
12315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12316        res.setAddress(parseAddress(xpp));
12317      } else if (!parseBackboneElementContent(eventType, xpp, res))
12318        return false;
12319    return true;
12320  }
12321
12322  protected InsurancePlan.InsurancePlanCoverageComponent parseInsurancePlanInsurancePlanCoverageComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12323    InsurancePlan.InsurancePlanCoverageComponent res = new InsurancePlan.InsurancePlanCoverageComponent();
12324    parseBackboneAttributes(xpp, res);
12325    next(xpp);
12326    int eventType = nextNoWhitespace(xpp);
12327    while (eventType != XmlPullParser.END_TAG) {
12328  if (!parseInsurancePlanInsurancePlanCoverageComponentContent(eventType, xpp, owner, res))
12329        unknownContent(xpp);
12330      eventType = nextNoWhitespace(xpp);
12331    }
12332    next(xpp);
12333    parseElementClose(res);
12334    return res;
12335  }
12336
12337  protected boolean parseInsurancePlanInsurancePlanCoverageComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanCoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12338      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12339        res.setType(parseCodeableConcept(xpp));
12340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12341        res.getNetwork().add(parseReference(xpp));
12342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
12343        res.getBenefit().add(parseInsurancePlanCoverageBenefitComponent(xpp, owner));
12344      } else if (!parseBackboneElementContent(eventType, xpp, res))
12345        return false;
12346    return true;
12347  }
12348
12349  protected InsurancePlan.CoverageBenefitComponent parseInsurancePlanCoverageBenefitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12350    InsurancePlan.CoverageBenefitComponent res = new InsurancePlan.CoverageBenefitComponent();
12351    parseBackboneAttributes(xpp, res);
12352    next(xpp);
12353    int eventType = nextNoWhitespace(xpp);
12354    while (eventType != XmlPullParser.END_TAG) {
12355  if (!parseInsurancePlanCoverageBenefitComponentContent(eventType, xpp, owner, res))
12356        unknownContent(xpp);
12357      eventType = nextNoWhitespace(xpp);
12358    }
12359    next(xpp);
12360    parseElementClose(res);
12361    return res;
12362  }
12363
12364  protected boolean parseInsurancePlanCoverageBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.CoverageBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12365      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12366        res.setType(parseCodeableConcept(xpp));
12367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
12368        res.setRequirementElement(parseString(xpp));
12369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
12370        res.getLimit().add(parseInsurancePlanCoverageBenefitLimitComponent(xpp, owner));
12371      } else if (!parseBackboneElementContent(eventType, xpp, res))
12372        return false;
12373    return true;
12374  }
12375
12376  protected InsurancePlan.CoverageBenefitLimitComponent parseInsurancePlanCoverageBenefitLimitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12377    InsurancePlan.CoverageBenefitLimitComponent res = new InsurancePlan.CoverageBenefitLimitComponent();
12378    parseBackboneAttributes(xpp, res);
12379    next(xpp);
12380    int eventType = nextNoWhitespace(xpp);
12381    while (eventType != XmlPullParser.END_TAG) {
12382  if (!parseInsurancePlanCoverageBenefitLimitComponentContent(eventType, xpp, owner, res))
12383        unknownContent(xpp);
12384      eventType = nextNoWhitespace(xpp);
12385    }
12386    next(xpp);
12387    parseElementClose(res);
12388    return res;
12389  }
12390
12391  protected boolean parseInsurancePlanCoverageBenefitLimitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.CoverageBenefitLimitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12392      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12393        res.setValue(parseQuantity(xpp));
12394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12395        res.setCode(parseCodeableConcept(xpp));
12396      } else if (!parseBackboneElementContent(eventType, xpp, res))
12397        return false;
12398    return true;
12399  }
12400
12401  protected InsurancePlan.InsurancePlanPlanComponent parseInsurancePlanInsurancePlanPlanComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12402    InsurancePlan.InsurancePlanPlanComponent res = new InsurancePlan.InsurancePlanPlanComponent();
12403    parseBackboneAttributes(xpp, res);
12404    next(xpp);
12405    int eventType = nextNoWhitespace(xpp);
12406    while (eventType != XmlPullParser.END_TAG) {
12407  if (!parseInsurancePlanInsurancePlanPlanComponentContent(eventType, xpp, owner, res))
12408        unknownContent(xpp);
12409      eventType = nextNoWhitespace(xpp);
12410    }
12411    next(xpp);
12412    parseElementClose(res);
12413    return res;
12414  }
12415
12416  protected boolean parseInsurancePlanInsurancePlanPlanComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12417      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12418        res.getIdentifier().add(parseIdentifier(xpp));
12419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12420        res.setType(parseCodeableConcept(xpp));
12421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
12422        res.getCoverageArea().add(parseReference(xpp));
12423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12424        res.getNetwork().add(parseReference(xpp));
12425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalCost")) {
12426        res.getGeneralCost().add(parseInsurancePlanInsurancePlanPlanGeneralCostComponent(xpp, owner));
12427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specificCost")) {
12428        res.getSpecificCost().add(parseInsurancePlanInsurancePlanPlanSpecificCostComponent(xpp, owner));
12429      } else if (!parseBackboneElementContent(eventType, xpp, res))
12430        return false;
12431    return true;
12432  }
12433
12434  protected InsurancePlan.InsurancePlanPlanGeneralCostComponent parseInsurancePlanInsurancePlanPlanGeneralCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12435    InsurancePlan.InsurancePlanPlanGeneralCostComponent res = new InsurancePlan.InsurancePlanPlanGeneralCostComponent();
12436    parseBackboneAttributes(xpp, res);
12437    next(xpp);
12438    int eventType = nextNoWhitespace(xpp);
12439    while (eventType != XmlPullParser.END_TAG) {
12440  if (!parseInsurancePlanInsurancePlanPlanGeneralCostComponentContent(eventType, xpp, owner, res))
12441        unknownContent(xpp);
12442      eventType = nextNoWhitespace(xpp);
12443    }
12444    next(xpp);
12445    parseElementClose(res);
12446    return res;
12447  }
12448
12449  protected boolean parseInsurancePlanInsurancePlanPlanGeneralCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanGeneralCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12450      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12451        res.setType(parseCodeableConcept(xpp));
12452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupSize")) {
12453        res.setGroupSizeElement(parsePositiveInt(xpp));
12454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
12455        res.setCost(parseMoney(xpp));
12456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12457        res.setCommentElement(parseString(xpp));
12458      } else if (!parseBackboneElementContent(eventType, xpp, res))
12459        return false;
12460    return true;
12461  }
12462
12463  protected InsurancePlan.InsurancePlanPlanSpecificCostComponent parseInsurancePlanInsurancePlanPlanSpecificCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12464    InsurancePlan.InsurancePlanPlanSpecificCostComponent res = new InsurancePlan.InsurancePlanPlanSpecificCostComponent();
12465    parseBackboneAttributes(xpp, res);
12466    next(xpp);
12467    int eventType = nextNoWhitespace(xpp);
12468    while (eventType != XmlPullParser.END_TAG) {
12469  if (!parseInsurancePlanInsurancePlanPlanSpecificCostComponentContent(eventType, xpp, owner, res))
12470        unknownContent(xpp);
12471      eventType = nextNoWhitespace(xpp);
12472    }
12473    next(xpp);
12474    parseElementClose(res);
12475    return res;
12476  }
12477
12478  protected boolean parseInsurancePlanInsurancePlanPlanSpecificCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanSpecificCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12479      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12480        res.setCategory(parseCodeableConcept(xpp));
12481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
12482        res.getBenefit().add(parseInsurancePlanPlanBenefitComponent(xpp, owner));
12483      } else if (!parseBackboneElementContent(eventType, xpp, res))
12484        return false;
12485    return true;
12486  }
12487
12488  protected InsurancePlan.PlanBenefitComponent parseInsurancePlanPlanBenefitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12489    InsurancePlan.PlanBenefitComponent res = new InsurancePlan.PlanBenefitComponent();
12490    parseBackboneAttributes(xpp, res);
12491    next(xpp);
12492    int eventType = nextNoWhitespace(xpp);
12493    while (eventType != XmlPullParser.END_TAG) {
12494  if (!parseInsurancePlanPlanBenefitComponentContent(eventType, xpp, owner, res))
12495        unknownContent(xpp);
12496      eventType = nextNoWhitespace(xpp);
12497    }
12498    next(xpp);
12499    parseElementClose(res);
12500    return res;
12501  }
12502
12503  protected boolean parseInsurancePlanPlanBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.PlanBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12504      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12505        res.setType(parseCodeableConcept(xpp));
12506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
12507        res.getCost().add(parseInsurancePlanPlanBenefitCostComponent(xpp, owner));
12508      } else if (!parseBackboneElementContent(eventType, xpp, res))
12509        return false;
12510    return true;
12511  }
12512
12513  protected InsurancePlan.PlanBenefitCostComponent parseInsurancePlanPlanBenefitCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12514    InsurancePlan.PlanBenefitCostComponent res = new InsurancePlan.PlanBenefitCostComponent();
12515    parseBackboneAttributes(xpp, res);
12516    next(xpp);
12517    int eventType = nextNoWhitespace(xpp);
12518    while (eventType != XmlPullParser.END_TAG) {
12519  if (!parseInsurancePlanPlanBenefitCostComponentContent(eventType, xpp, owner, res))
12520        unknownContent(xpp);
12521      eventType = nextNoWhitespace(xpp);
12522    }
12523    next(xpp);
12524    parseElementClose(res);
12525    return res;
12526  }
12527
12528  protected boolean parseInsurancePlanPlanBenefitCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.PlanBenefitCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12529      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12530        res.setType(parseCodeableConcept(xpp));
12531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
12532        res.setApplicability(parseCodeableConcept(xpp));
12533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiers")) {
12534        res.getQualifiers().add(parseCodeableConcept(xpp));
12535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12536        res.setValue(parseQuantity(xpp));
12537      } else if (!parseBackboneElementContent(eventType, xpp, res))
12538        return false;
12539    return true;
12540  }
12541
12542  protected Invoice parseInvoice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12543    Invoice res = new Invoice();
12544    parseDomainResourceAttributes(xpp, res);
12545    next(xpp);
12546    int eventType = nextNoWhitespace(xpp);
12547    while (eventType != XmlPullParser.END_TAG) {
12548  if (!parseInvoiceContent(eventType, xpp, res))
12549        unknownContent(xpp);
12550      eventType = nextNoWhitespace(xpp);
12551    }
12552    next(xpp);
12553    parseElementClose(res);
12554    return res;
12555  }
12556
12557  protected boolean parseInvoiceContent(int eventType, XmlPullParser xpp, Invoice res) throws XmlPullParserException, IOException, FHIRFormatError {
12558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12559        res.getIdentifier().add(parseIdentifier(xpp));
12560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12561        res.setStatusElement(parseEnumeration(xpp, Invoice.InvoiceStatus.NULL, new Invoice.InvoiceStatusEnumFactory()));
12562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelledReason")) {
12563        res.setCancelledReasonElement(parseString(xpp));
12564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12565        res.setType(parseCodeableConcept(xpp));
12566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12567        res.setSubject(parseReference(xpp));
12568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
12569        res.setRecipient(parseReference(xpp));
12570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12571        res.setDateElement(parseDateTime(xpp));
12572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
12573        res.getParticipant().add(parseInvoiceInvoiceParticipantComponent(xpp, res));
12574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
12575        res.setIssuer(parseReference(xpp));
12576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
12577        res.setAccount(parseReference(xpp));
12578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lineItem")) {
12579        res.getLineItem().add(parseInvoiceInvoiceLineItemComponent(xpp, res));
12580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalPriceComponent")) {
12581        res.getTotalPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, res));
12582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalNet")) {
12583        res.setTotalNet(parseMoney(xpp));
12584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalGross")) {
12585        res.setTotalGross(parseMoney(xpp));
12586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentTerms")) {
12587        res.setPaymentTermsElement(parseMarkdown(xpp));
12588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12589        res.getNote().add(parseAnnotation(xpp));
12590      } else if (!parseDomainResourceContent(eventType, xpp, res))
12591        return false;
12592    return true;
12593  }
12594
12595  protected Invoice.InvoiceParticipantComponent parseInvoiceInvoiceParticipantComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12596    Invoice.InvoiceParticipantComponent res = new Invoice.InvoiceParticipantComponent();
12597    parseBackboneAttributes(xpp, res);
12598    next(xpp);
12599    int eventType = nextNoWhitespace(xpp);
12600    while (eventType != XmlPullParser.END_TAG) {
12601  if (!parseInvoiceInvoiceParticipantComponentContent(eventType, xpp, owner, res))
12602        unknownContent(xpp);
12603      eventType = nextNoWhitespace(xpp);
12604    }
12605    next(xpp);
12606    parseElementClose(res);
12607    return res;
12608  }
12609
12610  protected boolean parseInvoiceInvoiceParticipantComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12611      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
12612        res.setRole(parseCodeableConcept(xpp));
12613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
12614        res.setActor(parseReference(xpp));
12615      } else if (!parseBackboneElementContent(eventType, xpp, res))
12616        return false;
12617    return true;
12618  }
12619
12620  protected Invoice.InvoiceLineItemComponent parseInvoiceInvoiceLineItemComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12621    Invoice.InvoiceLineItemComponent res = new Invoice.InvoiceLineItemComponent();
12622    parseBackboneAttributes(xpp, res);
12623    next(xpp);
12624    int eventType = nextNoWhitespace(xpp);
12625    while (eventType != XmlPullParser.END_TAG) {
12626  if (!parseInvoiceInvoiceLineItemComponentContent(eventType, xpp, owner, res))
12627        unknownContent(xpp);
12628      eventType = nextNoWhitespace(xpp);
12629    }
12630    next(xpp);
12631    parseElementClose(res);
12632    return res;
12633  }
12634
12635  protected boolean parseInvoiceInvoiceLineItemComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12636      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
12637        res.setSequenceElement(parsePositiveInt(xpp));
12638      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "chargeItem")) {
12639        res.setChargeItem(parseType("chargeItem", xpp));
12640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
12641        res.getPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, owner));
12642      } else if (!parseBackboneElementContent(eventType, xpp, res))
12643        return false;
12644    return true;
12645  }
12646
12647  protected Invoice.InvoiceLineItemPriceComponentComponent parseInvoiceInvoiceLineItemPriceComponentComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12648    Invoice.InvoiceLineItemPriceComponentComponent res = new Invoice.InvoiceLineItemPriceComponentComponent();
12649    parseBackboneAttributes(xpp, res);
12650    next(xpp);
12651    int eventType = nextNoWhitespace(xpp);
12652    while (eventType != XmlPullParser.END_TAG) {
12653  if (!parseInvoiceInvoiceLineItemPriceComponentComponentContent(eventType, xpp, owner, res))
12654        unknownContent(xpp);
12655      eventType = nextNoWhitespace(xpp);
12656    }
12657    next(xpp);
12658    parseElementClose(res);
12659    return res;
12660  }
12661
12662  protected boolean parseInvoiceInvoiceLineItemPriceComponentComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12663      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12664        res.setTypeElement(parseEnumeration(xpp, Invoice.InvoicePriceComponentType.NULL, new Invoice.InvoicePriceComponentTypeEnumFactory()));
12665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12666        res.setCode(parseCodeableConcept(xpp));
12667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
12668        res.setFactorElement(parseDecimal(xpp));
12669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12670        res.setAmount(parseMoney(xpp));
12671      } else if (!parseBackboneElementContent(eventType, xpp, res))
12672        return false;
12673    return true;
12674  }
12675
12676  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12677    Library res = new Library();
12678    parseDomainResourceAttributes(xpp, res);
12679    next(xpp);
12680    int eventType = nextNoWhitespace(xpp);
12681    while (eventType != XmlPullParser.END_TAG) {
12682  if (!parseLibraryContent(eventType, xpp, res))
12683        unknownContent(xpp);
12684      eventType = nextNoWhitespace(xpp);
12685    }
12686    next(xpp);
12687    parseElementClose(res);
12688    return res;
12689  }
12690
12691  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
12692      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12693        res.setUrlElement(parseUri(xpp));
12694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12695        res.getIdentifier().add(parseIdentifier(xpp));
12696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12697        res.setVersionElement(parseString(xpp));
12698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12699        res.setNameElement(parseString(xpp));
12700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12701        res.setTitleElement(parseString(xpp));
12702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
12703        res.setSubtitleElement(parseString(xpp));
12704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12705        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12707        res.setExperimentalElement(parseBoolean(xpp));
12708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12709        res.setType(parseCodeableConcept(xpp));
12710      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
12711        res.setSubject(parseType("subject", xpp));
12712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12713        res.setDateElement(parseDateTime(xpp));
12714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12715        res.setPublisherElement(parseString(xpp));
12716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12717        res.getContact().add(parseContactDetail(xpp));
12718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12719        res.setDescriptionElement(parseMarkdown(xpp));
12720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12721        res.getUseContext().add(parseUsageContext(xpp));
12722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12723        res.getJurisdiction().add(parseCodeableConcept(xpp));
12724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12725        res.setPurposeElement(parseMarkdown(xpp));
12726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12727        res.setUsageElement(parseString(xpp));
12728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12729        res.setCopyrightElement(parseMarkdown(xpp));
12730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12731        res.setApprovalDateElement(parseDate(xpp));
12732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12733        res.setLastReviewDateElement(parseDate(xpp));
12734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
12735        res.setEffectivePeriod(parsePeriod(xpp));
12736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
12737        res.getTopic().add(parseCodeableConcept(xpp));
12738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12739        res.getAuthor().add(parseContactDetail(xpp));
12740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
12741        res.getEditor().add(parseContactDetail(xpp));
12742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
12743        res.getReviewer().add(parseContactDetail(xpp));
12744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
12745        res.getEndorser().add(parseContactDetail(xpp));
12746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12747        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12749        res.getParameter().add(parseParameterDefinition(xpp));
12750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
12751        res.getDataRequirement().add(parseDataRequirement(xpp));
12752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
12753        res.getContent().add(parseAttachment(xpp));
12754      } else if (!parseDomainResourceContent(eventType, xpp, res))
12755        return false;
12756    return true;
12757  }
12758
12759  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12760    Linkage res = new Linkage();
12761    parseDomainResourceAttributes(xpp, res);
12762    next(xpp);
12763    int eventType = nextNoWhitespace(xpp);
12764    while (eventType != XmlPullParser.END_TAG) {
12765  if (!parseLinkageContent(eventType, xpp, res))
12766        unknownContent(xpp);
12767      eventType = nextNoWhitespace(xpp);
12768    }
12769    next(xpp);
12770    parseElementClose(res);
12771    return res;
12772  }
12773
12774  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
12775      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12776        res.setActiveElement(parseBoolean(xpp));
12777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12778        res.setAuthor(parseReference(xpp));
12779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
12780        res.getItem().add(parseLinkageLinkageItemComponent(xpp, res));
12781      } else if (!parseDomainResourceContent(eventType, xpp, res))
12782        return false;
12783    return true;
12784  }
12785
12786  protected Linkage.LinkageItemComponent parseLinkageLinkageItemComponent(XmlPullParser xpp, Linkage owner) throws XmlPullParserException, IOException, FHIRFormatError {
12787    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
12788    parseBackboneAttributes(xpp, res);
12789    next(xpp);
12790    int eventType = nextNoWhitespace(xpp);
12791    while (eventType != XmlPullParser.END_TAG) {
12792  if (!parseLinkageLinkageItemComponentContent(eventType, xpp, owner, res))
12793        unknownContent(xpp);
12794      eventType = nextNoWhitespace(xpp);
12795    }
12796    next(xpp);
12797    parseElementClose(res);
12798    return res;
12799  }
12800
12801  protected boolean parseLinkageLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage owner, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12802      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12803        res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
12804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12805        res.setResource(parseReference(xpp));
12806      } else if (!parseBackboneElementContent(eventType, xpp, res))
12807        return false;
12808    return true;
12809  }
12810
12811  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12812    ListResource res = new ListResource();
12813    parseDomainResourceAttributes(xpp, res);
12814    next(xpp);
12815    int eventType = nextNoWhitespace(xpp);
12816    while (eventType != XmlPullParser.END_TAG) {
12817  if (!parseListResourceContent(eventType, xpp, res))
12818        unknownContent(xpp);
12819      eventType = nextNoWhitespace(xpp);
12820    }
12821    next(xpp);
12822    parseElementClose(res);
12823    return res;
12824  }
12825
12826  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
12827      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12828        res.getIdentifier().add(parseIdentifier(xpp));
12829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12830        res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
12831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12832        res.setModeElement(parseEnumeration(xpp, ListResource.ListMode.NULL, new ListResource.ListModeEnumFactory()));
12833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12834        res.setTitleElement(parseString(xpp));
12835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12836        res.setCode(parseCodeableConcept(xpp));
12837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12838        res.setSubject(parseReference(xpp));
12839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
12840        res.setEncounter(parseReference(xpp));
12841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12842        res.setDateElement(parseDateTime(xpp));
12843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12844        res.setSource(parseReference(xpp));
12845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
12846        res.setOrderedBy(parseCodeableConcept(xpp));
12847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12848        res.getNote().add(parseAnnotation(xpp));
12849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
12850        res.getEntry().add(parseListResourceListEntryComponent(xpp, res));
12851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
12852        res.setEmptyReason(parseCodeableConcept(xpp));
12853      } else if (!parseDomainResourceContent(eventType, xpp, res))
12854        return false;
12855    return true;
12856  }
12857
12858  protected ListResource.ListEntryComponent parseListResourceListEntryComponent(XmlPullParser xpp, ListResource owner) throws XmlPullParserException, IOException, FHIRFormatError {
12859    ListResource.ListEntryComponent res = new ListResource.ListEntryComponent();
12860    parseBackboneAttributes(xpp, res);
12861    next(xpp);
12862    int eventType = nextNoWhitespace(xpp);
12863    while (eventType != XmlPullParser.END_TAG) {
12864  if (!parseListResourceListEntryComponentContent(eventType, xpp, owner, res))
12865        unknownContent(xpp);
12866      eventType = nextNoWhitespace(xpp);
12867    }
12868    next(xpp);
12869    parseElementClose(res);
12870    return res;
12871  }
12872
12873  protected boolean parseListResourceListEntryComponentContent(int eventType, XmlPullParser xpp, ListResource owner, ListResource.ListEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12874      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
12875        res.setFlag(parseCodeableConcept(xpp));
12876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
12877        res.setDeletedElement(parseBoolean(xpp));
12878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12879        res.setDateElement(parseDateTime(xpp));
12880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
12881        res.setItem(parseReference(xpp));
12882      } else if (!parseBackboneElementContent(eventType, xpp, res))
12883        return false;
12884    return true;
12885  }
12886
12887  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12888    Location res = new Location();
12889    parseDomainResourceAttributes(xpp, res);
12890    next(xpp);
12891    int eventType = nextNoWhitespace(xpp);
12892    while (eventType != XmlPullParser.END_TAG) {
12893  if (!parseLocationContent(eventType, xpp, res))
12894        unknownContent(xpp);
12895      eventType = nextNoWhitespace(xpp);
12896    }
12897    next(xpp);
12898    parseElementClose(res);
12899    return res;
12900  }
12901
12902  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
12903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12904        res.getIdentifier().add(parseIdentifier(xpp));
12905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12906        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
12907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
12908        res.setOperationalStatus(parseCoding(xpp));
12909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12910        res.setNameElement(parseString(xpp));
12911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12912        res.getAlias().add(parseString(xpp));
12913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12914        res.setDescriptionElement(parseString(xpp));
12915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12916        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
12917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12918        res.getType().add(parseCodeableConcept(xpp));
12919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12920        res.getTelecom().add(parseContactPoint(xpp));
12921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12922        res.setAddress(parseAddress(xpp));
12923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
12924        res.setPhysicalType(parseCodeableConcept(xpp));
12925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
12926        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
12927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12928        res.setManagingOrganization(parseReference(xpp));
12929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12930        res.setPartOf(parseReference(xpp));
12931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hoursOfOperation")) {
12932        res.getHoursOfOperation().add(parseLocationLocationHoursOfOperationComponent(xpp, res));
12933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
12934        res.setAvailabilityExceptionsElement(parseString(xpp));
12935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12936        res.getEndpoint().add(parseReference(xpp));
12937      } else if (!parseDomainResourceContent(eventType, xpp, res))
12938        return false;
12939    return true;
12940  }
12941
12942  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
12943    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
12944    parseBackboneAttributes(xpp, res);
12945    next(xpp);
12946    int eventType = nextNoWhitespace(xpp);
12947    while (eventType != XmlPullParser.END_TAG) {
12948  if (!parseLocationLocationPositionComponentContent(eventType, xpp, owner, res))
12949        unknownContent(xpp);
12950      eventType = nextNoWhitespace(xpp);
12951    }
12952    next(xpp);
12953    parseElementClose(res);
12954    return res;
12955  }
12956
12957  protected boolean parseLocationLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12958      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
12959        res.setLongitudeElement(parseDecimal(xpp));
12960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
12961        res.setLatitudeElement(parseDecimal(xpp));
12962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
12963        res.setAltitudeElement(parseDecimal(xpp));
12964      } else if (!parseBackboneElementContent(eventType, xpp, res))
12965        return false;
12966    return true;
12967  }
12968
12969  protected Location.LocationHoursOfOperationComponent parseLocationLocationHoursOfOperationComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
12970    Location.LocationHoursOfOperationComponent res = new Location.LocationHoursOfOperationComponent();
12971    parseBackboneAttributes(xpp, res);
12972    next(xpp);
12973    int eventType = nextNoWhitespace(xpp);
12974    while (eventType != XmlPullParser.END_TAG) {
12975  if (!parseLocationLocationHoursOfOperationComponentContent(eventType, xpp, owner, res))
12976        unknownContent(xpp);
12977      eventType = nextNoWhitespace(xpp);
12978    }
12979    next(xpp);
12980    parseElementClose(res);
12981    return res;
12982  }
12983
12984  protected boolean parseLocationLocationHoursOfOperationComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationHoursOfOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12985      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
12986        res.getDaysOfWeek().add(parseEnumeration(xpp, Location.DaysOfWeek.NULL, new Location.DaysOfWeekEnumFactory()));
12987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
12988        res.setAllDayElement(parseBoolean(xpp));
12989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("openingTime")) {
12990        res.setOpeningTimeElement(parseTime(xpp));
12991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closingTime")) {
12992        res.setClosingTimeElement(parseTime(xpp));
12993      } else if (!parseBackboneElementContent(eventType, xpp, res))
12994        return false;
12995    return true;
12996  }
12997
12998  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12999    Measure res = new Measure();
13000    parseDomainResourceAttributes(xpp, res);
13001    next(xpp);
13002    int eventType = nextNoWhitespace(xpp);
13003    while (eventType != XmlPullParser.END_TAG) {
13004  if (!parseMeasureContent(eventType, xpp, res))
13005        unknownContent(xpp);
13006      eventType = nextNoWhitespace(xpp);
13007    }
13008    next(xpp);
13009    parseElementClose(res);
13010    return res;
13011  }
13012
13013  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
13014      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13015        res.setUrlElement(parseUri(xpp));
13016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13017        res.getIdentifier().add(parseIdentifier(xpp));
13018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13019        res.setVersionElement(parseString(xpp));
13020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13021        res.setNameElement(parseString(xpp));
13022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13023        res.setTitleElement(parseString(xpp));
13024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
13025        res.setSubtitleElement(parseString(xpp));
13026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13027        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13029        res.setExperimentalElement(parseBoolean(xpp));
13030      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
13031        res.setSubject(parseType("subject", xpp));
13032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13033        res.setDateElement(parseDateTime(xpp));
13034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13035        res.setPublisherElement(parseString(xpp));
13036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13037        res.getContact().add(parseContactDetail(xpp));
13038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13039        res.setDescriptionElement(parseMarkdown(xpp));
13040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13041        res.getUseContext().add(parseUsageContext(xpp));
13042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13043        res.getJurisdiction().add(parseCodeableConcept(xpp));
13044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
13045        res.setPurposeElement(parseMarkdown(xpp));
13046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
13047        res.setUsageElement(parseString(xpp));
13048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13049        res.setCopyrightElement(parseMarkdown(xpp));
13050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
13051        res.setApprovalDateElement(parseDate(xpp));
13052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
13053        res.setLastReviewDateElement(parseDate(xpp));
13054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
13055        res.setEffectivePeriod(parsePeriod(xpp));
13056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
13057        res.getTopic().add(parseCodeableConcept(xpp));
13058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
13059        res.getAuthor().add(parseContactDetail(xpp));
13060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
13061        res.getEditor().add(parseContactDetail(xpp));
13062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
13063        res.getReviewer().add(parseContactDetail(xpp));
13064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
13065        res.getEndorser().add(parseContactDetail(xpp));
13066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
13067        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
13068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
13069        res.getLibrary().add(parseCanonical(xpp));
13070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
13071        res.setDisclaimerElement(parseMarkdown(xpp));
13072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
13073        res.setScoring(parseCodeableConcept(xpp));
13074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
13075        res.setCompositeScoring(parseCodeableConcept(xpp));
13076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13077        res.getType().add(parseCodeableConcept(xpp));
13078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
13079        res.setRiskAdjustmentElement(parseString(xpp));
13080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
13081        res.setRateAggregationElement(parseString(xpp));
13082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
13083        res.setRationaleElement(parseMarkdown(xpp));
13084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
13085        res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
13086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
13087        res.setImprovementNotation(parseCodeableConcept(xpp));
13088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13089        res.getDefinition().add(parseMarkdown(xpp));
13090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
13091        res.setGuidanceElement(parseMarkdown(xpp));
13092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
13093        res.getGroup().add(parseMeasureMeasureGroupComponent(xpp, res));
13094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
13095        res.getSupplementalData().add(parseMeasureMeasureSupplementalDataComponent(xpp, res));
13096      } else if (!parseDomainResourceContent(eventType, xpp, res))
13097        return false;
13098    return true;
13099  }
13100
13101  protected Measure.MeasureGroupComponent parseMeasureMeasureGroupComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13102    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
13103    parseBackboneAttributes(xpp, res);
13104    next(xpp);
13105    int eventType = nextNoWhitespace(xpp);
13106    while (eventType != XmlPullParser.END_TAG) {
13107  if (!parseMeasureMeasureGroupComponentContent(eventType, xpp, owner, res))
13108        unknownContent(xpp);
13109      eventType = nextNoWhitespace(xpp);
13110    }
13111    next(xpp);
13112    parseElementClose(res);
13113    return res;
13114  }
13115
13116  protected boolean parseMeasureMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13117      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13118        res.setCode(parseCodeableConcept(xpp));
13119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13120        res.setDescriptionElement(parseString(xpp));
13121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13122        res.getPopulation().add(parseMeasureMeasureGroupPopulationComponent(xpp, owner));
13123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
13124        res.getStratifier().add(parseMeasureMeasureGroupStratifierComponent(xpp, owner));
13125      } else if (!parseBackboneElementContent(eventType, xpp, res))
13126        return false;
13127    return true;
13128  }
13129
13130  protected Measure.MeasureGroupPopulationComponent parseMeasureMeasureGroupPopulationComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13131    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
13132    parseBackboneAttributes(xpp, res);
13133    next(xpp);
13134    int eventType = nextNoWhitespace(xpp);
13135    while (eventType != XmlPullParser.END_TAG) {
13136  if (!parseMeasureMeasureGroupPopulationComponentContent(eventType, xpp, owner, res))
13137        unknownContent(xpp);
13138      eventType = nextNoWhitespace(xpp);
13139    }
13140    next(xpp);
13141    parseElementClose(res);
13142    return res;
13143  }
13144
13145  protected boolean parseMeasureMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13146      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13147        res.setCode(parseCodeableConcept(xpp));
13148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13149        res.setDescriptionElement(parseString(xpp));
13150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13151        res.setCriteria(parseExpression(xpp));
13152      } else if (!parseBackboneElementContent(eventType, xpp, res))
13153        return false;
13154    return true;
13155  }
13156
13157  protected Measure.MeasureGroupStratifierComponent parseMeasureMeasureGroupStratifierComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13158    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
13159    parseBackboneAttributes(xpp, res);
13160    next(xpp);
13161    int eventType = nextNoWhitespace(xpp);
13162    while (eventType != XmlPullParser.END_TAG) {
13163  if (!parseMeasureMeasureGroupStratifierComponentContent(eventType, xpp, owner, res))
13164        unknownContent(xpp);
13165      eventType = nextNoWhitespace(xpp);
13166    }
13167    next(xpp);
13168    parseElementClose(res);
13169    return res;
13170  }
13171
13172  protected boolean parseMeasureMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13174        res.setCode(parseCodeableConcept(xpp));
13175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13176        res.setDescriptionElement(parseString(xpp));
13177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13178        res.setCriteria(parseExpression(xpp));
13179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
13180        res.getComponent().add(parseMeasureMeasureGroupStratifierComponentComponent(xpp, owner));
13181      } else if (!parseBackboneElementContent(eventType, xpp, res))
13182        return false;
13183    return true;
13184  }
13185
13186  protected Measure.MeasureGroupStratifierComponentComponent parseMeasureMeasureGroupStratifierComponentComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13187    Measure.MeasureGroupStratifierComponentComponent res = new Measure.MeasureGroupStratifierComponentComponent();
13188    parseBackboneAttributes(xpp, res);
13189    next(xpp);
13190    int eventType = nextNoWhitespace(xpp);
13191    while (eventType != XmlPullParser.END_TAG) {
13192  if (!parseMeasureMeasureGroupStratifierComponentComponentContent(eventType, xpp, owner, res))
13193        unknownContent(xpp);
13194      eventType = nextNoWhitespace(xpp);
13195    }
13196    next(xpp);
13197    parseElementClose(res);
13198    return res;
13199  }
13200
13201  protected boolean parseMeasureMeasureGroupStratifierComponentComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13202      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13203        res.setCode(parseCodeableConcept(xpp));
13204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13205        res.setDescriptionElement(parseString(xpp));
13206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13207        res.setCriteria(parseExpression(xpp));
13208      } else if (!parseBackboneElementContent(eventType, xpp, res))
13209        return false;
13210    return true;
13211  }
13212
13213  protected Measure.MeasureSupplementalDataComponent parseMeasureMeasureSupplementalDataComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13214    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
13215    parseBackboneAttributes(xpp, res);
13216    next(xpp);
13217    int eventType = nextNoWhitespace(xpp);
13218    while (eventType != XmlPullParser.END_TAG) {
13219  if (!parseMeasureMeasureSupplementalDataComponentContent(eventType, xpp, owner, res))
13220        unknownContent(xpp);
13221      eventType = nextNoWhitespace(xpp);
13222    }
13223    next(xpp);
13224    parseElementClose(res);
13225    return res;
13226  }
13227
13228  protected boolean parseMeasureMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13229      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13230        res.setCode(parseCodeableConcept(xpp));
13231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
13232        res.getUsage().add(parseCodeableConcept(xpp));
13233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13234        res.setDescriptionElement(parseString(xpp));
13235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13236        res.setCriteria(parseExpression(xpp));
13237      } else if (!parseBackboneElementContent(eventType, xpp, res))
13238        return false;
13239    return true;
13240  }
13241
13242  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13243    MeasureReport res = new MeasureReport();
13244    parseDomainResourceAttributes(xpp, res);
13245    next(xpp);
13246    int eventType = nextNoWhitespace(xpp);
13247    while (eventType != XmlPullParser.END_TAG) {
13248  if (!parseMeasureReportContent(eventType, xpp, res))
13249        unknownContent(xpp);
13250      eventType = nextNoWhitespace(xpp);
13251    }
13252    next(xpp);
13253    parseElementClose(res);
13254    return res;
13255  }
13256
13257  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
13258      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13259        res.getIdentifier().add(parseIdentifier(xpp));
13260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13261        res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
13262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13263        res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
13264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
13265        res.setMeasureElement(parseCanonical(xpp));
13266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13267        res.setSubject(parseReference(xpp));
13268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13269        res.setDateElement(parseDateTime(xpp));
13270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
13271        res.setReporter(parseReference(xpp));
13272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13273        res.setPeriod(parsePeriod(xpp));
13274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
13275        res.setImprovementNotation(parseCodeableConcept(xpp));
13276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
13277        res.getGroup().add(parseMeasureReportMeasureReportGroupComponent(xpp, res));
13278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResource")) {
13279        res.getEvaluatedResource().add(parseReference(xpp));
13280      } else if (!parseDomainResourceContent(eventType, xpp, res))
13281        return false;
13282    return true;
13283  }
13284
13285  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportMeasureReportGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13286    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
13287    parseBackboneAttributes(xpp, res);
13288    next(xpp);
13289    int eventType = nextNoWhitespace(xpp);
13290    while (eventType != XmlPullParser.END_TAG) {
13291  if (!parseMeasureReportMeasureReportGroupComponentContent(eventType, xpp, owner, res))
13292        unknownContent(xpp);
13293      eventType = nextNoWhitespace(xpp);
13294    }
13295    next(xpp);
13296    parseElementClose(res);
13297    return res;
13298  }
13299
13300  protected boolean parseMeasureReportMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13301      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13302        res.setCode(parseCodeableConcept(xpp));
13303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13304        res.getPopulation().add(parseMeasureReportMeasureReportGroupPopulationComponent(xpp, owner));
13305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
13306        res.setMeasureScore(parseQuantity(xpp));
13307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
13308        res.getStratifier().add(parseMeasureReportMeasureReportGroupStratifierComponent(xpp, owner));
13309      } else if (!parseBackboneElementContent(eventType, xpp, res))
13310        return false;
13311    return true;
13312  }
13313
13314  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportMeasureReportGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13315    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
13316    parseBackboneAttributes(xpp, res);
13317    next(xpp);
13318    int eventType = nextNoWhitespace(xpp);
13319    while (eventType != XmlPullParser.END_TAG) {
13320  if (!parseMeasureReportMeasureReportGroupPopulationComponentContent(eventType, xpp, owner, res))
13321        unknownContent(xpp);
13322      eventType = nextNoWhitespace(xpp);
13323    }
13324    next(xpp);
13325    parseElementClose(res);
13326    return res;
13327  }
13328
13329  protected boolean parseMeasureReportMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13330      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13331        res.setCode(parseCodeableConcept(xpp));
13332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
13333        res.setCountElement(parseInteger(xpp));
13334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
13335        res.setSubjectResults(parseReference(xpp));
13336      } else if (!parseBackboneElementContent(eventType, xpp, res))
13337        return false;
13338    return true;
13339  }
13340
13341  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportMeasureReportGroupStratifierComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13342    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
13343    parseBackboneAttributes(xpp, res);
13344    next(xpp);
13345    int eventType = nextNoWhitespace(xpp);
13346    while (eventType != XmlPullParser.END_TAG) {
13347  if (!parseMeasureReportMeasureReportGroupStratifierComponentContent(eventType, xpp, owner, res))
13348        unknownContent(xpp);
13349      eventType = nextNoWhitespace(xpp);
13350    }
13351    next(xpp);
13352    parseElementClose(res);
13353    return res;
13354  }
13355
13356  protected boolean parseMeasureReportMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13357      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13358        res.getCode().add(parseCodeableConcept(xpp));
13359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
13360        res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp, owner));
13361      } else if (!parseBackboneElementContent(eventType, xpp, res))
13362        return false;
13363    return true;
13364  }
13365
13366  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13367    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
13368    parseBackboneAttributes(xpp, res);
13369    next(xpp);
13370    int eventType = nextNoWhitespace(xpp);
13371    while (eventType != XmlPullParser.END_TAG) {
13372  if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, owner, res))
13373        unknownContent(xpp);
13374      eventType = nextNoWhitespace(xpp);
13375    }
13376    next(xpp);
13377    parseElementClose(res);
13378    return res;
13379  }
13380
13381  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13382      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13383        res.setValue(parseCodeableConcept(xpp));
13384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
13385        res.getComponent().add(parseMeasureReportStratifierGroupComponentComponent(xpp, owner));
13386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13387        res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp, owner));
13388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
13389        res.setMeasureScore(parseQuantity(xpp));
13390      } else if (!parseBackboneElementContent(eventType, xpp, res))
13391        return false;
13392    return true;
13393  }
13394
13395  protected MeasureReport.StratifierGroupComponentComponent parseMeasureReportStratifierGroupComponentComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13396    MeasureReport.StratifierGroupComponentComponent res = new MeasureReport.StratifierGroupComponentComponent();
13397    parseBackboneAttributes(xpp, res);
13398    next(xpp);
13399    int eventType = nextNoWhitespace(xpp);
13400    while (eventType != XmlPullParser.END_TAG) {
13401  if (!parseMeasureReportStratifierGroupComponentComponentContent(eventType, xpp, owner, res))
13402        unknownContent(xpp);
13403      eventType = nextNoWhitespace(xpp);
13404    }
13405    next(xpp);
13406    parseElementClose(res);
13407    return res;
13408  }
13409
13410  protected boolean parseMeasureReportStratifierGroupComponentComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13411      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13412        res.setCode(parseCodeableConcept(xpp));
13413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13414        res.setValue(parseCodeableConcept(xpp));
13415      } else if (!parseBackboneElementContent(eventType, xpp, res))
13416        return false;
13417    return true;
13418  }
13419
13420  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13421    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
13422    parseBackboneAttributes(xpp, res);
13423    next(xpp);
13424    int eventType = nextNoWhitespace(xpp);
13425    while (eventType != XmlPullParser.END_TAG) {
13426  if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, owner, res))
13427        unknownContent(xpp);
13428      eventType = nextNoWhitespace(xpp);
13429    }
13430    next(xpp);
13431    parseElementClose(res);
13432    return res;
13433  }
13434
13435  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13436      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13437        res.setCode(parseCodeableConcept(xpp));
13438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
13439        res.setCountElement(parseInteger(xpp));
13440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
13441        res.setSubjectResults(parseReference(xpp));
13442      } else if (!parseBackboneElementContent(eventType, xpp, res))
13443        return false;
13444    return true;
13445  }
13446
13447  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13448    Media res = new Media();
13449    parseDomainResourceAttributes(xpp, res);
13450    next(xpp);
13451    int eventType = nextNoWhitespace(xpp);
13452    while (eventType != XmlPullParser.END_TAG) {
13453  if (!parseMediaContent(eventType, xpp, res))
13454        unknownContent(xpp);
13455      eventType = nextNoWhitespace(xpp);
13456    }
13457    next(xpp);
13458    parseElementClose(res);
13459    return res;
13460  }
13461
13462  protected boolean parseMediaContent(int eventType, XmlPullParser xpp, Media res) throws XmlPullParserException, IOException, FHIRFormatError {
13463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13464        res.getIdentifier().add(parseIdentifier(xpp));
13465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13466        res.getBasedOn().add(parseReference(xpp));
13467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13468        res.getPartOf().add(parseReference(xpp));
13469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13470        res.setStatusElement(parseEnumeration(xpp, Media.MediaStatus.NULL, new Media.MediaStatusEnumFactory()));
13471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13472        res.setType(parseCodeableConcept(xpp));
13473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
13474        res.setModality(parseCodeableConcept(xpp));
13475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
13476        res.setView(parseCodeableConcept(xpp));
13477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13478        res.setSubject(parseReference(xpp));
13479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
13480        res.setEncounter(parseReference(xpp));
13481      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "created")) {
13482        res.setCreated(parseType("created", xpp));
13483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
13484        res.setIssuedElement(parseInstant(xpp));
13485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
13486        res.setOperator(parseReference(xpp));
13487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13488        res.getReasonCode().add(parseCodeableConcept(xpp));
13489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13490        res.setBodySite(parseCodeableConcept(xpp));
13491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
13492        res.setDeviceNameElement(parseString(xpp));
13493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13494        res.setDevice(parseReference(xpp));
13495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
13496        res.setHeightElement(parsePositiveInt(xpp));
13497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
13498        res.setWidthElement(parsePositiveInt(xpp));
13499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
13500        res.setFramesElement(parsePositiveInt(xpp));
13501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
13502        res.setDurationElement(parseDecimal(xpp));
13503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
13504        res.setContent(parseAttachment(xpp));
13505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13506        res.getNote().add(parseAnnotation(xpp));
13507      } else if (!parseDomainResourceContent(eventType, xpp, res))
13508        return false;
13509    return true;
13510  }
13511
13512  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13513    Medication res = new Medication();
13514    parseDomainResourceAttributes(xpp, res);
13515    next(xpp);
13516    int eventType = nextNoWhitespace(xpp);
13517    while (eventType != XmlPullParser.END_TAG) {
13518  if (!parseMedicationContent(eventType, xpp, res))
13519        unknownContent(xpp);
13520      eventType = nextNoWhitespace(xpp);
13521    }
13522    next(xpp);
13523    parseElementClose(res);
13524    return res;
13525  }
13526
13527  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
13528      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13529        res.getIdentifier().add(parseIdentifier(xpp));
13530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13531        res.setCode(parseCodeableConcept(xpp));
13532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13533        res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatus.NULL, new Medication.MedicationStatusEnumFactory()));
13534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13535        res.setManufacturer(parseReference(xpp));
13536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
13537        res.setForm(parseCodeableConcept(xpp));
13538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
13539        res.setAmount(parseRatio(xpp));
13540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13541        res.getIngredient().add(parseMedicationMedicationIngredientComponent(xpp, res));
13542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
13543        res.setBatch(parseMedicationMedicationBatchComponent(xpp, res));
13544      } else if (!parseDomainResourceContent(eventType, xpp, res))
13545        return false;
13546    return true;
13547  }
13548
13549  protected Medication.MedicationIngredientComponent parseMedicationMedicationIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
13550    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
13551    parseBackboneAttributes(xpp, res);
13552    next(xpp);
13553    int eventType = nextNoWhitespace(xpp);
13554    while (eventType != XmlPullParser.END_TAG) {
13555  if (!parseMedicationMedicationIngredientComponentContent(eventType, xpp, owner, res))
13556        unknownContent(xpp);
13557      eventType = nextNoWhitespace(xpp);
13558    }
13559    next(xpp);
13560    parseElementClose(res);
13561    return res;
13562  }
13563
13564  protected boolean parseMedicationMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13565      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
13566        res.setItem(parseType("item", xpp));
13567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
13568        res.setIsActiveElement(parseBoolean(xpp));
13569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13570        res.setStrength(parseRatio(xpp));
13571      } else if (!parseBackboneElementContent(eventType, xpp, res))
13572        return false;
13573    return true;
13574  }
13575
13576  protected Medication.MedicationBatchComponent parseMedicationMedicationBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
13577    Medication.MedicationBatchComponent res = new Medication.MedicationBatchComponent();
13578    parseBackboneAttributes(xpp, res);
13579    next(xpp);
13580    int eventType = nextNoWhitespace(xpp);
13581    while (eventType != XmlPullParser.END_TAG) {
13582  if (!parseMedicationMedicationBatchComponentContent(eventType, xpp, owner, res))
13583        unknownContent(xpp);
13584      eventType = nextNoWhitespace(xpp);
13585    }
13586    next(xpp);
13587    parseElementClose(res);
13588    return res;
13589  }
13590
13591  protected boolean parseMedicationMedicationBatchComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13592      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
13593        res.setLotNumberElement(parseString(xpp));
13594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
13595        res.setExpirationDateElement(parseDateTime(xpp));
13596      } else if (!parseBackboneElementContent(eventType, xpp, res))
13597        return false;
13598    return true;
13599  }
13600
13601  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13602    MedicationAdministration res = new MedicationAdministration();
13603    parseDomainResourceAttributes(xpp, res);
13604    next(xpp);
13605    int eventType = nextNoWhitespace(xpp);
13606    while (eventType != XmlPullParser.END_TAG) {
13607  if (!parseMedicationAdministrationContent(eventType, xpp, res))
13608        unknownContent(xpp);
13609      eventType = nextNoWhitespace(xpp);
13610    }
13611    next(xpp);
13612    parseElementClose(res);
13613    return res;
13614  }
13615
13616  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
13617      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13618        res.getIdentifier().add(parseIdentifier(xpp));
13619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
13620        res.getInstantiates().add(parseUri(xpp));
13621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13622        res.getPartOf().add(parseReference(xpp));
13623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13624        res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatus.NULL, new MedicationAdministration.MedicationAdministrationStatusEnumFactory()));
13625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
13626        res.getStatusReason().add(parseCodeableConcept(xpp));
13627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13628        res.setCategory(parseCodeableConcept(xpp));
13629      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13630        res.setMedication(parseType("medication", xpp));
13631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13632        res.setSubject(parseReference(xpp));
13633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13634        res.setContext(parseReference(xpp));
13635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
13636        res.getSupportingInformation().add(parseReference(xpp));
13637      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
13638        res.setEffective(parseType("effective", xpp));
13639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13640        res.getPerformer().add(parseMedicationAdministrationMedicationAdministrationPerformerComponent(xpp, res));
13641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13642        res.getReasonCode().add(parseCodeableConcept(xpp));
13643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13644        res.getReasonReference().add(parseReference(xpp));
13645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13646        res.setRequest(parseReference(xpp));
13647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13648        res.getDevice().add(parseReference(xpp));
13649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13650        res.getNote().add(parseAnnotation(xpp));
13651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
13652        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
13653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
13654        res.getEventHistory().add(parseReference(xpp));
13655      } else if (!parseDomainResourceContent(eventType, xpp, res))
13656        return false;
13657    return true;
13658  }
13659
13660  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationMedicationAdministrationPerformerComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
13661    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
13662    parseBackboneAttributes(xpp, res);
13663    next(xpp);
13664    int eventType = nextNoWhitespace(xpp);
13665    while (eventType != XmlPullParser.END_TAG) {
13666  if (!parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(eventType, xpp, owner, res))
13667        unknownContent(xpp);
13668      eventType = nextNoWhitespace(xpp);
13669    }
13670    next(xpp);
13671    parseElementClose(res);
13672    return res;
13673  }
13674
13675  protected boolean parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13676      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13677        res.setFunction(parseCodeableConcept(xpp));
13678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13679        res.setActor(parseReference(xpp));
13680      } else if (!parseBackboneElementContent(eventType, xpp, res))
13681        return false;
13682    return true;
13683  }
13684
13685  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
13686    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
13687    parseBackboneAttributes(xpp, res);
13688    next(xpp);
13689    int eventType = nextNoWhitespace(xpp);
13690    while (eventType != XmlPullParser.END_TAG) {
13691  if (!parseMedicationAdministrationMedicationAdministrationDosageComponentContent(eventType, xpp, owner, res))
13692        unknownContent(xpp);
13693      eventType = nextNoWhitespace(xpp);
13694    }
13695    next(xpp);
13696    parseElementClose(res);
13697    return res;
13698  }
13699
13700  protected boolean parseMedicationAdministrationMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13701      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13702        res.setTextElement(parseString(xpp));
13703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
13704        res.setSite(parseCodeableConcept(xpp));
13705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
13706        res.setRoute(parseCodeableConcept(xpp));
13707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
13708        res.setMethod(parseCodeableConcept(xpp));
13709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
13710        res.setDose(parseQuantity(xpp));
13711      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
13712        res.setRate(parseType("rate", xpp));
13713      } else if (!parseBackboneElementContent(eventType, xpp, res))
13714        return false;
13715    return true;
13716  }
13717
13718  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13719    MedicationDispense res = new MedicationDispense();
13720    parseDomainResourceAttributes(xpp, res);
13721    next(xpp);
13722    int eventType = nextNoWhitespace(xpp);
13723    while (eventType != XmlPullParser.END_TAG) {
13724  if (!parseMedicationDispenseContent(eventType, xpp, res))
13725        unknownContent(xpp);
13726      eventType = nextNoWhitespace(xpp);
13727    }
13728    next(xpp);
13729    parseElementClose(res);
13730    return res;
13731  }
13732
13733  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
13734      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13735        res.getIdentifier().add(parseIdentifier(xpp));
13736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13737        res.getPartOf().add(parseReference(xpp));
13738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13739        res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatus.NULL, new MedicationDispense.MedicationDispenseStatusEnumFactory()));
13740      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "statusReason")) {
13741        res.setStatusReason(parseType("statusReason", xpp));
13742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13743        res.setCategory(parseCodeableConcept(xpp));
13744      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13745        res.setMedication(parseType("medication", xpp));
13746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13747        res.setSubject(parseReference(xpp));
13748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13749        res.setContext(parseReference(xpp));
13750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
13751        res.getSupportingInformation().add(parseReference(xpp));
13752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13753        res.getPerformer().add(parseMedicationDispenseMedicationDispensePerformerComponent(xpp, res));
13754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13755        res.setLocation(parseReference(xpp));
13756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
13757        res.getAuthorizingPrescription().add(parseReference(xpp));
13758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13759        res.setType(parseCodeableConcept(xpp));
13760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13761        res.setQuantity(parseQuantity(xpp));
13762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
13763        res.setDaysSupply(parseQuantity(xpp));
13764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
13765        res.setWhenPreparedElement(parseDateTime(xpp));
13766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
13767        res.setWhenHandedOverElement(parseDateTime(xpp));
13768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
13769        res.setDestination(parseReference(xpp));
13770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
13771        res.getReceiver().add(parseReference(xpp));
13772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13773        res.getNote().add(parseAnnotation(xpp));
13774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
13775        res.getDosageInstruction().add(parseDosage(xpp));
13776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
13777        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
13778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
13779        res.getDetectedIssue().add(parseReference(xpp));
13780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
13781        res.getEventHistory().add(parseReference(xpp));
13782      } else if (!parseDomainResourceContent(eventType, xpp, res))
13783        return false;
13784    return true;
13785  }
13786
13787  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispenseMedicationDispensePerformerComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
13788    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
13789    parseBackboneAttributes(xpp, res);
13790    next(xpp);
13791    int eventType = nextNoWhitespace(xpp);
13792    while (eventType != XmlPullParser.END_TAG) {
13793  if (!parseMedicationDispenseMedicationDispensePerformerComponentContent(eventType, xpp, owner, res))
13794        unknownContent(xpp);
13795      eventType = nextNoWhitespace(xpp);
13796    }
13797    next(xpp);
13798    parseElementClose(res);
13799    return res;
13800  }
13801
13802  protected boolean parseMedicationDispenseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13803      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13804        res.setFunction(parseCodeableConcept(xpp));
13805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13806        res.setActor(parseReference(xpp));
13807      } else if (!parseBackboneElementContent(eventType, xpp, res))
13808        return false;
13809    return true;
13810  }
13811
13812  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
13813    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
13814    parseBackboneAttributes(xpp, res);
13815    next(xpp);
13816    int eventType = nextNoWhitespace(xpp);
13817    while (eventType != XmlPullParser.END_TAG) {
13818  if (!parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(eventType, xpp, owner, res))
13819        unknownContent(xpp);
13820      eventType = nextNoWhitespace(xpp);
13821    }
13822    next(xpp);
13823    parseElementClose(res);
13824    return res;
13825  }
13826
13827  protected boolean parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13828      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
13829        res.setWasSubstitutedElement(parseBoolean(xpp));
13830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13831        res.setType(parseCodeableConcept(xpp));
13832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13833        res.getReason().add(parseCodeableConcept(xpp));
13834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
13835        res.getResponsibleParty().add(parseReference(xpp));
13836      } else if (!parseBackboneElementContent(eventType, xpp, res))
13837        return false;
13838    return true;
13839  }
13840
13841  protected MedicationKnowledge parseMedicationKnowledge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13842    MedicationKnowledge res = new MedicationKnowledge();
13843    parseDomainResourceAttributes(xpp, res);
13844    next(xpp);
13845    int eventType = nextNoWhitespace(xpp);
13846    while (eventType != XmlPullParser.END_TAG) {
13847  if (!parseMedicationKnowledgeContent(eventType, xpp, res))
13848        unknownContent(xpp);
13849      eventType = nextNoWhitespace(xpp);
13850    }
13851    next(xpp);
13852    parseElementClose(res);
13853    return res;
13854  }
13855
13856  protected boolean parseMedicationKnowledgeContent(int eventType, XmlPullParser xpp, MedicationKnowledge res) throws XmlPullParserException, IOException, FHIRFormatError {
13857      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13858        res.setCode(parseCodeableConcept(xpp));
13859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13860        res.setStatusElement(parseEnumeration(xpp, MedicationKnowledge.MedicationKnowledgeStatus.NULL, new MedicationKnowledge.MedicationKnowledgeStatusEnumFactory()));
13861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13862        res.setManufacturer(parseReference(xpp));
13863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseForm")) {
13864        res.setDoseForm(parseCodeableConcept(xpp));
13865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
13866        res.setAmount(parseQuantity(xpp));
13867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
13868        res.getSynonym().add(parseString(xpp));
13869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedMedicationKnowledge")) {
13870        res.getRelatedMedicationKnowledge().add(parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(xpp, res));
13871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("associatedMedication")) {
13872        res.getAssociatedMedication().add(parseReference(xpp));
13873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productType")) {
13874        res.getProductType().add(parseCodeableConcept(xpp));
13875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monograph")) {
13876        res.getMonograph().add(parseMedicationKnowledgeMedicationKnowledgeMonographComponent(xpp, res));
13877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13878        res.getIngredient().add(parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(xpp, res));
13879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparationInstruction")) {
13880        res.setPreparationInstructionElement(parseMarkdown(xpp));
13881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedRoute")) {
13882        res.getIntendedRoute().add(parseCodeableConcept(xpp));
13883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
13884        res.getCost().add(parseMedicationKnowledgeMedicationKnowledgeCostComponent(xpp, res));
13885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monitoringProgram")) {
13886        res.getMonitoringProgram().add(parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(xpp, res));
13887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationGuidelines")) {
13888        res.getAdministrationGuidelines().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(xpp, res));
13889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medicineClassification")) {
13890        res.getMedicineClassification().add(parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(xpp, res));
13891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
13892        res.setPackaging(parseMedicationKnowledgeMedicationKnowledgePackagingComponent(xpp, res));
13893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("drugCharacteristic")) {
13894        res.getDrugCharacteristic().add(parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(xpp, res));
13895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
13896        res.getContraindication().add(parseReference(xpp));
13897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatory")) {
13898        res.getRegulatory().add(parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(xpp, res));
13899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kinetics")) {
13900        res.getKinetics().add(parseMedicationKnowledgeMedicationKnowledgeKineticsComponent(xpp, res));
13901      } else if (!parseDomainResourceContent(eventType, xpp, res))
13902        return false;
13903    return true;
13904  }
13905
13906  protected MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13907    MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res = new MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent();
13908    parseBackboneAttributes(xpp, res);
13909    next(xpp);
13910    int eventType = nextNoWhitespace(xpp);
13911    while (eventType != XmlPullParser.END_TAG) {
13912  if (!parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(eventType, xpp, owner, res))
13913        unknownContent(xpp);
13914      eventType = nextNoWhitespace(xpp);
13915    }
13916    next(xpp);
13917    parseElementClose(res);
13918    return res;
13919  }
13920
13921  protected boolean parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13922      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13923        res.setType(parseCodeableConcept(xpp));
13924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13925        res.getReference().add(parseReference(xpp));
13926      } else if (!parseBackboneElementContent(eventType, xpp, res))
13927        return false;
13928    return true;
13929  }
13930
13931  protected MedicationKnowledge.MedicationKnowledgeMonographComponent parseMedicationKnowledgeMedicationKnowledgeMonographComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13932    MedicationKnowledge.MedicationKnowledgeMonographComponent res = new MedicationKnowledge.MedicationKnowledgeMonographComponent();
13933    parseBackboneAttributes(xpp, res);
13934    next(xpp);
13935    int eventType = nextNoWhitespace(xpp);
13936    while (eventType != XmlPullParser.END_TAG) {
13937  if (!parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(eventType, xpp, owner, res))
13938        unknownContent(xpp);
13939      eventType = nextNoWhitespace(xpp);
13940    }
13941    next(xpp);
13942    parseElementClose(res);
13943    return res;
13944  }
13945
13946  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonographComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13947      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13948        res.setType(parseCodeableConcept(xpp));
13949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13950        res.setSource(parseReference(xpp));
13951      } else if (!parseBackboneElementContent(eventType, xpp, res))
13952        return false;
13953    return true;
13954  }
13955
13956  protected MedicationKnowledge.MedicationKnowledgeIngredientComponent parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13957    MedicationKnowledge.MedicationKnowledgeIngredientComponent res = new MedicationKnowledge.MedicationKnowledgeIngredientComponent();
13958    parseBackboneAttributes(xpp, res);
13959    next(xpp);
13960    int eventType = nextNoWhitespace(xpp);
13961    while (eventType != XmlPullParser.END_TAG) {
13962  if (!parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(eventType, xpp, owner, res))
13963        unknownContent(xpp);
13964      eventType = nextNoWhitespace(xpp);
13965    }
13966    next(xpp);
13967    parseElementClose(res);
13968    return res;
13969  }
13970
13971  protected boolean parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13972      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
13973        res.setItem(parseType("item", xpp));
13974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
13975        res.setIsActiveElement(parseBoolean(xpp));
13976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13977        res.setStrength(parseRatio(xpp));
13978      } else if (!parseBackboneElementContent(eventType, xpp, res))
13979        return false;
13980    return true;
13981  }
13982
13983  protected MedicationKnowledge.MedicationKnowledgeCostComponent parseMedicationKnowledgeMedicationKnowledgeCostComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13984    MedicationKnowledge.MedicationKnowledgeCostComponent res = new MedicationKnowledge.MedicationKnowledgeCostComponent();
13985    parseBackboneAttributes(xpp, res);
13986    next(xpp);
13987    int eventType = nextNoWhitespace(xpp);
13988    while (eventType != XmlPullParser.END_TAG) {
13989  if (!parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(eventType, xpp, owner, res))
13990        unknownContent(xpp);
13991      eventType = nextNoWhitespace(xpp);
13992    }
13993    next(xpp);
13994    parseElementClose(res);
13995    return res;
13996  }
13997
13998  protected boolean parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13999      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14000        res.setType(parseCodeableConcept(xpp));
14001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
14002        res.setSourceElement(parseString(xpp));
14003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
14004        res.setCost(parseMoney(xpp));
14005      } else if (!parseBackboneElementContent(eventType, xpp, res))
14006        return false;
14007    return true;
14008  }
14009
14010  protected MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14011    MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res = new MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent();
14012    parseBackboneAttributes(xpp, res);
14013    next(xpp);
14014    int eventType = nextNoWhitespace(xpp);
14015    while (eventType != XmlPullParser.END_TAG) {
14016  if (!parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(eventType, xpp, owner, res))
14017        unknownContent(xpp);
14018      eventType = nextNoWhitespace(xpp);
14019    }
14020    next(xpp);
14021    parseElementClose(res);
14022    return res;
14023  }
14024
14025  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14026      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14027        res.setType(parseCodeableConcept(xpp));
14028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14029        res.setNameElement(parseString(xpp));
14030      } else if (!parseBackboneElementContent(eventType, xpp, res))
14031        return false;
14032    return true;
14033  }
14034
14035  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14036    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent();
14037    parseBackboneAttributes(xpp, res);
14038    next(xpp);
14039    int eventType = nextNoWhitespace(xpp);
14040    while (eventType != XmlPullParser.END_TAG) {
14041  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(eventType, xpp, owner, res))
14042        unknownContent(xpp);
14043      eventType = nextNoWhitespace(xpp);
14044    }
14045    next(xpp);
14046    parseElementClose(res);
14047    return res;
14048  }
14049
14050  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14051      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14052        res.getDosage().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(xpp, owner));
14053      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "indication")) {
14054        res.setIndication(parseType("indication", xpp));
14055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientCharacteristics")) {
14056        res.getPatientCharacteristics().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(xpp, owner));
14057      } else if (!parseBackboneElementContent(eventType, xpp, res))
14058        return false;
14059    return true;
14060  }
14061
14062  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14063    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent();
14064    parseBackboneAttributes(xpp, res);
14065    next(xpp);
14066    int eventType = nextNoWhitespace(xpp);
14067    while (eventType != XmlPullParser.END_TAG) {
14068  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(eventType, xpp, owner, res))
14069        unknownContent(xpp);
14070      eventType = nextNoWhitespace(xpp);
14071    }
14072    next(xpp);
14073    parseElementClose(res);
14074    return res;
14075  }
14076
14077  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14078      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14079        res.setType(parseCodeableConcept(xpp));
14080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14081        res.getDosage().add(parseDosage(xpp));
14082      } else if (!parseBackboneElementContent(eventType, xpp, res))
14083        return false;
14084    return true;
14085  }
14086
14087  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14088    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent();
14089    parseBackboneAttributes(xpp, res);
14090    next(xpp);
14091    int eventType = nextNoWhitespace(xpp);
14092    while (eventType != XmlPullParser.END_TAG) {
14093  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(eventType, xpp, owner, res))
14094        unknownContent(xpp);
14095      eventType = nextNoWhitespace(xpp);
14096    }
14097    next(xpp);
14098    parseElementClose(res);
14099    return res;
14100  }
14101
14102  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14103      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "characteristic")) {
14104        res.setCharacteristic(parseType("characteristic", xpp));
14105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
14106        res.getValue().add(parseString(xpp));
14107      } else if (!parseBackboneElementContent(eventType, xpp, res))
14108        return false;
14109    return true;
14110  }
14111
14112  protected MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14113    MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res = new MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent();
14114    parseBackboneAttributes(xpp, res);
14115    next(xpp);
14116    int eventType = nextNoWhitespace(xpp);
14117    while (eventType != XmlPullParser.END_TAG) {
14118  if (!parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(eventType, xpp, owner, res))
14119        unknownContent(xpp);
14120      eventType = nextNoWhitespace(xpp);
14121    }
14122    next(xpp);
14123    parseElementClose(res);
14124    return res;
14125  }
14126
14127  protected boolean parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14128      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14129        res.setType(parseCodeableConcept(xpp));
14130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
14131        res.getClassification().add(parseCodeableConcept(xpp));
14132      } else if (!parseBackboneElementContent(eventType, xpp, res))
14133        return false;
14134    return true;
14135  }
14136
14137  protected MedicationKnowledge.MedicationKnowledgePackagingComponent parseMedicationKnowledgeMedicationKnowledgePackagingComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14138    MedicationKnowledge.MedicationKnowledgePackagingComponent res = new MedicationKnowledge.MedicationKnowledgePackagingComponent();
14139    parseBackboneAttributes(xpp, res);
14140    next(xpp);
14141    int eventType = nextNoWhitespace(xpp);
14142    while (eventType != XmlPullParser.END_TAG) {
14143  if (!parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(eventType, xpp, owner, res))
14144        unknownContent(xpp);
14145      eventType = nextNoWhitespace(xpp);
14146    }
14147    next(xpp);
14148    parseElementClose(res);
14149    return res;
14150  }
14151
14152  protected boolean parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgePackagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14153      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14154        res.setType(parseCodeableConcept(xpp));
14155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14156        res.setQuantity(parseQuantity(xpp));
14157      } else if (!parseBackboneElementContent(eventType, xpp, res))
14158        return false;
14159    return true;
14160  }
14161
14162  protected MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14163    MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res = new MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent();
14164    parseBackboneAttributes(xpp, res);
14165    next(xpp);
14166    int eventType = nextNoWhitespace(xpp);
14167    while (eventType != XmlPullParser.END_TAG) {
14168  if (!parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(eventType, xpp, owner, res))
14169        unknownContent(xpp);
14170      eventType = nextNoWhitespace(xpp);
14171    }
14172    next(xpp);
14173    parseElementClose(res);
14174    return res;
14175  }
14176
14177  protected boolean parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14178      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14179        res.setType(parseCodeableConcept(xpp));
14180      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
14181        res.setValue(parseType("value", xpp));
14182      } else if (!parseBackboneElementContent(eventType, xpp, res))
14183        return false;
14184    return true;
14185  }
14186
14187  protected MedicationKnowledge.MedicationKnowledgeRegulatoryComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14188    MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryComponent();
14189    parseBackboneAttributes(xpp, res);
14190    next(xpp);
14191    int eventType = nextNoWhitespace(xpp);
14192    while (eventType != XmlPullParser.END_TAG) {
14193  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponentContent(eventType, xpp, owner, res))
14194        unknownContent(xpp);
14195      eventType = nextNoWhitespace(xpp);
14196    }
14197    next(xpp);
14198    parseElementClose(res);
14199    return res;
14200  }
14201
14202  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14203      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatoryAuthority")) {
14204        res.setRegulatoryAuthority(parseReference(xpp));
14205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
14206        res.getSubstitution().add(parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(xpp, owner));
14207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14208        res.getSchedule().add(parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(xpp, owner));
14209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDispense")) {
14210        res.setMaxDispense(parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(xpp, owner));
14211      } else if (!parseBackboneElementContent(eventType, xpp, res))
14212        return false;
14213    return true;
14214  }
14215
14216  protected MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14217    MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent();
14218    parseBackboneAttributes(xpp, res);
14219    next(xpp);
14220    int eventType = nextNoWhitespace(xpp);
14221    while (eventType != XmlPullParser.END_TAG) {
14222  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentContent(eventType, xpp, owner, res))
14223        unknownContent(xpp);
14224      eventType = nextNoWhitespace(xpp);
14225    }
14226    next(xpp);
14227    parseElementClose(res);
14228    return res;
14229  }
14230
14231  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14232      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14233        res.setType(parseCodeableConcept(xpp));
14234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
14235        res.setAllowedElement(parseBoolean(xpp));
14236      } else if (!parseBackboneElementContent(eventType, xpp, res))
14237        return false;
14238    return true;
14239  }
14240
14241  protected MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14242    MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent();
14243    parseBackboneAttributes(xpp, res);
14244    next(xpp);
14245    int eventType = nextNoWhitespace(xpp);
14246    while (eventType != XmlPullParser.END_TAG) {
14247  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentContent(eventType, xpp, owner, res))
14248        unknownContent(xpp);
14249      eventType = nextNoWhitespace(xpp);
14250    }
14251    next(xpp);
14252    parseElementClose(res);
14253    return res;
14254  }
14255
14256  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14257      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14258        res.setSchedule(parseCodeableConcept(xpp));
14259      } else if (!parseBackboneElementContent(eventType, xpp, res))
14260        return false;
14261    return true;
14262  }
14263
14264  protected MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14265    MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent();
14266    parseBackboneAttributes(xpp, res);
14267    next(xpp);
14268    int eventType = nextNoWhitespace(xpp);
14269    while (eventType != XmlPullParser.END_TAG) {
14270  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentContent(eventType, xpp, owner, res))
14271        unknownContent(xpp);
14272      eventType = nextNoWhitespace(xpp);
14273    }
14274    next(xpp);
14275    parseElementClose(res);
14276    return res;
14277  }
14278
14279  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14280      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14281        res.setQuantity(parseQuantity(xpp));
14282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14283        res.setPeriod(parseDuration(xpp));
14284      } else if (!parseBackboneElementContent(eventType, xpp, res))
14285        return false;
14286    return true;
14287  }
14288
14289  protected MedicationKnowledge.MedicationKnowledgeKineticsComponent parseMedicationKnowledgeMedicationKnowledgeKineticsComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14290    MedicationKnowledge.MedicationKnowledgeKineticsComponent res = new MedicationKnowledge.MedicationKnowledgeKineticsComponent();
14291    parseBackboneAttributes(xpp, res);
14292    next(xpp);
14293    int eventType = nextNoWhitespace(xpp);
14294    while (eventType != XmlPullParser.END_TAG) {
14295  if (!parseMedicationKnowledgeMedicationKnowledgeKineticsComponentContent(eventType, xpp, owner, res))
14296        unknownContent(xpp);
14297      eventType = nextNoWhitespace(xpp);
14298    }
14299    next(xpp);
14300    parseElementClose(res);
14301    return res;
14302  }
14303
14304  protected boolean parseMedicationKnowledgeMedicationKnowledgeKineticsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeKineticsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14305      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("areaUnderCurve")) {
14306        res.getAreaUnderCurve().add(parseQuantity(xpp));
14307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lethalDose50")) {
14308        res.getLethalDose50().add(parseQuantity(xpp));
14309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("halfLifePeriod")) {
14310        res.setHalfLifePeriod(parseDuration(xpp));
14311      } else if (!parseBackboneElementContent(eventType, xpp, res))
14312        return false;
14313    return true;
14314  }
14315
14316  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14317    MedicationRequest res = new MedicationRequest();
14318    parseDomainResourceAttributes(xpp, res);
14319    next(xpp);
14320    int eventType = nextNoWhitespace(xpp);
14321    while (eventType != XmlPullParser.END_TAG) {
14322  if (!parseMedicationRequestContent(eventType, xpp, res))
14323        unknownContent(xpp);
14324      eventType = nextNoWhitespace(xpp);
14325    }
14326    next(xpp);
14327    parseElementClose(res);
14328    return res;
14329  }
14330
14331  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
14332      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14333        res.getIdentifier().add(parseIdentifier(xpp));
14334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14335        res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestStatus.NULL, new MedicationRequest.MedicationRequestStatusEnumFactory()));
14336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
14337        res.setStatusReason(parseCodeableConcept(xpp));
14338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14339        res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
14340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14341        res.getCategory().add(parseCodeableConcept(xpp));
14342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
14343        res.setPriorityElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestPriority.NULL, new MedicationRequest.MedicationRequestPriorityEnumFactory()));
14344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
14345        res.setDoNotPerformElement(parseBoolean(xpp));
14346      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reported")) {
14347        res.setReported(parseType("reported", xpp));
14348      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14349        res.setMedication(parseType("medication", xpp));
14350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14351        res.setSubject(parseReference(xpp));
14352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
14353        res.setEncounter(parseReference(xpp));
14354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
14355        res.getSupportingInformation().add(parseReference(xpp));
14356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
14357        res.setAuthoredOnElement(parseDateTime(xpp));
14358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
14359        res.setRequester(parseReference(xpp));
14360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14361        res.setPerformer(parseReference(xpp));
14362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
14363        res.setPerformerType(parseCodeableConcept(xpp));
14364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
14365        res.setRecorder(parseReference(xpp));
14366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
14367        res.getReasonCode().add(parseCodeableConcept(xpp));
14368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
14369        res.getReasonReference().add(parseReference(xpp));
14370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
14371        res.getInstantiatesCanonical().add(parseCanonical(xpp));
14372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
14373        res.getInstantiatesUri().add(parseUri(xpp));
14374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14375        res.getBasedOn().add(parseReference(xpp));
14376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
14377        res.setGroupIdentifier(parseIdentifier(xpp));
14378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("courseOfTherapyType")) {
14379        res.setCourseOfTherapyType(parseCodeableConcept(xpp));
14380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
14381        res.getInsurance().add(parseReference(xpp));
14382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14383        res.getNote().add(parseAnnotation(xpp));
14384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
14385        res.getDosageInstruction().add(parseDosage(xpp));
14386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
14387        res.setDispenseRequest(parseMedicationRequestMedicationRequestDispenseRequestComponent(xpp, res));
14388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
14389        res.setSubstitution(parseMedicationRequestMedicationRequestSubstitutionComponent(xpp, res));
14390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
14391        res.setPriorPrescription(parseReference(xpp));
14392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
14393        res.getDetectedIssue().add(parseReference(xpp));
14394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
14395        res.getEventHistory().add(parseReference(xpp));
14396      } else if (!parseDomainResourceContent(eventType, xpp, res))
14397        return false;
14398    return true;
14399  }
14400
14401  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestMedicationRequestDispenseRequestComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14402    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
14403    parseBackboneAttributes(xpp, res);
14404    next(xpp);
14405    int eventType = nextNoWhitespace(xpp);
14406    while (eventType != XmlPullParser.END_TAG) {
14407  if (!parseMedicationRequestMedicationRequestDispenseRequestComponentContent(eventType, xpp, owner, res))
14408        unknownContent(xpp);
14409      eventType = nextNoWhitespace(xpp);
14410    }
14411    next(xpp);
14412    parseElementClose(res);
14413    return res;
14414  }
14415
14416  protected boolean parseMedicationRequestMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14417      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialFill")) {
14418        res.setInitialFill(parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(xpp, owner));
14419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseInterval")) {
14420        res.setDispenseInterval(parseDuration(xpp));
14421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14422        res.setValidityPeriod(parsePeriod(xpp));
14423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
14424        res.setNumberOfRepeatsAllowedElement(parseUnsignedInt(xpp));
14425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14426        res.setQuantity(parseQuantity(xpp));
14427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
14428        res.setExpectedSupplyDuration(parseDuration(xpp));
14429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14430        res.setPerformer(parseReference(xpp));
14431      } else if (!parseBackboneElementContent(eventType, xpp, res))
14432        return false;
14433    return true;
14434  }
14435
14436  protected MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14437    MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res = new MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent();
14438    parseBackboneAttributes(xpp, res);
14439    next(xpp);
14440    int eventType = nextNoWhitespace(xpp);
14441    while (eventType != XmlPullParser.END_TAG) {
14442  if (!parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponentContent(eventType, xpp, owner, res))
14443        unknownContent(xpp);
14444      eventType = nextNoWhitespace(xpp);
14445    }
14446    next(xpp);
14447    parseElementClose(res);
14448    return res;
14449  }
14450
14451  protected boolean parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14452      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14453        res.setQuantity(parseQuantity(xpp));
14454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
14455        res.setDuration(parseDuration(xpp));
14456      } else if (!parseBackboneElementContent(eventType, xpp, res))
14457        return false;
14458    return true;
14459  }
14460
14461  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestMedicationRequestSubstitutionComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14462    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
14463    parseBackboneAttributes(xpp, res);
14464    next(xpp);
14465    int eventType = nextNoWhitespace(xpp);
14466    while (eventType != XmlPullParser.END_TAG) {
14467  if (!parseMedicationRequestMedicationRequestSubstitutionComponentContent(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 parseMedicationRequestMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14477      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
14478        res.setAllowed(parseType("allowed", xpp));
14479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
14480        res.setReason(parseCodeableConcept(xpp));
14481      } else if (!parseBackboneElementContent(eventType, xpp, res))
14482        return false;
14483    return true;
14484  }
14485
14486  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14487    MedicationStatement res = new MedicationStatement();
14488    parseDomainResourceAttributes(xpp, res);
14489    next(xpp);
14490    int eventType = nextNoWhitespace(xpp);
14491    while (eventType != XmlPullParser.END_TAG) {
14492  if (!parseMedicationStatementContent(eventType, xpp, res))
14493        unknownContent(xpp);
14494      eventType = nextNoWhitespace(xpp);
14495    }
14496    next(xpp);
14497    parseElementClose(res);
14498    return res;
14499  }
14500
14501  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
14502      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14503        res.getIdentifier().add(parseIdentifier(xpp));
14504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14505        res.getBasedOn().add(parseReference(xpp));
14506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
14507        res.getPartOf().add(parseReference(xpp));
14508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14509        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
14510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
14511        res.getStatusReason().add(parseCodeableConcept(xpp));
14512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14513        res.setCategory(parseCodeableConcept(xpp));
14514      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14515        res.setMedication(parseType("medication", xpp));
14516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14517        res.setSubject(parseReference(xpp));
14518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14519        res.setContext(parseReference(xpp));
14520      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
14521        res.setEffective(parseType("effective", xpp));
14522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
14523        res.setDateAssertedElement(parseDateTime(xpp));
14524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
14525        res.setInformationSource(parseReference(xpp));
14526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
14527        res.getDerivedFrom().add(parseReference(xpp));
14528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
14529        res.getReasonCode().add(parseCodeableConcept(xpp));
14530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
14531        res.getReasonReference().add(parseReference(xpp));
14532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14533        res.getNote().add(parseAnnotation(xpp));
14534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14535        res.getDosage().add(parseDosage(xpp));
14536      } else if (!parseDomainResourceContent(eventType, xpp, res))
14537        return false;
14538    return true;
14539  }
14540
14541  protected MedicinalProduct parseMedicinalProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14542    MedicinalProduct res = new MedicinalProduct();
14543    parseDomainResourceAttributes(xpp, res);
14544    next(xpp);
14545    int eventType = nextNoWhitespace(xpp);
14546    while (eventType != XmlPullParser.END_TAG) {
14547  if (!parseMedicinalProductContent(eventType, xpp, res))
14548        unknownContent(xpp);
14549      eventType = nextNoWhitespace(xpp);
14550    }
14551    next(xpp);
14552    parseElementClose(res);
14553    return res;
14554  }
14555
14556  protected boolean parseMedicinalProductContent(int eventType, XmlPullParser xpp, MedicinalProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
14557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14558        res.getIdentifier().add(parseIdentifier(xpp));
14559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14560        res.setType(parseCodeableConcept(xpp));
14561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
14562        res.setDomain(parseCoding(xpp));
14563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combinedPharmaceuticalDoseForm")) {
14564        res.setCombinedPharmaceuticalDoseForm(parseCodeableConcept(xpp));
14565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
14566        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
14567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMonitoringIndicator")) {
14568        res.setAdditionalMonitoringIndicator(parseCodeableConcept(xpp));
14569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialMeasures")) {
14570        res.getSpecialMeasures().add(parseString(xpp));
14571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paediatricUseIndicator")) {
14572        res.setPaediatricUseIndicator(parseCodeableConcept(xpp));
14573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productClassification")) {
14574        res.getProductClassification().add(parseCodeableConcept(xpp));
14575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
14576        res.getMarketingStatus().add(parseMarketingStatus(xpp));
14577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pharmaceuticalProduct")) {
14578        res.getPharmaceuticalProduct().add(parseReference(xpp));
14579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packagedMedicinalProduct")) {
14580        res.getPackagedMedicinalProduct().add(parseReference(xpp));
14581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachedDocument")) {
14582        res.getAttachedDocument().add(parseReference(xpp));
14583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterFile")) {
14584        res.getMasterFile().add(parseReference(xpp));
14585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14586        res.getContact().add(parseReference(xpp));
14587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalTrial")) {
14588        res.getClinicalTrial().add(parseReference(xpp));
14589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14590        res.getName().add(parseMedicinalProductMedicinalProductNameComponent(xpp, res));
14591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("crossReference")) {
14592        res.getCrossReference().add(parseIdentifier(xpp));
14593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturingBusinessOperation")) {
14594        res.getManufacturingBusinessOperation().add(parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(xpp, res));
14595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialDesignation")) {
14596        res.getSpecialDesignation().add(parseMedicinalProductMedicinalProductSpecialDesignationComponent(xpp, res));
14597      } else if (!parseDomainResourceContent(eventType, xpp, res))
14598        return false;
14599    return true;
14600  }
14601
14602  protected MedicinalProduct.MedicinalProductNameComponent parseMedicinalProductMedicinalProductNameComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14603    MedicinalProduct.MedicinalProductNameComponent res = new MedicinalProduct.MedicinalProductNameComponent();
14604    parseBackboneAttributes(xpp, res);
14605    next(xpp);
14606    int eventType = nextNoWhitespace(xpp);
14607    while (eventType != XmlPullParser.END_TAG) {
14608  if (!parseMedicinalProductMedicinalProductNameComponentContent(eventType, xpp, owner, res))
14609        unknownContent(xpp);
14610      eventType = nextNoWhitespace(xpp);
14611    }
14612    next(xpp);
14613    parseElementClose(res);
14614    return res;
14615  }
14616
14617  protected boolean parseMedicinalProductMedicinalProductNameComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14618      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
14619        res.setProductNameElement(parseString(xpp));
14620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("namePart")) {
14621        res.getNamePart().add(parseMedicinalProductMedicinalProductNameNamePartComponent(xpp, owner));
14622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryLanguage")) {
14623        res.getCountryLanguage().add(parseMedicinalProductMedicinalProductNameCountryLanguageComponent(xpp, owner));
14624      } else if (!parseBackboneElementContent(eventType, xpp, res))
14625        return false;
14626    return true;
14627  }
14628
14629  protected MedicinalProduct.MedicinalProductNameNamePartComponent parseMedicinalProductMedicinalProductNameNamePartComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14630    MedicinalProduct.MedicinalProductNameNamePartComponent res = new MedicinalProduct.MedicinalProductNameNamePartComponent();
14631    parseBackboneAttributes(xpp, res);
14632    next(xpp);
14633    int eventType = nextNoWhitespace(xpp);
14634    while (eventType != XmlPullParser.END_TAG) {
14635  if (!parseMedicinalProductMedicinalProductNameNamePartComponentContent(eventType, xpp, owner, res))
14636        unknownContent(xpp);
14637      eventType = nextNoWhitespace(xpp);
14638    }
14639    next(xpp);
14640    parseElementClose(res);
14641    return res;
14642  }
14643
14644  protected boolean parseMedicinalProductMedicinalProductNameNamePartComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameNamePartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14645      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
14646        res.setPartElement(parseString(xpp));
14647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14648        res.setType(parseCoding(xpp));
14649      } else if (!parseBackboneElementContent(eventType, xpp, res))
14650        return false;
14651    return true;
14652  }
14653
14654  protected MedicinalProduct.MedicinalProductNameCountryLanguageComponent parseMedicinalProductMedicinalProductNameCountryLanguageComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14655    MedicinalProduct.MedicinalProductNameCountryLanguageComponent res = new MedicinalProduct.MedicinalProductNameCountryLanguageComponent();
14656    parseBackboneAttributes(xpp, res);
14657    next(xpp);
14658    int eventType = nextNoWhitespace(xpp);
14659    while (eventType != XmlPullParser.END_TAG) {
14660  if (!parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(eventType, xpp, owner, res))
14661        unknownContent(xpp);
14662      eventType = nextNoWhitespace(xpp);
14663    }
14664    next(xpp);
14665    parseElementClose(res);
14666    return res;
14667  }
14668
14669  protected boolean parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameCountryLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14670      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14671        res.setCountry(parseCodeableConcept(xpp));
14672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14673        res.setJurisdiction(parseCodeableConcept(xpp));
14674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
14675        res.setLanguage(parseCodeableConcept(xpp));
14676      } else if (!parseBackboneElementContent(eventType, xpp, res))
14677        return false;
14678    return true;
14679  }
14680
14681  protected MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14682    MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res = new MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent();
14683    parseBackboneAttributes(xpp, res);
14684    next(xpp);
14685    int eventType = nextNoWhitespace(xpp);
14686    while (eventType != XmlPullParser.END_TAG) {
14687  if (!parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(eventType, xpp, owner, res))
14688        unknownContent(xpp);
14689      eventType = nextNoWhitespace(xpp);
14690    }
14691    next(xpp);
14692    parseElementClose(res);
14693    return res;
14694  }
14695
14696  protected boolean parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14697      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationType")) {
14698        res.setOperationType(parseCodeableConcept(xpp));
14699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorisationReferenceNumber")) {
14700        res.setAuthorisationReferenceNumber(parseIdentifier(xpp));
14701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveDate")) {
14702        res.setEffectiveDateElement(parseDateTime(xpp));
14703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentialityIndicator")) {
14704        res.setConfidentialityIndicator(parseCodeableConcept(xpp));
14705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
14706        res.getManufacturer().add(parseReference(xpp));
14707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
14708        res.setRegulator(parseReference(xpp));
14709      } else if (!parseBackboneElementContent(eventType, xpp, res))
14710        return false;
14711    return true;
14712  }
14713
14714  protected MedicinalProduct.MedicinalProductSpecialDesignationComponent parseMedicinalProductMedicinalProductSpecialDesignationComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14715    MedicinalProduct.MedicinalProductSpecialDesignationComponent res = new MedicinalProduct.MedicinalProductSpecialDesignationComponent();
14716    parseBackboneAttributes(xpp, res);
14717    next(xpp);
14718    int eventType = nextNoWhitespace(xpp);
14719    while (eventType != XmlPullParser.END_TAG) {
14720  if (!parseMedicinalProductMedicinalProductSpecialDesignationComponentContent(eventType, xpp, owner, res))
14721        unknownContent(xpp);
14722      eventType = nextNoWhitespace(xpp);
14723    }
14724    next(xpp);
14725    parseElementClose(res);
14726    return res;
14727  }
14728
14729  protected boolean parseMedicinalProductMedicinalProductSpecialDesignationComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductSpecialDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14730      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14731        res.getIdentifier().add(parseIdentifier(xpp));
14732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14733        res.setType(parseCodeableConcept(xpp));
14734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedUse")) {
14735        res.setIntendedUse(parseCodeableConcept(xpp));
14736      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "indication")) {
14737        res.setIndication(parseType("indication", xpp));
14738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14739        res.setStatus(parseCodeableConcept(xpp));
14740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14741        res.setDateElement(parseDateTime(xpp));
14742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
14743        res.setSpecies(parseCodeableConcept(xpp));
14744      } else if (!parseBackboneElementContent(eventType, xpp, res))
14745        return false;
14746    return true;
14747  }
14748
14749  protected MedicinalProductAuthorization parseMedicinalProductAuthorization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14750    MedicinalProductAuthorization res = new MedicinalProductAuthorization();
14751    parseDomainResourceAttributes(xpp, res);
14752    next(xpp);
14753    int eventType = nextNoWhitespace(xpp);
14754    while (eventType != XmlPullParser.END_TAG) {
14755  if (!parseMedicinalProductAuthorizationContent(eventType, xpp, res))
14756        unknownContent(xpp);
14757      eventType = nextNoWhitespace(xpp);
14758    }
14759    next(xpp);
14760    parseElementClose(res);
14761    return res;
14762  }
14763
14764  protected boolean parseMedicinalProductAuthorizationContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization res) throws XmlPullParserException, IOException, FHIRFormatError {
14765      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14766        res.getIdentifier().add(parseIdentifier(xpp));
14767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14768        res.setSubject(parseReference(xpp));
14769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14770        res.getCountry().add(parseCodeableConcept(xpp));
14771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14772        res.getJurisdiction().add(parseCodeableConcept(xpp));
14773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14774        res.setStatus(parseCodeableConcept(xpp));
14775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
14776        res.setStatusDateElement(parseDateTime(xpp));
14777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
14778        res.setRestoreDateElement(parseDateTime(xpp));
14779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14780        res.setValidityPeriod(parsePeriod(xpp));
14781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataExclusivityPeriod")) {
14782        res.setDataExclusivityPeriod(parsePeriod(xpp));
14783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateOfFirstAuthorization")) {
14784        res.setDateOfFirstAuthorizationElement(parseDateTime(xpp));
14785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("internationalBirthDate")) {
14786        res.setInternationalBirthDateElement(parseDateTime(xpp));
14787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalBasis")) {
14788        res.setLegalBasis(parseCodeableConcept(xpp));
14789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdictionalAuthorization")) {
14790        res.getJurisdictionalAuthorization().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(xpp, res));
14791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("holder")) {
14792        res.setHolder(parseReference(xpp));
14793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
14794        res.setRegulator(parseReference(xpp));
14795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
14796        res.setProcedure(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(xpp, res));
14797      } else if (!parseDomainResourceContent(eventType, xpp, res))
14798        return false;
14799    return true;
14800  }
14801
14802  protected MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
14803    MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent();
14804    parseBackboneAttributes(xpp, res);
14805    next(xpp);
14806    int eventType = nextNoWhitespace(xpp);
14807    while (eventType != XmlPullParser.END_TAG) {
14808  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(eventType, xpp, owner, res))
14809        unknownContent(xpp);
14810      eventType = nextNoWhitespace(xpp);
14811    }
14812    next(xpp);
14813    parseElementClose(res);
14814    return res;
14815  }
14816
14817  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14819        res.getIdentifier().add(parseIdentifier(xpp));
14820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14821        res.setCountry(parseCodeableConcept(xpp));
14822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14823        res.getJurisdiction().add(parseCodeableConcept(xpp));
14824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
14825        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
14826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14827        res.setValidityPeriod(parsePeriod(xpp));
14828      } else if (!parseBackboneElementContent(eventType, xpp, res))
14829        return false;
14830    return true;
14831  }
14832
14833  protected MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
14834    MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent();
14835    parseBackboneAttributes(xpp, res);
14836    next(xpp);
14837    int eventType = nextNoWhitespace(xpp);
14838    while (eventType != XmlPullParser.END_TAG) {
14839  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(eventType, xpp, owner, res))
14840        unknownContent(xpp);
14841      eventType = nextNoWhitespace(xpp);
14842    }
14843    next(xpp);
14844    parseElementClose(res);
14845    return res;
14846  }
14847
14848  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14849      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14850        res.setIdentifier(parseIdentifier(xpp));
14851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14852        res.setType(parseCodeableConcept(xpp));
14853      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "date")) {
14854        res.setDate(parseType("date", xpp));
14855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("application")) {
14856        res.getApplication().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(xpp, owner));
14857      } else if (!parseBackboneElementContent(eventType, xpp, res))
14858        return false;
14859    return true;
14860  }
14861
14862  protected MedicinalProductContraindication parseMedicinalProductContraindication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14863    MedicinalProductContraindication res = new MedicinalProductContraindication();
14864    parseDomainResourceAttributes(xpp, res);
14865    next(xpp);
14866    int eventType = nextNoWhitespace(xpp);
14867    while (eventType != XmlPullParser.END_TAG) {
14868  if (!parseMedicinalProductContraindicationContent(eventType, xpp, res))
14869        unknownContent(xpp);
14870      eventType = nextNoWhitespace(xpp);
14871    }
14872    next(xpp);
14873    parseElementClose(res);
14874    return res;
14875  }
14876
14877  protected boolean parseMedicinalProductContraindicationContent(int eventType, XmlPullParser xpp, MedicinalProductContraindication res) throws XmlPullParserException, IOException, FHIRFormatError {
14878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14879        res.getSubject().add(parseReference(xpp));
14880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disease")) {
14881        res.setDisease(parseCodeableConcept(xpp));
14882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14883        res.setDiseaseStatus(parseCodeableConcept(xpp));
14884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14885        res.getComorbidity().add(parseCodeableConcept(xpp));
14886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapeuticIndication")) {
14887        res.getTherapeuticIndication().add(parseReference(xpp));
14888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14889        res.getOtherTherapy().add(parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(xpp, res));
14890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14891        res.getPopulation().add(parsePopulation(xpp));
14892      } else if (!parseDomainResourceContent(eventType, xpp, res))
14893        return false;
14894    return true;
14895  }
14896
14897  protected MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductContraindication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14898    MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent res = new MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent();
14899    parseBackboneAttributes(xpp, res);
14900    next(xpp);
14901    int eventType = nextNoWhitespace(xpp);
14902    while (eventType != XmlPullParser.END_TAG) {
14903  if (!parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentContent(eventType, xpp, owner, res))
14904        unknownContent(xpp);
14905      eventType = nextNoWhitespace(xpp);
14906    }
14907    next(xpp);
14908    parseElementClose(res);
14909    return res;
14910  }
14911
14912  protected boolean parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductContraindication owner, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14913      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
14914        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
14915      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14916        res.setMedication(parseType("medication", xpp));
14917      } else if (!parseBackboneElementContent(eventType, xpp, res))
14918        return false;
14919    return true;
14920  }
14921
14922  protected MedicinalProductIndication parseMedicinalProductIndication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14923    MedicinalProductIndication res = new MedicinalProductIndication();
14924    parseDomainResourceAttributes(xpp, res);
14925    next(xpp);
14926    int eventType = nextNoWhitespace(xpp);
14927    while (eventType != XmlPullParser.END_TAG) {
14928  if (!parseMedicinalProductIndicationContent(eventType, xpp, res))
14929        unknownContent(xpp);
14930      eventType = nextNoWhitespace(xpp);
14931    }
14932    next(xpp);
14933    parseElementClose(res);
14934    return res;
14935  }
14936
14937  protected boolean parseMedicinalProductIndicationContent(int eventType, XmlPullParser xpp, MedicinalProductIndication res) throws XmlPullParserException, IOException, FHIRFormatError {
14938      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14939        res.getSubject().add(parseReference(xpp));
14940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
14941        res.setDiseaseSymptomProcedure(parseCodeableConcept(xpp));
14942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14943        res.setDiseaseStatus(parseCodeableConcept(xpp));
14944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14945        res.getComorbidity().add(parseCodeableConcept(xpp));
14946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedEffect")) {
14947        res.setIntendedEffect(parseCodeableConcept(xpp));
14948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
14949        res.setDuration(parseQuantity(xpp));
14950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14951        res.getOtherTherapy().add(parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(xpp, res));
14952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffect")) {
14953        res.getUndesirableEffect().add(parseReference(xpp));
14954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14955        res.getPopulation().add(parsePopulation(xpp));
14956      } else if (!parseDomainResourceContent(eventType, xpp, res))
14957        return false;
14958    return true;
14959  }
14960
14961  protected MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductIndication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14962    MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent res = new MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent();
14963    parseBackboneAttributes(xpp, res);
14964    next(xpp);
14965    int eventType = nextNoWhitespace(xpp);
14966    while (eventType != XmlPullParser.END_TAG) {
14967  if (!parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentContent(eventType, xpp, owner, res))
14968        unknownContent(xpp);
14969      eventType = nextNoWhitespace(xpp);
14970    }
14971    next(xpp);
14972    parseElementClose(res);
14973    return res;
14974  }
14975
14976  protected boolean parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIndication owner, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
14978        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
14979      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14980        res.setMedication(parseType("medication", xpp));
14981      } else if (!parseBackboneElementContent(eventType, xpp, res))
14982        return false;
14983    return true;
14984  }
14985
14986  protected MedicinalProductIngredient parseMedicinalProductIngredient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14987    MedicinalProductIngredient res = new MedicinalProductIngredient();
14988    parseDomainResourceAttributes(xpp, res);
14989    next(xpp);
14990    int eventType = nextNoWhitespace(xpp);
14991    while (eventType != XmlPullParser.END_TAG) {
14992  if (!parseMedicinalProductIngredientContent(eventType, xpp, res))
14993        unknownContent(xpp);
14994      eventType = nextNoWhitespace(xpp);
14995    }
14996    next(xpp);
14997    parseElementClose(res);
14998    return res;
14999  }
15000
15001  protected boolean parseMedicinalProductIngredientContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient res) throws XmlPullParserException, IOException, FHIRFormatError {
15002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15003        res.setIdentifier(parseIdentifier(xpp));
15004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
15005        res.setRole(parseCodeableConcept(xpp));
15006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
15007        res.setAllergenicIndicatorElement(parseBoolean(xpp));
15008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15009        res.getManufacturer().add(parseReference(xpp));
15010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specifiedSubstance")) {
15011        res.getSpecifiedSubstance().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(xpp, res));
15012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
15013        res.setSubstance(parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(xpp, res));
15014      } else if (!parseDomainResourceContent(eventType, xpp, res))
15015        return false;
15016    return true;
15017  }
15018
15019  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15020    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent();
15021    parseBackboneAttributes(xpp, res);
15022    next(xpp);
15023    int eventType = nextNoWhitespace(xpp);
15024    while (eventType != XmlPullParser.END_TAG) {
15025  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(eventType, xpp, owner, res))
15026        unknownContent(xpp);
15027      eventType = nextNoWhitespace(xpp);
15028    }
15029    next(xpp);
15030    parseElementClose(res);
15031    return res;
15032  }
15033
15034  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15035      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15036        res.setCode(parseCodeableConcept(xpp));
15037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
15038        res.setGroup(parseCodeableConcept(xpp));
15039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
15040        res.setConfidentiality(parseCodeableConcept(xpp));
15041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15042        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
15043      } else if (!parseBackboneElementContent(eventType, xpp, res))
15044        return false;
15045    return true;
15046  }
15047
15048  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15049    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent();
15050    parseBackboneAttributes(xpp, res);
15051    next(xpp);
15052    int eventType = nextNoWhitespace(xpp);
15053    while (eventType != XmlPullParser.END_TAG) {
15054  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(eventType, xpp, owner, res))
15055        unknownContent(xpp);
15056      eventType = nextNoWhitespace(xpp);
15057    }
15058    next(xpp);
15059    parseElementClose(res);
15060    return res;
15061  }
15062
15063  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15064      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentation")) {
15065        res.setPresentation(parseRatio(xpp));
15066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationLowLimit")) {
15067        res.setPresentationLowLimit(parseRatio(xpp));
15068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentration")) {
15069        res.setConcentration(parseRatio(xpp));
15070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentrationLowLimit")) {
15071        res.setConcentrationLowLimit(parseRatio(xpp));
15072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
15073        res.setMeasurementPointElement(parseString(xpp));
15074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
15075        res.getCountry().add(parseCodeableConcept(xpp));
15076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceStrength")) {
15077        res.getReferenceStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(xpp, owner));
15078      } else if (!parseBackboneElementContent(eventType, xpp, res))
15079        return false;
15080    return true;
15081  }
15082
15083  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15084    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent();
15085    parseBackboneAttributes(xpp, res);
15086    next(xpp);
15087    int eventType = nextNoWhitespace(xpp);
15088    while (eventType != XmlPullParser.END_TAG) {
15089  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(eventType, xpp, owner, res))
15090        unknownContent(xpp);
15091      eventType = nextNoWhitespace(xpp);
15092    }
15093    next(xpp);
15094    parseElementClose(res);
15095    return res;
15096  }
15097
15098  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15099      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
15100        res.setSubstance(parseCodeableConcept(xpp));
15101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15102        res.setStrength(parseRatio(xpp));
15103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strengthLowLimit")) {
15104        res.setStrengthLowLimit(parseRatio(xpp));
15105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
15106        res.setMeasurementPointElement(parseString(xpp));
15107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
15108        res.getCountry().add(parseCodeableConcept(xpp));
15109      } else if (!parseBackboneElementContent(eventType, xpp, res))
15110        return false;
15111    return true;
15112  }
15113
15114  protected MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15115    MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent();
15116    parseBackboneAttributes(xpp, res);
15117    next(xpp);
15118    int eventType = nextNoWhitespace(xpp);
15119    while (eventType != XmlPullParser.END_TAG) {
15120  if (!parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(eventType, xpp, owner, res))
15121        unknownContent(xpp);
15122      eventType = nextNoWhitespace(xpp);
15123    }
15124    next(xpp);
15125    parseElementClose(res);
15126    return res;
15127  }
15128
15129  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15130      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15131        res.setCode(parseCodeableConcept(xpp));
15132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15133        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
15134      } else if (!parseBackboneElementContent(eventType, xpp, res))
15135        return false;
15136    return true;
15137  }
15138
15139  protected MedicinalProductInteraction parseMedicinalProductInteraction(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15140    MedicinalProductInteraction res = new MedicinalProductInteraction();
15141    parseDomainResourceAttributes(xpp, res);
15142    next(xpp);
15143    int eventType = nextNoWhitespace(xpp);
15144    while (eventType != XmlPullParser.END_TAG) {
15145  if (!parseMedicinalProductInteractionContent(eventType, xpp, res))
15146        unknownContent(xpp);
15147      eventType = nextNoWhitespace(xpp);
15148    }
15149    next(xpp);
15150    parseElementClose(res);
15151    return res;
15152  }
15153
15154  protected boolean parseMedicinalProductInteractionContent(int eventType, XmlPullParser xpp, MedicinalProductInteraction res) throws XmlPullParserException, IOException, FHIRFormatError {
15155      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15156        res.getSubject().add(parseReference(xpp));
15157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15158        res.setDescriptionElement(parseString(xpp));
15159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactant")) {
15160        res.getInteractant().add(parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(xpp, res));
15161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15162        res.setType(parseCodeableConcept(xpp));
15163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effect")) {
15164        res.setEffect(parseCodeableConcept(xpp));
15165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incidence")) {
15166        res.setIncidence(parseCodeableConcept(xpp));
15167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("management")) {
15168        res.setManagement(parseCodeableConcept(xpp));
15169      } else if (!parseDomainResourceContent(eventType, xpp, res))
15170        return false;
15171    return true;
15172  }
15173
15174  protected MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(XmlPullParser xpp, MedicinalProductInteraction owner) throws XmlPullParserException, IOException, FHIRFormatError {
15175    MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent res = new MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent();
15176    parseBackboneAttributes(xpp, res);
15177    next(xpp);
15178    int eventType = nextNoWhitespace(xpp);
15179    while (eventType != XmlPullParser.END_TAG) {
15180  if (!parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponentContent(eventType, xpp, owner, res))
15181        unknownContent(xpp);
15182      eventType = nextNoWhitespace(xpp);
15183    }
15184    next(xpp);
15185    parseElementClose(res);
15186    return res;
15187  }
15188
15189  protected boolean parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponentContent(int eventType, XmlPullParser xpp, MedicinalProductInteraction owner, MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15190      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15191        res.setItem(parseType("item", xpp));
15192      } else if (!parseBackboneElementContent(eventType, xpp, res))
15193        return false;
15194    return true;
15195  }
15196
15197  protected MedicinalProductManufactured parseMedicinalProductManufactured(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15198    MedicinalProductManufactured res = new MedicinalProductManufactured();
15199    parseDomainResourceAttributes(xpp, res);
15200    next(xpp);
15201    int eventType = nextNoWhitespace(xpp);
15202    while (eventType != XmlPullParser.END_TAG) {
15203  if (!parseMedicinalProductManufacturedContent(eventType, xpp, res))
15204        unknownContent(xpp);
15205      eventType = nextNoWhitespace(xpp);
15206    }
15207    next(xpp);
15208    parseElementClose(res);
15209    return res;
15210  }
15211
15212  protected boolean parseMedicinalProductManufacturedContent(int eventType, XmlPullParser xpp, MedicinalProductManufactured res) throws XmlPullParserException, IOException, FHIRFormatError {
15213      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedDoseForm")) {
15214        res.setManufacturedDoseForm(parseCodeableConcept(xpp));
15215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
15216        res.setUnitOfPresentation(parseCodeableConcept(xpp));
15217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15218        res.setQuantity(parseQuantity(xpp));
15219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15220        res.getManufacturer().add(parseReference(xpp));
15221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15222        res.getIngredient().add(parseReference(xpp));
15223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
15224        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
15225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
15226        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
15227      } else if (!parseDomainResourceContent(eventType, xpp, res))
15228        return false;
15229    return true;
15230  }
15231
15232  protected MedicinalProductPackaged parseMedicinalProductPackaged(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15233    MedicinalProductPackaged res = new MedicinalProductPackaged();
15234    parseDomainResourceAttributes(xpp, res);
15235    next(xpp);
15236    int eventType = nextNoWhitespace(xpp);
15237    while (eventType != XmlPullParser.END_TAG) {
15238  if (!parseMedicinalProductPackagedContent(eventType, xpp, res))
15239        unknownContent(xpp);
15240      eventType = nextNoWhitespace(xpp);
15241    }
15242    next(xpp);
15243    parseElementClose(res);
15244    return res;
15245  }
15246
15247  protected boolean parseMedicinalProductPackagedContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged res) throws XmlPullParserException, IOException, FHIRFormatError {
15248      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15249        res.getIdentifier().add(parseIdentifier(xpp));
15250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15251        res.getSubject().add(parseReference(xpp));
15252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15253        res.setDescriptionElement(parseString(xpp));
15254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
15255        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
15256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
15257        res.getMarketingStatus().add(parseMarketingStatus(xpp));
15258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingAuthorization")) {
15259        res.setMarketingAuthorization(parseReference(xpp));
15260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15261        res.getManufacturer().add(parseReference(xpp));
15262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batchIdentifier")) {
15263        res.getBatchIdentifier().add(parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(xpp, res));
15264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
15265        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, res));
15266      } else if (!parseDomainResourceContent(eventType, xpp, res))
15267        return false;
15268    return true;
15269  }
15270
15271  protected MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
15272    MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res = new MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent();
15273    parseBackboneAttributes(xpp, res);
15274    next(xpp);
15275    int eventType = nextNoWhitespace(xpp);
15276    while (eventType != XmlPullParser.END_TAG) {
15277  if (!parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(eventType, xpp, owner, res))
15278        unknownContent(xpp);
15279      eventType = nextNoWhitespace(xpp);
15280    }
15281    next(xpp);
15282    parseElementClose(res);
15283    return res;
15284  }
15285
15286  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15287      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outerPackaging")) {
15288        res.setOuterPackaging(parseIdentifier(xpp));
15289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immediatePackaging")) {
15290        res.setImmediatePackaging(parseIdentifier(xpp));
15291      } else if (!parseBackboneElementContent(eventType, xpp, res))
15292        return false;
15293    return true;
15294  }
15295
15296  protected MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
15297    MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res = new MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent();
15298    parseBackboneAttributes(xpp, res);
15299    next(xpp);
15300    int eventType = nextNoWhitespace(xpp);
15301    while (eventType != XmlPullParser.END_TAG) {
15302  if (!parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(eventType, xpp, owner, res))
15303        unknownContent(xpp);
15304      eventType = nextNoWhitespace(xpp);
15305    }
15306    next(xpp);
15307    parseElementClose(res);
15308    return res;
15309  }
15310
15311  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15312      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15313        res.getIdentifier().add(parseIdentifier(xpp));
15314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15315        res.setType(parseCodeableConcept(xpp));
15316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15317        res.setQuantity(parseQuantity(xpp));
15318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
15319        res.getMaterial().add(parseCodeableConcept(xpp));
15320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternateMaterial")) {
15321        res.getAlternateMaterial().add(parseCodeableConcept(xpp));
15322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15323        res.getDevice().add(parseReference(xpp));
15324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedItem")) {
15325        res.getManufacturedItem().add(parseReference(xpp));
15326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
15327        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, owner));
15328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
15329        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
15330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
15331        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
15332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
15333        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
15334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15335        res.getManufacturer().add(parseReference(xpp));
15336      } else if (!parseBackboneElementContent(eventType, xpp, res))
15337        return false;
15338    return true;
15339  }
15340
15341  protected MedicinalProductPharmaceutical parseMedicinalProductPharmaceutical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15342    MedicinalProductPharmaceutical res = new MedicinalProductPharmaceutical();
15343    parseDomainResourceAttributes(xpp, res);
15344    next(xpp);
15345    int eventType = nextNoWhitespace(xpp);
15346    while (eventType != XmlPullParser.END_TAG) {
15347  if (!parseMedicinalProductPharmaceuticalContent(eventType, xpp, res))
15348        unknownContent(xpp);
15349      eventType = nextNoWhitespace(xpp);
15350    }
15351    next(xpp);
15352    parseElementClose(res);
15353    return res;
15354  }
15355
15356  protected boolean parseMedicinalProductPharmaceuticalContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical res) throws XmlPullParserException, IOException, FHIRFormatError {
15357      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15358        res.getIdentifier().add(parseIdentifier(xpp));
15359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrableDoseForm")) {
15360        res.setAdministrableDoseForm(parseCodeableConcept(xpp));
15361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
15362        res.setUnitOfPresentation(parseCodeableConcept(xpp));
15363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15364        res.getIngredient().add(parseReference(xpp));
15365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15366        res.getDevice().add(parseReference(xpp));
15367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristics")) {
15368        res.getCharacteristics().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(xpp, res));
15369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeOfAdministration")) {
15370        res.getRouteOfAdministration().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(xpp, res));
15371      } else if (!parseDomainResourceContent(eventType, xpp, res))
15372        return false;
15373    return true;
15374  }
15375
15376  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15377    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent();
15378    parseBackboneAttributes(xpp, res);
15379    next(xpp);
15380    int eventType = nextNoWhitespace(xpp);
15381    while (eventType != XmlPullParser.END_TAG) {
15382  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(eventType, xpp, owner, res))
15383        unknownContent(xpp);
15384      eventType = nextNoWhitespace(xpp);
15385    }
15386    next(xpp);
15387    parseElementClose(res);
15388    return res;
15389  }
15390
15391  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15392      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15393        res.setCode(parseCodeableConcept(xpp));
15394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15395        res.setStatus(parseCodeableConcept(xpp));
15396      } else if (!parseBackboneElementContent(eventType, xpp, res))
15397        return false;
15398    return true;
15399  }
15400
15401  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15402    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent();
15403    parseBackboneAttributes(xpp, res);
15404    next(xpp);
15405    int eventType = nextNoWhitespace(xpp);
15406    while (eventType != XmlPullParser.END_TAG) {
15407  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentContent(eventType, xpp, owner, res))
15408        unknownContent(xpp);
15409      eventType = nextNoWhitespace(xpp);
15410    }
15411    next(xpp);
15412    parseElementClose(res);
15413    return res;
15414  }
15415
15416  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15417      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15418        res.setCode(parseCodeableConcept(xpp));
15419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("firstDose")) {
15420        res.setFirstDose(parseQuantity(xpp));
15421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxSingleDose")) {
15422        res.setMaxSingleDose(parseQuantity(xpp));
15423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerDay")) {
15424        res.setMaxDosePerDay(parseQuantity(xpp));
15425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerTreatmentPeriod")) {
15426        res.setMaxDosePerTreatmentPeriod(parseRatio(xpp));
15427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxTreatmentPeriod")) {
15428        res.setMaxTreatmentPeriod(parseDuration(xpp));
15429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetSpecies")) {
15430        res.getTargetSpecies().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(xpp, owner));
15431      } else if (!parseBackboneElementContent(eventType, xpp, res))
15432        return false;
15433    return true;
15434  }
15435
15436  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15437    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent();
15438    parseBackboneAttributes(xpp, res);
15439    next(xpp);
15440    int eventType = nextNoWhitespace(xpp);
15441    while (eventType != XmlPullParser.END_TAG) {
15442  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentContent(eventType, xpp, owner, res))
15443        unknownContent(xpp);
15444      eventType = nextNoWhitespace(xpp);
15445    }
15446    next(xpp);
15447    parseElementClose(res);
15448    return res;
15449  }
15450
15451  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15452      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15453        res.setCode(parseCodeableConcept(xpp));
15454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("withdrawalPeriod")) {
15455        res.getWithdrawalPeriod().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(xpp, owner));
15456      } else if (!parseBackboneElementContent(eventType, xpp, res))
15457        return false;
15458    return true;
15459  }
15460
15461  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15462    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent();
15463    parseBackboneAttributes(xpp, res);
15464    next(xpp);
15465    int eventType = nextNoWhitespace(xpp);
15466    while (eventType != XmlPullParser.END_TAG) {
15467  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(eventType, xpp, owner, res))
15468        unknownContent(xpp);
15469      eventType = nextNoWhitespace(xpp);
15470    }
15471    next(xpp);
15472    parseElementClose(res);
15473    return res;
15474  }
15475
15476  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tissue")) {
15478        res.setTissue(parseCodeableConcept(xpp));
15479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
15480        res.setValue(parseQuantity(xpp));
15481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
15482        res.setSupportingInformationElement(parseString(xpp));
15483      } else if (!parseBackboneElementContent(eventType, xpp, res))
15484        return false;
15485    return true;
15486  }
15487
15488  protected MedicinalProductUndesirableEffect parseMedicinalProductUndesirableEffect(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15489    MedicinalProductUndesirableEffect res = new MedicinalProductUndesirableEffect();
15490    parseDomainResourceAttributes(xpp, res);
15491    next(xpp);
15492    int eventType = nextNoWhitespace(xpp);
15493    while (eventType != XmlPullParser.END_TAG) {
15494  if (!parseMedicinalProductUndesirableEffectContent(eventType, xpp, res))
15495        unknownContent(xpp);
15496      eventType = nextNoWhitespace(xpp);
15497    }
15498    next(xpp);
15499    parseElementClose(res);
15500    return res;
15501  }
15502
15503  protected boolean parseMedicinalProductUndesirableEffectContent(int eventType, XmlPullParser xpp, MedicinalProductUndesirableEffect res) throws XmlPullParserException, IOException, FHIRFormatError {
15504      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15505        res.getSubject().add(parseReference(xpp));
15506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("symptomConditionEffect")) {
15507        res.setSymptomConditionEffect(parseCodeableConcept(xpp));
15508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
15509        res.setClassification(parseCodeableConcept(xpp));
15510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyOfOccurrence")) {
15511        res.setFrequencyOfOccurrence(parseCodeableConcept(xpp));
15512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
15513        res.getPopulation().add(parsePopulation(xpp));
15514      } else if (!parseDomainResourceContent(eventType, xpp, res))
15515        return false;
15516    return true;
15517  }
15518
15519  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15520    MessageDefinition res = new MessageDefinition();
15521    parseDomainResourceAttributes(xpp, res);
15522    next(xpp);
15523    int eventType = nextNoWhitespace(xpp);
15524    while (eventType != XmlPullParser.END_TAG) {
15525  if (!parseMessageDefinitionContent(eventType, xpp, res))
15526        unknownContent(xpp);
15527      eventType = nextNoWhitespace(xpp);
15528    }
15529    next(xpp);
15530    parseElementClose(res);
15531    return res;
15532  }
15533
15534  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
15535      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15536        res.setUrlElement(parseUri(xpp));
15537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15538        res.getIdentifier().add(parseIdentifier(xpp));
15539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15540        res.setVersionElement(parseString(xpp));
15541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15542        res.setNameElement(parseString(xpp));
15543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15544        res.setTitleElement(parseString(xpp));
15545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
15546        res.getReplaces().add(parseCanonical(xpp));
15547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15548        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15550        res.setExperimentalElement(parseBoolean(xpp));
15551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15552        res.setDateElement(parseDateTime(xpp));
15553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15554        res.setPublisherElement(parseString(xpp));
15555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15556        res.getContact().add(parseContactDetail(xpp));
15557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15558        res.setDescriptionElement(parseMarkdown(xpp));
15559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15560        res.getUseContext().add(parseUsageContext(xpp));
15561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15562        res.getJurisdiction().add(parseCodeableConcept(xpp));
15563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15564        res.setPurposeElement(parseMarkdown(xpp));
15565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15566        res.setCopyrightElement(parseMarkdown(xpp));
15567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
15568        res.setBaseElement(parseCanonical(xpp));
15569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
15570        res.getParent().add(parseCanonical(xpp));
15571      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
15572        res.setEvent(parseType("event", xpp));
15573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15574        res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
15575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15576        res.getFocus().add(parseMessageDefinitionMessageDefinitionFocusComponent(xpp, res));
15577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
15578        res.setResponseRequiredElement(parseEnumeration(xpp, MessageDefinition.MessageheaderResponseRequest.NULL, new MessageDefinition.MessageheaderResponseRequestEnumFactory()));
15579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
15580        res.getAllowedResponse().add(parseMessageDefinitionMessageDefinitionAllowedResponseComponent(xpp, res));
15581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("graph")) {
15582        res.getGraph().add(parseCanonical(xpp));
15583      } else if (!parseDomainResourceContent(eventType, xpp, res))
15584        return false;
15585    return true;
15586  }
15587
15588  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionMessageDefinitionFocusComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15589    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
15590    parseBackboneAttributes(xpp, res);
15591    next(xpp);
15592    int eventType = nextNoWhitespace(xpp);
15593    while (eventType != XmlPullParser.END_TAG) {
15594  if (!parseMessageDefinitionMessageDefinitionFocusComponentContent(eventType, xpp, owner, res))
15595        unknownContent(xpp);
15596      eventType = nextNoWhitespace(xpp);
15597    }
15598    next(xpp);
15599    parseElementClose(res);
15600    return res;
15601  }
15602
15603  protected boolean parseMessageDefinitionMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15604      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15605        res.setCodeElement(parseCode(xpp));
15606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
15607        res.setProfileElement(parseCanonical(xpp));
15608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
15609        res.setMinElement(parseUnsignedInt(xpp));
15610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
15611        res.setMaxElement(parseString(xpp));
15612      } else if (!parseBackboneElementContent(eventType, xpp, res))
15613        return false;
15614    return true;
15615  }
15616
15617  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionMessageDefinitionAllowedResponseComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15618    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
15619    parseBackboneAttributes(xpp, res);
15620    next(xpp);
15621    int eventType = nextNoWhitespace(xpp);
15622    while (eventType != XmlPullParser.END_TAG) {
15623  if (!parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(eventType, xpp, owner, res))
15624        unknownContent(xpp);
15625      eventType = nextNoWhitespace(xpp);
15626    }
15627    next(xpp);
15628    parseElementClose(res);
15629    return res;
15630  }
15631
15632  protected boolean parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
15634        res.setMessageElement(parseCanonical(xpp));
15635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
15636        res.setSituationElement(parseMarkdown(xpp));
15637      } else if (!parseBackboneElementContent(eventType, xpp, res))
15638        return false;
15639    return true;
15640  }
15641
15642  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15643    MessageHeader res = new MessageHeader();
15644    parseDomainResourceAttributes(xpp, res);
15645    next(xpp);
15646    int eventType = nextNoWhitespace(xpp);
15647    while (eventType != XmlPullParser.END_TAG) {
15648  if (!parseMessageHeaderContent(eventType, xpp, res))
15649        unknownContent(xpp);
15650      eventType = nextNoWhitespace(xpp);
15651    }
15652    next(xpp);
15653    parseElementClose(res);
15654    return res;
15655  }
15656
15657  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
15658      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
15659        res.setEvent(parseType("event", xpp));
15660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
15661        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
15662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
15663        res.setSender(parseReference(xpp));
15664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
15665        res.setEnterer(parseReference(xpp));
15666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
15667        res.setAuthor(parseReference(xpp));
15668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15669        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
15670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
15671        res.setResponsible(parseReference(xpp));
15672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15673        res.setReason(parseCodeableConcept(xpp));
15674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
15675        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
15676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15677        res.getFocus().add(parseReference(xpp));
15678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
15679        res.setDefinitionElement(parseCanonical(xpp));
15680      } else if (!parseDomainResourceContent(eventType, xpp, res))
15681        return false;
15682    return true;
15683  }
15684
15685  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15686    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
15687    parseBackboneAttributes(xpp, res);
15688    next(xpp);
15689    int eventType = nextNoWhitespace(xpp);
15690    while (eventType != XmlPullParser.END_TAG) {
15691  if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, owner, res))
15692        unknownContent(xpp);
15693      eventType = nextNoWhitespace(xpp);
15694    }
15695    next(xpp);
15696    parseElementClose(res);
15697    return res;
15698  }
15699
15700  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15701      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15702        res.setNameElement(parseString(xpp));
15703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15704        res.setTarget(parseReference(xpp));
15705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15706        res.setEndpointElement(parseUrl(xpp));
15707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
15708        res.setReceiver(parseReference(xpp));
15709      } else if (!parseBackboneElementContent(eventType, xpp, res))
15710        return false;
15711    return true;
15712  }
15713
15714  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15715    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
15716    parseBackboneAttributes(xpp, res);
15717    next(xpp);
15718    int eventType = nextNoWhitespace(xpp);
15719    while (eventType != XmlPullParser.END_TAG) {
15720  if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, owner, res))
15721        unknownContent(xpp);
15722      eventType = nextNoWhitespace(xpp);
15723    }
15724    next(xpp);
15725    parseElementClose(res);
15726    return res;
15727  }
15728
15729  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15730      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15731        res.setNameElement(parseString(xpp));
15732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
15733        res.setSoftwareElement(parseString(xpp));
15734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15735        res.setVersionElement(parseString(xpp));
15736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15737        res.setContact(parseContactPoint(xpp));
15738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15739        res.setEndpointElement(parseUrl(xpp));
15740      } else if (!parseBackboneElementContent(eventType, xpp, res))
15741        return false;
15742    return true;
15743  }
15744
15745  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15746    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
15747    parseBackboneAttributes(xpp, res);
15748    next(xpp);
15749    int eventType = nextNoWhitespace(xpp);
15750    while (eventType != XmlPullParser.END_TAG) {
15751  if (!parseMessageHeaderMessageHeaderResponseComponentContent(eventType, xpp, owner, res))
15752        unknownContent(xpp);
15753      eventType = nextNoWhitespace(xpp);
15754    }
15755    next(xpp);
15756    parseElementClose(res);
15757    return res;
15758  }
15759
15760  protected boolean parseMessageHeaderMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15761      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15762        res.setIdentifierElement(parseId(xpp));
15763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15764        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
15765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
15766        res.setDetails(parseReference(xpp));
15767      } else if (!parseBackboneElementContent(eventType, xpp, res))
15768        return false;
15769    return true;
15770  }
15771
15772  protected MolecularSequence parseMolecularSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15773    MolecularSequence res = new MolecularSequence();
15774    parseDomainResourceAttributes(xpp, res);
15775    next(xpp);
15776    int eventType = nextNoWhitespace(xpp);
15777    while (eventType != XmlPullParser.END_TAG) {
15778  if (!parseMolecularSequenceContent(eventType, xpp, res))
15779        unknownContent(xpp);
15780      eventType = nextNoWhitespace(xpp);
15781    }
15782    next(xpp);
15783    parseElementClose(res);
15784    return res;
15785  }
15786
15787  protected boolean parseMolecularSequenceContent(int eventType, XmlPullParser xpp, MolecularSequence res) throws XmlPullParserException, IOException, FHIRFormatError {
15788      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15789        res.getIdentifier().add(parseIdentifier(xpp));
15790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15791        res.setTypeElement(parseEnumeration(xpp, MolecularSequence.SequenceType.NULL, new MolecularSequence.SequenceTypeEnumFactory()));
15792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
15793        res.setCoordinateSystemElement(parseInteger(xpp));
15794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
15795        res.setPatient(parseReference(xpp));
15796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
15797        res.setSpecimen(parseReference(xpp));
15798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15799        res.setDevice(parseReference(xpp));
15800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15801        res.setPerformer(parseReference(xpp));
15802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15803        res.setQuantity(parseQuantity(xpp));
15804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
15805        res.setReferenceSeq(parseMolecularSequenceMolecularSequenceReferenceSeqComponent(xpp, res));
15806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variant")) {
15807        res.getVariant().add(parseMolecularSequenceMolecularSequenceVariantComponent(xpp, res));
15808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
15809        res.setObservedSeqElement(parseString(xpp));
15810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
15811        res.getQuality().add(parseMolecularSequenceMolecularSequenceQualityComponent(xpp, res));
15812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
15813        res.setReadCoverageElement(parseInteger(xpp));
15814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
15815        res.getRepository().add(parseMolecularSequenceMolecularSequenceRepositoryComponent(xpp, res));
15816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
15817        res.getPointer().add(parseReference(xpp));
15818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structureVariant")) {
15819        res.getStructureVariant().add(parseMolecularSequenceMolecularSequenceStructureVariantComponent(xpp, res));
15820      } else if (!parseDomainResourceContent(eventType, xpp, res))
15821        return false;
15822    return true;
15823  }
15824
15825  protected MolecularSequence.MolecularSequenceReferenceSeqComponent parseMolecularSequenceMolecularSequenceReferenceSeqComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15826    MolecularSequence.MolecularSequenceReferenceSeqComponent res = new MolecularSequence.MolecularSequenceReferenceSeqComponent();
15827    parseBackboneAttributes(xpp, res);
15828    next(xpp);
15829    int eventType = nextNoWhitespace(xpp);
15830    while (eventType != XmlPullParser.END_TAG) {
15831  if (!parseMolecularSequenceMolecularSequenceReferenceSeqComponentContent(eventType, xpp, owner, res))
15832        unknownContent(xpp);
15833      eventType = nextNoWhitespace(xpp);
15834    }
15835    next(xpp);
15836    parseElementClose(res);
15837    return res;
15838  }
15839
15840  protected boolean parseMolecularSequenceMolecularSequenceReferenceSeqComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceReferenceSeqComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15841      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
15842        res.setChromosome(parseCodeableConcept(xpp));
15843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
15844        res.setGenomeBuildElement(parseString(xpp));
15845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientation")) {
15846        res.setOrientationElement(parseEnumeration(xpp, MolecularSequence.OrientationType.NULL, new MolecularSequence.OrientationTypeEnumFactory()));
15847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
15848        res.setReferenceSeqId(parseCodeableConcept(xpp));
15849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
15850        res.setReferenceSeqPointer(parseReference(xpp));
15851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
15852        res.setReferenceSeqStringElement(parseString(xpp));
15853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
15854        res.setStrandElement(parseEnumeration(xpp, MolecularSequence.StrandType.NULL, new MolecularSequence.StrandTypeEnumFactory()));
15855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
15856        res.setWindowStartElement(parseInteger(xpp));
15857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
15858        res.setWindowEndElement(parseInteger(xpp));
15859      } else if (!parseBackboneElementContent(eventType, xpp, res))
15860        return false;
15861    return true;
15862  }
15863
15864  protected MolecularSequence.MolecularSequenceVariantComponent parseMolecularSequenceMolecularSequenceVariantComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15865    MolecularSequence.MolecularSequenceVariantComponent res = new MolecularSequence.MolecularSequenceVariantComponent();
15866    parseBackboneAttributes(xpp, res);
15867    next(xpp);
15868    int eventType = nextNoWhitespace(xpp);
15869    while (eventType != XmlPullParser.END_TAG) {
15870  if (!parseMolecularSequenceMolecularSequenceVariantComponentContent(eventType, xpp, owner, res))
15871        unknownContent(xpp);
15872      eventType = nextNoWhitespace(xpp);
15873    }
15874    next(xpp);
15875    parseElementClose(res);
15876    return res;
15877  }
15878
15879  protected boolean parseMolecularSequenceMolecularSequenceVariantComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15880      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
15881        res.setStartElement(parseInteger(xpp));
15882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
15883        res.setEndElement(parseInteger(xpp));
15884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
15885        res.setObservedAlleleElement(parseString(xpp));
15886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
15887        res.setReferenceAlleleElement(parseString(xpp));
15888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
15889        res.setCigarElement(parseString(xpp));
15890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantPointer")) {
15891        res.setVariantPointer(parseReference(xpp));
15892      } else if (!parseBackboneElementContent(eventType, xpp, res))
15893        return false;
15894    return true;
15895  }
15896
15897  protected MolecularSequence.MolecularSequenceQualityComponent parseMolecularSequenceMolecularSequenceQualityComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15898    MolecularSequence.MolecularSequenceQualityComponent res = new MolecularSequence.MolecularSequenceQualityComponent();
15899    parseBackboneAttributes(xpp, res);
15900    next(xpp);
15901    int eventType = nextNoWhitespace(xpp);
15902    while (eventType != XmlPullParser.END_TAG) {
15903  if (!parseMolecularSequenceMolecularSequenceQualityComponentContent(eventType, xpp, owner, res))
15904        unknownContent(xpp);
15905      eventType = nextNoWhitespace(xpp);
15906    }
15907    next(xpp);
15908    parseElementClose(res);
15909    return res;
15910  }
15911
15912  protected boolean parseMolecularSequenceMolecularSequenceQualityComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceQualityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15913      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15914        res.setTypeElement(parseEnumeration(xpp, MolecularSequence.QualityType.NULL, new MolecularSequence.QualityTypeEnumFactory()));
15915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("standardSequence")) {
15916        res.setStandardSequence(parseCodeableConcept(xpp));
15917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
15918        res.setStartElement(parseInteger(xpp));
15919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
15920        res.setEndElement(parseInteger(xpp));
15921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
15922        res.setScore(parseQuantity(xpp));
15923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
15924        res.setMethod(parseCodeableConcept(xpp));
15925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthTP")) {
15926        res.setTruthTPElement(parseDecimal(xpp));
15927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryTP")) {
15928        res.setQueryTPElement(parseDecimal(xpp));
15929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthFN")) {
15930        res.setTruthFNElement(parseDecimal(xpp));
15931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryFP")) {
15932        res.setQueryFPElement(parseDecimal(xpp));
15933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gtFP")) {
15934        res.setGtFPElement(parseDecimal(xpp));
15935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
15936        res.setPrecisionElement(parseDecimal(xpp));
15937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
15938        res.setRecallElement(parseDecimal(xpp));
15939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fScore")) {
15940        res.setFScoreElement(parseDecimal(xpp));
15941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("roc")) {
15942        res.setRoc(parseMolecularSequenceMolecularSequenceQualityRocComponent(xpp, owner));
15943      } else if (!parseBackboneElementContent(eventType, xpp, res))
15944        return false;
15945    return true;
15946  }
15947
15948  protected MolecularSequence.MolecularSequenceQualityRocComponent parseMolecularSequenceMolecularSequenceQualityRocComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15949    MolecularSequence.MolecularSequenceQualityRocComponent res = new MolecularSequence.MolecularSequenceQualityRocComponent();
15950    parseBackboneAttributes(xpp, res);
15951    next(xpp);
15952    int eventType = nextNoWhitespace(xpp);
15953    while (eventType != XmlPullParser.END_TAG) {
15954  if (!parseMolecularSequenceMolecularSequenceQualityRocComponentContent(eventType, xpp, owner, res))
15955        unknownContent(xpp);
15956      eventType = nextNoWhitespace(xpp);
15957    }
15958    next(xpp);
15959    parseElementClose(res);
15960    return res;
15961  }
15962
15963  protected boolean parseMolecularSequenceMolecularSequenceQualityRocComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceQualityRocComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15964      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
15965        res.getScore().add(parseInteger(xpp));
15966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numTP")) {
15967        res.getNumTP().add(parseInteger(xpp));
15968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFP")) {
15969        res.getNumFP().add(parseInteger(xpp));
15970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFN")) {
15971        res.getNumFN().add(parseInteger(xpp));
15972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
15973        res.getPrecision().add(parseDecimal(xpp));
15974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sensitivity")) {
15975        res.getSensitivity().add(parseDecimal(xpp));
15976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fMeasure")) {
15977        res.getFMeasure().add(parseDecimal(xpp));
15978      } else if (!parseBackboneElementContent(eventType, xpp, res))
15979        return false;
15980    return true;
15981  }
15982
15983  protected MolecularSequence.MolecularSequenceRepositoryComponent parseMolecularSequenceMolecularSequenceRepositoryComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15984    MolecularSequence.MolecularSequenceRepositoryComponent res = new MolecularSequence.MolecularSequenceRepositoryComponent();
15985    parseBackboneAttributes(xpp, res);
15986    next(xpp);
15987    int eventType = nextNoWhitespace(xpp);
15988    while (eventType != XmlPullParser.END_TAG) {
15989  if (!parseMolecularSequenceMolecularSequenceRepositoryComponentContent(eventType, xpp, owner, res))
15990        unknownContent(xpp);
15991      eventType = nextNoWhitespace(xpp);
15992    }
15993    next(xpp);
15994    parseElementClose(res);
15995    return res;
15996  }
15997
15998  protected boolean parseMolecularSequenceMolecularSequenceRepositoryComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceRepositoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15999      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16000        res.setTypeElement(parseEnumeration(xpp, MolecularSequence.RepositoryType.NULL, new MolecularSequence.RepositoryTypeEnumFactory()));
16001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16002        res.setUrlElement(parseUri(xpp));
16003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16004        res.setNameElement(parseString(xpp));
16005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("datasetId")) {
16006        res.setDatasetIdElement(parseString(xpp));
16007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantsetId")) {
16008        res.setVariantsetIdElement(parseString(xpp));
16009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readsetId")) {
16010        res.setReadsetIdElement(parseString(xpp));
16011      } else if (!parseBackboneElementContent(eventType, xpp, res))
16012        return false;
16013    return true;
16014  }
16015
16016  protected MolecularSequence.MolecularSequenceStructureVariantComponent parseMolecularSequenceMolecularSequenceStructureVariantComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
16017    MolecularSequence.MolecularSequenceStructureVariantComponent res = new MolecularSequence.MolecularSequenceStructureVariantComponent();
16018    parseBackboneAttributes(xpp, res);
16019    next(xpp);
16020    int eventType = nextNoWhitespace(xpp);
16021    while (eventType != XmlPullParser.END_TAG) {
16022  if (!parseMolecularSequenceMolecularSequenceStructureVariantComponentContent(eventType, xpp, owner, res))
16023        unknownContent(xpp);
16024      eventType = nextNoWhitespace(xpp);
16025    }
16026    next(xpp);
16027    parseElementClose(res);
16028    return res;
16029  }
16030
16031  protected boolean parseMolecularSequenceMolecularSequenceStructureVariantComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceStructureVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16032      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantType")) {
16033        res.setVariantType(parseCodeableConcept(xpp));
16034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exact")) {
16035        res.setExactElement(parseBoolean(xpp));
16036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
16037        res.setLengthElement(parseInteger(xpp));
16038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outer")) {
16039        res.setOuter(parseMolecularSequenceMolecularSequenceStructureVariantOuterComponent(xpp, owner));
16040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inner")) {
16041        res.setInner(parseMolecularSequenceMolecularSequenceStructureVariantInnerComponent(xpp, owner));
16042      } else if (!parseBackboneElementContent(eventType, xpp, res))
16043        return false;
16044    return true;
16045  }
16046
16047  protected MolecularSequence.MolecularSequenceStructureVariantOuterComponent parseMolecularSequenceMolecularSequenceStructureVariantOuterComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
16048    MolecularSequence.MolecularSequenceStructureVariantOuterComponent res = new MolecularSequence.MolecularSequenceStructureVariantOuterComponent();
16049    parseBackboneAttributes(xpp, res);
16050    next(xpp);
16051    int eventType = nextNoWhitespace(xpp);
16052    while (eventType != XmlPullParser.END_TAG) {
16053  if (!parseMolecularSequenceMolecularSequenceStructureVariantOuterComponentContent(eventType, xpp, owner, res))
16054        unknownContent(xpp);
16055      eventType = nextNoWhitespace(xpp);
16056    }
16057    next(xpp);
16058    parseElementClose(res);
16059    return res;
16060  }
16061
16062  protected boolean parseMolecularSequenceMolecularSequenceStructureVariantOuterComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceStructureVariantOuterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16063      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
16064        res.setStartElement(parseInteger(xpp));
16065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
16066        res.setEndElement(parseInteger(xpp));
16067      } else if (!parseBackboneElementContent(eventType, xpp, res))
16068        return false;
16069    return true;
16070  }
16071
16072  protected MolecularSequence.MolecularSequenceStructureVariantInnerComponent parseMolecularSequenceMolecularSequenceStructureVariantInnerComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
16073    MolecularSequence.MolecularSequenceStructureVariantInnerComponent res = new MolecularSequence.MolecularSequenceStructureVariantInnerComponent();
16074    parseBackboneAttributes(xpp, res);
16075    next(xpp);
16076    int eventType = nextNoWhitespace(xpp);
16077    while (eventType != XmlPullParser.END_TAG) {
16078  if (!parseMolecularSequenceMolecularSequenceStructureVariantInnerComponentContent(eventType, xpp, owner, res))
16079        unknownContent(xpp);
16080      eventType = nextNoWhitespace(xpp);
16081    }
16082    next(xpp);
16083    parseElementClose(res);
16084    return res;
16085  }
16086
16087  protected boolean parseMolecularSequenceMolecularSequenceStructureVariantInnerComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceStructureVariantInnerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16088      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
16089        res.setStartElement(parseInteger(xpp));
16090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
16091        res.setEndElement(parseInteger(xpp));
16092      } else if (!parseBackboneElementContent(eventType, xpp, res))
16093        return false;
16094    return true;
16095  }
16096
16097  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16098    NamingSystem res = new NamingSystem();
16099    parseDomainResourceAttributes(xpp, res);
16100    next(xpp);
16101    int eventType = nextNoWhitespace(xpp);
16102    while (eventType != XmlPullParser.END_TAG) {
16103  if (!parseNamingSystemContent(eventType, xpp, res))
16104        unknownContent(xpp);
16105      eventType = nextNoWhitespace(xpp);
16106    }
16107    next(xpp);
16108    parseElementClose(res);
16109    return res;
16110  }
16111
16112  protected boolean parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
16113      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16114        res.setNameElement(parseString(xpp));
16115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16116        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
16118        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
16119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16120        res.setDateElement(parseDateTime(xpp));
16121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16122        res.setPublisherElement(parseString(xpp));
16123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16124        res.getContact().add(parseContactDetail(xpp));
16125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
16126        res.setResponsibleElement(parseString(xpp));
16127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16128        res.setType(parseCodeableConcept(xpp));
16129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16130        res.setDescriptionElement(parseMarkdown(xpp));
16131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16132        res.getUseContext().add(parseUsageContext(xpp));
16133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16134        res.getJurisdiction().add(parseCodeableConcept(xpp));
16135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
16136        res.setUsageElement(parseString(xpp));
16137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
16138        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
16139      } else if (!parseDomainResourceContent(eventType, xpp, res))
16140        return false;
16141    return true;
16142  }
16143
16144  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
16145    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
16146    parseBackboneAttributes(xpp, res);
16147    next(xpp);
16148    int eventType = nextNoWhitespace(xpp);
16149    while (eventType != XmlPullParser.END_TAG) {
16150  if (!parseNamingSystemNamingSystemUniqueIdComponentContent(eventType, xpp, owner, res))
16151        unknownContent(xpp);
16152      eventType = nextNoWhitespace(xpp);
16153    }
16154    next(xpp);
16155    parseElementClose(res);
16156    return res;
16157  }
16158
16159  protected boolean parseNamingSystemNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem owner, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16160      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16161        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
16162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16163        res.setValueElement(parseString(xpp));
16164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
16165        res.setPreferredElement(parseBoolean(xpp));
16166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16167        res.setCommentElement(parseString(xpp));
16168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16169        res.setPeriod(parsePeriod(xpp));
16170      } else if (!parseBackboneElementContent(eventType, xpp, res))
16171        return false;
16172    return true;
16173  }
16174
16175  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16176    NutritionOrder res = new NutritionOrder();
16177    parseDomainResourceAttributes(xpp, res);
16178    next(xpp);
16179    int eventType = nextNoWhitespace(xpp);
16180    while (eventType != XmlPullParser.END_TAG) {
16181  if (!parseNutritionOrderContent(eventType, xpp, res))
16182        unknownContent(xpp);
16183      eventType = nextNoWhitespace(xpp);
16184    }
16185    next(xpp);
16186    parseElementClose(res);
16187    return res;
16188  }
16189
16190  protected boolean parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
16191      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16192        res.getIdentifier().add(parseIdentifier(xpp));
16193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
16194        res.getInstantiatesCanonical().add(parseCanonical(xpp));
16195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
16196        res.getInstantiatesUri().add(parseUri(xpp));
16197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
16198        res.getInstantiates().add(parseUri(xpp));
16199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16200        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
16201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
16202        res.setIntentElement(parseEnumeration(xpp, NutritionOrder.NutritiionOrderIntent.NULL, new NutritionOrder.NutritiionOrderIntentEnumFactory()));
16203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
16204        res.setPatient(parseReference(xpp));
16205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
16206        res.setEncounter(parseReference(xpp));
16207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
16208        res.setDateTimeElement(parseDateTime(xpp));
16209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
16210        res.setOrderer(parseReference(xpp));
16211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
16212        res.getAllergyIntolerance().add(parseReference(xpp));
16213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
16214        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
16215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
16216        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
16217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
16218        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
16219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
16220        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
16221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
16222        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
16223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16224        res.getNote().add(parseAnnotation(xpp));
16225      } else if (!parseDomainResourceContent(eventType, xpp, res))
16226        return false;
16227    return true;
16228  }
16229
16230  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16231    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
16232    parseBackboneAttributes(xpp, res);
16233    next(xpp);
16234    int eventType = nextNoWhitespace(xpp);
16235    while (eventType != XmlPullParser.END_TAG) {
16236  if (!parseNutritionOrderNutritionOrderOralDietComponentContent(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 parseNutritionOrderNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16247        res.getType().add(parseCodeableConcept(xpp));
16248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16249        res.getSchedule().add(parseTiming(xpp));
16250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
16251        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
16252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
16253        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
16254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
16255        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
16256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
16257        res.setInstructionElement(parseString(xpp));
16258      } else if (!parseBackboneElementContent(eventType, xpp, res))
16259        return false;
16260    return true;
16261  }
16262
16263  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16264    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
16265    parseBackboneAttributes(xpp, res);
16266    next(xpp);
16267    int eventType = nextNoWhitespace(xpp);
16268    while (eventType != XmlPullParser.END_TAG) {
16269  if (!parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(eventType, xpp, owner, res))
16270        unknownContent(xpp);
16271      eventType = nextNoWhitespace(xpp);
16272    }
16273    next(xpp);
16274    parseElementClose(res);
16275    return res;
16276  }
16277
16278  protected boolean parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16279      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
16280        res.setModifier(parseCodeableConcept(xpp));
16281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
16282        res.setAmount(parseQuantity(xpp));
16283      } else if (!parseBackboneElementContent(eventType, xpp, res))
16284        return false;
16285    return true;
16286  }
16287
16288  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16289    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
16290    parseBackboneAttributes(xpp, res);
16291    next(xpp);
16292    int eventType = nextNoWhitespace(xpp);
16293    while (eventType != XmlPullParser.END_TAG) {
16294  if (!parseNutritionOrderNutritionOrderOralDietTextureComponentContent(eventType, xpp, owner, res))
16295        unknownContent(xpp);
16296      eventType = nextNoWhitespace(xpp);
16297    }
16298    next(xpp);
16299    parseElementClose(res);
16300    return res;
16301  }
16302
16303  protected boolean parseNutritionOrderNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16304      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
16305        res.setModifier(parseCodeableConcept(xpp));
16306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
16307        res.setFoodType(parseCodeableConcept(xpp));
16308      } else if (!parseBackboneElementContent(eventType, xpp, res))
16309        return false;
16310    return true;
16311  }
16312
16313  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16314    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
16315    parseBackboneAttributes(xpp, res);
16316    next(xpp);
16317    int eventType = nextNoWhitespace(xpp);
16318    while (eventType != XmlPullParser.END_TAG) {
16319  if (!parseNutritionOrderNutritionOrderSupplementComponentContent(eventType, xpp, owner, res))
16320        unknownContent(xpp);
16321      eventType = nextNoWhitespace(xpp);
16322    }
16323    next(xpp);
16324    parseElementClose(res);
16325    return res;
16326  }
16327
16328  protected boolean parseNutritionOrderNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16329      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16330        res.setType(parseCodeableConcept(xpp));
16331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
16332        res.setProductNameElement(parseString(xpp));
16333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16334        res.getSchedule().add(parseTiming(xpp));
16335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16336        res.setQuantity(parseQuantity(xpp));
16337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
16338        res.setInstructionElement(parseString(xpp));
16339      } else if (!parseBackboneElementContent(eventType, xpp, res))
16340        return false;
16341    return true;
16342  }
16343
16344  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16345    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
16346    parseBackboneAttributes(xpp, res);
16347    next(xpp);
16348    int eventType = nextNoWhitespace(xpp);
16349    while (eventType != XmlPullParser.END_TAG) {
16350  if (!parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(eventType, xpp, owner, res))
16351        unknownContent(xpp);
16352      eventType = nextNoWhitespace(xpp);
16353    }
16354    next(xpp);
16355    parseElementClose(res);
16356    return res;
16357  }
16358
16359  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16360      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
16361        res.setBaseFormulaType(parseCodeableConcept(xpp));
16362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
16363        res.setBaseFormulaProductNameElement(parseString(xpp));
16364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
16365        res.setAdditiveType(parseCodeableConcept(xpp));
16366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
16367        res.setAdditiveProductNameElement(parseString(xpp));
16368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
16369        res.setCaloricDensity(parseQuantity(xpp));
16370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
16371        res.setRouteofAdministration(parseCodeableConcept(xpp));
16372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
16373        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
16374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
16375        res.setMaxVolumeToDeliver(parseQuantity(xpp));
16376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
16377        res.setAdministrationInstructionElement(parseString(xpp));
16378      } else if (!parseBackboneElementContent(eventType, xpp, res))
16379        return false;
16380    return true;
16381  }
16382
16383  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16384    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
16385    parseBackboneAttributes(xpp, res);
16386    next(xpp);
16387    int eventType = nextNoWhitespace(xpp);
16388    while (eventType != XmlPullParser.END_TAG) {
16389  if (!parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, owner, res))
16390        unknownContent(xpp);
16391      eventType = nextNoWhitespace(xpp);
16392    }
16393    next(xpp);
16394    parseElementClose(res);
16395    return res;
16396  }
16397
16398  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16399      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16400        res.setSchedule(parseTiming(xpp));
16401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16402        res.setQuantity(parseQuantity(xpp));
16403      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
16404        res.setRate(parseType("rate", xpp));
16405      } else if (!parseBackboneElementContent(eventType, xpp, res))
16406        return false;
16407    return true;
16408  }
16409
16410  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16411    Observation res = new Observation();
16412    parseDomainResourceAttributes(xpp, res);
16413    next(xpp);
16414    int eventType = nextNoWhitespace(xpp);
16415    while (eventType != XmlPullParser.END_TAG) {
16416  if (!parseObservationContent(eventType, xpp, res))
16417        unknownContent(xpp);
16418      eventType = nextNoWhitespace(xpp);
16419    }
16420    next(xpp);
16421    parseElementClose(res);
16422    return res;
16423  }
16424
16425  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
16426      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16427        res.getIdentifier().add(parseIdentifier(xpp));
16428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
16429        res.getBasedOn().add(parseReference(xpp));
16430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
16431        res.getPartOf().add(parseReference(xpp));
16432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16433        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
16434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16435        res.getCategory().add(parseCodeableConcept(xpp));
16436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16437        res.setCode(parseCodeableConcept(xpp));
16438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
16439        res.setSubject(parseReference(xpp));
16440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
16441        res.getFocus().add(parseReference(xpp));
16442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
16443        res.setEncounter(parseReference(xpp));
16444      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
16445        res.setEffective(parseType("effective", xpp));
16446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
16447        res.setIssuedElement(parseInstant(xpp));
16448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
16449        res.getPerformer().add(parseReference(xpp));
16450      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16451        res.setValue(parseType("value", xpp));
16452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
16453        res.setDataAbsentReason(parseCodeableConcept(xpp));
16454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
16455        res.getInterpretation().add(parseCodeableConcept(xpp));
16456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16457        res.getNote().add(parseAnnotation(xpp));
16458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
16459        res.setBodySite(parseCodeableConcept(xpp));
16460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
16461        res.setMethod(parseCodeableConcept(xpp));
16462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
16463        res.setSpecimen(parseReference(xpp));
16464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
16465        res.setDevice(parseReference(xpp));
16466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
16467        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
16468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasMember")) {
16469        res.getHasMember().add(parseReference(xpp));
16470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
16471        res.getDerivedFrom().add(parseReference(xpp));
16472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
16473        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
16474      } else if (!parseDomainResourceContent(eventType, xpp, res))
16475        return false;
16476    return true;
16477  }
16478
16479  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
16480    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
16481    parseBackboneAttributes(xpp, res);
16482    next(xpp);
16483    int eventType = nextNoWhitespace(xpp);
16484    while (eventType != XmlPullParser.END_TAG) {
16485  if (!parseObservationObservationReferenceRangeComponentContent(eventType, xpp, owner, res))
16486        unknownContent(xpp);
16487      eventType = nextNoWhitespace(xpp);
16488    }
16489    next(xpp);
16490    parseElementClose(res);
16491    return res;
16492  }
16493
16494  protected boolean parseObservationObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16495      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
16496        res.setLow(parseQuantity(xpp));
16497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
16498        res.setHigh(parseQuantity(xpp));
16499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16500        res.setType(parseCodeableConcept(xpp));
16501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
16502        res.getAppliesTo().add(parseCodeableConcept(xpp));
16503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
16504        res.setAge(parseRange(xpp));
16505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
16506        res.setTextElement(parseString(xpp));
16507      } else if (!parseBackboneElementContent(eventType, xpp, res))
16508        return false;
16509    return true;
16510  }
16511
16512  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
16513    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
16514    parseBackboneAttributes(xpp, res);
16515    next(xpp);
16516    int eventType = nextNoWhitespace(xpp);
16517    while (eventType != XmlPullParser.END_TAG) {
16518  if (!parseObservationObservationComponentComponentContent(eventType, xpp, owner, res))
16519        unknownContent(xpp);
16520      eventType = nextNoWhitespace(xpp);
16521    }
16522    next(xpp);
16523    parseElementClose(res);
16524    return res;
16525  }
16526
16527  protected boolean parseObservationObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16528      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16529        res.setCode(parseCodeableConcept(xpp));
16530      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16531        res.setValue(parseType("value", xpp));
16532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
16533        res.setDataAbsentReason(parseCodeableConcept(xpp));
16534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
16535        res.getInterpretation().add(parseCodeableConcept(xpp));
16536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
16537        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
16538      } else if (!parseBackboneElementContent(eventType, xpp, res))
16539        return false;
16540    return true;
16541  }
16542
16543  protected ObservationDefinition parseObservationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16544    ObservationDefinition res = new ObservationDefinition();
16545    parseDomainResourceAttributes(xpp, res);
16546    next(xpp);
16547    int eventType = nextNoWhitespace(xpp);
16548    while (eventType != XmlPullParser.END_TAG) {
16549  if (!parseObservationDefinitionContent(eventType, xpp, res))
16550        unknownContent(xpp);
16551      eventType = nextNoWhitespace(xpp);
16552    }
16553    next(xpp);
16554    parseElementClose(res);
16555    return res;
16556  }
16557
16558  protected boolean parseObservationDefinitionContent(int eventType, XmlPullParser xpp, ObservationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16559      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16560        res.getCategory().add(parseCodeableConcept(xpp));
16561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16562        res.setCode(parseCodeableConcept(xpp));
16563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16564        res.getIdentifier().add(parseIdentifier(xpp));
16565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedDataType")) {
16566        res.getPermittedDataType().add(parseEnumeration(xpp, ObservationDefinition.ObservationDataType.NULL, new ObservationDefinition.ObservationDataTypeEnumFactory()));
16567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleResultsAllowed")) {
16568        res.setMultipleResultsAllowedElement(parseBoolean(xpp));
16569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
16570        res.setMethod(parseCodeableConcept(xpp));
16571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferredReportName")) {
16572        res.setPreferredReportNameElement(parseString(xpp));
16573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantitativeDetails")) {
16574        res.setQuantitativeDetails(parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(xpp, res));
16575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiedInterval")) {
16576        res.getQualifiedInterval().add(parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(xpp, res));
16577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validCodedValueSet")) {
16578        res.setValidCodedValueSet(parseReference(xpp));
16579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("normalCodedValueSet")) {
16580        res.setNormalCodedValueSet(parseReference(xpp));
16581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abnormalCodedValueSet")) {
16582        res.setAbnormalCodedValueSet(parseReference(xpp));
16583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticalCodedValueSet")) {
16584        res.setCriticalCodedValueSet(parseReference(xpp));
16585      } else if (!parseDomainResourceContent(eventType, xpp, res))
16586        return false;
16587    return true;
16588  }
16589
16590  protected ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16591    ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res = new ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent();
16592    parseBackboneAttributes(xpp, res);
16593    next(xpp);
16594    int eventType = nextNoWhitespace(xpp);
16595    while (eventType != XmlPullParser.END_TAG) {
16596  if (!parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(eventType, xpp, owner, res))
16597        unknownContent(xpp);
16598      eventType = nextNoWhitespace(xpp);
16599    }
16600    next(xpp);
16601    parseElementClose(res);
16602    return res;
16603  }
16604
16605  protected boolean parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16606      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("customaryUnit")) {
16607        res.setCustomaryUnit(parseCodeableConcept(xpp));
16608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
16609        res.setUnit(parseCodeableConcept(xpp));
16610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conversionFactor")) {
16611        res.setConversionFactorElement(parseDecimal(xpp));
16612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decimalPrecision")) {
16613        res.setDecimalPrecisionElement(parseInteger(xpp));
16614      } else if (!parseBackboneElementContent(eventType, xpp, res))
16615        return false;
16616    return true;
16617  }
16618
16619  protected ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16620    ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res = new ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent();
16621    parseBackboneAttributes(xpp, res);
16622    next(xpp);
16623    int eventType = nextNoWhitespace(xpp);
16624    while (eventType != XmlPullParser.END_TAG) {
16625  if (!parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(eventType, xpp, owner, res))
16626        unknownContent(xpp);
16627      eventType = nextNoWhitespace(xpp);
16628    }
16629    next(xpp);
16630    parseElementClose(res);
16631    return res;
16632  }
16633
16634  protected boolean parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16635      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16636        res.setCategoryElement(parseEnumeration(xpp, ObservationDefinition.ObservationRangeCategory.NULL, new ObservationDefinition.ObservationRangeCategoryEnumFactory()));
16637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
16638        res.setRange(parseRange(xpp));
16639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
16640        res.setContext(parseCodeableConcept(xpp));
16641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
16642        res.getAppliesTo().add(parseCodeableConcept(xpp));
16643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
16644        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
16645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
16646        res.setAge(parseRange(xpp));
16647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gestationalAge")) {
16648        res.setGestationalAge(parseRange(xpp));
16649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
16650        res.setConditionElement(parseString(xpp));
16651      } else if (!parseBackboneElementContent(eventType, xpp, res))
16652        return false;
16653    return true;
16654  }
16655
16656  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16657    OperationDefinition res = new OperationDefinition();
16658    parseDomainResourceAttributes(xpp, res);
16659    next(xpp);
16660    int eventType = nextNoWhitespace(xpp);
16661    while (eventType != XmlPullParser.END_TAG) {
16662  if (!parseOperationDefinitionContent(eventType, xpp, res))
16663        unknownContent(xpp);
16664      eventType = nextNoWhitespace(xpp);
16665    }
16666    next(xpp);
16667    parseElementClose(res);
16668    return res;
16669  }
16670
16671  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16672      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16673        res.setUrlElement(parseUri(xpp));
16674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16675        res.setVersionElement(parseString(xpp));
16676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16677        res.setNameElement(parseString(xpp));
16678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16679        res.setTitleElement(parseString(xpp));
16680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16681        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
16683        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
16684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16685        res.setExperimentalElement(parseBoolean(xpp));
16686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16687        res.setDateElement(parseDateTime(xpp));
16688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16689        res.setPublisherElement(parseString(xpp));
16690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16691        res.getContact().add(parseContactDetail(xpp));
16692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16693        res.setDescriptionElement(parseMarkdown(xpp));
16694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16695        res.getUseContext().add(parseUsageContext(xpp));
16696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16697        res.getJurisdiction().add(parseCodeableConcept(xpp));
16698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16699        res.setPurposeElement(parseMarkdown(xpp));
16700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affectsState")) {
16701        res.setAffectsStateElement(parseBoolean(xpp));
16702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16703        res.setCodeElement(parseCode(xpp));
16704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16705        res.setCommentElement(parseMarkdown(xpp));
16706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
16707        res.setBaseElement(parseCanonical(xpp));
16708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16709        res.getResource().add(parseCode(xpp));
16710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
16711        res.setSystemElement(parseBoolean(xpp));
16712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16713        res.setTypeElement(parseBoolean(xpp));
16714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
16715        res.setInstanceElement(parseBoolean(xpp));
16716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inputProfile")) {
16717        res.setInputProfileElement(parseCanonical(xpp));
16718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputProfile")) {
16719        res.setOutputProfileElement(parseCanonical(xpp));
16720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
16721        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
16722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
16723        res.getOverload().add(parseOperationDefinitionOperationDefinitionOverloadComponent(xpp, res));
16724      } else if (!parseDomainResourceContent(eventType, xpp, res))
16725        return false;
16726    return true;
16727  }
16728
16729  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16730    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
16731    parseBackboneAttributes(xpp, res);
16732    next(xpp);
16733    int eventType = nextNoWhitespace(xpp);
16734    while (eventType != XmlPullParser.END_TAG) {
16735  if (!parseOperationDefinitionOperationDefinitionParameterComponentContent(eventType, xpp, owner, res))
16736        unknownContent(xpp);
16737      eventType = nextNoWhitespace(xpp);
16738    }
16739    next(xpp);
16740    parseElementClose(res);
16741    return res;
16742  }
16743
16744  protected boolean parseOperationDefinitionOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16745      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16746        res.setNameElement(parseCode(xpp));
16747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
16748        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
16749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
16750        res.setMinElement(parseInteger(xpp));
16751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
16752        res.setMaxElement(parseString(xpp));
16753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
16754        res.setDocumentationElement(parseString(xpp));
16755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16756        res.setTypeElement(parseCode(xpp));
16757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
16758        res.getTargetProfile().add(parseCanonical(xpp));
16759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
16760        res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
16761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
16762        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
16763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedFrom")) {
16764        res.getReferencedFrom().add(parseOperationDefinitionOperationDefinitionParameterReferencedFromComponent(xpp, owner));
16765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
16766        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
16767      } else if (!parseBackboneElementContent(eventType, xpp, res))
16768        return false;
16769    return true;
16770  }
16771
16772  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16773    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
16774    parseBackboneAttributes(xpp, res);
16775    next(xpp);
16776    int eventType = nextNoWhitespace(xpp);
16777    while (eventType != XmlPullParser.END_TAG) {
16778  if (!parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(eventType, xpp, owner, res))
16779        unknownContent(xpp);
16780      eventType = nextNoWhitespace(xpp);
16781    }
16782    next(xpp);
16783    parseElementClose(res);
16784    return res;
16785  }
16786
16787  protected boolean parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16788      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
16789        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
16790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
16791        res.setValueSetElement(parseCanonical(xpp));
16792      } else if (!parseBackboneElementContent(eventType, xpp, res))
16793        return false;
16794    return true;
16795  }
16796
16797  protected OperationDefinition.OperationDefinitionParameterReferencedFromComponent parseOperationDefinitionOperationDefinitionParameterReferencedFromComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16798    OperationDefinition.OperationDefinitionParameterReferencedFromComponent res = new OperationDefinition.OperationDefinitionParameterReferencedFromComponent();
16799    parseBackboneAttributes(xpp, res);
16800    next(xpp);
16801    int eventType = nextNoWhitespace(xpp);
16802    while (eventType != XmlPullParser.END_TAG) {
16803  if (!parseOperationDefinitionOperationDefinitionParameterReferencedFromComponentContent(eventType, xpp, owner, res))
16804        unknownContent(xpp);
16805      eventType = nextNoWhitespace(xpp);
16806    }
16807    next(xpp);
16808    parseElementClose(res);
16809    return res;
16810  }
16811
16812  protected boolean parseOperationDefinitionOperationDefinitionParameterReferencedFromComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterReferencedFromComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16813      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
16814        res.setSourceElement(parseString(xpp));
16815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16816        res.setSourceIdElement(parseString(xpp));
16817      } else if (!parseBackboneElementContent(eventType, xpp, res))
16818        return false;
16819    return true;
16820  }
16821
16822  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOperationDefinitionOverloadComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16823    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
16824    parseBackboneAttributes(xpp, res);
16825    next(xpp);
16826    int eventType = nextNoWhitespace(xpp);
16827    while (eventType != XmlPullParser.END_TAG) {
16828  if (!parseOperationDefinitionOperationDefinitionOverloadComponentContent(eventType, xpp, owner, res))
16829        unknownContent(xpp);
16830      eventType = nextNoWhitespace(xpp);
16831    }
16832    next(xpp);
16833    parseElementClose(res);
16834    return res;
16835  }
16836
16837  protected boolean parseOperationDefinitionOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16838      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
16839        res.getParameterName().add(parseString(xpp));
16840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16841        res.setCommentElement(parseString(xpp));
16842      } else if (!parseBackboneElementContent(eventType, xpp, res))
16843        return false;
16844    return true;
16845  }
16846
16847  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16848    OperationOutcome res = new OperationOutcome();
16849    parseDomainResourceAttributes(xpp, res);
16850    next(xpp);
16851    int eventType = nextNoWhitespace(xpp);
16852    while (eventType != XmlPullParser.END_TAG) {
16853  if (!parseOperationOutcomeContent(eventType, xpp, res))
16854        unknownContent(xpp);
16855      eventType = nextNoWhitespace(xpp);
16856    }
16857    next(xpp);
16858    parseElementClose(res);
16859    return res;
16860  }
16861
16862  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
16863      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
16864        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
16865      } else if (!parseDomainResourceContent(eventType, xpp, res))
16866        return false;
16867    return true;
16868  }
16869
16870  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
16871    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
16872    parseBackboneAttributes(xpp, res);
16873    next(xpp);
16874    int eventType = nextNoWhitespace(xpp);
16875    while (eventType != XmlPullParser.END_TAG) {
16876  if (!parseOperationOutcomeOperationOutcomeIssueComponentContent(eventType, xpp, owner, res))
16877        unknownContent(xpp);
16878      eventType = nextNoWhitespace(xpp);
16879    }
16880    next(xpp);
16881    parseElementClose(res);
16882    return res;
16883  }
16884
16885  protected boolean parseOperationOutcomeOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome owner, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16886      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
16887        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
16888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16889        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
16890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
16891        res.setDetails(parseCodeableConcept(xpp));
16892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
16893        res.setDiagnosticsElement(parseString(xpp));
16894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
16895        res.getLocation().add(parseString(xpp));
16896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16897        res.getExpression().add(parseString(xpp));
16898      } else if (!parseBackboneElementContent(eventType, xpp, res))
16899        return false;
16900    return true;
16901  }
16902
16903  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16904    Organization res = new Organization();
16905    parseDomainResourceAttributes(xpp, res);
16906    next(xpp);
16907    int eventType = nextNoWhitespace(xpp);
16908    while (eventType != XmlPullParser.END_TAG) {
16909  if (!parseOrganizationContent(eventType, xpp, res))
16910        unknownContent(xpp);
16911      eventType = nextNoWhitespace(xpp);
16912    }
16913    next(xpp);
16914    parseElementClose(res);
16915    return res;
16916  }
16917
16918  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
16919      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16920        res.getIdentifier().add(parseIdentifier(xpp));
16921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
16922        res.setActiveElement(parseBoolean(xpp));
16923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16924        res.getType().add(parseCodeableConcept(xpp));
16925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16926        res.setNameElement(parseString(xpp));
16927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
16928        res.getAlias().add(parseString(xpp));
16929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16930        res.getTelecom().add(parseContactPoint(xpp));
16931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16932        res.getAddress().add(parseAddress(xpp));
16933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
16934        res.setPartOf(parseReference(xpp));
16935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16936        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
16937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
16938        res.getEndpoint().add(parseReference(xpp));
16939      } else if (!parseDomainResourceContent(eventType, xpp, res))
16940        return false;
16941    return true;
16942  }
16943
16944  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
16945    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
16946    parseBackboneAttributes(xpp, res);
16947    next(xpp);
16948    int eventType = nextNoWhitespace(xpp);
16949    while (eventType != XmlPullParser.END_TAG) {
16950  if (!parseOrganizationOrganizationContactComponentContent(eventType, xpp, owner, res))
16951        unknownContent(xpp);
16952      eventType = nextNoWhitespace(xpp);
16953    }
16954    next(xpp);
16955    parseElementClose(res);
16956    return res;
16957  }
16958
16959  protected boolean parseOrganizationOrganizationContactComponentContent(int eventType, XmlPullParser xpp, Organization owner, Organization.OrganizationContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16960      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16961        res.setPurpose(parseCodeableConcept(xpp));
16962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16963        res.setName(parseHumanName(xpp));
16964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16965        res.getTelecom().add(parseContactPoint(xpp));
16966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16967        res.setAddress(parseAddress(xpp));
16968      } else if (!parseBackboneElementContent(eventType, xpp, res))
16969        return false;
16970    return true;
16971  }
16972
16973  protected OrganizationAffiliation parseOrganizationAffiliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16974    OrganizationAffiliation res = new OrganizationAffiliation();
16975    parseDomainResourceAttributes(xpp, res);
16976    next(xpp);
16977    int eventType = nextNoWhitespace(xpp);
16978    while (eventType != XmlPullParser.END_TAG) {
16979  if (!parseOrganizationAffiliationContent(eventType, xpp, res))
16980        unknownContent(xpp);
16981      eventType = nextNoWhitespace(xpp);
16982    }
16983    next(xpp);
16984    parseElementClose(res);
16985    return res;
16986  }
16987
16988  protected boolean parseOrganizationAffiliationContent(int eventType, XmlPullParser xpp, OrganizationAffiliation res) throws XmlPullParserException, IOException, FHIRFormatError {
16989      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16990        res.getIdentifier().add(parseIdentifier(xpp));
16991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
16992        res.setActiveElement(parseBoolean(xpp));
16993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16994        res.setPeriod(parsePeriod(xpp));
16995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
16996        res.setOrganization(parseReference(xpp));
16997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participatingOrganization")) {
16998        res.setParticipatingOrganization(parseReference(xpp));
16999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
17000        res.getNetwork().add(parseReference(xpp));
17001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17002        res.getCode().add(parseCodeableConcept(xpp));
17003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
17004        res.getSpecialty().add(parseCodeableConcept(xpp));
17005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17006        res.getLocation().add(parseReference(xpp));
17007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
17008        res.getHealthcareService().add(parseReference(xpp));
17009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17010        res.getTelecom().add(parseContactPoint(xpp));
17011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
17012        res.getEndpoint().add(parseReference(xpp));
17013      } else if (!parseDomainResourceContent(eventType, xpp, res))
17014        return false;
17015    return true;
17016  }
17017
17018  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17019    Patient res = new Patient();
17020    parseDomainResourceAttributes(xpp, res);
17021    next(xpp);
17022    int eventType = nextNoWhitespace(xpp);
17023    while (eventType != XmlPullParser.END_TAG) {
17024  if (!parsePatientContent(eventType, xpp, res))
17025        unknownContent(xpp);
17026      eventType = nextNoWhitespace(xpp);
17027    }
17028    next(xpp);
17029    parseElementClose(res);
17030    return res;
17031  }
17032
17033  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
17034      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17035        res.getIdentifier().add(parseIdentifier(xpp));
17036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17037        res.setActiveElement(parseBoolean(xpp));
17038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17039        res.getName().add(parseHumanName(xpp));
17040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17041        res.getTelecom().add(parseContactPoint(xpp));
17042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17043        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17045        res.setBirthDateElement(parseDate(xpp));
17046      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
17047        res.setDeceased(parseType("deceased", xpp));
17048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17049        res.getAddress().add(parseAddress(xpp));
17050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
17051        res.setMaritalStatus(parseCodeableConcept(xpp));
17052      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
17053        res.setMultipleBirth(parseType("multipleBirth", xpp));
17054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17055        res.getPhoto().add(parseAttachment(xpp));
17056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17057        res.getContact().add(parsePatientContactComponent(xpp, res));
17058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
17059        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
17060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
17061        res.getGeneralPractitioner().add(parseReference(xpp));
17062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
17063        res.setManagingOrganization(parseReference(xpp));
17064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
17065        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
17066      } else if (!parseDomainResourceContent(eventType, xpp, res))
17067        return false;
17068    return true;
17069  }
17070
17071  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
17072    Patient.ContactComponent res = new Patient.ContactComponent();
17073    parseBackboneAttributes(xpp, res);
17074    next(xpp);
17075    int eventType = nextNoWhitespace(xpp);
17076    while (eventType != XmlPullParser.END_TAG) {
17077  if (!parsePatientContactComponentContent(eventType, xpp, owner, res))
17078        unknownContent(xpp);
17079      eventType = nextNoWhitespace(xpp);
17080    }
17081    next(xpp);
17082    parseElementClose(res);
17083    return res;
17084  }
17085
17086  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17087      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
17088        res.getRelationship().add(parseCodeableConcept(xpp));
17089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17090        res.setName(parseHumanName(xpp));
17091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17092        res.getTelecom().add(parseContactPoint(xpp));
17093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17094        res.setAddress(parseAddress(xpp));
17095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17096        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17098        res.setOrganization(parseReference(xpp));
17099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17100        res.setPeriod(parsePeriod(xpp));
17101      } else if (!parseBackboneElementContent(eventType, xpp, res))
17102        return false;
17103    return true;
17104  }
17105
17106  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
17107    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
17108    parseBackboneAttributes(xpp, res);
17109    next(xpp);
17110    int eventType = nextNoWhitespace(xpp);
17111    while (eventType != XmlPullParser.END_TAG) {
17112  if (!parsePatientPatientCommunicationComponentContent(eventType, xpp, owner, res))
17113        unknownContent(xpp);
17114      eventType = nextNoWhitespace(xpp);
17115    }
17116    next(xpp);
17117    parseElementClose(res);
17118    return res;
17119  }
17120
17121  protected boolean parsePatientPatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17122      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
17123        res.setLanguage(parseCodeableConcept(xpp));
17124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
17125        res.setPreferredElement(parseBoolean(xpp));
17126      } else if (!parseBackboneElementContent(eventType, xpp, res))
17127        return false;
17128    return true;
17129  }
17130
17131  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
17132    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
17133    parseBackboneAttributes(xpp, res);
17134    next(xpp);
17135    int eventType = nextNoWhitespace(xpp);
17136    while (eventType != XmlPullParser.END_TAG) {
17137  if (!parsePatientPatientLinkComponentContent(eventType, xpp, owner, res))
17138        unknownContent(xpp);
17139      eventType = nextNoWhitespace(xpp);
17140    }
17141    next(xpp);
17142    parseElementClose(res);
17143    return res;
17144  }
17145
17146  protected boolean parsePatientPatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17147      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
17148        res.setOther(parseReference(xpp));
17149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17150        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
17151      } else if (!parseBackboneElementContent(eventType, xpp, res))
17152        return false;
17153    return true;
17154  }
17155
17156  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17157    PaymentNotice res = new PaymentNotice();
17158    parseDomainResourceAttributes(xpp, res);
17159    next(xpp);
17160    int eventType = nextNoWhitespace(xpp);
17161    while (eventType != XmlPullParser.END_TAG) {
17162  if (!parsePaymentNoticeContent(eventType, xpp, res))
17163        unknownContent(xpp);
17164      eventType = nextNoWhitespace(xpp);
17165    }
17166    next(xpp);
17167    parseElementClose(res);
17168    return res;
17169  }
17170
17171  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
17172      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17173        res.getIdentifier().add(parseIdentifier(xpp));
17174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17175        res.setStatusElement(parseEnumeration(xpp, PaymentNotice.PaymentNoticeStatus.NULL, new PaymentNotice.PaymentNoticeStatusEnumFactory()));
17176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17177        res.setRequest(parseReference(xpp));
17178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
17179        res.setResponse(parseReference(xpp));
17180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
17181        res.setCreatedElement(parseDateTime(xpp));
17182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
17183        res.setProvider(parseReference(xpp));
17184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
17185        res.setPayment(parseReference(xpp));
17186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
17187        res.setPaymentDateElement(parseDate(xpp));
17188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
17189        res.setPayee(parseReference(xpp));
17190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
17191        res.setRecipient(parseReference(xpp));
17192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17193        res.setAmount(parseMoney(xpp));
17194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
17195        res.setPaymentStatus(parseCodeableConcept(xpp));
17196      } else if (!parseDomainResourceContent(eventType, xpp, res))
17197        return false;
17198    return true;
17199  }
17200
17201  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17202    PaymentReconciliation res = new PaymentReconciliation();
17203    parseDomainResourceAttributes(xpp, res);
17204    next(xpp);
17205    int eventType = nextNoWhitespace(xpp);
17206    while (eventType != XmlPullParser.END_TAG) {
17207  if (!parsePaymentReconciliationContent(eventType, xpp, res))
17208        unknownContent(xpp);
17209      eventType = nextNoWhitespace(xpp);
17210    }
17211    next(xpp);
17212    parseElementClose(res);
17213    return res;
17214  }
17215
17216  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
17217      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17218        res.getIdentifier().add(parseIdentifier(xpp));
17219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17220        res.setStatusElement(parseEnumeration(xpp, PaymentReconciliation.PaymentReconciliationStatus.NULL, new PaymentReconciliation.PaymentReconciliationStatusEnumFactory()));
17221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17222        res.setPeriod(parsePeriod(xpp));
17223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
17224        res.setCreatedElement(parseDateTime(xpp));
17225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIssuer")) {
17226        res.setPaymentIssuer(parseReference(xpp));
17227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17228        res.setRequest(parseReference(xpp));
17229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
17230        res.setRequestor(parseReference(xpp));
17231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
17232        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
17233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
17234        res.setDispositionElement(parseString(xpp));
17235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
17236        res.setPaymentDateElement(parseDate(xpp));
17237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAmount")) {
17238        res.setPaymentAmount(parseMoney(xpp));
17239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIdentifier")) {
17240        res.setPaymentIdentifier(parseIdentifier(xpp));
17241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
17242        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
17243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
17244        res.setFormCode(parseCodeableConcept(xpp));
17245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
17246        res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
17247      } else if (!parseDomainResourceContent(eventType, xpp, res))
17248        return false;
17249    return true;
17250  }
17251
17252  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
17253    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
17254    parseBackboneAttributes(xpp, res);
17255    next(xpp);
17256    int eventType = nextNoWhitespace(xpp);
17257    while (eventType != XmlPullParser.END_TAG) {
17258  if (!parsePaymentReconciliationDetailsComponentContent(eventType, xpp, owner, res))
17259        unknownContent(xpp);
17260      eventType = nextNoWhitespace(xpp);
17261    }
17262    next(xpp);
17263    parseElementClose(res);
17264    return res;
17265  }
17266
17267  protected boolean parsePaymentReconciliationDetailsComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17268      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17269        res.setIdentifier(parseIdentifier(xpp));
17270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("predecessor")) {
17271        res.setPredecessor(parseIdentifier(xpp));
17272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17273        res.setType(parseCodeableConcept(xpp));
17274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17275        res.setRequest(parseReference(xpp));
17276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
17277        res.setSubmitter(parseReference(xpp));
17278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
17279        res.setResponse(parseReference(xpp));
17280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17281        res.setDateElement(parseDate(xpp));
17282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
17283        res.setResponsible(parseReference(xpp));
17284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
17285        res.setPayee(parseReference(xpp));
17286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17287        res.setAmount(parseMoney(xpp));
17288      } else if (!parseBackboneElementContent(eventType, xpp, res))
17289        return false;
17290    return true;
17291  }
17292
17293  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
17294    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
17295    parseBackboneAttributes(xpp, res);
17296    next(xpp);
17297    int eventType = nextNoWhitespace(xpp);
17298    while (eventType != XmlPullParser.END_TAG) {
17299  if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, owner, res))
17300        unknownContent(xpp);
17301      eventType = nextNoWhitespace(xpp);
17302    }
17303    next(xpp);
17304    parseElementClose(res);
17305    return res;
17306  }
17307
17308  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17309      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17310        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
17311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
17312        res.setTextElement(parseString(xpp));
17313      } else if (!parseBackboneElementContent(eventType, xpp, res))
17314        return false;
17315    return true;
17316  }
17317
17318  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17319    Person res = new Person();
17320    parseDomainResourceAttributes(xpp, res);
17321    next(xpp);
17322    int eventType = nextNoWhitespace(xpp);
17323    while (eventType != XmlPullParser.END_TAG) {
17324  if (!parsePersonContent(eventType, xpp, res))
17325        unknownContent(xpp);
17326      eventType = nextNoWhitespace(xpp);
17327    }
17328    next(xpp);
17329    parseElementClose(res);
17330    return res;
17331  }
17332
17333  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
17334      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17335        res.getIdentifier().add(parseIdentifier(xpp));
17336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17337        res.getName().add(parseHumanName(xpp));
17338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17339        res.getTelecom().add(parseContactPoint(xpp));
17340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17341        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17343        res.setBirthDateElement(parseDate(xpp));
17344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17345        res.getAddress().add(parseAddress(xpp));
17346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17347        res.setPhoto(parseAttachment(xpp));
17348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
17349        res.setManagingOrganization(parseReference(xpp));
17350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17351        res.setActiveElement(parseBoolean(xpp));
17352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
17353        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
17354      } else if (!parseDomainResourceContent(eventType, xpp, res))
17355        return false;
17356    return true;
17357  }
17358
17359  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
17360    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
17361    parseBackboneAttributes(xpp, res);
17362    next(xpp);
17363    int eventType = nextNoWhitespace(xpp);
17364    while (eventType != XmlPullParser.END_TAG) {
17365  if (!parsePersonPersonLinkComponentContent(eventType, xpp, owner, res))
17366        unknownContent(xpp);
17367      eventType = nextNoWhitespace(xpp);
17368    }
17369    next(xpp);
17370    parseElementClose(res);
17371    return res;
17372  }
17373
17374  protected boolean parsePersonPersonLinkComponentContent(int eventType, XmlPullParser xpp, Person owner, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17375      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
17376        res.setTarget(parseReference(xpp));
17377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
17378        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
17379      } else if (!parseBackboneElementContent(eventType, xpp, res))
17380        return false;
17381    return true;
17382  }
17383
17384  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17385    PlanDefinition res = new PlanDefinition();
17386    parseDomainResourceAttributes(xpp, res);
17387    next(xpp);
17388    int eventType = nextNoWhitespace(xpp);
17389    while (eventType != XmlPullParser.END_TAG) {
17390  if (!parsePlanDefinitionContent(eventType, xpp, res))
17391        unknownContent(xpp);
17392      eventType = nextNoWhitespace(xpp);
17393    }
17394    next(xpp);
17395    parseElementClose(res);
17396    return res;
17397  }
17398
17399  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
17400      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17401        res.setUrlElement(parseUri(xpp));
17402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17403        res.getIdentifier().add(parseIdentifier(xpp));
17404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17405        res.setVersionElement(parseString(xpp));
17406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17407        res.setNameElement(parseString(xpp));
17408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17409        res.setTitleElement(parseString(xpp));
17410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
17411        res.setSubtitleElement(parseString(xpp));
17412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17413        res.setType(parseCodeableConcept(xpp));
17414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17415        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17417        res.setExperimentalElement(parseBoolean(xpp));
17418      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
17419        res.setSubject(parseType("subject", xpp));
17420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17421        res.setDateElement(parseDateTime(xpp));
17422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17423        res.setPublisherElement(parseString(xpp));
17424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17425        res.getContact().add(parseContactDetail(xpp));
17426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17427        res.setDescriptionElement(parseMarkdown(xpp));
17428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17429        res.getUseContext().add(parseUsageContext(xpp));
17430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17431        res.getJurisdiction().add(parseCodeableConcept(xpp));
17432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17433        res.setPurposeElement(parseMarkdown(xpp));
17434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
17435        res.setUsageElement(parseString(xpp));
17436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
17437        res.setCopyrightElement(parseMarkdown(xpp));
17438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
17439        res.setApprovalDateElement(parseDate(xpp));
17440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
17441        res.setLastReviewDateElement(parseDate(xpp));
17442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
17443        res.setEffectivePeriod(parsePeriod(xpp));
17444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
17445        res.getTopic().add(parseCodeableConcept(xpp));
17446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
17447        res.getAuthor().add(parseContactDetail(xpp));
17448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
17449        res.getEditor().add(parseContactDetail(xpp));
17450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
17451        res.getReviewer().add(parseContactDetail(xpp));
17452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
17453        res.getEndorser().add(parseContactDetail(xpp));
17454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
17455        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
17456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
17457        res.getLibrary().add(parseCanonical(xpp));
17458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
17459        res.getGoal().add(parsePlanDefinitionPlanDefinitionGoalComponent(xpp, res));
17460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17461        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, res));
17462      } else if (!parseDomainResourceContent(eventType, xpp, res))
17463        return false;
17464    return true;
17465  }
17466
17467  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionPlanDefinitionGoalComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17468    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
17469    parseBackboneAttributes(xpp, res);
17470    next(xpp);
17471    int eventType = nextNoWhitespace(xpp);
17472    while (eventType != XmlPullParser.END_TAG) {
17473  if (!parsePlanDefinitionPlanDefinitionGoalComponentContent(eventType, xpp, owner, res))
17474        unknownContent(xpp);
17475      eventType = nextNoWhitespace(xpp);
17476    }
17477    next(xpp);
17478    parseElementClose(res);
17479    return res;
17480  }
17481
17482  protected boolean parsePlanDefinitionPlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17483      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17484        res.setCategory(parseCodeableConcept(xpp));
17485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17486        res.setDescription(parseCodeableConcept(xpp));
17487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
17488        res.setPriority(parseCodeableConcept(xpp));
17489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17490        res.setStart(parseCodeableConcept(xpp));
17491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
17492        res.getAddresses().add(parseCodeableConcept(xpp));
17493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
17494        res.getDocumentation().add(parseRelatedArtifact(xpp));
17495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
17496        res.getTarget().add(parsePlanDefinitionPlanDefinitionGoalTargetComponent(xpp, owner));
17497      } else if (!parseBackboneElementContent(eventType, xpp, res))
17498        return false;
17499    return true;
17500  }
17501
17502  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionPlanDefinitionGoalTargetComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17503    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
17504    parseBackboneAttributes(xpp, res);
17505    next(xpp);
17506    int eventType = nextNoWhitespace(xpp);
17507    while (eventType != XmlPullParser.END_TAG) {
17508  if (!parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(eventType, xpp, owner, res))
17509        unknownContent(xpp);
17510      eventType = nextNoWhitespace(xpp);
17511    }
17512    next(xpp);
17513    parseElementClose(res);
17514    return res;
17515  }
17516
17517  protected boolean parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17518      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
17519        res.setMeasure(parseCodeableConcept(xpp));
17520      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
17521        res.setDetail(parseType("detail", xpp));
17522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
17523        res.setDue(parseDuration(xpp));
17524      } else if (!parseBackboneElementContent(eventType, xpp, res))
17525        return false;
17526    return true;
17527  }
17528
17529  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionPlanDefinitionActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17530    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
17531    parseBackboneAttributes(xpp, res);
17532    next(xpp);
17533    int eventType = nextNoWhitespace(xpp);
17534    while (eventType != XmlPullParser.END_TAG) {
17535  if (!parsePlanDefinitionPlanDefinitionActionComponentContent(eventType, xpp, owner, res))
17536        unknownContent(xpp);
17537      eventType = nextNoWhitespace(xpp);
17538    }
17539    next(xpp);
17540    parseElementClose(res);
17541    return res;
17542  }
17543
17544  protected boolean parsePlanDefinitionPlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17545      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
17546        res.setPrefixElement(parseString(xpp));
17547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17548        res.setTitleElement(parseString(xpp));
17549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17550        res.setDescriptionElement(parseString(xpp));
17551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
17552        res.setTextEquivalentElement(parseString(xpp));
17553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
17554        res.setPriorityElement(parseEnumeration(xpp, PlanDefinition.RequestPriority.NULL, new PlanDefinition.RequestPriorityEnumFactory()));
17555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17556        res.getCode().add(parseCodeableConcept(xpp));
17557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
17558        res.getReason().add(parseCodeableConcept(xpp));
17559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
17560        res.getDocumentation().add(parseRelatedArtifact(xpp));
17561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
17562        res.getGoalId().add(parseId(xpp));
17563      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
17564        res.setSubject(parseType("subject", xpp));
17565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
17566        res.getTrigger().add(parseTriggerDefinition(xpp));
17567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
17568        res.getCondition().add(parsePlanDefinitionPlanDefinitionActionConditionComponent(xpp, owner));
17569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
17570        res.getInput().add(parseDataRequirement(xpp));
17571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
17572        res.getOutput().add(parseDataRequirement(xpp));
17573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
17574        res.getRelatedAction().add(parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(xpp, owner));
17575      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
17576        res.setTiming(parseType("timing", xpp));
17577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
17578        res.getParticipant().add(parsePlanDefinitionPlanDefinitionActionParticipantComponent(xpp, owner));
17579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17580        res.setType(parseCodeableConcept(xpp));
17581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
17582        res.setGroupingBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionGroupingBehavior.NULL, new PlanDefinition.ActionGroupingBehaviorEnumFactory()));
17583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
17584        res.setSelectionBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionSelectionBehavior.NULL, new PlanDefinition.ActionSelectionBehaviorEnumFactory()));
17585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
17586        res.setRequiredBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionRequiredBehavior.NULL, new PlanDefinition.ActionRequiredBehaviorEnumFactory()));
17587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
17588        res.setPrecheckBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionPrecheckBehavior.NULL, new PlanDefinition.ActionPrecheckBehaviorEnumFactory()));
17589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
17590        res.setCardinalityBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionCardinalityBehavior.NULL, new PlanDefinition.ActionCardinalityBehaviorEnumFactory()));
17591      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
17592        res.setDefinition(parseType("definition", xpp));
17593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
17594        res.setTransformElement(parseCanonical(xpp));
17595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
17596        res.getDynamicValue().add(parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(xpp, owner));
17597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17598        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, owner));
17599      } else if (!parseBackboneElementContent(eventType, xpp, res))
17600        return false;
17601    return true;
17602  }
17603
17604  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionPlanDefinitionActionConditionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17605    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
17606    parseBackboneAttributes(xpp, res);
17607    next(xpp);
17608    int eventType = nextNoWhitespace(xpp);
17609    while (eventType != XmlPullParser.END_TAG) {
17610  if (!parsePlanDefinitionPlanDefinitionActionConditionComponentContent(eventType, xpp, owner, res))
17611        unknownContent(xpp);
17612      eventType = nextNoWhitespace(xpp);
17613    }
17614    next(xpp);
17615    parseElementClose(res);
17616    return res;
17617  }
17618
17619  protected boolean parsePlanDefinitionPlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17620      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
17621        res.setKindElement(parseEnumeration(xpp, PlanDefinition.ActionConditionKind.NULL, new PlanDefinition.ActionConditionKindEnumFactory()));
17622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17623        res.setExpression(parseExpression(xpp));
17624      } else if (!parseBackboneElementContent(eventType, xpp, res))
17625        return false;
17626    return true;
17627  }
17628
17629  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17630    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
17631    parseBackboneAttributes(xpp, res);
17632    next(xpp);
17633    int eventType = nextNoWhitespace(xpp);
17634    while (eventType != XmlPullParser.END_TAG) {
17635  if (!parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(eventType, xpp, owner, res))
17636        unknownContent(xpp);
17637      eventType = nextNoWhitespace(xpp);
17638    }
17639    next(xpp);
17640    parseElementClose(res);
17641    return res;
17642  }
17643
17644  protected boolean parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17645      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
17646        res.setActionIdElement(parseId(xpp));
17647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
17648        res.setRelationshipElement(parseEnumeration(xpp, PlanDefinition.ActionRelationshipType.NULL, new PlanDefinition.ActionRelationshipTypeEnumFactory()));
17649      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
17650        res.setOffset(parseType("offset", xpp));
17651      } else if (!parseBackboneElementContent(eventType, xpp, res))
17652        return false;
17653    return true;
17654  }
17655
17656  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionPlanDefinitionActionParticipantComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17657    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
17658    parseBackboneAttributes(xpp, res);
17659    next(xpp);
17660    int eventType = nextNoWhitespace(xpp);
17661    while (eventType != XmlPullParser.END_TAG) {
17662  if (!parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(eventType, xpp, owner, res))
17663        unknownContent(xpp);
17664      eventType = nextNoWhitespace(xpp);
17665    }
17666    next(xpp);
17667    parseElementClose(res);
17668    return res;
17669  }
17670
17671  protected boolean parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17672      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17673        res.setTypeElement(parseEnumeration(xpp, PlanDefinition.ActionParticipantType.NULL, new PlanDefinition.ActionParticipantTypeEnumFactory()));
17674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
17675        res.setRole(parseCodeableConcept(xpp));
17676      } else if (!parseBackboneElementContent(eventType, xpp, res))
17677        return false;
17678    return true;
17679  }
17680
17681  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17682    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
17683    parseBackboneAttributes(xpp, res);
17684    next(xpp);
17685    int eventType = nextNoWhitespace(xpp);
17686    while (eventType != XmlPullParser.END_TAG) {
17687  if (!parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(eventType, xpp, owner, res))
17688        unknownContent(xpp);
17689      eventType = nextNoWhitespace(xpp);
17690    }
17691    next(xpp);
17692    parseElementClose(res);
17693    return res;
17694  }
17695
17696  protected boolean parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17697      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
17698        res.setPathElement(parseString(xpp));
17699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17700        res.setExpression(parseExpression(xpp));
17701      } else if (!parseBackboneElementContent(eventType, xpp, res))
17702        return false;
17703    return true;
17704  }
17705
17706  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17707    Practitioner res = new Practitioner();
17708    parseDomainResourceAttributes(xpp, res);
17709    next(xpp);
17710    int eventType = nextNoWhitespace(xpp);
17711    while (eventType != XmlPullParser.END_TAG) {
17712  if (!parsePractitionerContent(eventType, xpp, res))
17713        unknownContent(xpp);
17714      eventType = nextNoWhitespace(xpp);
17715    }
17716    next(xpp);
17717    parseElementClose(res);
17718    return res;
17719  }
17720
17721  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
17722      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17723        res.getIdentifier().add(parseIdentifier(xpp));
17724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17725        res.setActiveElement(parseBoolean(xpp));
17726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17727        res.getName().add(parseHumanName(xpp));
17728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17729        res.getTelecom().add(parseContactPoint(xpp));
17730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17731        res.getAddress().add(parseAddress(xpp));
17732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17733        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17735        res.setBirthDateElement(parseDate(xpp));
17736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17737        res.getPhoto().add(parseAttachment(xpp));
17738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
17739        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
17740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
17741        res.getCommunication().add(parseCodeableConcept(xpp));
17742      } else if (!parseDomainResourceContent(eventType, xpp, res))
17743        return false;
17744    return true;
17745  }
17746
17747  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
17748    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
17749    parseBackboneAttributes(xpp, res);
17750    next(xpp);
17751    int eventType = nextNoWhitespace(xpp);
17752    while (eventType != XmlPullParser.END_TAG) {
17753  if (!parsePractitionerPractitionerQualificationComponentContent(eventType, xpp, owner, res))
17754        unknownContent(xpp);
17755      eventType = nextNoWhitespace(xpp);
17756    }
17757    next(xpp);
17758    parseElementClose(res);
17759    return res;
17760  }
17761
17762  protected boolean parsePractitionerPractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner owner, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17763      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17764        res.getIdentifier().add(parseIdentifier(xpp));
17765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17766        res.setCode(parseCodeableConcept(xpp));
17767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17768        res.setPeriod(parsePeriod(xpp));
17769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
17770        res.setIssuer(parseReference(xpp));
17771      } else if (!parseBackboneElementContent(eventType, xpp, res))
17772        return false;
17773    return true;
17774  }
17775
17776  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17777    PractitionerRole res = new PractitionerRole();
17778    parseDomainResourceAttributes(xpp, res);
17779    next(xpp);
17780    int eventType = nextNoWhitespace(xpp);
17781    while (eventType != XmlPullParser.END_TAG) {
17782  if (!parsePractitionerRoleContent(eventType, xpp, res))
17783        unknownContent(xpp);
17784      eventType = nextNoWhitespace(xpp);
17785    }
17786    next(xpp);
17787    parseElementClose(res);
17788    return res;
17789  }
17790
17791  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
17792      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17793        res.getIdentifier().add(parseIdentifier(xpp));
17794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17795        res.setActiveElement(parseBoolean(xpp));
17796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17797        res.setPeriod(parsePeriod(xpp));
17798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
17799        res.setPractitioner(parseReference(xpp));
17800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17801        res.setOrganization(parseReference(xpp));
17802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17803        res.getCode().add(parseCodeableConcept(xpp));
17804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
17805        res.getSpecialty().add(parseCodeableConcept(xpp));
17806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17807        res.getLocation().add(parseReference(xpp));
17808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
17809        res.getHealthcareService().add(parseReference(xpp));
17810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17811        res.getTelecom().add(parseContactPoint(xpp));
17812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
17813        res.getAvailableTime().add(parsePractitionerRolePractitionerRoleAvailableTimeComponent(xpp, res));
17814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
17815        res.getNotAvailable().add(parsePractitionerRolePractitionerRoleNotAvailableComponent(xpp, res));
17816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
17817        res.setAvailabilityExceptionsElement(parseString(xpp));
17818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
17819        res.getEndpoint().add(parseReference(xpp));
17820      } else if (!parseDomainResourceContent(eventType, xpp, res))
17821        return false;
17822    return true;
17823  }
17824
17825  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRolePractitionerRoleAvailableTimeComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
17826    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
17827    parseBackboneAttributes(xpp, res);
17828    next(xpp);
17829    int eventType = nextNoWhitespace(xpp);
17830    while (eventType != XmlPullParser.END_TAG) {
17831  if (!parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(eventType, xpp, owner, res))
17832        unknownContent(xpp);
17833      eventType = nextNoWhitespace(xpp);
17834    }
17835    next(xpp);
17836    parseElementClose(res);
17837    return res;
17838  }
17839
17840  protected boolean parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17841      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
17842        res.getDaysOfWeek().add(parseEnumeration(xpp, PractitionerRole.DaysOfWeek.NULL, new PractitionerRole.DaysOfWeekEnumFactory()));
17843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
17844        res.setAllDayElement(parseBoolean(xpp));
17845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
17846        res.setAvailableStartTimeElement(parseTime(xpp));
17847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
17848        res.setAvailableEndTimeElement(parseTime(xpp));
17849      } else if (!parseBackboneElementContent(eventType, xpp, res))
17850        return false;
17851    return true;
17852  }
17853
17854  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRolePractitionerRoleNotAvailableComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
17855    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
17856    parseBackboneAttributes(xpp, res);
17857    next(xpp);
17858    int eventType = nextNoWhitespace(xpp);
17859    while (eventType != XmlPullParser.END_TAG) {
17860  if (!parsePractitionerRolePractitionerRoleNotAvailableComponentContent(eventType, xpp, owner, res))
17861        unknownContent(xpp);
17862      eventType = nextNoWhitespace(xpp);
17863    }
17864    next(xpp);
17865    parseElementClose(res);
17866    return res;
17867  }
17868
17869  protected boolean parsePractitionerRolePractitionerRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17870      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17871        res.setDescriptionElement(parseString(xpp));
17872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
17873        res.setDuring(parsePeriod(xpp));
17874      } else if (!parseBackboneElementContent(eventType, xpp, res))
17875        return false;
17876    return true;
17877  }
17878
17879  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17880    Procedure res = new Procedure();
17881    parseDomainResourceAttributes(xpp, res);
17882    next(xpp);
17883    int eventType = nextNoWhitespace(xpp);
17884    while (eventType != XmlPullParser.END_TAG) {
17885  if (!parseProcedureContent(eventType, xpp, res))
17886        unknownContent(xpp);
17887      eventType = nextNoWhitespace(xpp);
17888    }
17889    next(xpp);
17890    parseElementClose(res);
17891    return res;
17892  }
17893
17894  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
17895      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17896        res.getIdentifier().add(parseIdentifier(xpp));
17897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
17898        res.getInstantiatesCanonical().add(parseCanonical(xpp));
17899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
17900        res.getInstantiatesUri().add(parseUri(xpp));
17901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
17902        res.getBasedOn().add(parseReference(xpp));
17903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
17904        res.getPartOf().add(parseReference(xpp));
17905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17906        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
17907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
17908        res.setStatusReason(parseCodeableConcept(xpp));
17909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17910        res.setCategory(parseCodeableConcept(xpp));
17911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17912        res.setCode(parseCodeableConcept(xpp));
17913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17914        res.setSubject(parseReference(xpp));
17915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
17916        res.setEncounter(parseReference(xpp));
17917      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
17918        res.setPerformed(parseType("performed", xpp));
17919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
17920        res.setRecorder(parseReference(xpp));
17921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
17922        res.setAsserter(parseReference(xpp));
17923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
17924        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
17925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17926        res.setLocation(parseReference(xpp));
17927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
17928        res.getReasonCode().add(parseCodeableConcept(xpp));
17929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
17930        res.getReasonReference().add(parseReference(xpp));
17931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
17932        res.getBodySite().add(parseCodeableConcept(xpp));
17933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
17934        res.setOutcome(parseCodeableConcept(xpp));
17935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
17936        res.getReport().add(parseReference(xpp));
17937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
17938        res.getComplication().add(parseCodeableConcept(xpp));
17939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complicationDetail")) {
17940        res.getComplicationDetail().add(parseReference(xpp));
17941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
17942        res.getFollowUp().add(parseCodeableConcept(xpp));
17943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17944        res.getNote().add(parseAnnotation(xpp));
17945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
17946        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
17947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedReference")) {
17948        res.getUsedReference().add(parseReference(xpp));
17949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedCode")) {
17950        res.getUsedCode().add(parseCodeableConcept(xpp));
17951      } else if (!parseDomainResourceContent(eventType, xpp, res))
17952        return false;
17953    return true;
17954  }
17955
17956  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
17957    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
17958    parseBackboneAttributes(xpp, res);
17959    next(xpp);
17960    int eventType = nextNoWhitespace(xpp);
17961    while (eventType != XmlPullParser.END_TAG) {
17962  if (!parseProcedureProcedurePerformerComponentContent(eventType, xpp, owner, res))
17963        unknownContent(xpp);
17964      eventType = nextNoWhitespace(xpp);
17965    }
17966    next(xpp);
17967    parseElementClose(res);
17968    return res;
17969  }
17970
17971  protected boolean parseProcedureProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17972      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
17973        res.setFunction(parseCodeableConcept(xpp));
17974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
17975        res.setActor(parseReference(xpp));
17976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
17977        res.setOnBehalfOf(parseReference(xpp));
17978      } else if (!parseBackboneElementContent(eventType, xpp, res))
17979        return false;
17980    return true;
17981  }
17982
17983  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
17984    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
17985    parseBackboneAttributes(xpp, res);
17986    next(xpp);
17987    int eventType = nextNoWhitespace(xpp);
17988    while (eventType != XmlPullParser.END_TAG) {
17989  if (!parseProcedureProcedureFocalDeviceComponentContent(eventType, xpp, owner, res))
17990        unknownContent(xpp);
17991      eventType = nextNoWhitespace(xpp);
17992    }
17993    next(xpp);
17994    parseElementClose(res);
17995    return res;
17996  }
17997
17998  protected boolean parseProcedureProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17999      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18000        res.setAction(parseCodeableConcept(xpp));
18001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
18002        res.setManipulated(parseReference(xpp));
18003      } else if (!parseBackboneElementContent(eventType, xpp, res))
18004        return false;
18005    return true;
18006  }
18007
18008  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18009    Provenance res = new Provenance();
18010    parseDomainResourceAttributes(xpp, res);
18011    next(xpp);
18012    int eventType = nextNoWhitespace(xpp);
18013    while (eventType != XmlPullParser.END_TAG) {
18014  if (!parseProvenanceContent(eventType, xpp, res))
18015        unknownContent(xpp);
18016      eventType = nextNoWhitespace(xpp);
18017    }
18018    next(xpp);
18019    parseElementClose(res);
18020    return res;
18021  }
18022
18023  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
18024      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
18025        res.getTarget().add(parseReference(xpp));
18026      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurred")) {
18027        res.setOccurred(parseType("occurred", xpp));
18028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
18029        res.setRecordedElement(parseInstant(xpp));
18030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
18031        res.getPolicy().add(parseUri(xpp));
18032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18033        res.setLocation(parseReference(xpp));
18034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
18035        res.getReason().add(parseCodeableConcept(xpp));
18036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
18037        res.setActivity(parseCodeableConcept(xpp));
18038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
18039        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
18040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
18041        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
18042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
18043        res.getSignature().add(parseSignature(xpp));
18044      } else if (!parseDomainResourceContent(eventType, xpp, res))
18045        return false;
18046    return true;
18047  }
18048
18049  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
18050    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
18051    parseBackboneAttributes(xpp, res);
18052    next(xpp);
18053    int eventType = nextNoWhitespace(xpp);
18054    while (eventType != XmlPullParser.END_TAG) {
18055  if (!parseProvenanceProvenanceAgentComponentContent(eventType, xpp, owner, res))
18056        unknownContent(xpp);
18057      eventType = nextNoWhitespace(xpp);
18058    }
18059    next(xpp);
18060    parseElementClose(res);
18061    return res;
18062  }
18063
18064  protected boolean parseProvenanceProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18065      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18066        res.setType(parseCodeableConcept(xpp));
18067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
18068        res.getRole().add(parseCodeableConcept(xpp));
18069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
18070        res.setWho(parseReference(xpp));
18071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
18072        res.setOnBehalfOf(parseReference(xpp));
18073      } else if (!parseBackboneElementContent(eventType, xpp, res))
18074        return false;
18075    return true;
18076  }
18077
18078  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
18079    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
18080    parseBackboneAttributes(xpp, res);
18081    next(xpp);
18082    int eventType = nextNoWhitespace(xpp);
18083    while (eventType != XmlPullParser.END_TAG) {
18084  if (!parseProvenanceProvenanceEntityComponentContent(eventType, xpp, owner, res))
18085        unknownContent(xpp);
18086      eventType = nextNoWhitespace(xpp);
18087    }
18088    next(xpp);
18089    parseElementClose(res);
18090    return res;
18091  }
18092
18093  protected boolean parseProvenanceProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18094      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
18095        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
18096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
18097        res.setWhat(parseReference(xpp));
18098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
18099        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, owner));
18100      } else if (!parseBackboneElementContent(eventType, xpp, res))
18101        return false;
18102    return true;
18103  }
18104
18105  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18106    Questionnaire res = new Questionnaire();
18107    parseDomainResourceAttributes(xpp, res);
18108    next(xpp);
18109    int eventType = nextNoWhitespace(xpp);
18110    while (eventType != XmlPullParser.END_TAG) {
18111  if (!parseQuestionnaireContent(eventType, xpp, res))
18112        unknownContent(xpp);
18113      eventType = nextNoWhitespace(xpp);
18114    }
18115    next(xpp);
18116    parseElementClose(res);
18117    return res;
18118  }
18119
18120  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
18121      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18122        res.setUrlElement(parseUri(xpp));
18123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18124        res.getIdentifier().add(parseIdentifier(xpp));
18125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18126        res.setVersionElement(parseString(xpp));
18127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18128        res.setNameElement(parseString(xpp));
18129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18130        res.setTitleElement(parseString(xpp));
18131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
18132        res.getDerivedFrom().add(parseCanonical(xpp));
18133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18134        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18136        res.setExperimentalElement(parseBoolean(xpp));
18137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
18138        res.getSubjectType().add(parseCode(xpp));
18139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18140        res.setDateElement(parseDateTime(xpp));
18141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18142        res.setPublisherElement(parseString(xpp));
18143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18144        res.getContact().add(parseContactDetail(xpp));
18145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18146        res.setDescriptionElement(parseMarkdown(xpp));
18147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18148        res.getUseContext().add(parseUsageContext(xpp));
18149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18150        res.getJurisdiction().add(parseCodeableConcept(xpp));
18151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18152        res.setPurposeElement(parseMarkdown(xpp));
18153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18154        res.setCopyrightElement(parseMarkdown(xpp));
18155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
18156        res.setApprovalDateElement(parseDate(xpp));
18157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
18158        res.setLastReviewDateElement(parseDate(xpp));
18159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
18160        res.setEffectivePeriod(parsePeriod(xpp));
18161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18162        res.getCode().add(parseCoding(xpp));
18163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18164        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, res));
18165      } else if (!parseDomainResourceContent(eventType, xpp, res))
18166        return false;
18167    return true;
18168  }
18169
18170  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireQuestionnaireItemComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18171    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
18172    parseBackboneAttributes(xpp, res);
18173    next(xpp);
18174    int eventType = nextNoWhitespace(xpp);
18175    while (eventType != XmlPullParser.END_TAG) {
18176  if (!parseQuestionnaireQuestionnaireItemComponentContent(eventType, xpp, owner, res))
18177        unknownContent(xpp);
18178      eventType = nextNoWhitespace(xpp);
18179    }
18180    next(xpp);
18181    parseElementClose(res);
18182    return res;
18183  }
18184
18185  protected boolean parseQuestionnaireQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18186      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18187        res.setLinkIdElement(parseString(xpp));
18188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
18189        res.setDefinitionElement(parseUri(xpp));
18190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18191        res.getCode().add(parseCoding(xpp));
18192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
18193        res.setPrefixElement(parseString(xpp));
18194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
18195        res.setTextElement(parseString(xpp));
18196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18197        res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
18198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
18199        res.getEnableWhen().add(parseQuestionnaireQuestionnaireItemEnableWhenComponent(xpp, owner));
18200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableBehavior")) {
18201        res.setEnableBehaviorElement(parseEnumeration(xpp, Questionnaire.EnableWhenBehavior.NULL, new Questionnaire.EnableWhenBehaviorEnumFactory()));
18202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
18203        res.setRequiredElement(parseBoolean(xpp));
18204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
18205        res.setRepeatsElement(parseBoolean(xpp));
18206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
18207        res.setReadOnlyElement(parseBoolean(xpp));
18208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
18209        res.setMaxLengthElement(parseInteger(xpp));
18210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerValueSet")) {
18211        res.setAnswerValueSetElement(parseCanonical(xpp));
18212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerOption")) {
18213        res.getAnswerOption().add(parseQuestionnaireQuestionnaireItemAnswerOptionComponent(xpp, owner));
18214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
18215        res.getInitial().add(parseQuestionnaireQuestionnaireItemInitialComponent(xpp, owner));
18216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18217        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, owner));
18218      } else if (!parseBackboneElementContent(eventType, xpp, res))
18219        return false;
18220    return true;
18221  }
18222
18223  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireQuestionnaireItemEnableWhenComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18224    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
18225    parseBackboneAttributes(xpp, res);
18226    next(xpp);
18227    int eventType = nextNoWhitespace(xpp);
18228    while (eventType != XmlPullParser.END_TAG) {
18229  if (!parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(eventType, xpp, owner, res))
18230        unknownContent(xpp);
18231      eventType = nextNoWhitespace(xpp);
18232    }
18233    next(xpp);
18234    parseElementClose(res);
18235    return res;
18236  }
18237
18238  protected boolean parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18239      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
18240        res.setQuestionElement(parseString(xpp));
18241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
18242        res.setOperatorElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemOperator.NULL, new Questionnaire.QuestionnaireItemOperatorEnumFactory()));
18243      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
18244        res.setAnswer(parseType("answer", xpp));
18245      } else if (!parseBackboneElementContent(eventType, xpp, res))
18246        return false;
18247    return true;
18248  }
18249
18250  protected Questionnaire.QuestionnaireItemAnswerOptionComponent parseQuestionnaireQuestionnaireItemAnswerOptionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18251    Questionnaire.QuestionnaireItemAnswerOptionComponent res = new Questionnaire.QuestionnaireItemAnswerOptionComponent();
18252    parseBackboneAttributes(xpp, res);
18253    next(xpp);
18254    int eventType = nextNoWhitespace(xpp);
18255    while (eventType != XmlPullParser.END_TAG) {
18256  if (!parseQuestionnaireQuestionnaireItemAnswerOptionComponentContent(eventType, xpp, owner, res))
18257        unknownContent(xpp);
18258      eventType = nextNoWhitespace(xpp);
18259    }
18260    next(xpp);
18261    parseElementClose(res);
18262    return res;
18263  }
18264
18265  protected boolean parseQuestionnaireQuestionnaireItemAnswerOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemAnswerOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18266      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18267        res.setValue(parseType("value", xpp));
18268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialSelected")) {
18269        res.setInitialSelectedElement(parseBoolean(xpp));
18270      } else if (!parseBackboneElementContent(eventType, xpp, res))
18271        return false;
18272    return true;
18273  }
18274
18275  protected Questionnaire.QuestionnaireItemInitialComponent parseQuestionnaireQuestionnaireItemInitialComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18276    Questionnaire.QuestionnaireItemInitialComponent res = new Questionnaire.QuestionnaireItemInitialComponent();
18277    parseBackboneAttributes(xpp, res);
18278    next(xpp);
18279    int eventType = nextNoWhitespace(xpp);
18280    while (eventType != XmlPullParser.END_TAG) {
18281  if (!parseQuestionnaireQuestionnaireItemInitialComponentContent(eventType, xpp, owner, res))
18282        unknownContent(xpp);
18283      eventType = nextNoWhitespace(xpp);
18284    }
18285    next(xpp);
18286    parseElementClose(res);
18287    return res;
18288  }
18289
18290  protected boolean parseQuestionnaireQuestionnaireItemInitialComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemInitialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18291      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18292        res.setValue(parseType("value", xpp));
18293      } else if (!parseBackboneElementContent(eventType, xpp, res))
18294        return false;
18295    return true;
18296  }
18297
18298  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18299    QuestionnaireResponse res = new QuestionnaireResponse();
18300    parseDomainResourceAttributes(xpp, res);
18301    next(xpp);
18302    int eventType = nextNoWhitespace(xpp);
18303    while (eventType != XmlPullParser.END_TAG) {
18304  if (!parseQuestionnaireResponseContent(eventType, xpp, res))
18305        unknownContent(xpp);
18306      eventType = nextNoWhitespace(xpp);
18307    }
18308    next(xpp);
18309    parseElementClose(res);
18310    return res;
18311  }
18312
18313  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
18314      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18315        res.setIdentifier(parseIdentifier(xpp));
18316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18317        res.getBasedOn().add(parseReference(xpp));
18318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18319        res.getPartOf().add(parseReference(xpp));
18320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
18321        res.setQuestionnaireElement(parseCanonical(xpp));
18322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18323        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
18324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18325        res.setSubject(parseReference(xpp));
18326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
18327        res.setEncounter(parseReference(xpp));
18328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
18329        res.setAuthoredElement(parseDateTime(xpp));
18330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18331        res.setAuthor(parseReference(xpp));
18332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
18333        res.setSource(parseReference(xpp));
18334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18335        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, res));
18336      } else if (!parseDomainResourceContent(eventType, xpp, res))
18337        return false;
18338    return true;
18339  }
18340
18341  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseQuestionnaireResponseItemComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
18342    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
18343    parseBackboneAttributes(xpp, res);
18344    next(xpp);
18345    int eventType = nextNoWhitespace(xpp);
18346    while (eventType != XmlPullParser.END_TAG) {
18347  if (!parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(eventType, xpp, owner, res))
18348        unknownContent(xpp);
18349      eventType = nextNoWhitespace(xpp);
18350    }
18351    next(xpp);
18352    parseElementClose(res);
18353    return res;
18354  }
18355
18356  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18357      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18358        res.setLinkIdElement(parseString(xpp));
18359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
18360        res.setDefinitionElement(parseUri(xpp));
18361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
18362        res.setTextElement(parseString(xpp));
18363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
18364        res.getAnswer().add(parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(xpp, owner));
18365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18366        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
18367      } else if (!parseBackboneElementContent(eventType, xpp, res))
18368        return false;
18369    return true;
18370  }
18371
18372  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
18373    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
18374    parseBackboneAttributes(xpp, res);
18375    next(xpp);
18376    int eventType = nextNoWhitespace(xpp);
18377    while (eventType != XmlPullParser.END_TAG) {
18378  if (!parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, owner, res))
18379        unknownContent(xpp);
18380      eventType = nextNoWhitespace(xpp);
18381    }
18382    next(xpp);
18383    parseElementClose(res);
18384    return res;
18385  }
18386
18387  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18388      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18389        res.setValue(parseType("value", xpp));
18390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18391        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
18392      } else if (!parseBackboneElementContent(eventType, xpp, res))
18393        return false;
18394    return true;
18395  }
18396
18397  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18398    RelatedPerson res = new RelatedPerson();
18399    parseDomainResourceAttributes(xpp, res);
18400    next(xpp);
18401    int eventType = nextNoWhitespace(xpp);
18402    while (eventType != XmlPullParser.END_TAG) {
18403  if (!parseRelatedPersonContent(eventType, xpp, res))
18404        unknownContent(xpp);
18405      eventType = nextNoWhitespace(xpp);
18406    }
18407    next(xpp);
18408    parseElementClose(res);
18409    return res;
18410  }
18411
18412  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
18413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18414        res.getIdentifier().add(parseIdentifier(xpp));
18415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
18416        res.setActiveElement(parseBoolean(xpp));
18417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
18418        res.setPatient(parseReference(xpp));
18419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
18420        res.getRelationship().add(parseCodeableConcept(xpp));
18421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18422        res.getName().add(parseHumanName(xpp));
18423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18424        res.getTelecom().add(parseContactPoint(xpp));
18425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
18426        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
18427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
18428        res.setBirthDateElement(parseDate(xpp));
18429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
18430        res.getAddress().add(parseAddress(xpp));
18431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
18432        res.getPhoto().add(parseAttachment(xpp));
18433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18434        res.setPeriod(parsePeriod(xpp));
18435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
18436        res.getCommunication().add(parseRelatedPersonRelatedPersonCommunicationComponent(xpp, res));
18437      } else if (!parseDomainResourceContent(eventType, xpp, res))
18438        return false;
18439    return true;
18440  }
18441
18442  protected RelatedPerson.RelatedPersonCommunicationComponent parseRelatedPersonRelatedPersonCommunicationComponent(XmlPullParser xpp, RelatedPerson owner) throws XmlPullParserException, IOException, FHIRFormatError {
18443    RelatedPerson.RelatedPersonCommunicationComponent res = new RelatedPerson.RelatedPersonCommunicationComponent();
18444    parseBackboneAttributes(xpp, res);
18445    next(xpp);
18446    int eventType = nextNoWhitespace(xpp);
18447    while (eventType != XmlPullParser.END_TAG) {
18448  if (!parseRelatedPersonRelatedPersonCommunicationComponentContent(eventType, xpp, owner, res))
18449        unknownContent(xpp);
18450      eventType = nextNoWhitespace(xpp);
18451    }
18452    next(xpp);
18453    parseElementClose(res);
18454    return res;
18455  }
18456
18457  protected boolean parseRelatedPersonRelatedPersonCommunicationComponentContent(int eventType, XmlPullParser xpp, RelatedPerson owner, RelatedPerson.RelatedPersonCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18458      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
18459        res.setLanguage(parseCodeableConcept(xpp));
18460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
18461        res.setPreferredElement(parseBoolean(xpp));
18462      } else if (!parseBackboneElementContent(eventType, xpp, res))
18463        return false;
18464    return true;
18465  }
18466
18467  protected RequestGroup parseRequestGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18468    RequestGroup res = new RequestGroup();
18469    parseDomainResourceAttributes(xpp, res);
18470    next(xpp);
18471    int eventType = nextNoWhitespace(xpp);
18472    while (eventType != XmlPullParser.END_TAG) {
18473  if (!parseRequestGroupContent(eventType, xpp, res))
18474        unknownContent(xpp);
18475      eventType = nextNoWhitespace(xpp);
18476    }
18477    next(xpp);
18478    parseElementClose(res);
18479    return res;
18480  }
18481
18482  protected boolean parseRequestGroupContent(int eventType, XmlPullParser xpp, RequestGroup res) throws XmlPullParserException, IOException, FHIRFormatError {
18483      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18484        res.getIdentifier().add(parseIdentifier(xpp));
18485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
18486        res.getInstantiatesCanonical().add(parseCanonical(xpp));
18487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
18488        res.getInstantiatesUri().add(parseUri(xpp));
18489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18490        res.getBasedOn().add(parseReference(xpp));
18491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
18492        res.getReplaces().add(parseReference(xpp));
18493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
18494        res.setGroupIdentifier(parseIdentifier(xpp));
18495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18496        res.setStatusElement(parseEnumeration(xpp, RequestGroup.RequestStatus.NULL, new RequestGroup.RequestStatusEnumFactory()));
18497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
18498        res.setIntentElement(parseEnumeration(xpp, RequestGroup.RequestIntent.NULL, new RequestGroup.RequestIntentEnumFactory()));
18499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
18500        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
18501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18502        res.setCode(parseCodeableConcept(xpp));
18503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18504        res.setSubject(parseReference(xpp));
18505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
18506        res.setEncounter(parseReference(xpp));
18507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
18508        res.setAuthoredOnElement(parseDateTime(xpp));
18509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18510        res.setAuthor(parseReference(xpp));
18511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
18512        res.getReasonCode().add(parseCodeableConcept(xpp));
18513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
18514        res.getReasonReference().add(parseReference(xpp));
18515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18516        res.getNote().add(parseAnnotation(xpp));
18517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18518        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, res));
18519      } else if (!parseDomainResourceContent(eventType, xpp, res))
18520        return false;
18521    return true;
18522  }
18523
18524  protected RequestGroup.RequestGroupActionComponent parseRequestGroupRequestGroupActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18525    RequestGroup.RequestGroupActionComponent res = new RequestGroup.RequestGroupActionComponent();
18526    parseBackboneAttributes(xpp, res);
18527    next(xpp);
18528    int eventType = nextNoWhitespace(xpp);
18529    while (eventType != XmlPullParser.END_TAG) {
18530  if (!parseRequestGroupRequestGroupActionComponentContent(eventType, xpp, owner, res))
18531        unknownContent(xpp);
18532      eventType = nextNoWhitespace(xpp);
18533    }
18534    next(xpp);
18535    parseElementClose(res);
18536    return res;
18537  }
18538
18539  protected boolean parseRequestGroupRequestGroupActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18540      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
18541        res.setPrefixElement(parseString(xpp));
18542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18543        res.setTitleElement(parseString(xpp));
18544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18545        res.setDescriptionElement(parseString(xpp));
18546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
18547        res.setTextEquivalentElement(parseString(xpp));
18548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
18549        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
18550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18551        res.getCode().add(parseCodeableConcept(xpp));
18552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
18553        res.getDocumentation().add(parseRelatedArtifact(xpp));
18554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18555        res.getCondition().add(parseRequestGroupRequestGroupActionConditionComponent(xpp, owner));
18556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
18557        res.getRelatedAction().add(parseRequestGroupRequestGroupActionRelatedActionComponent(xpp, owner));
18558      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
18559        res.setTiming(parseType("timing", xpp));
18560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
18561        res.getParticipant().add(parseReference(xpp));
18562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18563        res.setType(parseCodeableConcept(xpp));
18564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
18565        res.setGroupingBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionGroupingBehavior.NULL, new RequestGroup.ActionGroupingBehaviorEnumFactory()));
18566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
18567        res.setSelectionBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionSelectionBehavior.NULL, new RequestGroup.ActionSelectionBehaviorEnumFactory()));
18568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
18569        res.setRequiredBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionRequiredBehavior.NULL, new RequestGroup.ActionRequiredBehaviorEnumFactory()));
18570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
18571        res.setPrecheckBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionPrecheckBehavior.NULL, new RequestGroup.ActionPrecheckBehaviorEnumFactory()));
18572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
18573        res.setCardinalityBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionCardinalityBehavior.NULL, new RequestGroup.ActionCardinalityBehaviorEnumFactory()));
18574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
18575        res.setResource(parseReference(xpp));
18576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18577        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, owner));
18578      } else if (!parseBackboneElementContent(eventType, xpp, res))
18579        return false;
18580    return true;
18581  }
18582
18583  protected RequestGroup.RequestGroupActionConditionComponent parseRequestGroupRequestGroupActionConditionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18584    RequestGroup.RequestGroupActionConditionComponent res = new RequestGroup.RequestGroupActionConditionComponent();
18585    parseBackboneAttributes(xpp, res);
18586    next(xpp);
18587    int eventType = nextNoWhitespace(xpp);
18588    while (eventType != XmlPullParser.END_TAG) {
18589  if (!parseRequestGroupRequestGroupActionConditionComponentContent(eventType, xpp, owner, res))
18590        unknownContent(xpp);
18591      eventType = nextNoWhitespace(xpp);
18592    }
18593    next(xpp);
18594    parseElementClose(res);
18595    return res;
18596  }
18597
18598  protected boolean parseRequestGroupRequestGroupActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18599      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
18600        res.setKindElement(parseEnumeration(xpp, RequestGroup.ActionConditionKind.NULL, new RequestGroup.ActionConditionKindEnumFactory()));
18601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
18602        res.setExpression(parseExpression(xpp));
18603      } else if (!parseBackboneElementContent(eventType, xpp, res))
18604        return false;
18605    return true;
18606  }
18607
18608  protected RequestGroup.RequestGroupActionRelatedActionComponent parseRequestGroupRequestGroupActionRelatedActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18609    RequestGroup.RequestGroupActionRelatedActionComponent res = new RequestGroup.RequestGroupActionRelatedActionComponent();
18610    parseBackboneAttributes(xpp, res);
18611    next(xpp);
18612    int eventType = nextNoWhitespace(xpp);
18613    while (eventType != XmlPullParser.END_TAG) {
18614  if (!parseRequestGroupRequestGroupActionRelatedActionComponentContent(eventType, xpp, owner, res))
18615        unknownContent(xpp);
18616      eventType = nextNoWhitespace(xpp);
18617    }
18618    next(xpp);
18619    parseElementClose(res);
18620    return res;
18621  }
18622
18623  protected boolean parseRequestGroupRequestGroupActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18624      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
18625        res.setActionIdElement(parseId(xpp));
18626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
18627        res.setRelationshipElement(parseEnumeration(xpp, RequestGroup.ActionRelationshipType.NULL, new RequestGroup.ActionRelationshipTypeEnumFactory()));
18628      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
18629        res.setOffset(parseType("offset", xpp));
18630      } else if (!parseBackboneElementContent(eventType, xpp, res))
18631        return false;
18632    return true;
18633  }
18634
18635  protected ResearchDefinition parseResearchDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18636    ResearchDefinition res = new ResearchDefinition();
18637    parseDomainResourceAttributes(xpp, res);
18638    next(xpp);
18639    int eventType = nextNoWhitespace(xpp);
18640    while (eventType != XmlPullParser.END_TAG) {
18641  if (!parseResearchDefinitionContent(eventType, xpp, res))
18642        unknownContent(xpp);
18643      eventType = nextNoWhitespace(xpp);
18644    }
18645    next(xpp);
18646    parseElementClose(res);
18647    return res;
18648  }
18649
18650  protected boolean parseResearchDefinitionContent(int eventType, XmlPullParser xpp, ResearchDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18651      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18652        res.setUrlElement(parseUri(xpp));
18653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18654        res.getIdentifier().add(parseIdentifier(xpp));
18655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18656        res.setVersionElement(parseString(xpp));
18657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18658        res.setNameElement(parseString(xpp));
18659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18660        res.setTitleElement(parseString(xpp));
18661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
18662        res.setShortTitleElement(parseString(xpp));
18663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
18664        res.setSubtitleElement(parseString(xpp));
18665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18666        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18668        res.setExperimentalElement(parseBoolean(xpp));
18669      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
18670        res.setSubject(parseType("subject", xpp));
18671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18672        res.setDateElement(parseDateTime(xpp));
18673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18674        res.setPublisherElement(parseString(xpp));
18675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18676        res.getContact().add(parseContactDetail(xpp));
18677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18678        res.setDescriptionElement(parseMarkdown(xpp));
18679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18680        res.getComment().add(parseString(xpp));
18681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18682        res.getUseContext().add(parseUsageContext(xpp));
18683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18684        res.getJurisdiction().add(parseCodeableConcept(xpp));
18685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18686        res.setPurposeElement(parseMarkdown(xpp));
18687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
18688        res.setUsageElement(parseString(xpp));
18689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18690        res.setCopyrightElement(parseMarkdown(xpp));
18691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
18692        res.setApprovalDateElement(parseDate(xpp));
18693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
18694        res.setLastReviewDateElement(parseDate(xpp));
18695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
18696        res.setEffectivePeriod(parsePeriod(xpp));
18697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
18698        res.getTopic().add(parseCodeableConcept(xpp));
18699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18700        res.getAuthor().add(parseContactDetail(xpp));
18701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
18702        res.getEditor().add(parseContactDetail(xpp));
18703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
18704        res.getReviewer().add(parseContactDetail(xpp));
18705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
18706        res.getEndorser().add(parseContactDetail(xpp));
18707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18708        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
18710        res.getLibrary().add(parseCanonical(xpp));
18711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
18712        res.setPopulation(parseReference(xpp));
18713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
18714        res.setExposure(parseReference(xpp));
18715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureAlternative")) {
18716        res.setExposureAlternative(parseReference(xpp));
18717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
18718        res.setOutcome(parseReference(xpp));
18719      } else if (!parseDomainResourceContent(eventType, xpp, res))
18720        return false;
18721    return true;
18722  }
18723
18724  protected ResearchElementDefinition parseResearchElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18725    ResearchElementDefinition res = new ResearchElementDefinition();
18726    parseDomainResourceAttributes(xpp, res);
18727    next(xpp);
18728    int eventType = nextNoWhitespace(xpp);
18729    while (eventType != XmlPullParser.END_TAG) {
18730  if (!parseResearchElementDefinitionContent(eventType, xpp, res))
18731        unknownContent(xpp);
18732      eventType = nextNoWhitespace(xpp);
18733    }
18734    next(xpp);
18735    parseElementClose(res);
18736    return res;
18737  }
18738
18739  protected boolean parseResearchElementDefinitionContent(int eventType, XmlPullParser xpp, ResearchElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18740      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18741        res.setUrlElement(parseUri(xpp));
18742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18743        res.getIdentifier().add(parseIdentifier(xpp));
18744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18745        res.setVersionElement(parseString(xpp));
18746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18747        res.setNameElement(parseString(xpp));
18748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18749        res.setTitleElement(parseString(xpp));
18750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
18751        res.setShortTitleElement(parseString(xpp));
18752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
18753        res.setSubtitleElement(parseString(xpp));
18754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18755        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18757        res.setExperimentalElement(parseBoolean(xpp));
18758      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
18759        res.setSubject(parseType("subject", xpp));
18760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18761        res.setDateElement(parseDateTime(xpp));
18762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18763        res.setPublisherElement(parseString(xpp));
18764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18765        res.getContact().add(parseContactDetail(xpp));
18766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18767        res.setDescriptionElement(parseMarkdown(xpp));
18768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18769        res.getComment().add(parseString(xpp));
18770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18771        res.getUseContext().add(parseUsageContext(xpp));
18772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18773        res.getJurisdiction().add(parseCodeableConcept(xpp));
18774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18775        res.setPurposeElement(parseMarkdown(xpp));
18776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
18777        res.setUsageElement(parseString(xpp));
18778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18779        res.setCopyrightElement(parseMarkdown(xpp));
18780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
18781        res.setApprovalDateElement(parseDate(xpp));
18782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
18783        res.setLastReviewDateElement(parseDate(xpp));
18784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
18785        res.setEffectivePeriod(parsePeriod(xpp));
18786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
18787        res.getTopic().add(parseCodeableConcept(xpp));
18788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18789        res.getAuthor().add(parseContactDetail(xpp));
18790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
18791        res.getEditor().add(parseContactDetail(xpp));
18792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
18793        res.getReviewer().add(parseContactDetail(xpp));
18794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
18795        res.getEndorser().add(parseContactDetail(xpp));
18796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18797        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
18799        res.getLibrary().add(parseCanonical(xpp));
18800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18801        res.setTypeElement(parseEnumeration(xpp, ResearchElementDefinition.ResearchElementType.NULL, new ResearchElementDefinition.ResearchElementTypeEnumFactory()));
18802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableType")) {
18803        res.setVariableTypeElement(parseEnumeration(xpp, ResearchElementDefinition.VariableType.NULL, new ResearchElementDefinition.VariableTypeEnumFactory()));
18804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
18805        res.getCharacteristic().add(parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(xpp, res));
18806      } else if (!parseDomainResourceContent(eventType, xpp, res))
18807        return false;
18808    return true;
18809  }
18810
18811  protected ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(XmlPullParser xpp, ResearchElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18812    ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent res = new ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent();
18813    parseBackboneAttributes(xpp, res);
18814    next(xpp);
18815    int eventType = nextNoWhitespace(xpp);
18816    while (eventType != XmlPullParser.END_TAG) {
18817  if (!parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponentContent(eventType, xpp, owner, res))
18818        unknownContent(xpp);
18819      eventType = nextNoWhitespace(xpp);
18820    }
18821    next(xpp);
18822    parseElementClose(res);
18823    return res;
18824  }
18825
18826  protected boolean parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponentContent(int eventType, XmlPullParser xpp, ResearchElementDefinition owner, ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18827      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
18828        res.setDefinition(parseType("definition", xpp));
18829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageContext")) {
18830        res.getUsageContext().add(parseUsageContext(xpp));
18831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
18832        res.setExcludeElement(parseBoolean(xpp));
18833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
18834        res.setUnitOfMeasure(parseCodeableConcept(xpp));
18835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveDescription")) {
18836        res.setStudyEffectiveDescriptionElement(parseString(xpp));
18837      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "studyEffective")) {
18838        res.setStudyEffective(parseType("studyEffective", xpp));
18839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveTimeFromStart")) {
18840        res.setStudyEffectiveTimeFromStart(parseDuration(xpp));
18841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveGroupMeasure")) {
18842        res.setStudyEffectiveGroupMeasureElement(parseEnumeration(xpp, ResearchElementDefinition.GroupMeasure.NULL, new ResearchElementDefinition.GroupMeasureEnumFactory()));
18843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveDescription")) {
18844        res.setParticipantEffectiveDescriptionElement(parseString(xpp));
18845      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "participantEffective")) {
18846        res.setParticipantEffective(parseType("participantEffective", xpp));
18847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveTimeFromStart")) {
18848        res.setParticipantEffectiveTimeFromStart(parseDuration(xpp));
18849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveGroupMeasure")) {
18850        res.setParticipantEffectiveGroupMeasureElement(parseEnumeration(xpp, ResearchElementDefinition.GroupMeasure.NULL, new ResearchElementDefinition.GroupMeasureEnumFactory()));
18851      } else if (!parseBackboneElementContent(eventType, xpp, res))
18852        return false;
18853    return true;
18854  }
18855
18856  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18857    ResearchStudy res = new ResearchStudy();
18858    parseDomainResourceAttributes(xpp, res);
18859    next(xpp);
18860    int eventType = nextNoWhitespace(xpp);
18861    while (eventType != XmlPullParser.END_TAG) {
18862  if (!parseResearchStudyContent(eventType, xpp, res))
18863        unknownContent(xpp);
18864      eventType = nextNoWhitespace(xpp);
18865    }
18866    next(xpp);
18867    parseElementClose(res);
18868    return res;
18869  }
18870
18871  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
18872      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18873        res.getIdentifier().add(parseIdentifier(xpp));
18874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18875        res.setTitleElement(parseString(xpp));
18876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
18877        res.getProtocol().add(parseReference(xpp));
18878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18879        res.getPartOf().add(parseReference(xpp));
18880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18881        res.setStatusElement(parseEnumeration(xpp, ResearchStudy.ResearchStudyStatus.NULL, new ResearchStudy.ResearchStudyStatusEnumFactory()));
18882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primaryPurposeType")) {
18883        res.setPrimaryPurposeType(parseCodeableConcept(xpp));
18884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phase")) {
18885        res.setPhase(parseCodeableConcept(xpp));
18886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
18887        res.getCategory().add(parseCodeableConcept(xpp));
18888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
18889        res.getFocus().add(parseCodeableConcept(xpp));
18890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18891        res.getCondition().add(parseCodeableConcept(xpp));
18892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18893        res.getContact().add(parseContactDetail(xpp));
18894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18895        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
18897        res.getKeyword().add(parseCodeableConcept(xpp));
18898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18899        res.getLocation().add(parseCodeableConcept(xpp));
18900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18901        res.setDescriptionElement(parseMarkdown(xpp));
18902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enrollment")) {
18903        res.getEnrollment().add(parseReference(xpp));
18904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18905        res.setPeriod(parsePeriod(xpp));
18906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sponsor")) {
18907        res.setSponsor(parseReference(xpp));
18908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("principalInvestigator")) {
18909        res.setPrincipalInvestigator(parseReference(xpp));
18910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
18911        res.getSite().add(parseReference(xpp));
18912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonStopped")) {
18913        res.setReasonStopped(parseCodeableConcept(xpp));
18914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18915        res.getNote().add(parseAnnotation(xpp));
18916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("arm")) {
18917        res.getArm().add(parseResearchStudyResearchStudyArmComponent(xpp, res));
18918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("objective")) {
18919        res.getObjective().add(parseResearchStudyResearchStudyObjectiveComponent(xpp, res));
18920      } else if (!parseDomainResourceContent(eventType, xpp, res))
18921        return false;
18922    return true;
18923  }
18924
18925  protected ResearchStudy.ResearchStudyArmComponent parseResearchStudyResearchStudyArmComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
18926    ResearchStudy.ResearchStudyArmComponent res = new ResearchStudy.ResearchStudyArmComponent();
18927    parseBackboneAttributes(xpp, res);
18928    next(xpp);
18929    int eventType = nextNoWhitespace(xpp);
18930    while (eventType != XmlPullParser.END_TAG) {
18931  if (!parseResearchStudyResearchStudyArmComponentContent(eventType, xpp, owner, res))
18932        unknownContent(xpp);
18933      eventType = nextNoWhitespace(xpp);
18934    }
18935    next(xpp);
18936    parseElementClose(res);
18937    return res;
18938  }
18939
18940  protected boolean parseResearchStudyResearchStudyArmComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyArmComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18941      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18942        res.setNameElement(parseString(xpp));
18943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18944        res.setType(parseCodeableConcept(xpp));
18945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18946        res.setDescriptionElement(parseString(xpp));
18947      } else if (!parseBackboneElementContent(eventType, xpp, res))
18948        return false;
18949    return true;
18950  }
18951
18952  protected ResearchStudy.ResearchStudyObjectiveComponent parseResearchStudyResearchStudyObjectiveComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
18953    ResearchStudy.ResearchStudyObjectiveComponent res = new ResearchStudy.ResearchStudyObjectiveComponent();
18954    parseBackboneAttributes(xpp, res);
18955    next(xpp);
18956    int eventType = nextNoWhitespace(xpp);
18957    while (eventType != XmlPullParser.END_TAG) {
18958  if (!parseResearchStudyResearchStudyObjectiveComponentContent(eventType, xpp, owner, res))
18959        unknownContent(xpp);
18960      eventType = nextNoWhitespace(xpp);
18961    }
18962    next(xpp);
18963    parseElementClose(res);
18964    return res;
18965  }
18966
18967  protected boolean parseResearchStudyResearchStudyObjectiveComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyObjectiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18968      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18969        res.setNameElement(parseString(xpp));
18970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18971        res.setType(parseCodeableConcept(xpp));
18972      } else if (!parseBackboneElementContent(eventType, xpp, res))
18973        return false;
18974    return true;
18975  }
18976
18977  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18978    ResearchSubject res = new ResearchSubject();
18979    parseDomainResourceAttributes(xpp, res);
18980    next(xpp);
18981    int eventType = nextNoWhitespace(xpp);
18982    while (eventType != XmlPullParser.END_TAG) {
18983  if (!parseResearchSubjectContent(eventType, xpp, res))
18984        unknownContent(xpp);
18985      eventType = nextNoWhitespace(xpp);
18986    }
18987    next(xpp);
18988    parseElementClose(res);
18989    return res;
18990  }
18991
18992  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
18993      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18994        res.getIdentifier().add(parseIdentifier(xpp));
18995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18996        res.setStatusElement(parseEnumeration(xpp, ResearchSubject.ResearchSubjectStatus.NULL, new ResearchSubject.ResearchSubjectStatusEnumFactory()));
18997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18998        res.setPeriod(parsePeriod(xpp));
18999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
19000        res.setStudy(parseReference(xpp));
19001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
19002        res.setIndividual(parseReference(xpp));
19003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedArm")) {
19004        res.setAssignedArmElement(parseString(xpp));
19005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualArm")) {
19006        res.setActualArmElement(parseString(xpp));
19007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
19008        res.setConsent(parseReference(xpp));
19009      } else if (!parseDomainResourceContent(eventType, xpp, res))
19010        return false;
19011    return true;
19012  }
19013
19014  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19015    RiskAssessment res = new RiskAssessment();
19016    parseDomainResourceAttributes(xpp, res);
19017    next(xpp);
19018    int eventType = nextNoWhitespace(xpp);
19019    while (eventType != XmlPullParser.END_TAG) {
19020  if (!parseRiskAssessmentContent(eventType, xpp, res))
19021        unknownContent(xpp);
19022      eventType = nextNoWhitespace(xpp);
19023    }
19024    next(xpp);
19025    parseElementClose(res);
19026    return res;
19027  }
19028
19029  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
19030      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19031        res.getIdentifier().add(parseIdentifier(xpp));
19032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19033        res.setBasedOn(parseReference(xpp));
19034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
19035        res.setParent(parseReference(xpp));
19036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19037        res.setStatusElement(parseEnumeration(xpp, RiskAssessment.RiskAssessmentStatus.NULL, new RiskAssessment.RiskAssessmentStatusEnumFactory()));
19038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
19039        res.setMethod(parseCodeableConcept(xpp));
19040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19041        res.setCode(parseCodeableConcept(xpp));
19042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19043        res.setSubject(parseReference(xpp));
19044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
19045        res.setEncounter(parseReference(xpp));
19046      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
19047        res.setOccurrence(parseType("occurrence", xpp));
19048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
19049        res.setCondition(parseReference(xpp));
19050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
19051        res.setPerformer(parseReference(xpp));
19052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19053        res.getReasonCode().add(parseCodeableConcept(xpp));
19054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19055        res.getReasonReference().add(parseReference(xpp));
19056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
19057        res.getBasis().add(parseReference(xpp));
19058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
19059        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
19060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
19061        res.setMitigationElement(parseString(xpp));
19062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19063        res.getNote().add(parseAnnotation(xpp));
19064      } else if (!parseDomainResourceContent(eventType, xpp, res))
19065        return false;
19066    return true;
19067  }
19068
19069  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
19070    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
19071    parseBackboneAttributes(xpp, res);
19072    next(xpp);
19073    int eventType = nextNoWhitespace(xpp);
19074    while (eventType != XmlPullParser.END_TAG) {
19075  if (!parseRiskAssessmentRiskAssessmentPredictionComponentContent(eventType, xpp, owner, res))
19076        unknownContent(xpp);
19077      eventType = nextNoWhitespace(xpp);
19078    }
19079    next(xpp);
19080    parseElementClose(res);
19081    return res;
19082  }
19083
19084  protected boolean parseRiskAssessmentRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment owner, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19085      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
19086        res.setOutcome(parseCodeableConcept(xpp));
19087      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
19088        res.setProbability(parseType("probability", xpp));
19089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
19090        res.setQualitativeRisk(parseCodeableConcept(xpp));
19091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
19092        res.setRelativeRiskElement(parseDecimal(xpp));
19093      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
19094        res.setWhen(parseType("when", xpp));
19095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
19096        res.setRationaleElement(parseString(xpp));
19097      } else if (!parseBackboneElementContent(eventType, xpp, res))
19098        return false;
19099    return true;
19100  }
19101
19102  protected RiskEvidenceSynthesis parseRiskEvidenceSynthesis(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19103    RiskEvidenceSynthesis res = new RiskEvidenceSynthesis();
19104    parseDomainResourceAttributes(xpp, res);
19105    next(xpp);
19106    int eventType = nextNoWhitespace(xpp);
19107    while (eventType != XmlPullParser.END_TAG) {
19108  if (!parseRiskEvidenceSynthesisContent(eventType, xpp, res))
19109        unknownContent(xpp);
19110      eventType = nextNoWhitespace(xpp);
19111    }
19112    next(xpp);
19113    parseElementClose(res);
19114    return res;
19115  }
19116
19117  protected boolean parseRiskEvidenceSynthesisContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis res) throws XmlPullParserException, IOException, FHIRFormatError {
19118      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19119        res.setUrlElement(parseUri(xpp));
19120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19121        res.getIdentifier().add(parseIdentifier(xpp));
19122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19123        res.setVersionElement(parseString(xpp));
19124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19125        res.setNameElement(parseString(xpp));
19126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19127        res.setTitleElement(parseString(xpp));
19128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19129        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19131        res.setDateElement(parseDateTime(xpp));
19132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19133        res.setPublisherElement(parseString(xpp));
19134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19135        res.getContact().add(parseContactDetail(xpp));
19136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19137        res.setDescriptionElement(parseMarkdown(xpp));
19138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19139        res.getNote().add(parseAnnotation(xpp));
19140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19141        res.getUseContext().add(parseUsageContext(xpp));
19142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19143        res.getJurisdiction().add(parseCodeableConcept(xpp));
19144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19145        res.setCopyrightElement(parseMarkdown(xpp));
19146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
19147        res.setApprovalDateElement(parseDate(xpp));
19148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
19149        res.setLastReviewDateElement(parseDate(xpp));
19150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
19151        res.setEffectivePeriod(parsePeriod(xpp));
19152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
19153        res.getTopic().add(parseCodeableConcept(xpp));
19154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
19155        res.getAuthor().add(parseContactDetail(xpp));
19156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
19157        res.getEditor().add(parseContactDetail(xpp));
19158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
19159        res.getReviewer().add(parseContactDetail(xpp));
19160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
19161        res.getEndorser().add(parseContactDetail(xpp));
19162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
19163        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
19164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synthesisType")) {
19165        res.setSynthesisType(parseCodeableConcept(xpp));
19166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyType")) {
19167        res.setStudyType(parseCodeableConcept(xpp));
19168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
19169        res.setPopulation(parseReference(xpp));
19170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
19171        res.setExposure(parseReference(xpp));
19172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
19173        res.setOutcome(parseReference(xpp));
19174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sampleSize")) {
19175        res.setSampleSize(parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(xpp, res));
19176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskEstimate")) {
19177        res.setRiskEstimate(parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(xpp, res));
19178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
19179        res.getCertainty().add(parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(xpp, res));
19180      } else if (!parseDomainResourceContent(eventType, xpp, res))
19181        return false;
19182    return true;
19183  }
19184
19185  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19186    RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent();
19187    parseBackboneAttributes(xpp, res);
19188    next(xpp);
19189    int eventType = nextNoWhitespace(xpp);
19190    while (eventType != XmlPullParser.END_TAG) {
19191  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentContent(eventType, xpp, owner, res))
19192        unknownContent(xpp);
19193      eventType = nextNoWhitespace(xpp);
19194    }
19195    next(xpp);
19196    parseElementClose(res);
19197    return res;
19198  }
19199
19200  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19201      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19202        res.setDescriptionElement(parseString(xpp));
19203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfStudies")) {
19204        res.setNumberOfStudiesElement(parseInteger(xpp));
19205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfParticipants")) {
19206        res.setNumberOfParticipantsElement(parseInteger(xpp));
19207      } else if (!parseBackboneElementContent(eventType, xpp, res))
19208        return false;
19209    return true;
19210  }
19211
19212  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19213    RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent();
19214    parseBackboneAttributes(xpp, res);
19215    next(xpp);
19216    int eventType = nextNoWhitespace(xpp);
19217    while (eventType != XmlPullParser.END_TAG) {
19218  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentContent(eventType, xpp, owner, res))
19219        unknownContent(xpp);
19220      eventType = nextNoWhitespace(xpp);
19221    }
19222    next(xpp);
19223    parseElementClose(res);
19224    return res;
19225  }
19226
19227  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19228      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19229        res.setDescriptionElement(parseString(xpp));
19230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19231        res.setType(parseCodeableConcept(xpp));
19232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
19233        res.setValueElement(parseDecimal(xpp));
19234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
19235        res.setUnitOfMeasure(parseCodeableConcept(xpp));
19236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominatorCount")) {
19237        res.setDenominatorCountElement(parseInteger(xpp));
19238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numeratorCount")) {
19239        res.setNumeratorCountElement(parseInteger(xpp));
19240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precisionEstimate")) {
19241        res.getPrecisionEstimate().add(parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(xpp, owner));
19242      } else if (!parseBackboneElementContent(eventType, xpp, res))
19243        return false;
19244    return true;
19245  }
19246
19247  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19248    RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent();
19249    parseBackboneAttributes(xpp, res);
19250    next(xpp);
19251    int eventType = nextNoWhitespace(xpp);
19252    while (eventType != XmlPullParser.END_TAG) {
19253  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentContent(eventType, xpp, owner, res))
19254        unknownContent(xpp);
19255      eventType = nextNoWhitespace(xpp);
19256    }
19257    next(xpp);
19258    parseElementClose(res);
19259    return res;
19260  }
19261
19262  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19263      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19264        res.setType(parseCodeableConcept(xpp));
19265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("level")) {
19266        res.setLevelElement(parseDecimal(xpp));
19267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("from")) {
19268        res.setFromElement(parseDecimal(xpp));
19269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("to")) {
19270        res.setToElement(parseDecimal(xpp));
19271      } else if (!parseBackboneElementContent(eventType, xpp, res))
19272        return false;
19273    return true;
19274  }
19275
19276  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19277    RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent();
19278    parseBackboneAttributes(xpp, res);
19279    next(xpp);
19280    int eventType = nextNoWhitespace(xpp);
19281    while (eventType != XmlPullParser.END_TAG) {
19282  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentContent(eventType, xpp, owner, res))
19283        unknownContent(xpp);
19284      eventType = nextNoWhitespace(xpp);
19285    }
19286    next(xpp);
19287    parseElementClose(res);
19288    return res;
19289  }
19290
19291  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19292      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
19293        res.getRating().add(parseCodeableConcept(xpp));
19294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19295        res.getNote().add(parseAnnotation(xpp));
19296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certaintySubcomponent")) {
19297        res.getCertaintySubcomponent().add(parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(xpp, owner));
19298      } else if (!parseBackboneElementContent(eventType, xpp, res))
19299        return false;
19300    return true;
19301  }
19302
19303  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19304    RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent();
19305    parseBackboneAttributes(xpp, res);
19306    next(xpp);
19307    int eventType = nextNoWhitespace(xpp);
19308    while (eventType != XmlPullParser.END_TAG) {
19309  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(eventType, xpp, owner, res))
19310        unknownContent(xpp);
19311      eventType = nextNoWhitespace(xpp);
19312    }
19313    next(xpp);
19314    parseElementClose(res);
19315    return res;
19316  }
19317
19318  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19319      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19320        res.setType(parseCodeableConcept(xpp));
19321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
19322        res.getRating().add(parseCodeableConcept(xpp));
19323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19324        res.getNote().add(parseAnnotation(xpp));
19325      } else if (!parseBackboneElementContent(eventType, xpp, res))
19326        return false;
19327    return true;
19328  }
19329
19330  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19331    Schedule res = new Schedule();
19332    parseDomainResourceAttributes(xpp, res);
19333    next(xpp);
19334    int eventType = nextNoWhitespace(xpp);
19335    while (eventType != XmlPullParser.END_TAG) {
19336  if (!parseScheduleContent(eventType, xpp, res))
19337        unknownContent(xpp);
19338      eventType = nextNoWhitespace(xpp);
19339    }
19340    next(xpp);
19341    parseElementClose(res);
19342    return res;
19343  }
19344
19345  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
19346      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19347        res.getIdentifier().add(parseIdentifier(xpp));
19348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
19349        res.setActiveElement(parseBoolean(xpp));
19350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
19351        res.getServiceCategory().add(parseCodeableConcept(xpp));
19352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
19353        res.getServiceType().add(parseCodeableConcept(xpp));
19354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
19355        res.getSpecialty().add(parseCodeableConcept(xpp));
19356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
19357        res.getActor().add(parseReference(xpp));
19358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
19359        res.setPlanningHorizon(parsePeriod(xpp));
19360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19361        res.setCommentElement(parseString(xpp));
19362      } else if (!parseDomainResourceContent(eventType, xpp, res))
19363        return false;
19364    return true;
19365  }
19366
19367  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19368    SearchParameter res = new SearchParameter();
19369    parseDomainResourceAttributes(xpp, res);
19370    next(xpp);
19371    int eventType = nextNoWhitespace(xpp);
19372    while (eventType != XmlPullParser.END_TAG) {
19373  if (!parseSearchParameterContent(eventType, xpp, res))
19374        unknownContent(xpp);
19375      eventType = nextNoWhitespace(xpp);
19376    }
19377    next(xpp);
19378    parseElementClose(res);
19379    return res;
19380  }
19381
19382  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
19383      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19384        res.setUrlElement(parseUri(xpp));
19385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19386        res.setVersionElement(parseString(xpp));
19387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19388        res.setNameElement(parseString(xpp));
19389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
19390        res.setDerivedFromElement(parseCanonical(xpp));
19391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19392        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19394        res.setExperimentalElement(parseBoolean(xpp));
19395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19396        res.setDateElement(parseDateTime(xpp));
19397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19398        res.setPublisherElement(parseString(xpp));
19399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19400        res.getContact().add(parseContactDetail(xpp));
19401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19402        res.setDescriptionElement(parseMarkdown(xpp));
19403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19404        res.getUseContext().add(parseUsageContext(xpp));
19405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19406        res.getJurisdiction().add(parseCodeableConcept(xpp));
19407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19408        res.setPurposeElement(parseMarkdown(xpp));
19409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19410        res.setCodeElement(parseCode(xpp));
19411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
19412        res.getBase().add(parseCode(xpp));
19413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19414        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
19415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
19416        res.setExpressionElement(parseString(xpp));
19417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
19418        res.setXpathElement(parseString(xpp));
19419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
19420        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
19421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
19422        res.getTarget().add(parseCode(xpp));
19423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleOr")) {
19424        res.setMultipleOrElement(parseBoolean(xpp));
19425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleAnd")) {
19426        res.setMultipleAndElement(parseBoolean(xpp));
19427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
19428        res.getComparator().add(parseEnumeration(xpp, SearchParameter.SearchComparator.NULL, new SearchParameter.SearchComparatorEnumFactory()));
19429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
19430        res.getModifier().add(parseEnumeration(xpp, SearchParameter.SearchModifierCode.NULL, new SearchParameter.SearchModifierCodeEnumFactory()));
19431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
19432        res.getChain().add(parseString(xpp));
19433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
19434        res.getComponent().add(parseSearchParameterSearchParameterComponentComponent(xpp, res));
19435      } else if (!parseDomainResourceContent(eventType, xpp, res))
19436        return false;
19437    return true;
19438  }
19439
19440  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterSearchParameterComponentComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
19441    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
19442    parseBackboneAttributes(xpp, res);
19443    next(xpp);
19444    int eventType = nextNoWhitespace(xpp);
19445    while (eventType != XmlPullParser.END_TAG) {
19446  if (!parseSearchParameterSearchParameterComponentComponentContent(eventType, xpp, owner, res))
19447        unknownContent(xpp);
19448      eventType = nextNoWhitespace(xpp);
19449    }
19450    next(xpp);
19451    parseElementClose(res);
19452    return res;
19453  }
19454
19455  protected boolean parseSearchParameterSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter owner, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19456      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
19457        res.setDefinitionElement(parseCanonical(xpp));
19458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
19459        res.setExpressionElement(parseString(xpp));
19460      } else if (!parseBackboneElementContent(eventType, xpp, res))
19461        return false;
19462    return true;
19463  }
19464
19465  protected ServiceRequest parseServiceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19466    ServiceRequest res = new ServiceRequest();
19467    parseDomainResourceAttributes(xpp, res);
19468    next(xpp);
19469    int eventType = nextNoWhitespace(xpp);
19470    while (eventType != XmlPullParser.END_TAG) {
19471  if (!parseServiceRequestContent(eventType, xpp, res))
19472        unknownContent(xpp);
19473      eventType = nextNoWhitespace(xpp);
19474    }
19475    next(xpp);
19476    parseElementClose(res);
19477    return res;
19478  }
19479
19480  protected boolean parseServiceRequestContent(int eventType, XmlPullParser xpp, ServiceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
19481      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19482        res.getIdentifier().add(parseIdentifier(xpp));
19483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
19484        res.getInstantiatesCanonical().add(parseCanonical(xpp));
19485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
19486        res.getInstantiatesUri().add(parseUri(xpp));
19487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19488        res.getBasedOn().add(parseReference(xpp));
19489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
19490        res.getReplaces().add(parseReference(xpp));
19491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
19492        res.setRequisition(parseIdentifier(xpp));
19493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19494        res.setStatusElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestStatus.NULL, new ServiceRequest.ServiceRequestStatusEnumFactory()));
19495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
19496        res.setIntentElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestIntent.NULL, new ServiceRequest.ServiceRequestIntentEnumFactory()));
19497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19498        res.getCategory().add(parseCodeableConcept(xpp));
19499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
19500        res.setPriorityElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestPriority.NULL, new ServiceRequest.ServiceRequestPriorityEnumFactory()));
19501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
19502        res.setDoNotPerformElement(parseBoolean(xpp));
19503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19504        res.setCode(parseCodeableConcept(xpp));
19505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderDetail")) {
19506        res.getOrderDetail().add(parseCodeableConcept(xpp));
19507      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "quantity")) {
19508        res.setQuantity(parseType("quantity", xpp));
19509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19510        res.setSubject(parseReference(xpp));
19511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
19512        res.setEncounter(parseReference(xpp));
19513      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
19514        res.setOccurrence(parseType("occurrence", xpp));
19515      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
19516        res.setAsNeeded(parseType("asNeeded", xpp));
19517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
19518        res.setAuthoredOnElement(parseDateTime(xpp));
19519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
19520        res.setRequester(parseReference(xpp));
19521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
19522        res.setPerformerType(parseCodeableConcept(xpp));
19523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
19524        res.getPerformer().add(parseReference(xpp));
19525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationCode")) {
19526        res.getLocationCode().add(parseCodeableConcept(xpp));
19527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationReference")) {
19528        res.getLocationReference().add(parseReference(xpp));
19529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19530        res.getReasonCode().add(parseCodeableConcept(xpp));
19531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19532        res.getReasonReference().add(parseReference(xpp));
19533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
19534        res.getInsurance().add(parseReference(xpp));
19535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
19536        res.getSupportingInfo().add(parseReference(xpp));
19537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
19538        res.getSpecimen().add(parseReference(xpp));
19539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
19540        res.getBodySite().add(parseCodeableConcept(xpp));
19541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19542        res.getNote().add(parseAnnotation(xpp));
19543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
19544        res.setPatientInstructionElement(parseString(xpp));
19545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
19546        res.getRelevantHistory().add(parseReference(xpp));
19547      } else if (!parseDomainResourceContent(eventType, xpp, res))
19548        return false;
19549    return true;
19550  }
19551
19552  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19553    Slot res = new Slot();
19554    parseDomainResourceAttributes(xpp, res);
19555    next(xpp);
19556    int eventType = nextNoWhitespace(xpp);
19557    while (eventType != XmlPullParser.END_TAG) {
19558  if (!parseSlotContent(eventType, xpp, res))
19559        unknownContent(xpp);
19560      eventType = nextNoWhitespace(xpp);
19561    }
19562    next(xpp);
19563    parseElementClose(res);
19564    return res;
19565  }
19566
19567  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
19568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19569        res.getIdentifier().add(parseIdentifier(xpp));
19570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
19571        res.getServiceCategory().add(parseCodeableConcept(xpp));
19572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
19573        res.getServiceType().add(parseCodeableConcept(xpp));
19574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
19575        res.getSpecialty().add(parseCodeableConcept(xpp));
19576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
19577        res.setAppointmentType(parseCodeableConcept(xpp));
19578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
19579        res.setSchedule(parseReference(xpp));
19580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19581        res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
19582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
19583        res.setStartElement(parseInstant(xpp));
19584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
19585        res.setEndElement(parseInstant(xpp));
19586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
19587        res.setOverbookedElement(parseBoolean(xpp));
19588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19589        res.setCommentElement(parseString(xpp));
19590      } else if (!parseDomainResourceContent(eventType, xpp, res))
19591        return false;
19592    return true;
19593  }
19594
19595  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19596    Specimen res = new Specimen();
19597    parseDomainResourceAttributes(xpp, res);
19598    next(xpp);
19599    int eventType = nextNoWhitespace(xpp);
19600    while (eventType != XmlPullParser.END_TAG) {
19601  if (!parseSpecimenContent(eventType, xpp, res))
19602        unknownContent(xpp);
19603      eventType = nextNoWhitespace(xpp);
19604    }
19605    next(xpp);
19606    parseElementClose(res);
19607    return res;
19608  }
19609
19610  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
19611      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19612        res.getIdentifier().add(parseIdentifier(xpp));
19613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
19614        res.setAccessionIdentifier(parseIdentifier(xpp));
19615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19616        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
19617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19618        res.setType(parseCodeableConcept(xpp));
19619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19620        res.setSubject(parseReference(xpp));
19621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
19622        res.setReceivedTimeElement(parseDateTime(xpp));
19623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
19624        res.getParent().add(parseReference(xpp));
19625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
19626        res.getRequest().add(parseReference(xpp));
19627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
19628        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
19629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
19630        res.getProcessing().add(parseSpecimenSpecimenProcessingComponent(xpp, res));
19631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
19632        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
19633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
19634        res.getCondition().add(parseCodeableConcept(xpp));
19635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19636        res.getNote().add(parseAnnotation(xpp));
19637      } else if (!parseDomainResourceContent(eventType, xpp, res))
19638        return false;
19639    return true;
19640  }
19641
19642  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19643    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
19644    parseBackboneAttributes(xpp, res);
19645    next(xpp);
19646    int eventType = nextNoWhitespace(xpp);
19647    while (eventType != XmlPullParser.END_TAG) {
19648  if (!parseSpecimenSpecimenCollectionComponentContent(eventType, xpp, owner, res))
19649        unknownContent(xpp);
19650      eventType = nextNoWhitespace(xpp);
19651    }
19652    next(xpp);
19653    parseElementClose(res);
19654    return res;
19655  }
19656
19657  protected boolean parseSpecimenSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19658      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
19659        res.setCollector(parseReference(xpp));
19660      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
19661        res.setCollected(parseType("collected", xpp));
19662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
19663        res.setDuration(parseDuration(xpp));
19664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19665        res.setQuantity(parseQuantity(xpp));
19666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
19667        res.setMethod(parseCodeableConcept(xpp));
19668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
19669        res.setBodySite(parseCodeableConcept(xpp));
19670      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fastingStatus")) {
19671        res.setFastingStatus(parseType("fastingStatus", xpp));
19672      } else if (!parseBackboneElementContent(eventType, xpp, res))
19673        return false;
19674    return true;
19675  }
19676
19677  protected Specimen.SpecimenProcessingComponent parseSpecimenSpecimenProcessingComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19678    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
19679    parseBackboneAttributes(xpp, res);
19680    next(xpp);
19681    int eventType = nextNoWhitespace(xpp);
19682    while (eventType != XmlPullParser.END_TAG) {
19683  if (!parseSpecimenSpecimenProcessingComponentContent(eventType, xpp, owner, res))
19684        unknownContent(xpp);
19685      eventType = nextNoWhitespace(xpp);
19686    }
19687    next(xpp);
19688    parseElementClose(res);
19689    return res;
19690  }
19691
19692  protected boolean parseSpecimenSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19694        res.setDescriptionElement(parseString(xpp));
19695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
19696        res.setProcedure(parseCodeableConcept(xpp));
19697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
19698        res.getAdditive().add(parseReference(xpp));
19699      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
19700        res.setTime(parseType("time", xpp));
19701      } else if (!parseBackboneElementContent(eventType, xpp, res))
19702        return false;
19703    return true;
19704  }
19705
19706  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19707    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
19708    parseBackboneAttributes(xpp, res);
19709    next(xpp);
19710    int eventType = nextNoWhitespace(xpp);
19711    while (eventType != XmlPullParser.END_TAG) {
19712  if (!parseSpecimenSpecimenContainerComponentContent(eventType, xpp, owner, res))
19713        unknownContent(xpp);
19714      eventType = nextNoWhitespace(xpp);
19715    }
19716    next(xpp);
19717    parseElementClose(res);
19718    return res;
19719  }
19720
19721  protected boolean parseSpecimenSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19722      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19723        res.getIdentifier().add(parseIdentifier(xpp));
19724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19725        res.setDescriptionElement(parseString(xpp));
19726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19727        res.setType(parseCodeableConcept(xpp));
19728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
19729        res.setCapacity(parseQuantity(xpp));
19730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
19731        res.setSpecimenQuantity(parseQuantity(xpp));
19732      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
19733        res.setAdditive(parseType("additive", xpp));
19734      } else if (!parseBackboneElementContent(eventType, xpp, res))
19735        return false;
19736    return true;
19737  }
19738
19739  protected SpecimenDefinition parseSpecimenDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19740    SpecimenDefinition res = new SpecimenDefinition();
19741    parseDomainResourceAttributes(xpp, res);
19742    next(xpp);
19743    int eventType = nextNoWhitespace(xpp);
19744    while (eventType != XmlPullParser.END_TAG) {
19745  if (!parseSpecimenDefinitionContent(eventType, xpp, res))
19746        unknownContent(xpp);
19747      eventType = nextNoWhitespace(xpp);
19748    }
19749    next(xpp);
19750    parseElementClose(res);
19751    return res;
19752  }
19753
19754  protected boolean parseSpecimenDefinitionContent(int eventType, XmlPullParser xpp, SpecimenDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19755      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19756        res.setIdentifier(parseIdentifier(xpp));
19757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCollected")) {
19758        res.setTypeCollected(parseCodeableConcept(xpp));
19759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPreparation")) {
19760        res.getPatientPreparation().add(parseCodeableConcept(xpp));
19761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeAspect")) {
19762        res.setTimeAspectElement(parseString(xpp));
19763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
19764        res.getCollection().add(parseCodeableConcept(xpp));
19765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeTested")) {
19766        res.getTypeTested().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(xpp, res));
19767      } else if (!parseDomainResourceContent(eventType, xpp, res))
19768        return false;
19769    return true;
19770  }
19771
19772  protected SpecimenDefinition.SpecimenDefinitionTypeTestedComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19773    SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedComponent();
19774    parseBackboneAttributes(xpp, res);
19775    next(xpp);
19776    int eventType = nextNoWhitespace(xpp);
19777    while (eventType != XmlPullParser.END_TAG) {
19778  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponentContent(eventType, xpp, owner, res))
19779        unknownContent(xpp);
19780      eventType = nextNoWhitespace(xpp);
19781    }
19782    next(xpp);
19783    parseElementClose(res);
19784    return res;
19785  }
19786
19787  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19788      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDerived")) {
19789        res.setIsDerivedElement(parseBoolean(xpp));
19790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19791        res.setType(parseCodeableConcept(xpp));
19792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preference")) {
19793        res.setPreferenceElement(parseEnumeration(xpp, SpecimenDefinition.SpecimenContainedPreference.NULL, new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory()));
19794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
19795        res.setContainer(parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(xpp, owner));
19796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
19797        res.setRequirementElement(parseString(xpp));
19798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("retentionTime")) {
19799        res.setRetentionTime(parseDuration(xpp));
19800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rejectionCriterion")) {
19801        res.getRejectionCriterion().add(parseCodeableConcept(xpp));
19802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
19803        res.getHandling().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(xpp, owner));
19804      } else if (!parseBackboneElementContent(eventType, xpp, res))
19805        return false;
19806    return true;
19807  }
19808
19809  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19810    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent();
19811    parseBackboneAttributes(xpp, res);
19812    next(xpp);
19813    int eventType = nextNoWhitespace(xpp);
19814    while (eventType != XmlPullParser.END_TAG) {
19815  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentContent(eventType, xpp, owner, res))
19816        unknownContent(xpp);
19817      eventType = nextNoWhitespace(xpp);
19818    }
19819    next(xpp);
19820    parseElementClose(res);
19821    return res;
19822  }
19823
19824  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19825      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
19826        res.setMaterial(parseCodeableConcept(xpp));
19827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19828        res.setType(parseCodeableConcept(xpp));
19829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cap")) {
19830        res.setCap(parseCodeableConcept(xpp));
19831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19832        res.setDescriptionElement(parseString(xpp));
19833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
19834        res.setCapacity(parseQuantity(xpp));
19835      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minimumVolume")) {
19836        res.setMinimumVolume(parseType("minimumVolume", xpp));
19837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
19838        res.getAdditive().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(xpp, owner));
19839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparation")) {
19840        res.setPreparationElement(parseString(xpp));
19841      } else if (!parseBackboneElementContent(eventType, xpp, res))
19842        return false;
19843    return true;
19844  }
19845
19846  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19847    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent();
19848    parseBackboneAttributes(xpp, res);
19849    next(xpp);
19850    int eventType = nextNoWhitespace(xpp);
19851    while (eventType != XmlPullParser.END_TAG) {
19852  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(eventType, xpp, owner, res))
19853        unknownContent(xpp);
19854      eventType = nextNoWhitespace(xpp);
19855    }
19856    next(xpp);
19857    parseElementClose(res);
19858    return res;
19859  }
19860
19861  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19862      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
19863        res.setAdditive(parseType("additive", xpp));
19864      } else if (!parseBackboneElementContent(eventType, xpp, res))
19865        return false;
19866    return true;
19867  }
19868
19869  protected SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19870    SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent();
19871    parseBackboneAttributes(xpp, res);
19872    next(xpp);
19873    int eventType = nextNoWhitespace(xpp);
19874    while (eventType != XmlPullParser.END_TAG) {
19875  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentContent(eventType, xpp, owner, res))
19876        unknownContent(xpp);
19877      eventType = nextNoWhitespace(xpp);
19878    }
19879    next(xpp);
19880    parseElementClose(res);
19881    return res;
19882  }
19883
19884  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19885      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureQualifier")) {
19886        res.setTemperatureQualifier(parseCodeableConcept(xpp));
19887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureRange")) {
19888        res.setTemperatureRange(parseRange(xpp));
19889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDuration")) {
19890        res.setMaxDuration(parseDuration(xpp));
19891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
19892        res.setInstructionElement(parseString(xpp));
19893      } else if (!parseBackboneElementContent(eventType, xpp, res))
19894        return false;
19895    return true;
19896  }
19897
19898  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19899    StructureDefinition res = new StructureDefinition();
19900    parseDomainResourceAttributes(xpp, res);
19901    next(xpp);
19902    int eventType = nextNoWhitespace(xpp);
19903    while (eventType != XmlPullParser.END_TAG) {
19904  if (!parseStructureDefinitionContent(eventType, xpp, res))
19905        unknownContent(xpp);
19906      eventType = nextNoWhitespace(xpp);
19907    }
19908    next(xpp);
19909    parseElementClose(res);
19910    return res;
19911  }
19912
19913  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19914      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19915        res.setUrlElement(parseUri(xpp));
19916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19917        res.getIdentifier().add(parseIdentifier(xpp));
19918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19919        res.setVersionElement(parseString(xpp));
19920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19921        res.setNameElement(parseString(xpp));
19922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19923        res.setTitleElement(parseString(xpp));
19924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19925        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19927        res.setExperimentalElement(parseBoolean(xpp));
19928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19929        res.setDateElement(parseDateTime(xpp));
19930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19931        res.setPublisherElement(parseString(xpp));
19932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19933        res.getContact().add(parseContactDetail(xpp));
19934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19935        res.setDescriptionElement(parseMarkdown(xpp));
19936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19937        res.getUseContext().add(parseUsageContext(xpp));
19938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19939        res.getJurisdiction().add(parseCodeableConcept(xpp));
19940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19941        res.setPurposeElement(parseMarkdown(xpp));
19942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19943        res.setCopyrightElement(parseMarkdown(xpp));
19944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
19945        res.getKeyword().add(parseCoding(xpp));
19946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
19947        res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
19948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
19949        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
19950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
19951        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
19952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
19953        res.setAbstractElement(parseBoolean(xpp));
19954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
19955        res.getContext().add(parseStructureDefinitionStructureDefinitionContextComponent(xpp, res));
19956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
19957        res.getContextInvariant().add(parseString(xpp));
19958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19959        res.setTypeElement(parseUri(xpp));
19960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
19961        res.setBaseDefinitionElement(parseCanonical(xpp));
19962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
19963        res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
19964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
19965        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
19966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
19967        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
19968      } else if (!parseDomainResourceContent(eventType, xpp, res))
19969        return false;
19970    return true;
19971  }
19972
19973  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19974    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
19975    parseBackboneAttributes(xpp, res);
19976    next(xpp);
19977    int eventType = nextNoWhitespace(xpp);
19978    while (eventType != XmlPullParser.END_TAG) {
19979  if (!parseStructureDefinitionStructureDefinitionMappingComponentContent(eventType, xpp, owner, res))
19980        unknownContent(xpp);
19981      eventType = nextNoWhitespace(xpp);
19982    }
19983    next(xpp);
19984    parseElementClose(res);
19985    return res;
19986  }
19987
19988  protected boolean parseStructureDefinitionStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19989      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
19990        res.setIdentityElement(parseId(xpp));
19991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
19992        res.setUriElement(parseUri(xpp));
19993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19994        res.setNameElement(parseString(xpp));
19995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19996        res.setCommentElement(parseString(xpp));
19997      } else if (!parseBackboneElementContent(eventType, xpp, res))
19998        return false;
19999    return true;
20000  }
20001
20002  protected StructureDefinition.StructureDefinitionContextComponent parseStructureDefinitionStructureDefinitionContextComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
20003    StructureDefinition.StructureDefinitionContextComponent res = new StructureDefinition.StructureDefinitionContextComponent();
20004    parseBackboneAttributes(xpp, res);
20005    next(xpp);
20006    int eventType = nextNoWhitespace(xpp);
20007    while (eventType != XmlPullParser.END_TAG) {
20008  if (!parseStructureDefinitionStructureDefinitionContextComponentContent(eventType, xpp, owner, res))
20009        unknownContent(xpp);
20010      eventType = nextNoWhitespace(xpp);
20011    }
20012    next(xpp);
20013    parseElementClose(res);
20014    return res;
20015  }
20016
20017  protected boolean parseStructureDefinitionStructureDefinitionContextComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20018      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20019        res.setTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContextType.NULL, new StructureDefinition.ExtensionContextTypeEnumFactory()));
20020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
20021        res.setExpressionElement(parseString(xpp));
20022      } else if (!parseBackboneElementContent(eventType, xpp, res))
20023        return false;
20024    return true;
20025  }
20026
20027  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
20028    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
20029    parseBackboneAttributes(xpp, res);
20030    next(xpp);
20031    int eventType = nextNoWhitespace(xpp);
20032    while (eventType != XmlPullParser.END_TAG) {
20033  if (!parseStructureDefinitionStructureDefinitionSnapshotComponentContent(eventType, xpp, owner, res))
20034        unknownContent(xpp);
20035      eventType = nextNoWhitespace(xpp);
20036    }
20037    next(xpp);
20038    parseElementClose(res);
20039    return res;
20040  }
20041
20042  protected boolean parseStructureDefinitionStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20043      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20044        res.getElement().add(parseElementDefinition(xpp));
20045      } else if (!parseBackboneElementContent(eventType, xpp, res))
20046        return false;
20047    return true;
20048  }
20049
20050  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
20051    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
20052    parseBackboneAttributes(xpp, res);
20053    next(xpp);
20054    int eventType = nextNoWhitespace(xpp);
20055    while (eventType != XmlPullParser.END_TAG) {
20056  if (!parseStructureDefinitionStructureDefinitionDifferentialComponentContent(eventType, xpp, owner, res))
20057        unknownContent(xpp);
20058      eventType = nextNoWhitespace(xpp);
20059    }
20060    next(xpp);
20061    parseElementClose(res);
20062    return res;
20063  }
20064
20065  protected boolean parseStructureDefinitionStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20066      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20067        res.getElement().add(parseElementDefinition(xpp));
20068      } else if (!parseBackboneElementContent(eventType, xpp, res))
20069        return false;
20070    return true;
20071  }
20072
20073  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20074    StructureMap res = new StructureMap();
20075    parseDomainResourceAttributes(xpp, res);
20076    next(xpp);
20077    int eventType = nextNoWhitespace(xpp);
20078    while (eventType != XmlPullParser.END_TAG) {
20079  if (!parseStructureMapContent(eventType, xpp, res))
20080        unknownContent(xpp);
20081      eventType = nextNoWhitespace(xpp);
20082    }
20083    next(xpp);
20084    parseElementClose(res);
20085    return res;
20086  }
20087
20088  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
20089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20090        res.setUrlElement(parseUri(xpp));
20091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20092        res.getIdentifier().add(parseIdentifier(xpp));
20093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
20094        res.setVersionElement(parseString(xpp));
20095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20096        res.setNameElement(parseString(xpp));
20097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
20098        res.setTitleElement(parseString(xpp));
20099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20100        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
20101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
20102        res.setExperimentalElement(parseBoolean(xpp));
20103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
20104        res.setDateElement(parseDateTime(xpp));
20105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
20106        res.setPublisherElement(parseString(xpp));
20107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20108        res.getContact().add(parseContactDetail(xpp));
20109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20110        res.setDescriptionElement(parseMarkdown(xpp));
20111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
20112        res.getUseContext().add(parseUsageContext(xpp));
20113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
20114        res.getJurisdiction().add(parseCodeableConcept(xpp));
20115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
20116        res.setPurposeElement(parseMarkdown(xpp));
20117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
20118        res.setCopyrightElement(parseMarkdown(xpp));
20119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
20120        res.getStructure().add(parseStructureMapStructureMapStructureComponent(xpp, res));
20121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
20122        res.getImport().add(parseCanonical(xpp));
20123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
20124        res.getGroup().add(parseStructureMapStructureMapGroupComponent(xpp, res));
20125      } else if (!parseDomainResourceContent(eventType, xpp, res))
20126        return false;
20127    return true;
20128  }
20129
20130  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureMapStructureComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20131    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
20132    parseBackboneAttributes(xpp, res);
20133    next(xpp);
20134    int eventType = nextNoWhitespace(xpp);
20135    while (eventType != XmlPullParser.END_TAG) {
20136  if (!parseStructureMapStructureMapStructureComponentContent(eventType, xpp, owner, res))
20137        unknownContent(xpp);
20138      eventType = nextNoWhitespace(xpp);
20139    }
20140    next(xpp);
20141    parseElementClose(res);
20142    return res;
20143  }
20144
20145  protected boolean parseStructureMapStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20146      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20147        res.setUrlElement(parseCanonical(xpp));
20148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
20149        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
20150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
20151        res.setAliasElement(parseString(xpp));
20152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20153        res.setDocumentationElement(parseString(xpp));
20154      } else if (!parseBackboneElementContent(eventType, xpp, res))
20155        return false;
20156    return true;
20157  }
20158
20159  protected StructureMap.StructureMapGroupComponent parseStructureMapStructureMapGroupComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20160    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
20161    parseBackboneAttributes(xpp, res);
20162    next(xpp);
20163    int eventType = nextNoWhitespace(xpp);
20164    while (eventType != XmlPullParser.END_TAG) {
20165  if (!parseStructureMapStructureMapGroupComponentContent(eventType, xpp, owner, res))
20166        unknownContent(xpp);
20167      eventType = nextNoWhitespace(xpp);
20168    }
20169    next(xpp);
20170    parseElementClose(res);
20171    return res;
20172  }
20173
20174  protected boolean parseStructureMapStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20175      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20176        res.setNameElement(parseId(xpp));
20177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
20178        res.setExtendsElement(parseId(xpp));
20179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
20180        res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
20181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20182        res.setDocumentationElement(parseString(xpp));
20183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
20184        res.getInput().add(parseStructureMapStructureMapGroupInputComponent(xpp, owner));
20185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
20186        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
20187      } else if (!parseBackboneElementContent(eventType, xpp, res))
20188        return false;
20189    return true;
20190  }
20191
20192  protected StructureMap.StructureMapGroupInputComponent parseStructureMapStructureMapGroupInputComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20193    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
20194    parseBackboneAttributes(xpp, res);
20195    next(xpp);
20196    int eventType = nextNoWhitespace(xpp);
20197    while (eventType != XmlPullParser.END_TAG) {
20198  if (!parseStructureMapStructureMapGroupInputComponentContent(eventType, xpp, owner, res))
20199        unknownContent(xpp);
20200      eventType = nextNoWhitespace(xpp);
20201    }
20202    next(xpp);
20203    parseElementClose(res);
20204    return res;
20205  }
20206
20207  protected boolean parseStructureMapStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20208      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20209        res.setNameElement(parseId(xpp));
20210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20211        res.setTypeElement(parseString(xpp));
20212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
20213        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
20214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20215        res.setDocumentationElement(parseString(xpp));
20216      } else if (!parseBackboneElementContent(eventType, xpp, res))
20217        return false;
20218    return true;
20219  }
20220
20221  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapStructureMapGroupRuleComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20222    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
20223    parseBackboneAttributes(xpp, res);
20224    next(xpp);
20225    int eventType = nextNoWhitespace(xpp);
20226    while (eventType != XmlPullParser.END_TAG) {
20227  if (!parseStructureMapStructureMapGroupRuleComponentContent(eventType, xpp, owner, res))
20228        unknownContent(xpp);
20229      eventType = nextNoWhitespace(xpp);
20230    }
20231    next(xpp);
20232    parseElementClose(res);
20233    return res;
20234  }
20235
20236  protected boolean parseStructureMapStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20237      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20238        res.setNameElement(parseId(xpp));
20239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20240        res.getSource().add(parseStructureMapStructureMapGroupRuleSourceComponent(xpp, owner));
20241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20242        res.getTarget().add(parseStructureMapStructureMapGroupRuleTargetComponent(xpp, owner));
20243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
20244        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
20245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
20246        res.getDependent().add(parseStructureMapStructureMapGroupRuleDependentComponent(xpp, owner));
20247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20248        res.setDocumentationElement(parseString(xpp));
20249      } else if (!parseBackboneElementContent(eventType, xpp, res))
20250        return false;
20251    return true;
20252  }
20253
20254  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapStructureMapGroupRuleSourceComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20255    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
20256    parseBackboneAttributes(xpp, res);
20257    next(xpp);
20258    int eventType = nextNoWhitespace(xpp);
20259    while (eventType != XmlPullParser.END_TAG) {
20260  if (!parseStructureMapStructureMapGroupRuleSourceComponentContent(eventType, xpp, owner, res))
20261        unknownContent(xpp);
20262      eventType = nextNoWhitespace(xpp);
20263    }
20264    next(xpp);
20265    parseElementClose(res);
20266    return res;
20267  }
20268
20269  protected boolean parseStructureMapStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20270      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
20271        res.setContextElement(parseId(xpp));
20272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
20273        res.setMinElement(parseInteger(xpp));
20274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
20275        res.setMaxElement(parseString(xpp));
20276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20277        res.setTypeElement(parseString(xpp));
20278      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
20279        res.setDefaultValue(parseType("defaultValue", xpp));
20280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20281        res.setElementElement(parseString(xpp));
20282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
20283        res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
20284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20285        res.setVariableElement(parseId(xpp));
20286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
20287        res.setConditionElement(parseString(xpp));
20288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
20289        res.setCheckElement(parseString(xpp));
20290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("logMessage")) {
20291        res.setLogMessageElement(parseString(xpp));
20292      } else if (!parseBackboneElementContent(eventType, xpp, res))
20293        return false;
20294    return true;
20295  }
20296
20297  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapStructureMapGroupRuleTargetComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20298    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
20299    parseBackboneAttributes(xpp, res);
20300    next(xpp);
20301    int eventType = nextNoWhitespace(xpp);
20302    while (eventType != XmlPullParser.END_TAG) {
20303  if (!parseStructureMapStructureMapGroupRuleTargetComponentContent(eventType, xpp, owner, res))
20304        unknownContent(xpp);
20305      eventType = nextNoWhitespace(xpp);
20306    }
20307    next(xpp);
20308    parseElementClose(res);
20309    return res;
20310  }
20311
20312  protected boolean parseStructureMapStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20313      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
20314        res.setContextElement(parseId(xpp));
20315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
20316        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
20317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20318        res.setElementElement(parseString(xpp));
20319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20320        res.setVariableElement(parseId(xpp));
20321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
20322        res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
20323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
20324        res.setListRuleIdElement(parseId(xpp));
20325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
20326        res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
20327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
20328        res.getParameter().add(parseStructureMapStructureMapGroupRuleTargetParameterComponent(xpp, owner));
20329      } else if (!parseBackboneElementContent(eventType, xpp, res))
20330        return false;
20331    return true;
20332  }
20333
20334  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20335    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
20336    parseBackboneAttributes(xpp, res);
20337    next(xpp);
20338    int eventType = nextNoWhitespace(xpp);
20339    while (eventType != XmlPullParser.END_TAG) {
20340  if (!parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, owner, res))
20341        unknownContent(xpp);
20342      eventType = nextNoWhitespace(xpp);
20343    }
20344    next(xpp);
20345    parseElementClose(res);
20346    return res;
20347  }
20348
20349  protected boolean parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20350      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
20351        res.setValue(parseType("value", xpp));
20352      } else if (!parseBackboneElementContent(eventType, xpp, res))
20353        return false;
20354    return true;
20355  }
20356
20357  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapStructureMapGroupRuleDependentComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20358    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
20359    parseBackboneAttributes(xpp, res);
20360    next(xpp);
20361    int eventType = nextNoWhitespace(xpp);
20362    while (eventType != XmlPullParser.END_TAG) {
20363  if (!parseStructureMapStructureMapGroupRuleDependentComponentContent(eventType, xpp, owner, res))
20364        unknownContent(xpp);
20365      eventType = nextNoWhitespace(xpp);
20366    }
20367    next(xpp);
20368    parseElementClose(res);
20369    return res;
20370  }
20371
20372  protected boolean parseStructureMapStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20373      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20374        res.setNameElement(parseId(xpp));
20375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20376        res.getVariable().add(parseString(xpp));
20377      } else if (!parseBackboneElementContent(eventType, xpp, res))
20378        return false;
20379    return true;
20380  }
20381
20382  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20383    Subscription res = new Subscription();
20384    parseDomainResourceAttributes(xpp, res);
20385    next(xpp);
20386    int eventType = nextNoWhitespace(xpp);
20387    while (eventType != XmlPullParser.END_TAG) {
20388  if (!parseSubscriptionContent(eventType, xpp, res))
20389        unknownContent(xpp);
20390      eventType = nextNoWhitespace(xpp);
20391    }
20392    next(xpp);
20393    parseElementClose(res);
20394    return res;
20395  }
20396
20397  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
20398      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20399        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
20400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20401        res.getContact().add(parseContactPoint(xpp));
20402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
20403        res.setEndElement(parseInstant(xpp));
20404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
20405        res.setReasonElement(parseString(xpp));
20406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
20407        res.setCriteriaElement(parseString(xpp));
20408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
20409        res.setErrorElement(parseString(xpp));
20410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
20411        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
20412      } else if (!parseDomainResourceContent(eventType, xpp, res))
20413        return false;
20414    return true;
20415  }
20416
20417  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
20418    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
20419    parseBackboneAttributes(xpp, res);
20420    next(xpp);
20421    int eventType = nextNoWhitespace(xpp);
20422    while (eventType != XmlPullParser.END_TAG) {
20423  if (!parseSubscriptionSubscriptionChannelComponentContent(eventType, xpp, owner, res))
20424        unknownContent(xpp);
20425      eventType = nextNoWhitespace(xpp);
20426    }
20427    next(xpp);
20428    parseElementClose(res);
20429    return res;
20430  }
20431
20432  protected boolean parseSubscriptionSubscriptionChannelComponentContent(int eventType, XmlPullParser xpp, Subscription owner, Subscription.SubscriptionChannelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20433      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20434        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
20435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
20436        res.setEndpointElement(parseUrl(xpp));
20437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
20438        res.setPayloadElement(parseCode(xpp));
20439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
20440        res.getHeader().add(parseString(xpp));
20441      } else if (!parseBackboneElementContent(eventType, xpp, res))
20442        return false;
20443    return true;
20444  }
20445
20446  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20447    Substance res = new Substance();
20448    parseDomainResourceAttributes(xpp, res);
20449    next(xpp);
20450    int eventType = nextNoWhitespace(xpp);
20451    while (eventType != XmlPullParser.END_TAG) {
20452  if (!parseSubstanceContent(eventType, xpp, res))
20453        unknownContent(xpp);
20454      eventType = nextNoWhitespace(xpp);
20455    }
20456    next(xpp);
20457    parseElementClose(res);
20458    return res;
20459  }
20460
20461  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
20462      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20463        res.getIdentifier().add(parseIdentifier(xpp));
20464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20465        res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
20466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
20467        res.getCategory().add(parseCodeableConcept(xpp));
20468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20469        res.setCode(parseCodeableConcept(xpp));
20470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20471        res.setDescriptionElement(parseString(xpp));
20472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
20473        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
20474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
20475        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
20476      } else if (!parseDomainResourceContent(eventType, xpp, res))
20477        return false;
20478    return true;
20479  }
20480
20481  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
20482    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
20483    parseBackboneAttributes(xpp, res);
20484    next(xpp);
20485    int eventType = nextNoWhitespace(xpp);
20486    while (eventType != XmlPullParser.END_TAG) {
20487  if (!parseSubstanceSubstanceInstanceComponentContent(eventType, xpp, owner, res))
20488        unknownContent(xpp);
20489      eventType = nextNoWhitespace(xpp);
20490    }
20491    next(xpp);
20492    parseElementClose(res);
20493    return res;
20494  }
20495
20496  protected boolean parseSubstanceSubstanceInstanceComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20497      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20498        res.setIdentifier(parseIdentifier(xpp));
20499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
20500        res.setExpiryElement(parseDateTime(xpp));
20501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20502        res.setQuantity(parseQuantity(xpp));
20503      } else if (!parseBackboneElementContent(eventType, xpp, res))
20504        return false;
20505    return true;
20506  }
20507
20508  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
20509    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
20510    parseBackboneAttributes(xpp, res);
20511    next(xpp);
20512    int eventType = nextNoWhitespace(xpp);
20513    while (eventType != XmlPullParser.END_TAG) {
20514  if (!parseSubstanceSubstanceIngredientComponentContent(eventType, xpp, owner, res))
20515        unknownContent(xpp);
20516      eventType = nextNoWhitespace(xpp);
20517    }
20518    next(xpp);
20519    parseElementClose(res);
20520    return res;
20521  }
20522
20523  protected boolean parseSubstanceSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20524      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20525        res.setQuantity(parseRatio(xpp));
20526      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
20527        res.setSubstance(parseType("substance", xpp));
20528      } else if (!parseBackboneElementContent(eventType, xpp, res))
20529        return false;
20530    return true;
20531  }
20532
20533  protected SubstanceNucleicAcid parseSubstanceNucleicAcid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20534    SubstanceNucleicAcid res = new SubstanceNucleicAcid();
20535    parseDomainResourceAttributes(xpp, res);
20536    next(xpp);
20537    int eventType = nextNoWhitespace(xpp);
20538    while (eventType != XmlPullParser.END_TAG) {
20539  if (!parseSubstanceNucleicAcidContent(eventType, xpp, res))
20540        unknownContent(xpp);
20541      eventType = nextNoWhitespace(xpp);
20542    }
20543    next(xpp);
20544    parseElementClose(res);
20545    return res;
20546  }
20547
20548  protected boolean parseSubstanceNucleicAcidContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid res) throws XmlPullParserException, IOException, FHIRFormatError {
20549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceType")) {
20550        res.setSequenceType(parseCodeableConcept(xpp));
20551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSubunits")) {
20552        res.setNumberOfSubunitsElement(parseInteger(xpp));
20553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("areaOfHybridisation")) {
20554        res.setAreaOfHybridisationElement(parseString(xpp));
20555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oligoNucleotideType")) {
20556        res.setOligoNucleotideType(parseCodeableConcept(xpp));
20557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20558        res.getSubunit().add(parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(xpp, res));
20559      } else if (!parseDomainResourceContent(eventType, xpp, res))
20560        return false;
20561    return true;
20562  }
20563
20564  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(XmlPullParser xpp, SubstanceNucleicAcid owner) throws XmlPullParserException, IOException, FHIRFormatError {
20565    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent();
20566    parseBackboneAttributes(xpp, res);
20567    next(xpp);
20568    int eventType = nextNoWhitespace(xpp);
20569    while (eventType != XmlPullParser.END_TAG) {
20570  if (!parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentContent(eventType, xpp, owner, res))
20571        unknownContent(xpp);
20572      eventType = nextNoWhitespace(xpp);
20573    }
20574    next(xpp);
20575    parseElementClose(res);
20576    return res;
20577  }
20578
20579  protected boolean parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid owner, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20580      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20581        res.setSubunitElement(parseInteger(xpp));
20582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
20583        res.setSequenceElement(parseString(xpp));
20584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
20585        res.setLengthElement(parseInteger(xpp));
20586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceAttachment")) {
20587        res.setSequenceAttachment(parseAttachment(xpp));
20588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fivePrime")) {
20589        res.setFivePrime(parseCodeableConcept(xpp));
20590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("threePrime")) {
20591        res.setThreePrime(parseCodeableConcept(xpp));
20592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkage")) {
20593        res.getLinkage().add(parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(xpp, owner));
20594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sugar")) {
20595        res.getSugar().add(parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(xpp, owner));
20596      } else if (!parseBackboneElementContent(eventType, xpp, res))
20597        return false;
20598    return true;
20599  }
20600
20601  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(XmlPullParser xpp, SubstanceNucleicAcid owner) throws XmlPullParserException, IOException, FHIRFormatError {
20602    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent();
20603    parseBackboneAttributes(xpp, res);
20604    next(xpp);
20605    int eventType = nextNoWhitespace(xpp);
20606    while (eventType != XmlPullParser.END_TAG) {
20607  if (!parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentContent(eventType, xpp, owner, res))
20608        unknownContent(xpp);
20609      eventType = nextNoWhitespace(xpp);
20610    }
20611    next(xpp);
20612    parseElementClose(res);
20613    return res;
20614  }
20615
20616  protected boolean parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid owner, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20617      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectivity")) {
20618        res.setConnectivityElement(parseString(xpp));
20619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20620        res.setIdentifier(parseIdentifier(xpp));
20621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20622        res.setNameElement(parseString(xpp));
20623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("residueSite")) {
20624        res.setResidueSiteElement(parseString(xpp));
20625      } else if (!parseBackboneElementContent(eventType, xpp, res))
20626        return false;
20627    return true;
20628  }
20629
20630  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(XmlPullParser xpp, SubstanceNucleicAcid owner) throws XmlPullParserException, IOException, FHIRFormatError {
20631    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent();
20632    parseBackboneAttributes(xpp, res);
20633    next(xpp);
20634    int eventType = nextNoWhitespace(xpp);
20635    while (eventType != XmlPullParser.END_TAG) {
20636  if (!parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentContent(eventType, xpp, owner, res))
20637        unknownContent(xpp);
20638      eventType = nextNoWhitespace(xpp);
20639    }
20640    next(xpp);
20641    parseElementClose(res);
20642    return res;
20643  }
20644
20645  protected boolean parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid owner, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20646      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20647        res.setIdentifier(parseIdentifier(xpp));
20648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20649        res.setNameElement(parseString(xpp));
20650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("residueSite")) {
20651        res.setResidueSiteElement(parseString(xpp));
20652      } else if (!parseBackboneElementContent(eventType, xpp, res))
20653        return false;
20654    return true;
20655  }
20656
20657  protected SubstancePolymer parseSubstancePolymer(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20658    SubstancePolymer res = new SubstancePolymer();
20659    parseDomainResourceAttributes(xpp, res);
20660    next(xpp);
20661    int eventType = nextNoWhitespace(xpp);
20662    while (eventType != XmlPullParser.END_TAG) {
20663  if (!parseSubstancePolymerContent(eventType, xpp, res))
20664        unknownContent(xpp);
20665      eventType = nextNoWhitespace(xpp);
20666    }
20667    next(xpp);
20668    parseElementClose(res);
20669    return res;
20670  }
20671
20672  protected boolean parseSubstancePolymerContent(int eventType, XmlPullParser xpp, SubstancePolymer res) throws XmlPullParserException, IOException, FHIRFormatError {
20673      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
20674        res.setClass_(parseCodeableConcept(xpp));
20675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geometry")) {
20676        res.setGeometry(parseCodeableConcept(xpp));
20677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copolymerConnectivity")) {
20678        res.getCopolymerConnectivity().add(parseCodeableConcept(xpp));
20679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modification")) {
20680        res.getModification().add(parseString(xpp));
20681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monomerSet")) {
20682        res.getMonomerSet().add(parseSubstancePolymerSubstancePolymerMonomerSetComponent(xpp, res));
20683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
20684        res.getRepeat().add(parseSubstancePolymerSubstancePolymerRepeatComponent(xpp, res));
20685      } else if (!parseDomainResourceContent(eventType, xpp, res))
20686        return false;
20687    return true;
20688  }
20689
20690  protected SubstancePolymer.SubstancePolymerMonomerSetComponent parseSubstancePolymerSubstancePolymerMonomerSetComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20691    SubstancePolymer.SubstancePolymerMonomerSetComponent res = new SubstancePolymer.SubstancePolymerMonomerSetComponent();
20692    parseBackboneAttributes(xpp, res);
20693    next(xpp);
20694    int eventType = nextNoWhitespace(xpp);
20695    while (eventType != XmlPullParser.END_TAG) {
20696  if (!parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(eventType, xpp, owner, res))
20697        unknownContent(xpp);
20698      eventType = nextNoWhitespace(xpp);
20699    }
20700    next(xpp);
20701    parseElementClose(res);
20702    return res;
20703  }
20704
20705  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20706      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ratioType")) {
20707        res.setRatioType(parseCodeableConcept(xpp));
20708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startingMaterial")) {
20709        res.getStartingMaterial().add(parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(xpp, owner));
20710      } else if (!parseBackboneElementContent(eventType, xpp, res))
20711        return false;
20712    return true;
20713  }
20714
20715  protected SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20716    SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res = new SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent();
20717    parseBackboneAttributes(xpp, res);
20718    next(xpp);
20719    int eventType = nextNoWhitespace(xpp);
20720    while (eventType != XmlPullParser.END_TAG) {
20721  if (!parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(eventType, xpp, owner, res))
20722        unknownContent(xpp);
20723      eventType = nextNoWhitespace(xpp);
20724    }
20725    next(xpp);
20726    parseElementClose(res);
20727    return res;
20728  }
20729
20730  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20731      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
20732        res.setMaterial(parseCodeableConcept(xpp));
20733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20734        res.setType(parseCodeableConcept(xpp));
20735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
20736        res.setIsDefiningElement(parseBoolean(xpp));
20737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20738        res.setAmount(parseSubstanceAmount(xpp));
20739      } else if (!parseBackboneElementContent(eventType, xpp, res))
20740        return false;
20741    return true;
20742  }
20743
20744  protected SubstancePolymer.SubstancePolymerRepeatComponent parseSubstancePolymerSubstancePolymerRepeatComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20745    SubstancePolymer.SubstancePolymerRepeatComponent res = new SubstancePolymer.SubstancePolymerRepeatComponent();
20746    parseBackboneAttributes(xpp, res);
20747    next(xpp);
20748    int eventType = nextNoWhitespace(xpp);
20749    while (eventType != XmlPullParser.END_TAG) {
20750  if (!parseSubstancePolymerSubstancePolymerRepeatComponentContent(eventType, xpp, owner, res))
20751        unknownContent(xpp);
20752      eventType = nextNoWhitespace(xpp);
20753    }
20754    next(xpp);
20755    parseElementClose(res);
20756    return res;
20757  }
20758
20759  protected boolean parseSubstancePolymerSubstancePolymerRepeatComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20760      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfUnits")) {
20761        res.setNumberOfUnitsElement(parseInteger(xpp));
20762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("averageMolecularFormula")) {
20763        res.setAverageMolecularFormulaElement(parseString(xpp));
20764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnitAmountType")) {
20765        res.setRepeatUnitAmountType(parseCodeableConcept(xpp));
20766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
20767        res.getRepeatUnit().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(xpp, owner));
20768      } else if (!parseBackboneElementContent(eventType, xpp, res))
20769        return false;
20770    return true;
20771  }
20772
20773  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20774    SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent();
20775    parseBackboneAttributes(xpp, res);
20776    next(xpp);
20777    int eventType = nextNoWhitespace(xpp);
20778    while (eventType != XmlPullParser.END_TAG) {
20779  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(eventType, xpp, owner, res))
20780        unknownContent(xpp);
20781      eventType = nextNoWhitespace(xpp);
20782    }
20783    next(xpp);
20784    parseElementClose(res);
20785    return res;
20786  }
20787
20788  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20789      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientationOfPolymerisation")) {
20790        res.setOrientationOfPolymerisation(parseCodeableConcept(xpp));
20791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
20792        res.setRepeatUnitElement(parseString(xpp));
20793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20794        res.setAmount(parseSubstanceAmount(xpp));
20795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degreeOfPolymerisation")) {
20796        res.getDegreeOfPolymerisation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(xpp, owner));
20797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structuralRepresentation")) {
20798        res.getStructuralRepresentation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(xpp, owner));
20799      } else if (!parseBackboneElementContent(eventType, xpp, res))
20800        return false;
20801    return true;
20802  }
20803
20804  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20805    SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent();
20806    parseBackboneAttributes(xpp, res);
20807    next(xpp);
20808    int eventType = nextNoWhitespace(xpp);
20809    while (eventType != XmlPullParser.END_TAG) {
20810  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(eventType, xpp, owner, res))
20811        unknownContent(xpp);
20812      eventType = nextNoWhitespace(xpp);
20813    }
20814    next(xpp);
20815    parseElementClose(res);
20816    return res;
20817  }
20818
20819  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20820      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degree")) {
20821        res.setDegree(parseCodeableConcept(xpp));
20822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20823        res.setAmount(parseSubstanceAmount(xpp));
20824      } else if (!parseBackboneElementContent(eventType, xpp, res))
20825        return false;
20826    return true;
20827  }
20828
20829  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20830    SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent();
20831    parseBackboneAttributes(xpp, res);
20832    next(xpp);
20833    int eventType = nextNoWhitespace(xpp);
20834    while (eventType != XmlPullParser.END_TAG) {
20835  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(eventType, xpp, owner, res))
20836        unknownContent(xpp);
20837      eventType = nextNoWhitespace(xpp);
20838    }
20839    next(xpp);
20840    parseElementClose(res);
20841    return res;
20842  }
20843
20844  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20845      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20846        res.setType(parseCodeableConcept(xpp));
20847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
20848        res.setRepresentationElement(parseString(xpp));
20849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
20850        res.setAttachment(parseAttachment(xpp));
20851      } else if (!parseBackboneElementContent(eventType, xpp, res))
20852        return false;
20853    return true;
20854  }
20855
20856  protected SubstanceProtein parseSubstanceProtein(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20857    SubstanceProtein res = new SubstanceProtein();
20858    parseDomainResourceAttributes(xpp, res);
20859    next(xpp);
20860    int eventType = nextNoWhitespace(xpp);
20861    while (eventType != XmlPullParser.END_TAG) {
20862  if (!parseSubstanceProteinContent(eventType, xpp, res))
20863        unknownContent(xpp);
20864      eventType = nextNoWhitespace(xpp);
20865    }
20866    next(xpp);
20867    parseElementClose(res);
20868    return res;
20869  }
20870
20871  protected boolean parseSubstanceProteinContent(int eventType, XmlPullParser xpp, SubstanceProtein res) throws XmlPullParserException, IOException, FHIRFormatError {
20872      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceType")) {
20873        res.setSequenceType(parseCodeableConcept(xpp));
20874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSubunits")) {
20875        res.setNumberOfSubunitsElement(parseInteger(xpp));
20876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disulfideLinkage")) {
20877        res.getDisulfideLinkage().add(parseString(xpp));
20878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20879        res.getSubunit().add(parseSubstanceProteinSubstanceProteinSubunitComponent(xpp, res));
20880      } else if (!parseDomainResourceContent(eventType, xpp, res))
20881        return false;
20882    return true;
20883  }
20884
20885  protected SubstanceProtein.SubstanceProteinSubunitComponent parseSubstanceProteinSubstanceProteinSubunitComponent(XmlPullParser xpp, SubstanceProtein owner) throws XmlPullParserException, IOException, FHIRFormatError {
20886    SubstanceProtein.SubstanceProteinSubunitComponent res = new SubstanceProtein.SubstanceProteinSubunitComponent();
20887    parseBackboneAttributes(xpp, res);
20888    next(xpp);
20889    int eventType = nextNoWhitespace(xpp);
20890    while (eventType != XmlPullParser.END_TAG) {
20891  if (!parseSubstanceProteinSubstanceProteinSubunitComponentContent(eventType, xpp, owner, res))
20892        unknownContent(xpp);
20893      eventType = nextNoWhitespace(xpp);
20894    }
20895    next(xpp);
20896    parseElementClose(res);
20897    return res;
20898  }
20899
20900  protected boolean parseSubstanceProteinSubstanceProteinSubunitComponentContent(int eventType, XmlPullParser xpp, SubstanceProtein owner, SubstanceProtein.SubstanceProteinSubunitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20901      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20902        res.setSubunitElement(parseInteger(xpp));
20903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
20904        res.setSequenceElement(parseString(xpp));
20905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
20906        res.setLengthElement(parseInteger(xpp));
20907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceAttachment")) {
20908        res.setSequenceAttachment(parseAttachment(xpp));
20909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nTerminalModificationId")) {
20910        res.setNTerminalModificationId(parseIdentifier(xpp));
20911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nTerminalModification")) {
20912        res.setNTerminalModificationElement(parseString(xpp));
20913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cTerminalModificationId")) {
20914        res.setCTerminalModificationId(parseIdentifier(xpp));
20915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cTerminalModification")) {
20916        res.setCTerminalModificationElement(parseString(xpp));
20917      } else if (!parseBackboneElementContent(eventType, xpp, res))
20918        return false;
20919    return true;
20920  }
20921
20922  protected SubstanceReferenceInformation parseSubstanceReferenceInformation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20923    SubstanceReferenceInformation res = new SubstanceReferenceInformation();
20924    parseDomainResourceAttributes(xpp, res);
20925    next(xpp);
20926    int eventType = nextNoWhitespace(xpp);
20927    while (eventType != XmlPullParser.END_TAG) {
20928  if (!parseSubstanceReferenceInformationContent(eventType, xpp, res))
20929        unknownContent(xpp);
20930      eventType = nextNoWhitespace(xpp);
20931    }
20932    next(xpp);
20933    parseElementClose(res);
20934    return res;
20935  }
20936
20937  protected boolean parseSubstanceReferenceInformationContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation res) throws XmlPullParserException, IOException, FHIRFormatError {
20938      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20939        res.setCommentElement(parseString(xpp));
20940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
20941        res.getGene().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(xpp, res));
20942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneElement")) {
20943        res.getGeneElement().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(xpp, res));
20944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
20945        res.getClassification().add(parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(xpp, res));
20946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20947        res.getTarget().add(parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(xpp, res));
20948      } else if (!parseDomainResourceContent(eventType, xpp, res))
20949        return false;
20950    return true;
20951  }
20952
20953  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20954    SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent();
20955    parseBackboneAttributes(xpp, res);
20956    next(xpp);
20957    int eventType = nextNoWhitespace(xpp);
20958    while (eventType != XmlPullParser.END_TAG) {
20959  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(eventType, xpp, owner, res))
20960        unknownContent(xpp);
20961      eventType = nextNoWhitespace(xpp);
20962    }
20963    next(xpp);
20964    parseElementClose(res);
20965    return res;
20966  }
20967
20968  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20969      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneSequenceOrigin")) {
20970        res.setGeneSequenceOrigin(parseCodeableConcept(xpp));
20971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
20972        res.setGene(parseCodeableConcept(xpp));
20973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20974        res.getSource().add(parseReference(xpp));
20975      } else if (!parseBackboneElementContent(eventType, xpp, res))
20976        return false;
20977    return true;
20978  }
20979
20980  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20981    SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent();
20982    parseBackboneAttributes(xpp, res);
20983    next(xpp);
20984    int eventType = nextNoWhitespace(xpp);
20985    while (eventType != XmlPullParser.END_TAG) {
20986  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(eventType, xpp, owner, res))
20987        unknownContent(xpp);
20988      eventType = nextNoWhitespace(xpp);
20989    }
20990    next(xpp);
20991    parseElementClose(res);
20992    return res;
20993  }
20994
20995  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20996      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20997        res.setType(parseCodeableConcept(xpp));
20998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20999        res.setElement(parseIdentifier(xpp));
21000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21001        res.getSource().add(parseReference(xpp));
21002      } else if (!parseBackboneElementContent(eventType, xpp, res))
21003        return false;
21004    return true;
21005  }
21006
21007  protected SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
21008    SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent();
21009    parseBackboneAttributes(xpp, res);
21010    next(xpp);
21011    int eventType = nextNoWhitespace(xpp);
21012    while (eventType != XmlPullParser.END_TAG) {
21013  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(eventType, xpp, owner, res))
21014        unknownContent(xpp);
21015      eventType = nextNoWhitespace(xpp);
21016    }
21017    next(xpp);
21018    parseElementClose(res);
21019    return res;
21020  }
21021
21022  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21023      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
21024        res.setDomain(parseCodeableConcept(xpp));
21025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
21026        res.setClassification(parseCodeableConcept(xpp));
21027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
21028        res.getSubtype().add(parseCodeableConcept(xpp));
21029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21030        res.getSource().add(parseReference(xpp));
21031      } else if (!parseBackboneElementContent(eventType, xpp, res))
21032        return false;
21033    return true;
21034  }
21035
21036  protected SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
21037    SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent();
21038    parseBackboneAttributes(xpp, res);
21039    next(xpp);
21040    int eventType = nextNoWhitespace(xpp);
21041    while (eventType != XmlPullParser.END_TAG) {
21042  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(eventType, xpp, owner, res))
21043        unknownContent(xpp);
21044      eventType = nextNoWhitespace(xpp);
21045    }
21046    next(xpp);
21047    parseElementClose(res);
21048    return res;
21049  }
21050
21051  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21052      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
21053        res.setTarget(parseIdentifier(xpp));
21054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21055        res.setType(parseCodeableConcept(xpp));
21056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
21057        res.setInteraction(parseCodeableConcept(xpp));
21058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
21059        res.setOrganism(parseCodeableConcept(xpp));
21060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismType")) {
21061        res.setOrganismType(parseCodeableConcept(xpp));
21062      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21063        res.setAmount(parseType("amount", xpp));
21064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
21065        res.setAmountType(parseCodeableConcept(xpp));
21066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21067        res.getSource().add(parseReference(xpp));
21068      } else if (!parseBackboneElementContent(eventType, xpp, res))
21069        return false;
21070    return true;
21071  }
21072
21073  protected SubstanceSourceMaterial parseSubstanceSourceMaterial(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21074    SubstanceSourceMaterial res = new SubstanceSourceMaterial();
21075    parseDomainResourceAttributes(xpp, res);
21076    next(xpp);
21077    int eventType = nextNoWhitespace(xpp);
21078    while (eventType != XmlPullParser.END_TAG) {
21079  if (!parseSubstanceSourceMaterialContent(eventType, xpp, res))
21080        unknownContent(xpp);
21081      eventType = nextNoWhitespace(xpp);
21082    }
21083    next(xpp);
21084    parseElementClose(res);
21085    return res;
21086  }
21087
21088  protected boolean parseSubstanceSourceMaterialContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial res) throws XmlPullParserException, IOException, FHIRFormatError {
21089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialClass")) {
21090        res.setSourceMaterialClass(parseCodeableConcept(xpp));
21091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialType")) {
21092        res.setSourceMaterialType(parseCodeableConcept(xpp));
21093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialState")) {
21094        res.setSourceMaterialState(parseCodeableConcept(xpp));
21095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismId")) {
21096        res.setOrganismId(parseIdentifier(xpp));
21097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismName")) {
21098        res.setOrganismNameElement(parseString(xpp));
21099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentSubstanceId")) {
21100        res.getParentSubstanceId().add(parseIdentifier(xpp));
21101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentSubstanceName")) {
21102        res.getParentSubstanceName().add(parseString(xpp));
21103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryOfOrigin")) {
21104        res.getCountryOfOrigin().add(parseCodeableConcept(xpp));
21105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geographicalLocation")) {
21106        res.getGeographicalLocation().add(parseString(xpp));
21107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("developmentStage")) {
21108        res.setDevelopmentStage(parseCodeableConcept(xpp));
21109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fractionDescription")) {
21110        res.getFractionDescription().add(parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(xpp, res));
21111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
21112        res.setOrganism(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(xpp, res));
21113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partDescription")) {
21114        res.getPartDescription().add(parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(xpp, res));
21115      } else if (!parseDomainResourceContent(eventType, xpp, res))
21116        return false;
21117    return true;
21118  }
21119
21120  protected SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21121    SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent();
21122    parseBackboneAttributes(xpp, res);
21123    next(xpp);
21124    int eventType = nextNoWhitespace(xpp);
21125    while (eventType != XmlPullParser.END_TAG) {
21126  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentContent(eventType, xpp, owner, res))
21127        unknownContent(xpp);
21128      eventType = nextNoWhitespace(xpp);
21129    }
21130    next(xpp);
21131    parseElementClose(res);
21132    return res;
21133  }
21134
21135  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fraction")) {
21137        res.setFractionElement(parseString(xpp));
21138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("materialType")) {
21139        res.setMaterialType(parseCodeableConcept(xpp));
21140      } else if (!parseBackboneElementContent(eventType, xpp, res))
21141        return false;
21142    return true;
21143  }
21144
21145  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21146    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent();
21147    parseBackboneAttributes(xpp, res);
21148    next(xpp);
21149    int eventType = nextNoWhitespace(xpp);
21150    while (eventType != XmlPullParser.END_TAG) {
21151  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentContent(eventType, xpp, owner, res))
21152        unknownContent(xpp);
21153      eventType = nextNoWhitespace(xpp);
21154    }
21155    next(xpp);
21156    parseElementClose(res);
21157    return res;
21158  }
21159
21160  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21161      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
21162        res.setFamily(parseCodeableConcept(xpp));
21163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genus")) {
21164        res.setGenus(parseCodeableConcept(xpp));
21165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
21166        res.setSpecies(parseCodeableConcept(xpp));
21167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intraspecificType")) {
21168        res.setIntraspecificType(parseCodeableConcept(xpp));
21169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intraspecificDescription")) {
21170        res.setIntraspecificDescriptionElement(parseString(xpp));
21171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
21172        res.getAuthor().add(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(xpp, owner));
21173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hybrid")) {
21174        res.setHybrid(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(xpp, owner));
21175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismGeneral")) {
21176        res.setOrganismGeneral(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(xpp, owner));
21177      } else if (!parseBackboneElementContent(eventType, xpp, res))
21178        return false;
21179    return true;
21180  }
21181
21182  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21183    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent();
21184    parseBackboneAttributes(xpp, res);
21185    next(xpp);
21186    int eventType = nextNoWhitespace(xpp);
21187    while (eventType != XmlPullParser.END_TAG) {
21188  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentContent(eventType, xpp, owner, res))
21189        unknownContent(xpp);
21190      eventType = nextNoWhitespace(xpp);
21191    }
21192    next(xpp);
21193    parseElementClose(res);
21194    return res;
21195  }
21196
21197  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21198      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorType")) {
21199        res.setAuthorType(parseCodeableConcept(xpp));
21200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorDescription")) {
21201        res.setAuthorDescriptionElement(parseString(xpp));
21202      } else if (!parseBackboneElementContent(eventType, xpp, res))
21203        return false;
21204    return true;
21205  }
21206
21207  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21208    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent();
21209    parseBackboneAttributes(xpp, res);
21210    next(xpp);
21211    int eventType = nextNoWhitespace(xpp);
21212    while (eventType != XmlPullParser.END_TAG) {
21213  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentContent(eventType, xpp, owner, res))
21214        unknownContent(xpp);
21215      eventType = nextNoWhitespace(xpp);
21216    }
21217    next(xpp);
21218    parseElementClose(res);
21219    return res;
21220  }
21221
21222  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21223      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maternalOrganismId")) {
21224        res.setMaternalOrganismIdElement(parseString(xpp));
21225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maternalOrganismName")) {
21226        res.setMaternalOrganismNameElement(parseString(xpp));
21227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paternalOrganismId")) {
21228        res.setPaternalOrganismIdElement(parseString(xpp));
21229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paternalOrganismName")) {
21230        res.setPaternalOrganismNameElement(parseString(xpp));
21231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hybridType")) {
21232        res.setHybridType(parseCodeableConcept(xpp));
21233      } else if (!parseBackboneElementContent(eventType, xpp, res))
21234        return false;
21235    return true;
21236  }
21237
21238  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21239    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent();
21240    parseBackboneAttributes(xpp, res);
21241    next(xpp);
21242    int eventType = nextNoWhitespace(xpp);
21243    while (eventType != XmlPullParser.END_TAG) {
21244  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentContent(eventType, xpp, owner, res))
21245        unknownContent(xpp);
21246      eventType = nextNoWhitespace(xpp);
21247    }
21248    next(xpp);
21249    parseElementClose(res);
21250    return res;
21251  }
21252
21253  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21254      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kingdom")) {
21255        res.setKingdom(parseCodeableConcept(xpp));
21256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phylum")) {
21257        res.setPhylum(parseCodeableConcept(xpp));
21258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
21259        res.setClass_(parseCodeableConcept(xpp));
21260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
21261        res.setOrder(parseCodeableConcept(xpp));
21262      } else if (!parseBackboneElementContent(eventType, xpp, res))
21263        return false;
21264    return true;
21265  }
21266
21267  protected SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21268    SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent();
21269    parseBackboneAttributes(xpp, res);
21270    next(xpp);
21271    int eventType = nextNoWhitespace(xpp);
21272    while (eventType != XmlPullParser.END_TAG) {
21273  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentContent(eventType, xpp, owner, res))
21274        unknownContent(xpp);
21275      eventType = nextNoWhitespace(xpp);
21276    }
21277    next(xpp);
21278    parseElementClose(res);
21279    return res;
21280  }
21281
21282  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21283      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
21284        res.setPart(parseCodeableConcept(xpp));
21285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partLocation")) {
21286        res.setPartLocation(parseCodeableConcept(xpp));
21287      } else if (!parseBackboneElementContent(eventType, xpp, res))
21288        return false;
21289    return true;
21290  }
21291
21292  protected SubstanceSpecification parseSubstanceSpecification(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21293    SubstanceSpecification res = new SubstanceSpecification();
21294    parseDomainResourceAttributes(xpp, res);
21295    next(xpp);
21296    int eventType = nextNoWhitespace(xpp);
21297    while (eventType != XmlPullParser.END_TAG) {
21298  if (!parseSubstanceSpecificationContent(eventType, xpp, res))
21299        unknownContent(xpp);
21300      eventType = nextNoWhitespace(xpp);
21301    }
21302    next(xpp);
21303    parseElementClose(res);
21304    return res;
21305  }
21306
21307  protected boolean parseSubstanceSpecificationContent(int eventType, XmlPullParser xpp, SubstanceSpecification res) throws XmlPullParserException, IOException, FHIRFormatError {
21308      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21309        res.setIdentifier(parseIdentifier(xpp));
21310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21311        res.setType(parseCodeableConcept(xpp));
21312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21313        res.setStatus(parseCodeableConcept(xpp));
21314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
21315        res.setDomain(parseCodeableConcept(xpp));
21316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21317        res.setDescriptionElement(parseString(xpp));
21318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21319        res.getSource().add(parseReference(xpp));
21320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21321        res.setCommentElement(parseString(xpp));
21322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moiety")) {
21323        res.getMoiety().add(parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(xpp, res));
21324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
21325        res.getProperty().add(parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(xpp, res));
21326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceInformation")) {
21327        res.setReferenceInformation(parseReference(xpp));
21328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
21329        res.setStructure(parseSubstanceSpecificationSubstanceSpecificationStructureComponent(xpp, res));
21330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21331        res.getCode().add(parseSubstanceSpecificationSubstanceSpecificationCodeComponent(xpp, res));
21332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21333        res.getName().add(parseSubstanceSpecificationSubstanceSpecificationNameComponent(xpp, res));
21334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
21335        res.getMolecularWeight().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, res));
21336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
21337        res.getRelationship().add(parseSubstanceSpecificationSubstanceSpecificationRelationshipComponent(xpp, res));
21338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nucleicAcid")) {
21339        res.setNucleicAcid(parseReference(xpp));
21340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("polymer")) {
21341        res.setPolymer(parseReference(xpp));
21342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protein")) {
21343        res.setProtein(parseReference(xpp));
21344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterial")) {
21345        res.setSourceMaterial(parseReference(xpp));
21346      } else if (!parseDomainResourceContent(eventType, xpp, res))
21347        return false;
21348    return true;
21349  }
21350
21351  protected SubstanceSpecification.SubstanceSpecificationMoietyComponent parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21352    SubstanceSpecification.SubstanceSpecificationMoietyComponent res = new SubstanceSpecification.SubstanceSpecificationMoietyComponent();
21353    parseBackboneAttributes(xpp, res);
21354    next(xpp);
21355    int eventType = nextNoWhitespace(xpp);
21356    while (eventType != XmlPullParser.END_TAG) {
21357  if (!parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(eventType, xpp, owner, res))
21358        unknownContent(xpp);
21359      eventType = nextNoWhitespace(xpp);
21360    }
21361    next(xpp);
21362    parseElementClose(res);
21363    return res;
21364  }
21365
21366  protected boolean parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationMoietyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21367      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
21368        res.setRole(parseCodeableConcept(xpp));
21369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21370        res.setIdentifier(parseIdentifier(xpp));
21371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21372        res.setNameElement(parseString(xpp));
21373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
21374        res.setStereochemistry(parseCodeableConcept(xpp));
21375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
21376        res.setOpticalActivity(parseCodeableConcept(xpp));
21377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
21378        res.setMolecularFormulaElement(parseString(xpp));
21379      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21380        res.setAmount(parseType("amount", xpp));
21381      } else if (!parseBackboneElementContent(eventType, xpp, res))
21382        return false;
21383    return true;
21384  }
21385
21386  protected SubstanceSpecification.SubstanceSpecificationPropertyComponent parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21387    SubstanceSpecification.SubstanceSpecificationPropertyComponent res = new SubstanceSpecification.SubstanceSpecificationPropertyComponent();
21388    parseBackboneAttributes(xpp, res);
21389    next(xpp);
21390    int eventType = nextNoWhitespace(xpp);
21391    while (eventType != XmlPullParser.END_TAG) {
21392  if (!parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(eventType, xpp, owner, res))
21393        unknownContent(xpp);
21394      eventType = nextNoWhitespace(xpp);
21395    }
21396    next(xpp);
21397    parseElementClose(res);
21398    return res;
21399  }
21400
21401  protected boolean parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21402      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
21403        res.setCategory(parseCodeableConcept(xpp));
21404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21405        res.setCode(parseCodeableConcept(xpp));
21406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameters")) {
21407        res.setParametersElement(parseString(xpp));
21408      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definingSubstance")) {
21409        res.setDefiningSubstance(parseType("definingSubstance", xpp));
21410      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21411        res.setAmount(parseType("amount", xpp));
21412      } else if (!parseBackboneElementContent(eventType, xpp, res))
21413        return false;
21414    return true;
21415  }
21416
21417  protected SubstanceSpecification.SubstanceSpecificationStructureComponent parseSubstanceSpecificationSubstanceSpecificationStructureComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21418    SubstanceSpecification.SubstanceSpecificationStructureComponent res = new SubstanceSpecification.SubstanceSpecificationStructureComponent();
21419    parseBackboneAttributes(xpp, res);
21420    next(xpp);
21421    int eventType = nextNoWhitespace(xpp);
21422    while (eventType != XmlPullParser.END_TAG) {
21423  if (!parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(eventType, xpp, owner, res))
21424        unknownContent(xpp);
21425      eventType = nextNoWhitespace(xpp);
21426    }
21427    next(xpp);
21428    parseElementClose(res);
21429    return res;
21430  }
21431
21432  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21433      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
21434        res.setStereochemistry(parseCodeableConcept(xpp));
21435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
21436        res.setOpticalActivity(parseCodeableConcept(xpp));
21437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
21438        res.setMolecularFormulaElement(parseString(xpp));
21439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormulaByMoiety")) {
21440        res.setMolecularFormulaByMoietyElement(parseString(xpp));
21441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isotope")) {
21442        res.getIsotope().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(xpp, owner));
21443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
21444        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
21445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21446        res.getSource().add(parseReference(xpp));
21447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
21448        res.getRepresentation().add(parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(xpp, owner));
21449      } else if (!parseBackboneElementContent(eventType, xpp, res))
21450        return false;
21451    return true;
21452  }
21453
21454  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21455    SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent();
21456    parseBackboneAttributes(xpp, res);
21457    next(xpp);
21458    int eventType = nextNoWhitespace(xpp);
21459    while (eventType != XmlPullParser.END_TAG) {
21460  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(eventType, xpp, owner, res))
21461        unknownContent(xpp);
21462      eventType = nextNoWhitespace(xpp);
21463    }
21464    next(xpp);
21465    parseElementClose(res);
21466    return res;
21467  }
21468
21469  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21470      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21471        res.setIdentifier(parseIdentifier(xpp));
21472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21473        res.setName(parseCodeableConcept(xpp));
21474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
21475        res.setSubstitution(parseCodeableConcept(xpp));
21476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("halfLife")) {
21477        res.setHalfLife(parseQuantity(xpp));
21478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
21479        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
21480      } else if (!parseBackboneElementContent(eventType, xpp, res))
21481        return false;
21482    return true;
21483  }
21484
21485  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21486    SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent();
21487    parseBackboneAttributes(xpp, res);
21488    next(xpp);
21489    int eventType = nextNoWhitespace(xpp);
21490    while (eventType != XmlPullParser.END_TAG) {
21491  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(eventType, xpp, owner, res))
21492        unknownContent(xpp);
21493      eventType = nextNoWhitespace(xpp);
21494    }
21495    next(xpp);
21496    parseElementClose(res);
21497    return res;
21498  }
21499
21500  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
21502        res.setMethod(parseCodeableConcept(xpp));
21503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21504        res.setType(parseCodeableConcept(xpp));
21505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
21506        res.setAmount(parseQuantity(xpp));
21507      } else if (!parseBackboneElementContent(eventType, xpp, res))
21508        return false;
21509    return true;
21510  }
21511
21512  protected SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21513    SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent res = new SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent();
21514    parseBackboneAttributes(xpp, res);
21515    next(xpp);
21516    int eventType = nextNoWhitespace(xpp);
21517    while (eventType != XmlPullParser.END_TAG) {
21518  if (!parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentContent(eventType, xpp, owner, res))
21519        unknownContent(xpp);
21520      eventType = nextNoWhitespace(xpp);
21521    }
21522    next(xpp);
21523    parseElementClose(res);
21524    return res;
21525  }
21526
21527  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21528      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21529        res.setType(parseCodeableConcept(xpp));
21530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
21531        res.setRepresentationElement(parseString(xpp));
21532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
21533        res.setAttachment(parseAttachment(xpp));
21534      } else if (!parseBackboneElementContent(eventType, xpp, res))
21535        return false;
21536    return true;
21537  }
21538
21539  protected SubstanceSpecification.SubstanceSpecificationCodeComponent parseSubstanceSpecificationSubstanceSpecificationCodeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21540    SubstanceSpecification.SubstanceSpecificationCodeComponent res = new SubstanceSpecification.SubstanceSpecificationCodeComponent();
21541    parseBackboneAttributes(xpp, res);
21542    next(xpp);
21543    int eventType = nextNoWhitespace(xpp);
21544    while (eventType != XmlPullParser.END_TAG) {
21545  if (!parseSubstanceSpecificationSubstanceSpecificationCodeComponentContent(eventType, xpp, owner, res))
21546        unknownContent(xpp);
21547      eventType = nextNoWhitespace(xpp);
21548    }
21549    next(xpp);
21550    parseElementClose(res);
21551    return res;
21552  }
21553
21554  protected boolean parseSubstanceSpecificationSubstanceSpecificationCodeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21555      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21556        res.setCode(parseCodeableConcept(xpp));
21557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21558        res.setStatus(parseCodeableConcept(xpp));
21559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
21560        res.setStatusDateElement(parseDateTime(xpp));
21561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21562        res.setCommentElement(parseString(xpp));
21563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21564        res.getSource().add(parseReference(xpp));
21565      } else if (!parseBackboneElementContent(eventType, xpp, res))
21566        return false;
21567    return true;
21568  }
21569
21570  protected SubstanceSpecification.SubstanceSpecificationNameComponent parseSubstanceSpecificationSubstanceSpecificationNameComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21571    SubstanceSpecification.SubstanceSpecificationNameComponent res = new SubstanceSpecification.SubstanceSpecificationNameComponent();
21572    parseBackboneAttributes(xpp, res);
21573    next(xpp);
21574    int eventType = nextNoWhitespace(xpp);
21575    while (eventType != XmlPullParser.END_TAG) {
21576  if (!parseSubstanceSpecificationSubstanceSpecificationNameComponentContent(eventType, xpp, owner, res))
21577        unknownContent(xpp);
21578      eventType = nextNoWhitespace(xpp);
21579    }
21580    next(xpp);
21581    parseElementClose(res);
21582    return res;
21583  }
21584
21585  protected boolean parseSubstanceSpecificationSubstanceSpecificationNameComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21586      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21587        res.setNameElement(parseString(xpp));
21588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21589        res.setType(parseCodeableConcept(xpp));
21590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21591        res.setStatus(parseCodeableConcept(xpp));
21592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
21593        res.setPreferredElement(parseBoolean(xpp));
21594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
21595        res.getLanguage().add(parseCodeableConcept(xpp));
21596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
21597        res.getDomain().add(parseCodeableConcept(xpp));
21598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21599        res.getJurisdiction().add(parseCodeableConcept(xpp));
21600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
21601        res.getSynonym().add(parseSubstanceSpecificationSubstanceSpecificationNameComponent(xpp, owner));
21602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
21603        res.getTranslation().add(parseSubstanceSpecificationSubstanceSpecificationNameComponent(xpp, owner));
21604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("official")) {
21605        res.getOfficial().add(parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(xpp, owner));
21606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21607        res.getSource().add(parseReference(xpp));
21608      } else if (!parseBackboneElementContent(eventType, xpp, res))
21609        return false;
21610    return true;
21611  }
21612
21613  protected SubstanceSpecification.SubstanceSpecificationNameOfficialComponent parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21614    SubstanceSpecification.SubstanceSpecificationNameOfficialComponent res = new SubstanceSpecification.SubstanceSpecificationNameOfficialComponent();
21615    parseBackboneAttributes(xpp, res);
21616    next(xpp);
21617    int eventType = nextNoWhitespace(xpp);
21618    while (eventType != XmlPullParser.END_TAG) {
21619  if (!parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponentContent(eventType, xpp, owner, res))
21620        unknownContent(xpp);
21621      eventType = nextNoWhitespace(xpp);
21622    }
21623    next(xpp);
21624    parseElementClose(res);
21625    return res;
21626  }
21627
21628  protected boolean parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationNameOfficialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
21630        res.setAuthority(parseCodeableConcept(xpp));
21631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21632        res.setStatus(parseCodeableConcept(xpp));
21633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21634        res.setDateElement(parseDateTime(xpp));
21635      } else if (!parseBackboneElementContent(eventType, xpp, res))
21636        return false;
21637    return true;
21638  }
21639
21640  protected SubstanceSpecification.SubstanceSpecificationRelationshipComponent parseSubstanceSpecificationSubstanceSpecificationRelationshipComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21641    SubstanceSpecification.SubstanceSpecificationRelationshipComponent res = new SubstanceSpecification.SubstanceSpecificationRelationshipComponent();
21642    parseBackboneAttributes(xpp, res);
21643    next(xpp);
21644    int eventType = nextNoWhitespace(xpp);
21645    while (eventType != XmlPullParser.END_TAG) {
21646  if (!parseSubstanceSpecificationSubstanceSpecificationRelationshipComponentContent(eventType, xpp, owner, res))
21647        unknownContent(xpp);
21648      eventType = nextNoWhitespace(xpp);
21649    }
21650    next(xpp);
21651    parseElementClose(res);
21652    return res;
21653  }
21654
21655  protected boolean parseSubstanceSpecificationSubstanceSpecificationRelationshipComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationRelationshipComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21656      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
21657        res.setSubstance(parseType("substance", xpp));
21658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
21659        res.setRelationship(parseCodeableConcept(xpp));
21660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
21661        res.setIsDefiningElement(parseBoolean(xpp));
21662      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21663        res.setAmount(parseType("amount", xpp));
21664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountRatioLowLimit")) {
21665        res.setAmountRatioLowLimit(parseRatio(xpp));
21666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
21667        res.setAmountType(parseCodeableConcept(xpp));
21668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21669        res.getSource().add(parseReference(xpp));
21670      } else if (!parseBackboneElementContent(eventType, xpp, res))
21671        return false;
21672    return true;
21673  }
21674
21675  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21676    SupplyDelivery res = new SupplyDelivery();
21677    parseDomainResourceAttributes(xpp, res);
21678    next(xpp);
21679    int eventType = nextNoWhitespace(xpp);
21680    while (eventType != XmlPullParser.END_TAG) {
21681  if (!parseSupplyDeliveryContent(eventType, xpp, res))
21682        unknownContent(xpp);
21683      eventType = nextNoWhitespace(xpp);
21684    }
21685    next(xpp);
21686    parseElementClose(res);
21687    return res;
21688  }
21689
21690  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
21691      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21692        res.getIdentifier().add(parseIdentifier(xpp));
21693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
21694        res.getBasedOn().add(parseReference(xpp));
21695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
21696        res.getPartOf().add(parseReference(xpp));
21697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21698        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
21699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
21700        res.setPatient(parseReference(xpp));
21701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21702        res.setType(parseCodeableConcept(xpp));
21703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
21704        res.setSuppliedItem(parseSupplyDeliverySupplyDeliverySuppliedItemComponent(xpp, res));
21705      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
21706        res.setOccurrence(parseType("occurrence", xpp));
21707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
21708        res.setSupplier(parseReference(xpp));
21709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
21710        res.setDestination(parseReference(xpp));
21711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
21712        res.getReceiver().add(parseReference(xpp));
21713      } else if (!parseDomainResourceContent(eventType, xpp, res))
21714        return false;
21715    return true;
21716  }
21717
21718  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySupplyDeliverySuppliedItemComponent(XmlPullParser xpp, SupplyDelivery owner) throws XmlPullParserException, IOException, FHIRFormatError {
21719    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
21720    parseBackboneAttributes(xpp, res);
21721    next(xpp);
21722    int eventType = nextNoWhitespace(xpp);
21723    while (eventType != XmlPullParser.END_TAG) {
21724  if (!parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(eventType, xpp, owner, res))
21725        unknownContent(xpp);
21726      eventType = nextNoWhitespace(xpp);
21727    }
21728    next(xpp);
21729    parseElementClose(res);
21730    return res;
21731  }
21732
21733  protected boolean parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery owner, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21734      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
21735        res.setQuantity(parseQuantity(xpp));
21736      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
21737        res.setItem(parseType("item", xpp));
21738      } else if (!parseBackboneElementContent(eventType, xpp, res))
21739        return false;
21740    return true;
21741  }
21742
21743  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21744    SupplyRequest res = new SupplyRequest();
21745    parseDomainResourceAttributes(xpp, res);
21746    next(xpp);
21747    int eventType = nextNoWhitespace(xpp);
21748    while (eventType != XmlPullParser.END_TAG) {
21749  if (!parseSupplyRequestContent(eventType, xpp, res))
21750        unknownContent(xpp);
21751      eventType = nextNoWhitespace(xpp);
21752    }
21753    next(xpp);
21754    parseElementClose(res);
21755    return res;
21756  }
21757
21758  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
21759      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21760        res.getIdentifier().add(parseIdentifier(xpp));
21761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21762        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
21763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
21764        res.setCategory(parseCodeableConcept(xpp));
21765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
21766        res.setPriorityElement(parseEnumeration(xpp, SupplyRequest.RequestPriority.NULL, new SupplyRequest.RequestPriorityEnumFactory()));
21767      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
21768        res.setItem(parseType("item", xpp));
21769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
21770        res.setQuantity(parseQuantity(xpp));
21771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
21772        res.getParameter().add(parseSupplyRequestSupplyRequestParameterComponent(xpp, res));
21773      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
21774        res.setOccurrence(parseType("occurrence", xpp));
21775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
21776        res.setAuthoredOnElement(parseDateTime(xpp));
21777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
21778        res.setRequester(parseReference(xpp));
21779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
21780        res.getSupplier().add(parseReference(xpp));
21781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
21782        res.getReasonCode().add(parseCodeableConcept(xpp));
21783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
21784        res.getReasonReference().add(parseReference(xpp));
21785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
21786        res.setDeliverFrom(parseReference(xpp));
21787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
21788        res.setDeliverTo(parseReference(xpp));
21789      } else if (!parseDomainResourceContent(eventType, xpp, res))
21790        return false;
21791    return true;
21792  }
21793
21794  protected SupplyRequest.SupplyRequestParameterComponent parseSupplyRequestSupplyRequestParameterComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
21795    SupplyRequest.SupplyRequestParameterComponent res = new SupplyRequest.SupplyRequestParameterComponent();
21796    parseBackboneAttributes(xpp, res);
21797    next(xpp);
21798    int eventType = nextNoWhitespace(xpp);
21799    while (eventType != XmlPullParser.END_TAG) {
21800  if (!parseSupplyRequestSupplyRequestParameterComponentContent(eventType, xpp, owner, res))
21801        unknownContent(xpp);
21802      eventType = nextNoWhitespace(xpp);
21803    }
21804    next(xpp);
21805    parseElementClose(res);
21806    return res;
21807  }
21808
21809  protected boolean parseSupplyRequestSupplyRequestParameterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21810      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21811        res.setCode(parseCodeableConcept(xpp));
21812      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21813        res.setValue(parseType("value", xpp));
21814      } else if (!parseBackboneElementContent(eventType, xpp, res))
21815        return false;
21816    return true;
21817  }
21818
21819  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21820    Task res = new Task();
21821    parseDomainResourceAttributes(xpp, res);
21822    next(xpp);
21823    int eventType = nextNoWhitespace(xpp);
21824    while (eventType != XmlPullParser.END_TAG) {
21825  if (!parseTaskContent(eventType, xpp, res))
21826        unknownContent(xpp);
21827      eventType = nextNoWhitespace(xpp);
21828    }
21829    next(xpp);
21830    parseElementClose(res);
21831    return res;
21832  }
21833
21834  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
21835      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21836        res.getIdentifier().add(parseIdentifier(xpp));
21837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
21838        res.setInstantiatesCanonicalElement(parseCanonical(xpp));
21839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
21840        res.setInstantiatesUriElement(parseUri(xpp));
21841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
21842        res.getBasedOn().add(parseReference(xpp));
21843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
21844        res.setGroupIdentifier(parseIdentifier(xpp));
21845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
21846        res.getPartOf().add(parseReference(xpp));
21847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21848        res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
21849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
21850        res.setStatusReason(parseCodeableConcept(xpp));
21851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
21852        res.setBusinessStatus(parseCodeableConcept(xpp));
21853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
21854        res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
21855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
21856        res.setPriorityElement(parseEnumeration(xpp, Task.TaskPriority.NULL, new Task.TaskPriorityEnumFactory()));
21857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21858        res.setCode(parseCodeableConcept(xpp));
21859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21860        res.setDescriptionElement(parseString(xpp));
21861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
21862        res.setFocus(parseReference(xpp));
21863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
21864        res.setFor(parseReference(xpp));
21865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
21866        res.setEncounter(parseReference(xpp));
21867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
21868        res.setExecutionPeriod(parsePeriod(xpp));
21869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
21870        res.setAuthoredOnElement(parseDateTime(xpp));
21871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
21872        res.setLastModifiedElement(parseDateTime(xpp));
21873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
21874        res.setRequester(parseReference(xpp));
21875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
21876        res.getPerformerType().add(parseCodeableConcept(xpp));
21877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
21878        res.setOwner(parseReference(xpp));
21879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
21880        res.setLocation(parseReference(xpp));
21881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
21882        res.setReasonCode(parseCodeableConcept(xpp));
21883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
21884        res.setReasonReference(parseReference(xpp));
21885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
21886        res.getInsurance().add(parseReference(xpp));
21887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
21888        res.getNote().add(parseAnnotation(xpp));
21889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
21890        res.getRelevantHistory().add(parseReference(xpp));
21891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
21892        res.setRestriction(parseTaskTaskRestrictionComponent(xpp, res));
21893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
21894        res.getInput().add(parseTaskParameterComponent(xpp, res));
21895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
21896        res.getOutput().add(parseTaskTaskOutputComponent(xpp, res));
21897      } else if (!parseDomainResourceContent(eventType, xpp, res))
21898        return false;
21899    return true;
21900  }
21901
21902  protected Task.TaskRestrictionComponent parseTaskTaskRestrictionComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21903    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
21904    parseBackboneAttributes(xpp, res);
21905    next(xpp);
21906    int eventType = nextNoWhitespace(xpp);
21907    while (eventType != XmlPullParser.END_TAG) {
21908  if (!parseTaskTaskRestrictionComponentContent(eventType, xpp, owner, res))
21909        unknownContent(xpp);
21910      eventType = nextNoWhitespace(xpp);
21911    }
21912    next(xpp);
21913    parseElementClose(res);
21914    return res;
21915  }
21916
21917  protected boolean parseTaskTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
21919        res.setRepetitionsElement(parsePositiveInt(xpp));
21920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
21921        res.setPeriod(parsePeriod(xpp));
21922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
21923        res.getRecipient().add(parseReference(xpp));
21924      } else if (!parseBackboneElementContent(eventType, xpp, res))
21925        return false;
21926    return true;
21927  }
21928
21929  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21930    Task.ParameterComponent res = new Task.ParameterComponent();
21931    parseBackboneAttributes(xpp, res);
21932    next(xpp);
21933    int eventType = nextNoWhitespace(xpp);
21934    while (eventType != XmlPullParser.END_TAG) {
21935  if (!parseTaskParameterComponentContent(eventType, xpp, owner, res))
21936        unknownContent(xpp);
21937      eventType = nextNoWhitespace(xpp);
21938    }
21939    next(xpp);
21940    parseElementClose(res);
21941    return res;
21942  }
21943
21944  protected boolean parseTaskParameterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21945      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21946        res.setType(parseCodeableConcept(xpp));
21947      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21948        res.setValue(parseType("value", xpp));
21949      } else if (!parseBackboneElementContent(eventType, xpp, res))
21950        return false;
21951    return true;
21952  }
21953
21954  protected Task.TaskOutputComponent parseTaskTaskOutputComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21955    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
21956    parseBackboneAttributes(xpp, res);
21957    next(xpp);
21958    int eventType = nextNoWhitespace(xpp);
21959    while (eventType != XmlPullParser.END_TAG) {
21960  if (!parseTaskTaskOutputComponentContent(eventType, xpp, owner, res))
21961        unknownContent(xpp);
21962      eventType = nextNoWhitespace(xpp);
21963    }
21964    next(xpp);
21965    parseElementClose(res);
21966    return res;
21967  }
21968
21969  protected boolean parseTaskTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21970      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21971        res.setType(parseCodeableConcept(xpp));
21972      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21973        res.setValue(parseType("value", xpp));
21974      } else if (!parseBackboneElementContent(eventType, xpp, res))
21975        return false;
21976    return true;
21977  }
21978
21979  protected TerminologyCapabilities parseTerminologyCapabilities(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21980    TerminologyCapabilities res = new TerminologyCapabilities();
21981    parseDomainResourceAttributes(xpp, res);
21982    next(xpp);
21983    int eventType = nextNoWhitespace(xpp);
21984    while (eventType != XmlPullParser.END_TAG) {
21985  if (!parseTerminologyCapabilitiesContent(eventType, xpp, res))
21986        unknownContent(xpp);
21987      eventType = nextNoWhitespace(xpp);
21988    }
21989    next(xpp);
21990    parseElementClose(res);
21991    return res;
21992  }
21993
21994  protected boolean parseTerminologyCapabilitiesContent(int eventType, XmlPullParser xpp, TerminologyCapabilities res) throws XmlPullParserException, IOException, FHIRFormatError {
21995      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21996        res.setUrlElement(parseUri(xpp));
21997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21998        res.setVersionElement(parseString(xpp));
21999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22000        res.setNameElement(parseString(xpp));
22001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22002        res.setTitleElement(parseString(xpp));
22003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22004        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
22005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
22006        res.setExperimentalElement(parseBoolean(xpp));
22007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22008        res.setDateElement(parseDateTime(xpp));
22009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
22010        res.setPublisherElement(parseString(xpp));
22011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22012        res.getContact().add(parseContactDetail(xpp));
22013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22014        res.setDescriptionElement(parseMarkdown(xpp));
22015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
22016        res.getUseContext().add(parseUsageContext(xpp));
22017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22018        res.getJurisdiction().add(parseCodeableConcept(xpp));
22019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22020        res.setPurposeElement(parseMarkdown(xpp));
22021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
22022        res.setCopyrightElement(parseMarkdown(xpp));
22023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
22024        res.setKindElement(parseEnumeration(xpp, TerminologyCapabilities.CapabilityStatementKind.NULL, new TerminologyCapabilities.CapabilityStatementKindEnumFactory()));
22025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
22026        res.setSoftware(parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(xpp, res));
22027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
22028        res.setImplementation(parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(xpp, res));
22029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
22030        res.setLockedDateElement(parseBoolean(xpp));
22031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
22032        res.getCodeSystem().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(xpp, res));
22033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
22034        res.setExpansion(parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(xpp, res));
22035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSearch")) {
22036        res.setCodeSearchElement(parseEnumeration(xpp, TerminologyCapabilities.CodeSearchSupport.NULL, new TerminologyCapabilities.CodeSearchSupportEnumFactory()));
22037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateCode")) {
22038        res.setValidateCode(parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(xpp, res));
22039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
22040        res.setTranslation(parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(xpp, res));
22041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closure")) {
22042        res.setClosure(parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(xpp, res));
22043      } else if (!parseDomainResourceContent(eventType, xpp, res))
22044        return false;
22045    return true;
22046  }
22047
22048  protected TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22049    TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res = new TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent();
22050    parseBackboneAttributes(xpp, res);
22051    next(xpp);
22052    int eventType = nextNoWhitespace(xpp);
22053    while (eventType != XmlPullParser.END_TAG) {
22054  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentContent(eventType, xpp, owner, res))
22055        unknownContent(xpp);
22056      eventType = nextNoWhitespace(xpp);
22057    }
22058    next(xpp);
22059    parseElementClose(res);
22060    return res;
22061  }
22062
22063  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22064      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22065        res.setNameElement(parseString(xpp));
22066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22067        res.setVersionElement(parseString(xpp));
22068      } else if (!parseBackboneElementContent(eventType, xpp, res))
22069        return false;
22070    return true;
22071  }
22072
22073  protected TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22074    TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent();
22075    parseBackboneAttributes(xpp, res);
22076    next(xpp);
22077    int eventType = nextNoWhitespace(xpp);
22078    while (eventType != XmlPullParser.END_TAG) {
22079  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentContent(eventType, xpp, owner, res))
22080        unknownContent(xpp);
22081      eventType = nextNoWhitespace(xpp);
22082    }
22083    next(xpp);
22084    parseElementClose(res);
22085    return res;
22086  }
22087
22088  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22090        res.setDescriptionElement(parseString(xpp));
22091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22092        res.setUrlElement(parseUrl(xpp));
22093      } else if (!parseBackboneElementContent(eventType, xpp, res))
22094        return false;
22095    return true;
22096  }
22097
22098  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22099    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent();
22100    parseBackboneAttributes(xpp, res);
22101    next(xpp);
22102    int eventType = nextNoWhitespace(xpp);
22103    while (eventType != XmlPullParser.END_TAG) {
22104  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(eventType, xpp, owner, res))
22105        unknownContent(xpp);
22106      eventType = nextNoWhitespace(xpp);
22107    }
22108    next(xpp);
22109    parseElementClose(res);
22110    return res;
22111  }
22112
22113  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22114      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
22115        res.setUriElement(parseCanonical(xpp));
22116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22117        res.getVersion().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(xpp, owner));
22118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subsumption")) {
22119        res.setSubsumptionElement(parseBoolean(xpp));
22120      } else if (!parseBackboneElementContent(eventType, xpp, res))
22121        return false;
22122    return true;
22123  }
22124
22125  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22126    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent();
22127    parseBackboneAttributes(xpp, res);
22128    next(xpp);
22129    int eventType = nextNoWhitespace(xpp);
22130    while (eventType != XmlPullParser.END_TAG) {
22131  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(eventType, xpp, owner, res))
22132        unknownContent(xpp);
22133      eventType = nextNoWhitespace(xpp);
22134    }
22135    next(xpp);
22136    parseElementClose(res);
22137    return res;
22138  }
22139
22140  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22141      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22142        res.setCodeElement(parseString(xpp));
22143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefault")) {
22144        res.setIsDefaultElement(parseBoolean(xpp));
22145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
22146        res.setCompositionalElement(parseBoolean(xpp));
22147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
22148        res.getLanguage().add(parseCode(xpp));
22149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
22150        res.getFilter().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(xpp, owner));
22151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
22152        res.getProperty().add(parseCode(xpp));
22153      } else if (!parseBackboneElementContent(eventType, xpp, res))
22154        return false;
22155    return true;
22156  }
22157
22158  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22159    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent();
22160    parseBackboneAttributes(xpp, res);
22161    next(xpp);
22162    int eventType = nextNoWhitespace(xpp);
22163    while (eventType != XmlPullParser.END_TAG) {
22164  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(eventType, xpp, owner, res))
22165        unknownContent(xpp);
22166      eventType = nextNoWhitespace(xpp);
22167    }
22168    next(xpp);
22169    parseElementClose(res);
22170    return res;
22171  }
22172
22173  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22174      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22175        res.setCodeElement(parseCode(xpp));
22176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
22177        res.getOp().add(parseCode(xpp));
22178      } else if (!parseBackboneElementContent(eventType, xpp, res))
22179        return false;
22180    return true;
22181  }
22182
22183  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22184    TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent();
22185    parseBackboneAttributes(xpp, res);
22186    next(xpp);
22187    int eventType = nextNoWhitespace(xpp);
22188    while (eventType != XmlPullParser.END_TAG) {
22189  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(eventType, xpp, owner, res))
22190        unknownContent(xpp);
22191      eventType = nextNoWhitespace(xpp);
22192    }
22193    next(xpp);
22194    parseElementClose(res);
22195    return res;
22196  }
22197
22198  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22199      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchical")) {
22200        res.setHierarchicalElement(parseBoolean(xpp));
22201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paging")) {
22202        res.setPagingElement(parseBoolean(xpp));
22203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomplete")) {
22204        res.setIncompleteElement(parseBoolean(xpp));
22205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
22206        res.getParameter().add(parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(xpp, owner));
22207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textFilter")) {
22208        res.setTextFilterElement(parseMarkdown(xpp));
22209      } else if (!parseBackboneElementContent(eventType, xpp, res))
22210        return false;
22211    return true;
22212  }
22213
22214  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22215    TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent();
22216    parseBackboneAttributes(xpp, res);
22217    next(xpp);
22218    int eventType = nextNoWhitespace(xpp);
22219    while (eventType != XmlPullParser.END_TAG) {
22220  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentContent(eventType, xpp, owner, res))
22221        unknownContent(xpp);
22222      eventType = nextNoWhitespace(xpp);
22223    }
22224    next(xpp);
22225    parseElementClose(res);
22226    return res;
22227  }
22228
22229  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22230      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22231        res.setNameElement(parseCode(xpp));
22232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
22233        res.setDocumentationElement(parseString(xpp));
22234      } else if (!parseBackboneElementContent(eventType, xpp, res))
22235        return false;
22236    return true;
22237  }
22238
22239  protected TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22240    TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res = new TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent();
22241    parseBackboneAttributes(xpp, res);
22242    next(xpp);
22243    int eventType = nextNoWhitespace(xpp);
22244    while (eventType != XmlPullParser.END_TAG) {
22245  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(eventType, xpp, owner, res))
22246        unknownContent(xpp);
22247      eventType = nextNoWhitespace(xpp);
22248    }
22249    next(xpp);
22250    parseElementClose(res);
22251    return res;
22252  }
22253
22254  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22255      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translations")) {
22256        res.setTranslationsElement(parseBoolean(xpp));
22257      } else if (!parseBackboneElementContent(eventType, xpp, res))
22258        return false;
22259    return true;
22260  }
22261
22262  protected TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22263    TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent();
22264    parseBackboneAttributes(xpp, res);
22265    next(xpp);
22266    int eventType = nextNoWhitespace(xpp);
22267    while (eventType != XmlPullParser.END_TAG) {
22268  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(eventType, xpp, owner, res))
22269        unknownContent(xpp);
22270      eventType = nextNoWhitespace(xpp);
22271    }
22272    next(xpp);
22273    parseElementClose(res);
22274    return res;
22275  }
22276
22277  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22278      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("needsMap")) {
22279        res.setNeedsMapElement(parseBoolean(xpp));
22280      } else if (!parseBackboneElementContent(eventType, xpp, res))
22281        return false;
22282    return true;
22283  }
22284
22285  protected TerminologyCapabilities.TerminologyCapabilitiesClosureComponent parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22286    TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res = new TerminologyCapabilities.TerminologyCapabilitiesClosureComponent();
22287    parseBackboneAttributes(xpp, res);
22288    next(xpp);
22289    int eventType = nextNoWhitespace(xpp);
22290    while (eventType != XmlPullParser.END_TAG) {
22291  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(eventType, xpp, owner, res))
22292        unknownContent(xpp);
22293      eventType = nextNoWhitespace(xpp);
22294    }
22295    next(xpp);
22296    parseElementClose(res);
22297    return res;
22298  }
22299
22300  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22301      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
22302        res.setTranslationElement(parseBoolean(xpp));
22303      } else if (!parseBackboneElementContent(eventType, xpp, res))
22304        return false;
22305    return true;
22306  }
22307
22308  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22309    TestReport res = new TestReport();
22310    parseDomainResourceAttributes(xpp, res);
22311    next(xpp);
22312    int eventType = nextNoWhitespace(xpp);
22313    while (eventType != XmlPullParser.END_TAG) {
22314  if (!parseTestReportContent(eventType, xpp, res))
22315        unknownContent(xpp);
22316      eventType = nextNoWhitespace(xpp);
22317    }
22318    next(xpp);
22319    parseElementClose(res);
22320    return res;
22321  }
22322
22323  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
22324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22325        res.setIdentifier(parseIdentifier(xpp));
22326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22327        res.setNameElement(parseString(xpp));
22328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22329        res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
22330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
22331        res.setTestScript(parseReference(xpp));
22332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
22333        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
22334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
22335        res.setScoreElement(parseDecimal(xpp));
22336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
22337        res.setTesterElement(parseString(xpp));
22338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
22339        res.setIssuedElement(parseDateTime(xpp));
22340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
22341        res.getParticipant().add(parseTestReportTestReportParticipantComponent(xpp, res));
22342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
22343        res.setSetup(parseTestReportTestReportSetupComponent(xpp, res));
22344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
22345        res.getTest().add(parseTestReportTestReportTestComponent(xpp, res));
22346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
22347        res.setTeardown(parseTestReportTestReportTeardownComponent(xpp, res));
22348      } else if (!parseDomainResourceContent(eventType, xpp, res))
22349        return false;
22350    return true;
22351  }
22352
22353  protected TestReport.TestReportParticipantComponent parseTestReportTestReportParticipantComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22354    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
22355    parseBackboneAttributes(xpp, res);
22356    next(xpp);
22357    int eventType = nextNoWhitespace(xpp);
22358    while (eventType != XmlPullParser.END_TAG) {
22359  if (!parseTestReportTestReportParticipantComponentContent(eventType, xpp, owner, res))
22360        unknownContent(xpp);
22361      eventType = nextNoWhitespace(xpp);
22362    }
22363    next(xpp);
22364    parseElementClose(res);
22365    return res;
22366  }
22367
22368  protected boolean parseTestReportTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22369      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22370        res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
22371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
22372        res.setUriElement(parseUri(xpp));
22373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
22374        res.setDisplayElement(parseString(xpp));
22375      } else if (!parseBackboneElementContent(eventType, xpp, res))
22376        return false;
22377    return true;
22378  }
22379
22380  protected TestReport.TestReportSetupComponent parseTestReportTestReportSetupComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22381    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
22382    parseBackboneAttributes(xpp, res);
22383    next(xpp);
22384    int eventType = nextNoWhitespace(xpp);
22385    while (eventType != XmlPullParser.END_TAG) {
22386  if (!parseTestReportTestReportSetupComponentContent(eventType, xpp, owner, res))
22387        unknownContent(xpp);
22388      eventType = nextNoWhitespace(xpp);
22389    }
22390    next(xpp);
22391    parseElementClose(res);
22392    return res;
22393  }
22394
22395  protected boolean parseTestReportTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22396      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22397        res.getAction().add(parseTestReportSetupActionComponent(xpp, owner));
22398      } else if (!parseBackboneElementContent(eventType, xpp, res))
22399        return false;
22400    return true;
22401  }
22402
22403  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22404    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
22405    parseBackboneAttributes(xpp, res);
22406    next(xpp);
22407    int eventType = nextNoWhitespace(xpp);
22408    while (eventType != XmlPullParser.END_TAG) {
22409  if (!parseTestReportSetupActionComponentContent(eventType, xpp, owner, res))
22410        unknownContent(xpp);
22411      eventType = nextNoWhitespace(xpp);
22412    }
22413    next(xpp);
22414    parseElementClose(res);
22415    return res;
22416  }
22417
22418  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22419      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22420        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
22421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22422        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
22423      } else if (!parseBackboneElementContent(eventType, xpp, res))
22424        return false;
22425    return true;
22426  }
22427
22428  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22429    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
22430    parseBackboneAttributes(xpp, res);
22431    next(xpp);
22432    int eventType = nextNoWhitespace(xpp);
22433    while (eventType != XmlPullParser.END_TAG) {
22434  if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, owner, res))
22435        unknownContent(xpp);
22436      eventType = nextNoWhitespace(xpp);
22437    }
22438    next(xpp);
22439    parseElementClose(res);
22440    return res;
22441  }
22442
22443  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22444      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
22445        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
22446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
22447        res.setMessageElement(parseMarkdown(xpp));
22448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
22449        res.setDetailElement(parseUri(xpp));
22450      } else if (!parseBackboneElementContent(eventType, xpp, res))
22451        return false;
22452    return true;
22453  }
22454
22455  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22456    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
22457    parseBackboneAttributes(xpp, res);
22458    next(xpp);
22459    int eventType = nextNoWhitespace(xpp);
22460    while (eventType != XmlPullParser.END_TAG) {
22461  if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, owner, res))
22462        unknownContent(xpp);
22463      eventType = nextNoWhitespace(xpp);
22464    }
22465    next(xpp);
22466    parseElementClose(res);
22467    return res;
22468  }
22469
22470  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22471      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
22472        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
22473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
22474        res.setMessageElement(parseMarkdown(xpp));
22475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
22476        res.setDetailElement(parseString(xpp));
22477      } else if (!parseBackboneElementContent(eventType, xpp, res))
22478        return false;
22479    return true;
22480  }
22481
22482  protected TestReport.TestReportTestComponent parseTestReportTestReportTestComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22483    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
22484    parseBackboneAttributes(xpp, res);
22485    next(xpp);
22486    int eventType = nextNoWhitespace(xpp);
22487    while (eventType != XmlPullParser.END_TAG) {
22488  if (!parseTestReportTestReportTestComponentContent(eventType, xpp, owner, res))
22489        unknownContent(xpp);
22490      eventType = nextNoWhitespace(xpp);
22491    }
22492    next(xpp);
22493    parseElementClose(res);
22494    return res;
22495  }
22496
22497  protected boolean parseTestReportTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22498      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22499        res.setNameElement(parseString(xpp));
22500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22501        res.setDescriptionElement(parseString(xpp));
22502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22503        res.getAction().add(parseTestReportTestActionComponent(xpp, owner));
22504      } else if (!parseBackboneElementContent(eventType, xpp, res))
22505        return false;
22506    return true;
22507  }
22508
22509  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22510    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
22511    parseBackboneAttributes(xpp, res);
22512    next(xpp);
22513    int eventType = nextNoWhitespace(xpp);
22514    while (eventType != XmlPullParser.END_TAG) {
22515  if (!parseTestReportTestActionComponentContent(eventType, xpp, owner, res))
22516        unknownContent(xpp);
22517      eventType = nextNoWhitespace(xpp);
22518    }
22519    next(xpp);
22520    parseElementClose(res);
22521    return res;
22522  }
22523
22524  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22525      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22526        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
22527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22528        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
22529      } else if (!parseBackboneElementContent(eventType, xpp, res))
22530        return false;
22531    return true;
22532  }
22533
22534  protected TestReport.TestReportTeardownComponent parseTestReportTestReportTeardownComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22535    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
22536    parseBackboneAttributes(xpp, res);
22537    next(xpp);
22538    int eventType = nextNoWhitespace(xpp);
22539    while (eventType != XmlPullParser.END_TAG) {
22540  if (!parseTestReportTestReportTeardownComponentContent(eventType, xpp, owner, res))
22541        unknownContent(xpp);
22542      eventType = nextNoWhitespace(xpp);
22543    }
22544    next(xpp);
22545    parseElementClose(res);
22546    return res;
22547  }
22548
22549  protected boolean parseTestReportTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22550      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22551        res.getAction().add(parseTestReportTeardownActionComponent(xpp, owner));
22552      } else if (!parseBackboneElementContent(eventType, xpp, res))
22553        return false;
22554    return true;
22555  }
22556
22557  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22558    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
22559    parseBackboneAttributes(xpp, res);
22560    next(xpp);
22561    int eventType = nextNoWhitespace(xpp);
22562    while (eventType != XmlPullParser.END_TAG) {
22563  if (!parseTestReportTeardownActionComponentContent(eventType, xpp, owner, res))
22564        unknownContent(xpp);
22565      eventType = nextNoWhitespace(xpp);
22566    }
22567    next(xpp);
22568    parseElementClose(res);
22569    return res;
22570  }
22571
22572  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22573      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22574        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
22575      } else if (!parseBackboneElementContent(eventType, xpp, res))
22576        return false;
22577    return true;
22578  }
22579
22580  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22581    TestScript res = new TestScript();
22582    parseDomainResourceAttributes(xpp, res);
22583    next(xpp);
22584    int eventType = nextNoWhitespace(xpp);
22585    while (eventType != XmlPullParser.END_TAG) {
22586  if (!parseTestScriptContent(eventType, xpp, res))
22587        unknownContent(xpp);
22588      eventType = nextNoWhitespace(xpp);
22589    }
22590    next(xpp);
22591    parseElementClose(res);
22592    return res;
22593  }
22594
22595  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
22596      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22597        res.setUrlElement(parseUri(xpp));
22598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22599        res.setIdentifier(parseIdentifier(xpp));
22600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22601        res.setVersionElement(parseString(xpp));
22602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22603        res.setNameElement(parseString(xpp));
22604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22605        res.setTitleElement(parseString(xpp));
22606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22607        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
22608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
22609        res.setExperimentalElement(parseBoolean(xpp));
22610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22611        res.setDateElement(parseDateTime(xpp));
22612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
22613        res.setPublisherElement(parseString(xpp));
22614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22615        res.getContact().add(parseContactDetail(xpp));
22616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22617        res.setDescriptionElement(parseMarkdown(xpp));
22618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
22619        res.getUseContext().add(parseUsageContext(xpp));
22620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22621        res.getJurisdiction().add(parseCodeableConcept(xpp));
22622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22623        res.setPurposeElement(parseMarkdown(xpp));
22624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
22625        res.setCopyrightElement(parseMarkdown(xpp));
22626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22627        res.getOrigin().add(parseTestScriptTestScriptOriginComponent(xpp, res));
22628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22629        res.getDestination().add(parseTestScriptTestScriptDestinationComponent(xpp, res));
22630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
22631        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
22632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
22633        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
22634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
22635        res.getProfile().add(parseReference(xpp));
22636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
22637        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
22638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
22639        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
22640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
22641        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
22642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
22643        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
22644      } else if (!parseDomainResourceContent(eventType, xpp, res))
22645        return false;
22646    return true;
22647  }
22648
22649  protected TestScript.TestScriptOriginComponent parseTestScriptTestScriptOriginComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22650    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
22651    parseBackboneAttributes(xpp, res);
22652    next(xpp);
22653    int eventType = nextNoWhitespace(xpp);
22654    while (eventType != XmlPullParser.END_TAG) {
22655  if (!parseTestScriptTestScriptOriginComponentContent(eventType, xpp, owner, res))
22656        unknownContent(xpp);
22657      eventType = nextNoWhitespace(xpp);
22658    }
22659    next(xpp);
22660    parseElementClose(res);
22661    return res;
22662  }
22663
22664  protected boolean parseTestScriptTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22665      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
22666        res.setIndexElement(parseInteger(xpp));
22667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
22668        res.setProfile(parseCoding(xpp));
22669      } else if (!parseBackboneElementContent(eventType, xpp, res))
22670        return false;
22671    return true;
22672  }
22673
22674  protected TestScript.TestScriptDestinationComponent parseTestScriptTestScriptDestinationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22675    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
22676    parseBackboneAttributes(xpp, res);
22677    next(xpp);
22678    int eventType = nextNoWhitespace(xpp);
22679    while (eventType != XmlPullParser.END_TAG) {
22680  if (!parseTestScriptTestScriptDestinationComponentContent(eventType, xpp, owner, res))
22681        unknownContent(xpp);
22682      eventType = nextNoWhitespace(xpp);
22683    }
22684    next(xpp);
22685    parseElementClose(res);
22686    return res;
22687  }
22688
22689  protected boolean parseTestScriptTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22690      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
22691        res.setIndexElement(parseInteger(xpp));
22692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
22693        res.setProfile(parseCoding(xpp));
22694      } else if (!parseBackboneElementContent(eventType, xpp, res))
22695        return false;
22696    return true;
22697  }
22698
22699  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22700    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
22701    parseBackboneAttributes(xpp, res);
22702    next(xpp);
22703    int eventType = nextNoWhitespace(xpp);
22704    while (eventType != XmlPullParser.END_TAG) {
22705  if (!parseTestScriptTestScriptMetadataComponentContent(eventType, xpp, owner, res))
22706        unknownContent(xpp);
22707      eventType = nextNoWhitespace(xpp);
22708    }
22709    next(xpp);
22710    parseElementClose(res);
22711    return res;
22712  }
22713
22714  protected boolean parseTestScriptTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22715      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
22716        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
22717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
22718        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
22719      } else if (!parseBackboneElementContent(eventType, xpp, res))
22720        return false;
22721    return true;
22722  }
22723
22724  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22725    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
22726    parseBackboneAttributes(xpp, res);
22727    next(xpp);
22728    int eventType = nextNoWhitespace(xpp);
22729    while (eventType != XmlPullParser.END_TAG) {
22730  if (!parseTestScriptTestScriptMetadataLinkComponentContent(eventType, xpp, owner, res))
22731        unknownContent(xpp);
22732      eventType = nextNoWhitespace(xpp);
22733    }
22734    next(xpp);
22735    parseElementClose(res);
22736    return res;
22737  }
22738
22739  protected boolean parseTestScriptTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22740      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22741        res.setUrlElement(parseUri(xpp));
22742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22743        res.setDescriptionElement(parseString(xpp));
22744      } else if (!parseBackboneElementContent(eventType, xpp, res))
22745        return false;
22746    return true;
22747  }
22748
22749  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22750    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
22751    parseBackboneAttributes(xpp, res);
22752    next(xpp);
22753    int eventType = nextNoWhitespace(xpp);
22754    while (eventType != XmlPullParser.END_TAG) {
22755  if (!parseTestScriptTestScriptMetadataCapabilityComponentContent(eventType, xpp, owner, res))
22756        unknownContent(xpp);
22757      eventType = nextNoWhitespace(xpp);
22758    }
22759    next(xpp);
22760    parseElementClose(res);
22761    return res;
22762  }
22763
22764  protected boolean parseTestScriptTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22765      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
22766        res.setRequiredElement(parseBoolean(xpp));
22767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
22768        res.setValidatedElement(parseBoolean(xpp));
22769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22770        res.setDescriptionElement(parseString(xpp));
22771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22772        res.getOrigin().add(parseInteger(xpp));
22773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22774        res.setDestinationElement(parseInteger(xpp));
22775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
22776        res.getLink().add(parseUri(xpp));
22777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
22778        res.setCapabilitiesElement(parseCanonical(xpp));
22779      } else if (!parseBackboneElementContent(eventType, xpp, res))
22780        return false;
22781    return true;
22782  }
22783
22784  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22785    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
22786    parseBackboneAttributes(xpp, res);
22787    next(xpp);
22788    int eventType = nextNoWhitespace(xpp);
22789    while (eventType != XmlPullParser.END_TAG) {
22790  if (!parseTestScriptTestScriptFixtureComponentContent(eventType, xpp, owner, res))
22791        unknownContent(xpp);
22792      eventType = nextNoWhitespace(xpp);
22793    }
22794    next(xpp);
22795    parseElementClose(res);
22796    return res;
22797  }
22798
22799  protected boolean parseTestScriptTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22800      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
22801        res.setAutocreateElement(parseBoolean(xpp));
22802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
22803        res.setAutodeleteElement(parseBoolean(xpp));
22804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22805        res.setResource(parseReference(xpp));
22806      } else if (!parseBackboneElementContent(eventType, xpp, res))
22807        return false;
22808    return true;
22809  }
22810
22811  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22812    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
22813    parseBackboneAttributes(xpp, res);
22814    next(xpp);
22815    int eventType = nextNoWhitespace(xpp);
22816    while (eventType != XmlPullParser.END_TAG) {
22817  if (!parseTestScriptTestScriptVariableComponentContent(eventType, xpp, owner, res))
22818        unknownContent(xpp);
22819      eventType = nextNoWhitespace(xpp);
22820    }
22821    next(xpp);
22822    parseElementClose(res);
22823    return res;
22824  }
22825
22826  protected boolean parseTestScriptTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22827      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22828        res.setNameElement(parseString(xpp));
22829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
22830        res.setDefaultValueElement(parseString(xpp));
22831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22832        res.setDescriptionElement(parseString(xpp));
22833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
22834        res.setExpressionElement(parseString(xpp));
22835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
22836        res.setHeaderFieldElement(parseString(xpp));
22837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
22838        res.setHintElement(parseString(xpp));
22839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
22840        res.setPathElement(parseString(xpp));
22841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
22842        res.setSourceIdElement(parseId(xpp));
22843      } else if (!parseBackboneElementContent(eventType, xpp, res))
22844        return false;
22845    return true;
22846  }
22847
22848  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22849    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
22850    parseBackboneAttributes(xpp, res);
22851    next(xpp);
22852    int eventType = nextNoWhitespace(xpp);
22853    while (eventType != XmlPullParser.END_TAG) {
22854  if (!parseTestScriptTestScriptSetupComponentContent(eventType, xpp, owner, res))
22855        unknownContent(xpp);
22856      eventType = nextNoWhitespace(xpp);
22857    }
22858    next(xpp);
22859    parseElementClose(res);
22860    return res;
22861  }
22862
22863  protected boolean parseTestScriptTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22864      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22865        res.getAction().add(parseTestScriptSetupActionComponent(xpp, owner));
22866      } else if (!parseBackboneElementContent(eventType, xpp, res))
22867        return false;
22868    return true;
22869  }
22870
22871  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22872    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
22873    parseBackboneAttributes(xpp, res);
22874    next(xpp);
22875    int eventType = nextNoWhitespace(xpp);
22876    while (eventType != XmlPullParser.END_TAG) {
22877  if (!parseTestScriptSetupActionComponentContent(eventType, xpp, owner, res))
22878        unknownContent(xpp);
22879      eventType = nextNoWhitespace(xpp);
22880    }
22881    next(xpp);
22882    parseElementClose(res);
22883    return res;
22884  }
22885
22886  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22887      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22888        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
22889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22890        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
22891      } else if (!parseBackboneElementContent(eventType, xpp, res))
22892        return false;
22893    return true;
22894  }
22895
22896  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22897    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
22898    parseBackboneAttributes(xpp, res);
22899    next(xpp);
22900    int eventType = nextNoWhitespace(xpp);
22901    while (eventType != XmlPullParser.END_TAG) {
22902  if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, owner, res))
22903        unknownContent(xpp);
22904      eventType = nextNoWhitespace(xpp);
22905    }
22906    next(xpp);
22907    parseElementClose(res);
22908    return res;
22909  }
22910
22911  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22912      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22913        res.setType(parseCoding(xpp));
22914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22915        res.setResourceElement(parseCode(xpp));
22916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
22917        res.setLabelElement(parseString(xpp));
22918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22919        res.setDescriptionElement(parseString(xpp));
22920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
22921        res.setAcceptElement(parseCode(xpp));
22922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
22923        res.setContentTypeElement(parseCode(xpp));
22924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22925        res.setDestinationElement(parseInteger(xpp));
22926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
22927        res.setEncodeRequestUrlElement(parseBoolean(xpp));
22928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
22929        res.setMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
22930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22931        res.setOriginElement(parseInteger(xpp));
22932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
22933        res.setParamsElement(parseString(xpp));
22934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
22935        res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
22936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
22937        res.setRequestIdElement(parseId(xpp));
22938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
22939        res.setResponseIdElement(parseId(xpp));
22940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
22941        res.setSourceIdElement(parseId(xpp));
22942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
22943        res.setTargetIdElement(parseId(xpp));
22944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22945        res.setUrlElement(parseString(xpp));
22946      } else if (!parseBackboneElementContent(eventType, xpp, res))
22947        return false;
22948    return true;
22949  }
22950
22951  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22952    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
22953    parseBackboneAttributes(xpp, res);
22954    next(xpp);
22955    int eventType = nextNoWhitespace(xpp);
22956    while (eventType != XmlPullParser.END_TAG) {
22957  if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, owner, res))
22958        unknownContent(xpp);
22959      eventType = nextNoWhitespace(xpp);
22960    }
22961    next(xpp);
22962    parseElementClose(res);
22963    return res;
22964  }
22965
22966  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22967      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
22968        res.setFieldElement(parseString(xpp));
22969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22970        res.setValueElement(parseString(xpp));
22971      } else if (!parseBackboneElementContent(eventType, xpp, res))
22972        return false;
22973    return true;
22974  }
22975
22976  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22977    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
22978    parseBackboneAttributes(xpp, res);
22979    next(xpp);
22980    int eventType = nextNoWhitespace(xpp);
22981    while (eventType != XmlPullParser.END_TAG) {
22982  if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, owner, res))
22983        unknownContent(xpp);
22984      eventType = nextNoWhitespace(xpp);
22985    }
22986    next(xpp);
22987    parseElementClose(res);
22988    return res;
22989  }
22990
22991  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22992      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
22993        res.setLabelElement(parseString(xpp));
22994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22995        res.setDescriptionElement(parseString(xpp));
22996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
22997        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
22998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
22999        res.setCompareToSourceIdElement(parseString(xpp));
23000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
23001        res.setCompareToSourceExpressionElement(parseString(xpp));
23002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
23003        res.setCompareToSourcePathElement(parseString(xpp));
23004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
23005        res.setContentTypeElement(parseCode(xpp));
23006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
23007        res.setExpressionElement(parseString(xpp));
23008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
23009        res.setHeaderFieldElement(parseString(xpp));
23010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
23011        res.setMinimumIdElement(parseString(xpp));
23012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
23013        res.setNavigationLinksElement(parseBoolean(xpp));
23014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
23015        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
23016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
23017        res.setPathElement(parseString(xpp));
23018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
23019        res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
23020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
23021        res.setRequestURLElement(parseString(xpp));
23022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
23023        res.setResourceElement(parseCode(xpp));
23024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
23025        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
23026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
23027        res.setResponseCodeElement(parseString(xpp));
23028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
23029        res.setSourceIdElement(parseId(xpp));
23030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
23031        res.setValidateProfileIdElement(parseId(xpp));
23032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
23033        res.setValueElement(parseString(xpp));
23034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
23035        res.setWarningOnlyElement(parseBoolean(xpp));
23036      } else if (!parseBackboneElementContent(eventType, xpp, res))
23037        return false;
23038    return true;
23039  }
23040
23041  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23042    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
23043    parseBackboneAttributes(xpp, res);
23044    next(xpp);
23045    int eventType = nextNoWhitespace(xpp);
23046    while (eventType != XmlPullParser.END_TAG) {
23047  if (!parseTestScriptTestScriptTestComponentContent(eventType, xpp, owner, res))
23048        unknownContent(xpp);
23049      eventType = nextNoWhitespace(xpp);
23050    }
23051    next(xpp);
23052    parseElementClose(res);
23053    return res;
23054  }
23055
23056  protected boolean parseTestScriptTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23057      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23058        res.setNameElement(parseString(xpp));
23059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23060        res.setDescriptionElement(parseString(xpp));
23061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23062        res.getAction().add(parseTestScriptTestActionComponent(xpp, owner));
23063      } else if (!parseBackboneElementContent(eventType, xpp, res))
23064        return false;
23065    return true;
23066  }
23067
23068  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23069    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
23070    parseBackboneAttributes(xpp, res);
23071    next(xpp);
23072    int eventType = nextNoWhitespace(xpp);
23073    while (eventType != XmlPullParser.END_TAG) {
23074  if (!parseTestScriptTestActionComponentContent(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 parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23084      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
23085        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
23086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
23087        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
23088      } else if (!parseBackboneElementContent(eventType, xpp, res))
23089        return false;
23090    return true;
23091  }
23092
23093  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23094    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
23095    parseBackboneAttributes(xpp, res);
23096    next(xpp);
23097    int eventType = nextNoWhitespace(xpp);
23098    while (eventType != XmlPullParser.END_TAG) {
23099  if (!parseTestScriptTestScriptTeardownComponentContent(eventType, xpp, owner, res))
23100        unknownContent(xpp);
23101      eventType = nextNoWhitespace(xpp);
23102    }
23103    next(xpp);
23104    parseElementClose(res);
23105    return res;
23106  }
23107
23108  protected boolean parseTestScriptTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23109      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23110        res.getAction().add(parseTestScriptTeardownActionComponent(xpp, owner));
23111      } else if (!parseBackboneElementContent(eventType, xpp, res))
23112        return false;
23113    return true;
23114  }
23115
23116  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23117    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
23118    parseBackboneAttributes(xpp, res);
23119    next(xpp);
23120    int eventType = nextNoWhitespace(xpp);
23121    while (eventType != XmlPullParser.END_TAG) {
23122  if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, owner, res))
23123        unknownContent(xpp);
23124      eventType = nextNoWhitespace(xpp);
23125    }
23126    next(xpp);
23127    parseElementClose(res);
23128    return res;
23129  }
23130
23131  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23132      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
23133        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
23134      } else if (!parseBackboneElementContent(eventType, xpp, res))
23135        return false;
23136    return true;
23137  }
23138
23139  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23140    ValueSet res = new ValueSet();
23141    parseDomainResourceAttributes(xpp, res);
23142    next(xpp);
23143    int eventType = nextNoWhitespace(xpp);
23144    while (eventType != XmlPullParser.END_TAG) {
23145  if (!parseValueSetContent(eventType, xpp, res))
23146        unknownContent(xpp);
23147      eventType = nextNoWhitespace(xpp);
23148    }
23149    next(xpp);
23150    parseElementClose(res);
23151    return res;
23152  }
23153
23154  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
23155      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
23156        res.setUrlElement(parseUri(xpp));
23157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23158        res.getIdentifier().add(parseIdentifier(xpp));
23159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23160        res.setVersionElement(parseString(xpp));
23161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23162        res.setNameElement(parseString(xpp));
23163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
23164        res.setTitleElement(parseString(xpp));
23165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23166        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
23167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
23168        res.setExperimentalElement(parseBoolean(xpp));
23169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
23170        res.setDateElement(parseDateTime(xpp));
23171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
23172        res.setPublisherElement(parseString(xpp));
23173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
23174        res.getContact().add(parseContactDetail(xpp));
23175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23176        res.setDescriptionElement(parseMarkdown(xpp));
23177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
23178        res.getUseContext().add(parseUsageContext(xpp));
23179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
23180        res.getJurisdiction().add(parseCodeableConcept(xpp));
23181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
23182        res.setImmutableElement(parseBoolean(xpp));
23183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
23184        res.setPurposeElement(parseMarkdown(xpp));
23185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
23186        res.setCopyrightElement(parseMarkdown(xpp));
23187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
23188        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
23189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
23190        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
23191      } else if (!parseDomainResourceContent(eventType, xpp, res))
23192        return false;
23193    return true;
23194  }
23195
23196  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23197    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
23198    parseBackboneAttributes(xpp, res);
23199    next(xpp);
23200    int eventType = nextNoWhitespace(xpp);
23201    while (eventType != XmlPullParser.END_TAG) {
23202  if (!parseValueSetValueSetComposeComponentContent(eventType, xpp, owner, res))
23203        unknownContent(xpp);
23204      eventType = nextNoWhitespace(xpp);
23205    }
23206    next(xpp);
23207    parseElementClose(res);
23208    return res;
23209  }
23210
23211  protected boolean parseValueSetValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23212      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
23213        res.setLockedDateElement(parseDate(xpp));
23214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
23215        res.setInactiveElement(parseBoolean(xpp));
23216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
23217        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
23218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
23219        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
23220      } else if (!parseBackboneElementContent(eventType, xpp, res))
23221        return false;
23222    return true;
23223  }
23224
23225  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23226    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
23227    parseBackboneAttributes(xpp, res);
23228    next(xpp);
23229    int eventType = nextNoWhitespace(xpp);
23230    while (eventType != XmlPullParser.END_TAG) {
23231  if (!parseValueSetConceptSetComponentContent(eventType, xpp, owner, res))
23232        unknownContent(xpp);
23233      eventType = nextNoWhitespace(xpp);
23234    }
23235    next(xpp);
23236    parseElementClose(res);
23237    return res;
23238  }
23239
23240  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23241      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
23242        res.setSystemElement(parseUri(xpp));
23243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23244        res.setVersionElement(parseString(xpp));
23245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
23246        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
23247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
23248        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
23249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
23250        res.getValueSet().add(parseCanonical(xpp));
23251      } else if (!parseBackboneElementContent(eventType, xpp, res))
23252        return false;
23253    return true;
23254  }
23255
23256  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23257    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
23258    parseBackboneAttributes(xpp, res);
23259    next(xpp);
23260    int eventType = nextNoWhitespace(xpp);
23261    while (eventType != XmlPullParser.END_TAG) {
23262  if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, owner, res))
23263        unknownContent(xpp);
23264      eventType = nextNoWhitespace(xpp);
23265    }
23266    next(xpp);
23267    parseElementClose(res);
23268    return res;
23269  }
23270
23271  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23272      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23273        res.setCodeElement(parseCode(xpp));
23274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
23275        res.setDisplayElement(parseString(xpp));
23276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
23277        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
23278      } else if (!parseBackboneElementContent(eventType, xpp, res))
23279        return false;
23280    return true;
23281  }
23282
23283  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23284    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
23285    parseBackboneAttributes(xpp, res);
23286    next(xpp);
23287    int eventType = nextNoWhitespace(xpp);
23288    while (eventType != XmlPullParser.END_TAG) {
23289  if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, owner, res))
23290        unknownContent(xpp);
23291      eventType = nextNoWhitespace(xpp);
23292    }
23293    next(xpp);
23294    parseElementClose(res);
23295    return res;
23296  }
23297
23298  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23299      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
23300        res.setLanguageElement(parseCode(xpp));
23301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
23302        res.setUse(parseCoding(xpp));
23303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
23304        res.setValueElement(parseString(xpp));
23305      } else if (!parseBackboneElementContent(eventType, xpp, res))
23306        return false;
23307    return true;
23308  }
23309
23310  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23311    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
23312    parseBackboneAttributes(xpp, res);
23313    next(xpp);
23314    int eventType = nextNoWhitespace(xpp);
23315    while (eventType != XmlPullParser.END_TAG) {
23316  if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, owner, res))
23317        unknownContent(xpp);
23318      eventType = nextNoWhitespace(xpp);
23319    }
23320    next(xpp);
23321    parseElementClose(res);
23322    return res;
23323  }
23324
23325  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23326      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
23327        res.setPropertyElement(parseCode(xpp));
23328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
23329        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
23330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
23331        res.setValueElement(parseString(xpp));
23332      } else if (!parseBackboneElementContent(eventType, xpp, res))
23333        return false;
23334    return true;
23335  }
23336
23337  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23338    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
23339    parseBackboneAttributes(xpp, res);
23340    next(xpp);
23341    int eventType = nextNoWhitespace(xpp);
23342    while (eventType != XmlPullParser.END_TAG) {
23343  if (!parseValueSetValueSetExpansionComponentContent(eventType, xpp, owner, res))
23344        unknownContent(xpp);
23345      eventType = nextNoWhitespace(xpp);
23346    }
23347    next(xpp);
23348    parseElementClose(res);
23349    return res;
23350  }
23351
23352  protected boolean parseValueSetValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23353      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23354        res.setIdentifierElement(parseUri(xpp));
23355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
23356        res.setTimestampElement(parseDateTime(xpp));
23357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
23358        res.setTotalElement(parseInteger(xpp));
23359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
23360        res.setOffsetElement(parseInteger(xpp));
23361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
23362        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
23363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
23364        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
23365      } else if (!parseBackboneElementContent(eventType, xpp, res))
23366        return false;
23367    return true;
23368  }
23369
23370  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23371    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
23372    parseBackboneAttributes(xpp, res);
23373    next(xpp);
23374    int eventType = nextNoWhitespace(xpp);
23375    while (eventType != XmlPullParser.END_TAG) {
23376  if (!parseValueSetValueSetExpansionParameterComponentContent(eventType, xpp, owner, res))
23377        unknownContent(xpp);
23378      eventType = nextNoWhitespace(xpp);
23379    }
23380    next(xpp);
23381    parseElementClose(res);
23382    return res;
23383  }
23384
23385  protected boolean parseValueSetValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23386      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23387        res.setNameElement(parseString(xpp));
23388      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
23389        res.setValue(parseType("value", xpp));
23390      } else if (!parseBackboneElementContent(eventType, xpp, res))
23391        return false;
23392    return true;
23393  }
23394
23395  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23396    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
23397    parseBackboneAttributes(xpp, res);
23398    next(xpp);
23399    int eventType = nextNoWhitespace(xpp);
23400    while (eventType != XmlPullParser.END_TAG) {
23401  if (!parseValueSetValueSetExpansionContainsComponentContent(eventType, xpp, owner, res))
23402        unknownContent(xpp);
23403      eventType = nextNoWhitespace(xpp);
23404    }
23405    next(xpp);
23406    parseElementClose(res);
23407    return res;
23408  }
23409
23410  protected boolean parseValueSetValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23411      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
23412        res.setSystemElement(parseUri(xpp));
23413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
23414        res.setAbstractElement(parseBoolean(xpp));
23415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
23416        res.setInactiveElement(parseBoolean(xpp));
23417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23418        res.setVersionElement(parseString(xpp));
23419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23420        res.setCodeElement(parseCode(xpp));
23421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
23422        res.setDisplayElement(parseString(xpp));
23423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
23424        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
23425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
23426        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
23427      } else if (!parseBackboneElementContent(eventType, xpp, res))
23428        return false;
23429    return true;
23430  }
23431
23432  protected VerificationResult parseVerificationResult(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23433    VerificationResult res = new VerificationResult();
23434    parseDomainResourceAttributes(xpp, res);
23435    next(xpp);
23436    int eventType = nextNoWhitespace(xpp);
23437    while (eventType != XmlPullParser.END_TAG) {
23438  if (!parseVerificationResultContent(eventType, xpp, res))
23439        unknownContent(xpp);
23440      eventType = nextNoWhitespace(xpp);
23441    }
23442    next(xpp);
23443    parseElementClose(res);
23444    return res;
23445  }
23446
23447  protected boolean parseVerificationResultContent(int eventType, XmlPullParser xpp, VerificationResult res) throws XmlPullParserException, IOException, FHIRFormatError {
23448      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
23449        res.getTarget().add(parseReference(xpp));
23450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetLocation")) {
23451        res.getTargetLocation().add(parseString(xpp));
23452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("need")) {
23453        res.setNeed(parseCodeableConcept(xpp));
23454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23455        res.setStatusElement(parseEnumeration(xpp, VerificationResult.Status.NULL, new VerificationResult.StatusEnumFactory()));
23456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
23457        res.setStatusDateElement(parseDateTime(xpp));
23458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationType")) {
23459        res.setValidationType(parseCodeableConcept(xpp));
23460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationProcess")) {
23461        res.getValidationProcess().add(parseCodeableConcept(xpp));
23462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
23463        res.setFrequency(parseTiming(xpp));
23464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastPerformed")) {
23465        res.setLastPerformedElement(parseDateTime(xpp));
23466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nextScheduled")) {
23467        res.setNextScheduledElement(parseDate(xpp));
23468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("failureAction")) {
23469        res.setFailureAction(parseCodeableConcept(xpp));
23470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
23471        res.getPrimarySource().add(parseVerificationResultVerificationResultPrimarySourceComponent(xpp, res));
23472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestation")) {
23473        res.setAttestation(parseVerificationResultVerificationResultAttestationComponent(xpp, res));
23474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validator")) {
23475        res.getValidator().add(parseVerificationResultVerificationResultValidatorComponent(xpp, res));
23476      } else if (!parseDomainResourceContent(eventType, xpp, res))
23477        return false;
23478    return true;
23479  }
23480
23481  protected VerificationResult.VerificationResultPrimarySourceComponent parseVerificationResultVerificationResultPrimarySourceComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
23482    VerificationResult.VerificationResultPrimarySourceComponent res = new VerificationResult.VerificationResultPrimarySourceComponent();
23483    parseBackboneAttributes(xpp, res);
23484    next(xpp);
23485    int eventType = nextNoWhitespace(xpp);
23486    while (eventType != XmlPullParser.END_TAG) {
23487  if (!parseVerificationResultVerificationResultPrimarySourceComponentContent(eventType, xpp, owner, res))
23488        unknownContent(xpp);
23489      eventType = nextNoWhitespace(xpp);
23490    }
23491    next(xpp);
23492    parseElementClose(res);
23493    return res;
23494  }
23495
23496  protected boolean parseVerificationResultVerificationResultPrimarySourceComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultPrimarySourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23497      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
23498        res.setWho(parseReference(xpp));
23499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23500        res.getType().add(parseCodeableConcept(xpp));
23501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
23502        res.getCommunicationMethod().add(parseCodeableConcept(xpp));
23503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationStatus")) {
23504        res.setValidationStatus(parseCodeableConcept(xpp));
23505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationDate")) {
23506        res.setValidationDateElement(parseDateTime(xpp));
23507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("canPushUpdates")) {
23508        res.setCanPushUpdates(parseCodeableConcept(xpp));
23509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pushTypeAvailable")) {
23510        res.getPushTypeAvailable().add(parseCodeableConcept(xpp));
23511      } else if (!parseBackboneElementContent(eventType, xpp, res))
23512        return false;
23513    return true;
23514  }
23515
23516  protected VerificationResult.VerificationResultAttestationComponent parseVerificationResultVerificationResultAttestationComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
23517    VerificationResult.VerificationResultAttestationComponent res = new VerificationResult.VerificationResultAttestationComponent();
23518    parseBackboneAttributes(xpp, res);
23519    next(xpp);
23520    int eventType = nextNoWhitespace(xpp);
23521    while (eventType != XmlPullParser.END_TAG) {
23522  if (!parseVerificationResultVerificationResultAttestationComponentContent(eventType, xpp, owner, res))
23523        unknownContent(xpp);
23524      eventType = nextNoWhitespace(xpp);
23525    }
23526    next(xpp);
23527    parseElementClose(res);
23528    return res;
23529  }
23530
23531  protected boolean parseVerificationResultVerificationResultAttestationComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultAttestationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23532      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
23533        res.setWho(parseReference(xpp));
23534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
23535        res.setOnBehalfOf(parseReference(xpp));
23536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
23537        res.setCommunicationMethod(parseCodeableConcept(xpp));
23538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
23539        res.setDateElement(parseDate(xpp));
23540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceIdentityCertificate")) {
23541        res.setSourceIdentityCertificateElement(parseString(xpp));
23542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxyIdentityCertificate")) {
23543        res.setProxyIdentityCertificateElement(parseString(xpp));
23544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxySignature")) {
23545        res.setProxySignature(parseSignature(xpp));
23546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceSignature")) {
23547        res.setSourceSignature(parseSignature(xpp));
23548      } else if (!parseBackboneElementContent(eventType, xpp, res))
23549        return false;
23550    return true;
23551  }
23552
23553  protected VerificationResult.VerificationResultValidatorComponent parseVerificationResultVerificationResultValidatorComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
23554    VerificationResult.VerificationResultValidatorComponent res = new VerificationResult.VerificationResultValidatorComponent();
23555    parseBackboneAttributes(xpp, res);
23556    next(xpp);
23557    int eventType = nextNoWhitespace(xpp);
23558    while (eventType != XmlPullParser.END_TAG) {
23559  if (!parseVerificationResultVerificationResultValidatorComponentContent(eventType, xpp, owner, res))
23560        unknownContent(xpp);
23561      eventType = nextNoWhitespace(xpp);
23562    }
23563    next(xpp);
23564    parseElementClose(res);
23565    return res;
23566  }
23567
23568  protected boolean parseVerificationResultVerificationResultValidatorComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultValidatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23569      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
23570        res.setOrganization(parseReference(xpp));
23571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identityCertificate")) {
23572        res.setIdentityCertificateElement(parseString(xpp));
23573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestationSignature")) {
23574        res.setAttestationSignature(parseSignature(xpp));
23575      } else if (!parseBackboneElementContent(eventType, xpp, res))
23576        return false;
23577    return true;
23578  }
23579
23580  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23581    VisionPrescription res = new VisionPrescription();
23582    parseDomainResourceAttributes(xpp, res);
23583    next(xpp);
23584    int eventType = nextNoWhitespace(xpp);
23585    while (eventType != XmlPullParser.END_TAG) {
23586  if (!parseVisionPrescriptionContent(eventType, xpp, res))
23587        unknownContent(xpp);
23588      eventType = nextNoWhitespace(xpp);
23589    }
23590    next(xpp);
23591    parseElementClose(res);
23592    return res;
23593  }
23594
23595  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
23596      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23597        res.getIdentifier().add(parseIdentifier(xpp));
23598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23599        res.setStatusElement(parseEnumeration(xpp, VisionPrescription.VisionStatus.NULL, new VisionPrescription.VisionStatusEnumFactory()));
23600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
23601        res.setCreatedElement(parseDateTime(xpp));
23602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
23603        res.setPatient(parseReference(xpp));
23604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
23605        res.setEncounter(parseReference(xpp));
23606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
23607        res.setDateWrittenElement(parseDateTime(xpp));
23608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
23609        res.setPrescriber(parseReference(xpp));
23610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lensSpecification")) {
23611        res.getLensSpecification().add(parseVisionPrescriptionVisionPrescriptionLensSpecificationComponent(xpp, res));
23612      } else if (!parseDomainResourceContent(eventType, xpp, res))
23613        return false;
23614    return true;
23615  }
23616
23617  protected VisionPrescription.VisionPrescriptionLensSpecificationComponent parseVisionPrescriptionVisionPrescriptionLensSpecificationComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
23618    VisionPrescription.VisionPrescriptionLensSpecificationComponent res = new VisionPrescription.VisionPrescriptionLensSpecificationComponent();
23619    parseBackboneAttributes(xpp, res);
23620    next(xpp);
23621    int eventType = nextNoWhitespace(xpp);
23622    while (eventType != XmlPullParser.END_TAG) {
23623  if (!parseVisionPrescriptionVisionPrescriptionLensSpecificationComponentContent(eventType, xpp, owner, res))
23624        unknownContent(xpp);
23625      eventType = nextNoWhitespace(xpp);
23626    }
23627    next(xpp);
23628    parseElementClose(res);
23629    return res;
23630  }
23631
23632  protected boolean parseVisionPrescriptionVisionPrescriptionLensSpecificationComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.VisionPrescriptionLensSpecificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
23634        res.setProduct(parseCodeableConcept(xpp));
23635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
23636        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
23637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
23638        res.setSphereElement(parseDecimal(xpp));
23639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
23640        res.setCylinderElement(parseDecimal(xpp));
23641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
23642        res.setAxisElement(parseInteger(xpp));
23643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
23644        res.getPrism().add(parseVisionPrescriptionPrismComponent(xpp, owner));
23645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
23646        res.setAddElement(parseDecimal(xpp));
23647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
23648        res.setPowerElement(parseDecimal(xpp));
23649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
23650        res.setBackCurveElement(parseDecimal(xpp));
23651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
23652        res.setDiameterElement(parseDecimal(xpp));
23653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
23654        res.setDuration(parseQuantity(xpp));
23655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
23656        res.setColorElement(parseString(xpp));
23657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
23658        res.setBrandElement(parseString(xpp));
23659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
23660        res.getNote().add(parseAnnotation(xpp));
23661      } else if (!parseBackboneElementContent(eventType, xpp, res))
23662        return false;
23663    return true;
23664  }
23665
23666  protected VisionPrescription.PrismComponent parseVisionPrescriptionPrismComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
23667    VisionPrescription.PrismComponent res = new VisionPrescription.PrismComponent();
23668    parseBackboneAttributes(xpp, res);
23669    next(xpp);
23670    int eventType = nextNoWhitespace(xpp);
23671    while (eventType != XmlPullParser.END_TAG) {
23672  if (!parseVisionPrescriptionPrismComponentContent(eventType, xpp, owner, res))
23673        unknownContent(xpp);
23674      eventType = nextNoWhitespace(xpp);
23675    }
23676    next(xpp);
23677    parseElementClose(res);
23678    return res;
23679  }
23680
23681  protected boolean parseVisionPrescriptionPrismComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.PrismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23682      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
23683        res.setAmountElement(parseDecimal(xpp));
23684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
23685        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
23686      } else if (!parseBackboneElementContent(eventType, xpp, res))
23687        return false;
23688    return true;
23689  }
23690
23691  @Override
23692  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23693    if (xpp.getName().equals("Parameters"))
23694      return parseParameters(xpp);
23695    else if (xpp.getName().equals("Account"))
23696      return parseAccount(xpp);
23697    else if (xpp.getName().equals("ActivityDefinition"))
23698      return parseActivityDefinition(xpp);
23699    else if (xpp.getName().equals("AdverseEvent"))
23700      return parseAdverseEvent(xpp);
23701    else if (xpp.getName().equals("AllergyIntolerance"))
23702      return parseAllergyIntolerance(xpp);
23703    else if (xpp.getName().equals("Appointment"))
23704      return parseAppointment(xpp);
23705    else if (xpp.getName().equals("AppointmentResponse"))
23706      return parseAppointmentResponse(xpp);
23707    else if (xpp.getName().equals("AuditEvent"))
23708      return parseAuditEvent(xpp);
23709    else if (xpp.getName().equals("Basic"))
23710      return parseBasic(xpp);
23711    else if (xpp.getName().equals("Binary"))
23712      return parseBinary(xpp);
23713    else if (xpp.getName().equals("BiologicallyDerivedProduct"))
23714      return parseBiologicallyDerivedProduct(xpp);
23715    else if (xpp.getName().equals("BodyStructure"))
23716      return parseBodyStructure(xpp);
23717    else if (xpp.getName().equals("Bundle"))
23718      return parseBundle(xpp);
23719    else if (xpp.getName().equals("CapabilityStatement"))
23720      return parseCapabilityStatement(xpp);
23721    else if (xpp.getName().equals("CarePlan"))
23722      return parseCarePlan(xpp);
23723    else if (xpp.getName().equals("CareTeam"))
23724      return parseCareTeam(xpp);
23725    else if (xpp.getName().equals("CatalogEntry"))
23726      return parseCatalogEntry(xpp);
23727    else if (xpp.getName().equals("ChargeItem"))
23728      return parseChargeItem(xpp);
23729    else if (xpp.getName().equals("ChargeItemDefinition"))
23730      return parseChargeItemDefinition(xpp);
23731    else if (xpp.getName().equals("Claim"))
23732      return parseClaim(xpp);
23733    else if (xpp.getName().equals("ClaimResponse"))
23734      return parseClaimResponse(xpp);
23735    else if (xpp.getName().equals("ClinicalImpression"))
23736      return parseClinicalImpression(xpp);
23737    else if (xpp.getName().equals("CodeSystem"))
23738      return parseCodeSystem(xpp);
23739    else if (xpp.getName().equals("Communication"))
23740      return parseCommunication(xpp);
23741    else if (xpp.getName().equals("CommunicationRequest"))
23742      return parseCommunicationRequest(xpp);
23743    else if (xpp.getName().equals("CompartmentDefinition"))
23744      return parseCompartmentDefinition(xpp);
23745    else if (xpp.getName().equals("Composition"))
23746      return parseComposition(xpp);
23747    else if (xpp.getName().equals("ConceptMap"))
23748      return parseConceptMap(xpp);
23749    else if (xpp.getName().equals("Condition"))
23750      return parseCondition(xpp);
23751    else if (xpp.getName().equals("Consent"))
23752      return parseConsent(xpp);
23753    else if (xpp.getName().equals("Contract"))
23754      return parseContract(xpp);
23755    else if (xpp.getName().equals("Coverage"))
23756      return parseCoverage(xpp);
23757    else if (xpp.getName().equals("CoverageEligibilityRequest"))
23758      return parseCoverageEligibilityRequest(xpp);
23759    else if (xpp.getName().equals("CoverageEligibilityResponse"))
23760      return parseCoverageEligibilityResponse(xpp);
23761    else if (xpp.getName().equals("DetectedIssue"))
23762      return parseDetectedIssue(xpp);
23763    else if (xpp.getName().equals("Device"))
23764      return parseDevice(xpp);
23765    else if (xpp.getName().equals("DeviceDefinition"))
23766      return parseDeviceDefinition(xpp);
23767    else if (xpp.getName().equals("DeviceMetric"))
23768      return parseDeviceMetric(xpp);
23769    else if (xpp.getName().equals("DeviceRequest"))
23770      return parseDeviceRequest(xpp);
23771    else if (xpp.getName().equals("DeviceUseStatement"))
23772      return parseDeviceUseStatement(xpp);
23773    else if (xpp.getName().equals("DiagnosticReport"))
23774      return parseDiagnosticReport(xpp);
23775    else if (xpp.getName().equals("DocumentManifest"))
23776      return parseDocumentManifest(xpp);
23777    else if (xpp.getName().equals("DocumentReference"))
23778      return parseDocumentReference(xpp);
23779    else if (xpp.getName().equals("EffectEvidenceSynthesis"))
23780      return parseEffectEvidenceSynthesis(xpp);
23781    else if (xpp.getName().equals("Encounter"))
23782      return parseEncounter(xpp);
23783    else if (xpp.getName().equals("Endpoint"))
23784      return parseEndpoint(xpp);
23785    else if (xpp.getName().equals("EnrollmentRequest"))
23786      return parseEnrollmentRequest(xpp);
23787    else if (xpp.getName().equals("EnrollmentResponse"))
23788      return parseEnrollmentResponse(xpp);
23789    else if (xpp.getName().equals("EpisodeOfCare"))
23790      return parseEpisodeOfCare(xpp);
23791    else if (xpp.getName().equals("EventDefinition"))
23792      return parseEventDefinition(xpp);
23793    else if (xpp.getName().equals("Evidence"))
23794      return parseEvidence(xpp);
23795    else if (xpp.getName().equals("EvidenceVariable"))
23796      return parseEvidenceVariable(xpp);
23797    else if (xpp.getName().equals("ExampleScenario"))
23798      return parseExampleScenario(xpp);
23799    else if (xpp.getName().equals("ExplanationOfBenefit"))
23800      return parseExplanationOfBenefit(xpp);
23801    else if (xpp.getName().equals("FamilyMemberHistory"))
23802      return parseFamilyMemberHistory(xpp);
23803    else if (xpp.getName().equals("Flag"))
23804      return parseFlag(xpp);
23805    else if (xpp.getName().equals("Goal"))
23806      return parseGoal(xpp);
23807    else if (xpp.getName().equals("GraphDefinition"))
23808      return parseGraphDefinition(xpp);
23809    else if (xpp.getName().equals("Group"))
23810      return parseGroup(xpp);
23811    else if (xpp.getName().equals("GuidanceResponse"))
23812      return parseGuidanceResponse(xpp);
23813    else if (xpp.getName().equals("HealthcareService"))
23814      return parseHealthcareService(xpp);
23815    else if (xpp.getName().equals("ImagingStudy"))
23816      return parseImagingStudy(xpp);
23817    else if (xpp.getName().equals("Immunization"))
23818      return parseImmunization(xpp);
23819    else if (xpp.getName().equals("ImmunizationEvaluation"))
23820      return parseImmunizationEvaluation(xpp);
23821    else if (xpp.getName().equals("ImmunizationRecommendation"))
23822      return parseImmunizationRecommendation(xpp);
23823    else if (xpp.getName().equals("ImplementationGuide"))
23824      return parseImplementationGuide(xpp);
23825    else if (xpp.getName().equals("InsurancePlan"))
23826      return parseInsurancePlan(xpp);
23827    else if (xpp.getName().equals("Invoice"))
23828      return parseInvoice(xpp);
23829    else if (xpp.getName().equals("Library"))
23830      return parseLibrary(xpp);
23831    else if (xpp.getName().equals("Linkage"))
23832      return parseLinkage(xpp);
23833    else if (xpp.getName().equals("List"))
23834      return parseListResource(xpp);
23835    else if (xpp.getName().equals("Location"))
23836      return parseLocation(xpp);
23837    else if (xpp.getName().equals("Measure"))
23838      return parseMeasure(xpp);
23839    else if (xpp.getName().equals("MeasureReport"))
23840      return parseMeasureReport(xpp);
23841    else if (xpp.getName().equals("Media"))
23842      return parseMedia(xpp);
23843    else if (xpp.getName().equals("Medication"))
23844      return parseMedication(xpp);
23845    else if (xpp.getName().equals("MedicationAdministration"))
23846      return parseMedicationAdministration(xpp);
23847    else if (xpp.getName().equals("MedicationDispense"))
23848      return parseMedicationDispense(xpp);
23849    else if (xpp.getName().equals("MedicationKnowledge"))
23850      return parseMedicationKnowledge(xpp);
23851    else if (xpp.getName().equals("MedicationRequest"))
23852      return parseMedicationRequest(xpp);
23853    else if (xpp.getName().equals("MedicationStatement"))
23854      return parseMedicationStatement(xpp);
23855    else if (xpp.getName().equals("MedicinalProduct"))
23856      return parseMedicinalProduct(xpp);
23857    else if (xpp.getName().equals("MedicinalProductAuthorization"))
23858      return parseMedicinalProductAuthorization(xpp);
23859    else if (xpp.getName().equals("MedicinalProductContraindication"))
23860      return parseMedicinalProductContraindication(xpp);
23861    else if (xpp.getName().equals("MedicinalProductIndication"))
23862      return parseMedicinalProductIndication(xpp);
23863    else if (xpp.getName().equals("MedicinalProductIngredient"))
23864      return parseMedicinalProductIngredient(xpp);
23865    else if (xpp.getName().equals("MedicinalProductInteraction"))
23866      return parseMedicinalProductInteraction(xpp);
23867    else if (xpp.getName().equals("MedicinalProductManufactured"))
23868      return parseMedicinalProductManufactured(xpp);
23869    else if (xpp.getName().equals("MedicinalProductPackaged"))
23870      return parseMedicinalProductPackaged(xpp);
23871    else if (xpp.getName().equals("MedicinalProductPharmaceutical"))
23872      return parseMedicinalProductPharmaceutical(xpp);
23873    else if (xpp.getName().equals("MedicinalProductUndesirableEffect"))
23874      return parseMedicinalProductUndesirableEffect(xpp);
23875    else if (xpp.getName().equals("MessageDefinition"))
23876      return parseMessageDefinition(xpp);
23877    else if (xpp.getName().equals("MessageHeader"))
23878      return parseMessageHeader(xpp);
23879    else if (xpp.getName().equals("MolecularSequence"))
23880      return parseMolecularSequence(xpp);
23881    else if (xpp.getName().equals("NamingSystem"))
23882      return parseNamingSystem(xpp);
23883    else if (xpp.getName().equals("NutritionOrder"))
23884      return parseNutritionOrder(xpp);
23885    else if (xpp.getName().equals("Observation"))
23886      return parseObservation(xpp);
23887    else if (xpp.getName().equals("ObservationDefinition"))
23888      return parseObservationDefinition(xpp);
23889    else if (xpp.getName().equals("OperationDefinition"))
23890      return parseOperationDefinition(xpp);
23891    else if (xpp.getName().equals("OperationOutcome"))
23892      return parseOperationOutcome(xpp);
23893    else if (xpp.getName().equals("Organization"))
23894      return parseOrganization(xpp);
23895    else if (xpp.getName().equals("OrganizationAffiliation"))
23896      return parseOrganizationAffiliation(xpp);
23897    else if (xpp.getName().equals("Patient"))
23898      return parsePatient(xpp);
23899    else if (xpp.getName().equals("PaymentNotice"))
23900      return parsePaymentNotice(xpp);
23901    else if (xpp.getName().equals("PaymentReconciliation"))
23902      return parsePaymentReconciliation(xpp);
23903    else if (xpp.getName().equals("Person"))
23904      return parsePerson(xpp);
23905    else if (xpp.getName().equals("PlanDefinition"))
23906      return parsePlanDefinition(xpp);
23907    else if (xpp.getName().equals("Practitioner"))
23908      return parsePractitioner(xpp);
23909    else if (xpp.getName().equals("PractitionerRole"))
23910      return parsePractitionerRole(xpp);
23911    else if (xpp.getName().equals("Procedure"))
23912      return parseProcedure(xpp);
23913    else if (xpp.getName().equals("Provenance"))
23914      return parseProvenance(xpp);
23915    else if (xpp.getName().equals("Questionnaire"))
23916      return parseQuestionnaire(xpp);
23917    else if (xpp.getName().equals("QuestionnaireResponse"))
23918      return parseQuestionnaireResponse(xpp);
23919    else if (xpp.getName().equals("RelatedPerson"))
23920      return parseRelatedPerson(xpp);
23921    else if (xpp.getName().equals("RequestGroup"))
23922      return parseRequestGroup(xpp);
23923    else if (xpp.getName().equals("ResearchDefinition"))
23924      return parseResearchDefinition(xpp);
23925    else if (xpp.getName().equals("ResearchElementDefinition"))
23926      return parseResearchElementDefinition(xpp);
23927    else if (xpp.getName().equals("ResearchStudy"))
23928      return parseResearchStudy(xpp);
23929    else if (xpp.getName().equals("ResearchSubject"))
23930      return parseResearchSubject(xpp);
23931    else if (xpp.getName().equals("RiskAssessment"))
23932      return parseRiskAssessment(xpp);
23933    else if (xpp.getName().equals("RiskEvidenceSynthesis"))
23934      return parseRiskEvidenceSynthesis(xpp);
23935    else if (xpp.getName().equals("Schedule"))
23936      return parseSchedule(xpp);
23937    else if (xpp.getName().equals("SearchParameter"))
23938      return parseSearchParameter(xpp);
23939    else if (xpp.getName().equals("ServiceRequest"))
23940      return parseServiceRequest(xpp);
23941    else if (xpp.getName().equals("Slot"))
23942      return parseSlot(xpp);
23943    else if (xpp.getName().equals("Specimen"))
23944      return parseSpecimen(xpp);
23945    else if (xpp.getName().equals("SpecimenDefinition"))
23946      return parseSpecimenDefinition(xpp);
23947    else if (xpp.getName().equals("StructureDefinition"))
23948      return parseStructureDefinition(xpp);
23949    else if (xpp.getName().equals("StructureMap"))
23950      return parseStructureMap(xpp);
23951    else if (xpp.getName().equals("Subscription"))
23952      return parseSubscription(xpp);
23953    else if (xpp.getName().equals("Substance"))
23954      return parseSubstance(xpp);
23955    else if (xpp.getName().equals("SubstanceNucleicAcid"))
23956      return parseSubstanceNucleicAcid(xpp);
23957    else if (xpp.getName().equals("SubstancePolymer"))
23958      return parseSubstancePolymer(xpp);
23959    else if (xpp.getName().equals("SubstanceProtein"))
23960      return parseSubstanceProtein(xpp);
23961    else if (xpp.getName().equals("SubstanceReferenceInformation"))
23962      return parseSubstanceReferenceInformation(xpp);
23963    else if (xpp.getName().equals("SubstanceSourceMaterial"))
23964      return parseSubstanceSourceMaterial(xpp);
23965    else if (xpp.getName().equals("SubstanceSpecification"))
23966      return parseSubstanceSpecification(xpp);
23967    else if (xpp.getName().equals("SupplyDelivery"))
23968      return parseSupplyDelivery(xpp);
23969    else if (xpp.getName().equals("SupplyRequest"))
23970      return parseSupplyRequest(xpp);
23971    else if (xpp.getName().equals("Task"))
23972      return parseTask(xpp);
23973    else if (xpp.getName().equals("TerminologyCapabilities"))
23974      return parseTerminologyCapabilities(xpp);
23975    else if (xpp.getName().equals("TestReport"))
23976      return parseTestReport(xpp);
23977    else if (xpp.getName().equals("TestScript"))
23978      return parseTestScript(xpp);
23979    else if (xpp.getName().equals("ValueSet"))
23980      return parseValueSet(xpp);
23981    else if (xpp.getName().equals("VerificationResult"))
23982      return parseVerificationResult(xpp);
23983    else if (xpp.getName().equals("VisionPrescription"))
23984      return parseVisionPrescription(xpp);
23985    else if (xpp.getName().equals("Binary"))
23986      return parseBinary(xpp);
23987    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
23988  }
23989
23990  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23991    if (xpp.getName().equals(prefix+"date"))
23992      return parseDate(xpp);
23993    else if (xpp.getName().equals(prefix+"dateTime"))
23994      return parseDateTime(xpp);
23995    else if (xpp.getName().equals(prefix+"code"))
23996      return parseCode(xpp);
23997    else if (xpp.getName().equals(prefix+"string"))
23998      return parseString(xpp);
23999    else if (xpp.getName().equals(prefix+"integer"))
24000      return parseInteger(xpp);
24001    else if (xpp.getName().equals(prefix+"oid"))
24002      return parseOid(xpp);
24003    else if (xpp.getName().equals(prefix+"canonical"))
24004      return parseCanonical(xpp);
24005    else if (xpp.getName().equals(prefix+"uri"))
24006      return parseUri(xpp);
24007    else if (xpp.getName().equals(prefix+"uuid"))
24008      return parseUuid(xpp);
24009    else if (xpp.getName().equals(prefix+"url"))
24010      return parseUrl(xpp);
24011    else if (xpp.getName().equals(prefix+"instant"))
24012      return parseInstant(xpp);
24013    else if (xpp.getName().equals(prefix+"boolean"))
24014      return parseBoolean(xpp);
24015    else if (xpp.getName().equals(prefix+"base64Binary"))
24016      return parseBase64Binary(xpp);
24017    else if (xpp.getName().equals(prefix+"unsignedInt"))
24018      return parseUnsignedInt(xpp);
24019    else if (xpp.getName().equals(prefix+"markdown"))
24020      return parseMarkdown(xpp);
24021    else if (xpp.getName().equals(prefix+"time"))
24022      return parseTime(xpp);
24023    else if (xpp.getName().equals(prefix+"id"))
24024      return parseId(xpp);
24025    else if (xpp.getName().equals(prefix+"positiveInt"))
24026      return parsePositiveInt(xpp);
24027    else if (xpp.getName().equals(prefix+"decimal"))
24028      return parseDecimal(xpp);
24029    else if (xpp.getName().equals(prefix+"Extension"))
24030      return parseExtension(xpp);
24031    else if (xpp.getName().equals(prefix+"Narrative"))
24032      return parseNarrative(xpp);
24033    else if (xpp.getName().equals(prefix+"Meta"))
24034      return parseMeta(xpp);
24035    else if (xpp.getName().equals(prefix+"Address"))
24036      return parseAddress(xpp);
24037    else if (xpp.getName().equals(prefix+"Contributor"))
24038      return parseContributor(xpp);
24039    else if (xpp.getName().equals(prefix+"Attachment"))
24040      return parseAttachment(xpp);
24041    else if (xpp.getName().equals(prefix+"Count"))
24042      return parseCount(xpp);
24043    else if (xpp.getName().equals(prefix+"DataRequirement"))
24044      return parseDataRequirement(xpp);
24045    else if (xpp.getName().equals(prefix+"Dosage"))
24046      return parseDosage(xpp);
24047    else if (xpp.getName().equals(prefix+"Money"))
24048      return parseMoney(xpp);
24049    else if (xpp.getName().equals(prefix+"HumanName"))
24050      return parseHumanName(xpp);
24051    else if (xpp.getName().equals(prefix+"ContactPoint"))
24052      return parseContactPoint(xpp);
24053    else if (xpp.getName().equals(prefix+"MarketingStatus"))
24054      return parseMarketingStatus(xpp);
24055    else if (xpp.getName().equals(prefix+"Identifier"))
24056      return parseIdentifier(xpp);
24057    else if (xpp.getName().equals(prefix+"SubstanceAmount"))
24058      return parseSubstanceAmount(xpp);
24059    else if (xpp.getName().equals(prefix+"Coding"))
24060      return parseCoding(xpp);
24061    else if (xpp.getName().equals(prefix+"SampledData"))
24062      return parseSampledData(xpp);
24063    else if (xpp.getName().equals(prefix+"Population"))
24064      return parsePopulation(xpp);
24065    else if (xpp.getName().equals(prefix+"Ratio"))
24066      return parseRatio(xpp);
24067    else if (xpp.getName().equals(prefix+"Distance"))
24068      return parseDistance(xpp);
24069    else if (xpp.getName().equals(prefix+"Age"))
24070      return parseAge(xpp);
24071    else if (xpp.getName().equals(prefix+"Reference"))
24072      return parseReference(xpp);
24073    else if (xpp.getName().equals(prefix+"TriggerDefinition"))
24074      return parseTriggerDefinition(xpp);
24075    else if (xpp.getName().equals(prefix+"Quantity"))
24076      return parseQuantity(xpp);
24077    else if (xpp.getName().equals(prefix+"Period"))
24078      return parsePeriod(xpp);
24079    else if (xpp.getName().equals(prefix+"Duration"))
24080      return parseDuration(xpp);
24081    else if (xpp.getName().equals(prefix+"Range"))
24082      return parseRange(xpp);
24083    else if (xpp.getName().equals(prefix+"RelatedArtifact"))
24084      return parseRelatedArtifact(xpp);
24085    else if (xpp.getName().equals(prefix+"Annotation"))
24086      return parseAnnotation(xpp);
24087    else if (xpp.getName().equals(prefix+"ProductShelfLife"))
24088      return parseProductShelfLife(xpp);
24089    else if (xpp.getName().equals(prefix+"ContactDetail"))
24090      return parseContactDetail(xpp);
24091    else if (xpp.getName().equals(prefix+"UsageContext"))
24092      return parseUsageContext(xpp);
24093    else if (xpp.getName().equals(prefix+"Expression"))
24094      return parseExpression(xpp);
24095    else if (xpp.getName().equals(prefix+"Signature"))
24096      return parseSignature(xpp);
24097    else if (xpp.getName().equals(prefix+"Timing"))
24098      return parseTiming(xpp);
24099    else if (xpp.getName().equals(prefix+"ProdCharacteristic"))
24100      return parseProdCharacteristic(xpp);
24101    else if (xpp.getName().equals(prefix+"CodeableConcept"))
24102      return parseCodeableConcept(xpp);
24103    else if (xpp.getName().equals(prefix+"ParameterDefinition"))
24104      return parseParameterDefinition(xpp);
24105    else if (xpp.getName().equals(prefix+"Date"))
24106      return parseDate(xpp);
24107    else if (xpp.getName().equals(prefix+"DateTime"))
24108      return parseDateTime(xpp);
24109    else if (xpp.getName().equals(prefix+"Code"))
24110      return parseCode(xpp);
24111    else if (xpp.getName().equals(prefix+"String"))
24112      return parseString(xpp);
24113    else if (xpp.getName().equals(prefix+"Integer"))
24114      return parseInteger(xpp);
24115    else if (xpp.getName().equals(prefix+"Oid"))
24116      return parseOid(xpp);
24117    else if (xpp.getName().equals(prefix+"Canonical"))
24118      return parseCanonical(xpp);
24119    else if (xpp.getName().equals(prefix+"Uri"))
24120      return parseUri(xpp);
24121    else if (xpp.getName().equals(prefix+"Uuid"))
24122      return parseUuid(xpp);
24123    else if (xpp.getName().equals(prefix+"Url"))
24124      return parseUrl(xpp);
24125    else if (xpp.getName().equals(prefix+"Instant"))
24126      return parseInstant(xpp);
24127    else if (xpp.getName().equals(prefix+"Boolean"))
24128      return parseBoolean(xpp);
24129    else if (xpp.getName().equals(prefix+"Base64Binary"))
24130      return parseBase64Binary(xpp);
24131    else if (xpp.getName().equals(prefix+"UnsignedInt"))
24132      return parseUnsignedInt(xpp);
24133    else if (xpp.getName().equals(prefix+"Markdown"))
24134      return parseMarkdown(xpp);
24135    else if (xpp.getName().equals(prefix+"Time"))
24136      return parseTime(xpp);
24137    else if (xpp.getName().equals(prefix+"Id"))
24138      return parseId(xpp);
24139    else if (xpp.getName().equals(prefix+"PositiveInt"))
24140      return parsePositiveInt(xpp);
24141    else if (xpp.getName().equals(prefix+"Decimal"))
24142      return parseDecimal(xpp);
24143    throw new FHIRFormatError("Unknown type "+xpp.getName());
24144  }
24145
24146  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
24147    if (type.equals("date"))
24148      return parseDate(xpp);
24149    else if (type.equals("dateTime"))
24150      return parseDateTime(xpp);
24151    else if (type.equals("code"))
24152      return parseCode(xpp);
24153    else if (type.equals("string"))
24154      return parseString(xpp);
24155    else if (type.equals("integer"))
24156      return parseInteger(xpp);
24157    else if (type.equals("oid"))
24158      return parseOid(xpp);
24159    else if (type.equals("canonical"))
24160      return parseCanonical(xpp);
24161    else if (type.equals("uri"))
24162      return parseUri(xpp);
24163    else if (type.equals("uuid"))
24164      return parseUuid(xpp);
24165    else if (type.equals("url"))
24166      return parseUrl(xpp);
24167    else if (type.equals("instant"))
24168      return parseInstant(xpp);
24169    else if (type.equals("boolean"))
24170      return parseBoolean(xpp);
24171    else if (type.equals("base64Binary"))
24172      return parseBase64Binary(xpp);
24173    else if (type.equals("unsignedInt"))
24174      return parseUnsignedInt(xpp);
24175    else if (type.equals("markdown"))
24176      return parseMarkdown(xpp);
24177    else if (type.equals("time"))
24178      return parseTime(xpp);
24179    else if (type.equals("id"))
24180      return parseId(xpp);
24181    else if (type.equals("positiveInt"))
24182      return parsePositiveInt(xpp);
24183    else if (type.equals("decimal"))
24184      return parseDecimal(xpp);
24185    else if (type.equals("Extension"))
24186      return parseExtension(xpp);
24187    else if (type.equals("Narrative"))
24188      return parseNarrative(xpp);
24189    else if (type.equals("Meta"))
24190      return parseMeta(xpp);
24191    else if (type.equals("Address"))
24192      return parseAddress(xpp);
24193    else if (type.equals("Contributor"))
24194      return parseContributor(xpp);
24195    else if (type.equals("Attachment"))
24196      return parseAttachment(xpp);
24197    else if (type.equals("Count"))
24198      return parseCount(xpp);
24199    else if (type.equals("DataRequirement"))
24200      return parseDataRequirement(xpp);
24201    else if (type.equals("Dosage"))
24202      return parseDosage(xpp);
24203    else if (type.equals("Money"))
24204      return parseMoney(xpp);
24205    else if (type.equals("HumanName"))
24206      return parseHumanName(xpp);
24207    else if (type.equals("ContactPoint"))
24208      return parseContactPoint(xpp);
24209    else if (type.equals("MarketingStatus"))
24210      return parseMarketingStatus(xpp);
24211    else if (type.equals("Identifier"))
24212      return parseIdentifier(xpp);
24213    else if (type.equals("SubstanceAmount"))
24214      return parseSubstanceAmount(xpp);
24215    else if (type.equals("Coding"))
24216      return parseCoding(xpp);
24217    else if (type.equals("SampledData"))
24218      return parseSampledData(xpp);
24219    else if (type.equals("Population"))
24220      return parsePopulation(xpp);
24221    else if (type.equals("Ratio"))
24222      return parseRatio(xpp);
24223    else if (type.equals("Distance"))
24224      return parseDistance(xpp);
24225    else if (type.equals("Age"))
24226      return parseAge(xpp);
24227    else if (type.equals("Reference"))
24228      return parseReference(xpp);
24229    else if (type.equals("TriggerDefinition"))
24230      return parseTriggerDefinition(xpp);
24231    else if (type.equals("Quantity"))
24232      return parseQuantity(xpp);
24233    else if (type.equals("Period"))
24234      return parsePeriod(xpp);
24235    else if (type.equals("Duration"))
24236      return parseDuration(xpp);
24237    else if (type.equals("Range"))
24238      return parseRange(xpp);
24239    else if (type.equals("RelatedArtifact"))
24240      return parseRelatedArtifact(xpp);
24241    else if (type.equals("Annotation"))
24242      return parseAnnotation(xpp);
24243    else if (type.equals("ProductShelfLife"))
24244      return parseProductShelfLife(xpp);
24245    else if (type.equals("ContactDetail"))
24246      return parseContactDetail(xpp);
24247    else if (type.equals("UsageContext"))
24248      return parseUsageContext(xpp);
24249    else if (type.equals("Expression"))
24250      return parseExpression(xpp);
24251    else if (type.equals("Signature"))
24252      return parseSignature(xpp);
24253    else if (type.equals("Timing"))
24254      return parseTiming(xpp);
24255    else if (type.equals("ProdCharacteristic"))
24256      return parseProdCharacteristic(xpp);
24257    else if (type.equals("CodeableConcept"))
24258      return parseCodeableConcept(xpp);
24259    else if (type.equals("ParameterDefinition"))
24260      return parseParameterDefinition(xpp);
24261    throw new FHIRFormatError("Unknown type "+type);
24262  }
24263
24264  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
24265    if (type.equals("Extension"))
24266      return parseExtension(xpp);
24267    else if (type.equals("Narrative"))
24268      return parseNarrative(xpp);
24269    else if (type.equals("Meta"))
24270      return parseMeta(xpp);
24271    else if (type.equals("Address"))
24272      return parseAddress(xpp);
24273    else if (type.equals("Contributor"))
24274      return parseContributor(xpp);
24275    else if (type.equals("Attachment"))
24276      return parseAttachment(xpp);
24277    else if (type.equals("Count"))
24278      return parseCount(xpp);
24279    else if (type.equals("DataRequirement"))
24280      return parseDataRequirement(xpp);
24281    else if (type.equals("Dosage"))
24282      return parseDosage(xpp);
24283    else if (type.equals("Money"))
24284      return parseMoney(xpp);
24285    else if (type.equals("HumanName"))
24286      return parseHumanName(xpp);
24287    else if (type.equals("ContactPoint"))
24288      return parseContactPoint(xpp);
24289    else if (type.equals("MarketingStatus"))
24290      return parseMarketingStatus(xpp);
24291    else if (type.equals("Identifier"))
24292      return parseIdentifier(xpp);
24293    else if (type.equals("SubstanceAmount"))
24294      return parseSubstanceAmount(xpp);
24295    else if (type.equals("Coding"))
24296      return parseCoding(xpp);
24297    else if (type.equals("SampledData"))
24298      return parseSampledData(xpp);
24299    else if (type.equals("Population"))
24300      return parsePopulation(xpp);
24301    else if (type.equals("Ratio"))
24302      return parseRatio(xpp);
24303    else if (type.equals("Distance"))
24304      return parseDistance(xpp);
24305    else if (type.equals("Age"))
24306      return parseAge(xpp);
24307    else if (type.equals("Reference"))
24308      return parseReference(xpp);
24309    else if (type.equals("TriggerDefinition"))
24310      return parseTriggerDefinition(xpp);
24311    else if (type.equals("Quantity"))
24312      return parseQuantity(xpp);
24313    else if (type.equals("Period"))
24314      return parsePeriod(xpp);
24315    else if (type.equals("Duration"))
24316      return parseDuration(xpp);
24317    else if (type.equals("Range"))
24318      return parseRange(xpp);
24319    else if (type.equals("RelatedArtifact"))
24320      return parseRelatedArtifact(xpp);
24321    else if (type.equals("Annotation"))
24322      return parseAnnotation(xpp);
24323    else if (type.equals("ProductShelfLife"))
24324      return parseProductShelfLife(xpp);
24325    else if (type.equals("ContactDetail"))
24326      return parseContactDetail(xpp);
24327    else if (type.equals("UsageContext"))
24328      return parseUsageContext(xpp);
24329    else if (type.equals("Expression"))
24330      return parseExpression(xpp);
24331    else if (type.equals("Signature"))
24332      return parseSignature(xpp);
24333    else if (type.equals("Timing"))
24334      return parseTiming(xpp);
24335    else if (type.equals("ProdCharacteristic"))
24336      return parseProdCharacteristic(xpp);
24337    else if (type.equals("CodeableConcept"))
24338      return parseCodeableConcept(xpp);
24339    else if (type.equals("ParameterDefinition"))
24340      return parseParameterDefinition(xpp);
24341    else if (type.equals("Parameters"))
24342      return parseParameters(xpp);
24343    else if (type.equals("Account"))
24344      return parseAccount(xpp);
24345    else if (type.equals("ActivityDefinition"))
24346      return parseActivityDefinition(xpp);
24347    else if (type.equals("AdverseEvent"))
24348      return parseAdverseEvent(xpp);
24349    else if (type.equals("AllergyIntolerance"))
24350      return parseAllergyIntolerance(xpp);
24351    else if (type.equals("Appointment"))
24352      return parseAppointment(xpp);
24353    else if (type.equals("AppointmentResponse"))
24354      return parseAppointmentResponse(xpp);
24355    else if (type.equals("AuditEvent"))
24356      return parseAuditEvent(xpp);
24357    else if (type.equals("Basic"))
24358      return parseBasic(xpp);
24359    else if (type.equals("Binary"))
24360      return parseBinary(xpp);
24361    else if (type.equals("BiologicallyDerivedProduct"))
24362      return parseBiologicallyDerivedProduct(xpp);
24363    else if (type.equals("BodyStructure"))
24364      return parseBodyStructure(xpp);
24365    else if (type.equals("Bundle"))
24366      return parseBundle(xpp);
24367    else if (type.equals("CapabilityStatement"))
24368      return parseCapabilityStatement(xpp);
24369    else if (type.equals("CarePlan"))
24370      return parseCarePlan(xpp);
24371    else if (type.equals("CareTeam"))
24372      return parseCareTeam(xpp);
24373    else if (type.equals("CatalogEntry"))
24374      return parseCatalogEntry(xpp);
24375    else if (type.equals("ChargeItem"))
24376      return parseChargeItem(xpp);
24377    else if (type.equals("ChargeItemDefinition"))
24378      return parseChargeItemDefinition(xpp);
24379    else if (type.equals("Claim"))
24380      return parseClaim(xpp);
24381    else if (type.equals("ClaimResponse"))
24382      return parseClaimResponse(xpp);
24383    else if (type.equals("ClinicalImpression"))
24384      return parseClinicalImpression(xpp);
24385    else if (type.equals("CodeSystem"))
24386      return parseCodeSystem(xpp);
24387    else if (type.equals("Communication"))
24388      return parseCommunication(xpp);
24389    else if (type.equals("CommunicationRequest"))
24390      return parseCommunicationRequest(xpp);
24391    else if (type.equals("CompartmentDefinition"))
24392      return parseCompartmentDefinition(xpp);
24393    else if (type.equals("Composition"))
24394      return parseComposition(xpp);
24395    else if (type.equals("ConceptMap"))
24396      return parseConceptMap(xpp);
24397    else if (type.equals("Condition"))
24398      return parseCondition(xpp);
24399    else if (type.equals("Consent"))
24400      return parseConsent(xpp);
24401    else if (type.equals("Contract"))
24402      return parseContract(xpp);
24403    else if (type.equals("Coverage"))
24404      return parseCoverage(xpp);
24405    else if (type.equals("CoverageEligibilityRequest"))
24406      return parseCoverageEligibilityRequest(xpp);
24407    else if (type.equals("CoverageEligibilityResponse"))
24408      return parseCoverageEligibilityResponse(xpp);
24409    else if (type.equals("DetectedIssue"))
24410      return parseDetectedIssue(xpp);
24411    else if (type.equals("Device"))
24412      return parseDevice(xpp);
24413    else if (type.equals("DeviceDefinition"))
24414      return parseDeviceDefinition(xpp);
24415    else if (type.equals("DeviceMetric"))
24416      return parseDeviceMetric(xpp);
24417    else if (type.equals("DeviceRequest"))
24418      return parseDeviceRequest(xpp);
24419    else if (type.equals("DeviceUseStatement"))
24420      return parseDeviceUseStatement(xpp);
24421    else if (type.equals("DiagnosticReport"))
24422      return parseDiagnosticReport(xpp);
24423    else if (type.equals("DocumentManifest"))
24424      return parseDocumentManifest(xpp);
24425    else if (type.equals("DocumentReference"))
24426      return parseDocumentReference(xpp);
24427    else if (type.equals("EffectEvidenceSynthesis"))
24428      return parseEffectEvidenceSynthesis(xpp);
24429    else if (type.equals("Encounter"))
24430      return parseEncounter(xpp);
24431    else if (type.equals("Endpoint"))
24432      return parseEndpoint(xpp);
24433    else if (type.equals("EnrollmentRequest"))
24434      return parseEnrollmentRequest(xpp);
24435    else if (type.equals("EnrollmentResponse"))
24436      return parseEnrollmentResponse(xpp);
24437    else if (type.equals("EpisodeOfCare"))
24438      return parseEpisodeOfCare(xpp);
24439    else if (type.equals("EventDefinition"))
24440      return parseEventDefinition(xpp);
24441    else if (type.equals("Evidence"))
24442      return parseEvidence(xpp);
24443    else if (type.equals("EvidenceVariable"))
24444      return parseEvidenceVariable(xpp);
24445    else if (type.equals("ExampleScenario"))
24446      return parseExampleScenario(xpp);
24447    else if (type.equals("ExplanationOfBenefit"))
24448      return parseExplanationOfBenefit(xpp);
24449    else if (type.equals("FamilyMemberHistory"))
24450      return parseFamilyMemberHistory(xpp);
24451    else if (type.equals("Flag"))
24452      return parseFlag(xpp);
24453    else if (type.equals("Goal"))
24454      return parseGoal(xpp);
24455    else if (type.equals("GraphDefinition"))
24456      return parseGraphDefinition(xpp);
24457    else if (type.equals("Group"))
24458      return parseGroup(xpp);
24459    else if (type.equals("GuidanceResponse"))
24460      return parseGuidanceResponse(xpp);
24461    else if (type.equals("HealthcareService"))
24462      return parseHealthcareService(xpp);
24463    else if (type.equals("ImagingStudy"))
24464      return parseImagingStudy(xpp);
24465    else if (type.equals("Immunization"))
24466      return parseImmunization(xpp);
24467    else if (type.equals("ImmunizationEvaluation"))
24468      return parseImmunizationEvaluation(xpp);
24469    else if (type.equals("ImmunizationRecommendation"))
24470      return parseImmunizationRecommendation(xpp);
24471    else if (type.equals("ImplementationGuide"))
24472      return parseImplementationGuide(xpp);
24473    else if (type.equals("InsurancePlan"))
24474      return parseInsurancePlan(xpp);
24475    else if (type.equals("Invoice"))
24476      return parseInvoice(xpp);
24477    else if (type.equals("Library"))
24478      return parseLibrary(xpp);
24479    else if (type.equals("Linkage"))
24480      return parseLinkage(xpp);
24481    else if (type.equals("List"))
24482      return parseListResource(xpp);
24483    else if (type.equals("Location"))
24484      return parseLocation(xpp);
24485    else if (type.equals("Measure"))
24486      return parseMeasure(xpp);
24487    else if (type.equals("MeasureReport"))
24488      return parseMeasureReport(xpp);
24489    else if (type.equals("Media"))
24490      return parseMedia(xpp);
24491    else if (type.equals("Medication"))
24492      return parseMedication(xpp);
24493    else if (type.equals("MedicationAdministration"))
24494      return parseMedicationAdministration(xpp);
24495    else if (type.equals("MedicationDispense"))
24496      return parseMedicationDispense(xpp);
24497    else if (type.equals("MedicationKnowledge"))
24498      return parseMedicationKnowledge(xpp);
24499    else if (type.equals("MedicationRequest"))
24500      return parseMedicationRequest(xpp);
24501    else if (type.equals("MedicationStatement"))
24502      return parseMedicationStatement(xpp);
24503    else if (type.equals("MedicinalProduct"))
24504      return parseMedicinalProduct(xpp);
24505    else if (type.equals("MedicinalProductAuthorization"))
24506      return parseMedicinalProductAuthorization(xpp);
24507    else if (type.equals("MedicinalProductContraindication"))
24508      return parseMedicinalProductContraindication(xpp);
24509    else if (type.equals("MedicinalProductIndication"))
24510      return parseMedicinalProductIndication(xpp);
24511    else if (type.equals("MedicinalProductIngredient"))
24512      return parseMedicinalProductIngredient(xpp);
24513    else if (type.equals("MedicinalProductInteraction"))
24514      return parseMedicinalProductInteraction(xpp);
24515    else if (type.equals("MedicinalProductManufactured"))
24516      return parseMedicinalProductManufactured(xpp);
24517    else if (type.equals("MedicinalProductPackaged"))
24518      return parseMedicinalProductPackaged(xpp);
24519    else if (type.equals("MedicinalProductPharmaceutical"))
24520      return parseMedicinalProductPharmaceutical(xpp);
24521    else if (type.equals("MedicinalProductUndesirableEffect"))
24522      return parseMedicinalProductUndesirableEffect(xpp);
24523    else if (type.equals("MessageDefinition"))
24524      return parseMessageDefinition(xpp);
24525    else if (type.equals("MessageHeader"))
24526      return parseMessageHeader(xpp);
24527    else if (type.equals("MolecularSequence"))
24528      return parseMolecularSequence(xpp);
24529    else if (type.equals("NamingSystem"))
24530      return parseNamingSystem(xpp);
24531    else if (type.equals("NutritionOrder"))
24532      return parseNutritionOrder(xpp);
24533    else if (type.equals("Observation"))
24534      return parseObservation(xpp);
24535    else if (type.equals("ObservationDefinition"))
24536      return parseObservationDefinition(xpp);
24537    else if (type.equals("OperationDefinition"))
24538      return parseOperationDefinition(xpp);
24539    else if (type.equals("OperationOutcome"))
24540      return parseOperationOutcome(xpp);
24541    else if (type.equals("Organization"))
24542      return parseOrganization(xpp);
24543    else if (type.equals("OrganizationAffiliation"))
24544      return parseOrganizationAffiliation(xpp);
24545    else if (type.equals("Patient"))
24546      return parsePatient(xpp);
24547    else if (type.equals("PaymentNotice"))
24548      return parsePaymentNotice(xpp);
24549    else if (type.equals("PaymentReconciliation"))
24550      return parsePaymentReconciliation(xpp);
24551    else if (type.equals("Person"))
24552      return parsePerson(xpp);
24553    else if (type.equals("PlanDefinition"))
24554      return parsePlanDefinition(xpp);
24555    else if (type.equals("Practitioner"))
24556      return parsePractitioner(xpp);
24557    else if (type.equals("PractitionerRole"))
24558      return parsePractitionerRole(xpp);
24559    else if (type.equals("Procedure"))
24560      return parseProcedure(xpp);
24561    else if (type.equals("Provenance"))
24562      return parseProvenance(xpp);
24563    else if (type.equals("Questionnaire"))
24564      return parseQuestionnaire(xpp);
24565    else if (type.equals("QuestionnaireResponse"))
24566      return parseQuestionnaireResponse(xpp);
24567    else if (type.equals("RelatedPerson"))
24568      return parseRelatedPerson(xpp);
24569    else if (type.equals("RequestGroup"))
24570      return parseRequestGroup(xpp);
24571    else if (type.equals("ResearchDefinition"))
24572      return parseResearchDefinition(xpp);
24573    else if (type.equals("ResearchElementDefinition"))
24574      return parseResearchElementDefinition(xpp);
24575    else if (type.equals("ResearchStudy"))
24576      return parseResearchStudy(xpp);
24577    else if (type.equals("ResearchSubject"))
24578      return parseResearchSubject(xpp);
24579    else if (type.equals("RiskAssessment"))
24580      return parseRiskAssessment(xpp);
24581    else if (type.equals("RiskEvidenceSynthesis"))
24582      return parseRiskEvidenceSynthesis(xpp);
24583    else if (type.equals("Schedule"))
24584      return parseSchedule(xpp);
24585    else if (type.equals("SearchParameter"))
24586      return parseSearchParameter(xpp);
24587    else if (type.equals("ServiceRequest"))
24588      return parseServiceRequest(xpp);
24589    else if (type.equals("Slot"))
24590      return parseSlot(xpp);
24591    else if (type.equals("Specimen"))
24592      return parseSpecimen(xpp);
24593    else if (type.equals("SpecimenDefinition"))
24594      return parseSpecimenDefinition(xpp);
24595    else if (type.equals("StructureDefinition"))
24596      return parseStructureDefinition(xpp);
24597    else if (type.equals("StructureMap"))
24598      return parseStructureMap(xpp);
24599    else if (type.equals("Subscription"))
24600      return parseSubscription(xpp);
24601    else if (type.equals("Substance"))
24602      return parseSubstance(xpp);
24603    else if (type.equals("SubstanceNucleicAcid"))
24604      return parseSubstanceNucleicAcid(xpp);
24605    else if (type.equals("SubstancePolymer"))
24606      return parseSubstancePolymer(xpp);
24607    else if (type.equals("SubstanceProtein"))
24608      return parseSubstanceProtein(xpp);
24609    else if (type.equals("SubstanceReferenceInformation"))
24610      return parseSubstanceReferenceInformation(xpp);
24611    else if (type.equals("SubstanceSourceMaterial"))
24612      return parseSubstanceSourceMaterial(xpp);
24613    else if (type.equals("SubstanceSpecification"))
24614      return parseSubstanceSpecification(xpp);
24615    else if (type.equals("SupplyDelivery"))
24616      return parseSupplyDelivery(xpp);
24617    else if (type.equals("SupplyRequest"))
24618      return parseSupplyRequest(xpp);
24619    else if (type.equals("Task"))
24620      return parseTask(xpp);
24621    else if (type.equals("TerminologyCapabilities"))
24622      return parseTerminologyCapabilities(xpp);
24623    else if (type.equals("TestReport"))
24624      return parseTestReport(xpp);
24625    else if (type.equals("TestScript"))
24626      return parseTestScript(xpp);
24627    else if (type.equals("ValueSet"))
24628      return parseValueSet(xpp);
24629    else if (type.equals("VerificationResult"))
24630      return parseVerificationResult(xpp);
24631    else if (type.equals("VisionPrescription"))
24632      return parseVisionPrescription(xpp);
24633    else if (type.equals("date"))
24634      return parseDate(xpp);
24635    else if (type.equals("dateTime"))
24636      return parseDateTime(xpp);
24637    else if (type.equals("code"))
24638      return parseCode(xpp);
24639    else if (type.equals("string"))
24640      return parseString(xpp);
24641    else if (type.equals("integer"))
24642      return parseInteger(xpp);
24643    else if (type.equals("oid"))
24644      return parseOid(xpp);
24645    else if (type.equals("canonical"))
24646      return parseCanonical(xpp);
24647    else if (type.equals("uri"))
24648      return parseUri(xpp);
24649    else if (type.equals("uuid"))
24650      return parseUuid(xpp);
24651    else if (type.equals("url"))
24652      return parseUrl(xpp);
24653    else if (type.equals("instant"))
24654      return parseInstant(xpp);
24655    else if (type.equals("boolean"))
24656      return parseBoolean(xpp);
24657    else if (type.equals("base64Binary"))
24658      return parseBase64Binary(xpp);
24659    else if (type.equals("unsignedInt"))
24660      return parseUnsignedInt(xpp);
24661    else if (type.equals("markdown"))
24662      return parseMarkdown(xpp);
24663    else if (type.equals("time"))
24664      return parseTime(xpp);
24665    else if (type.equals("id"))
24666      return parseId(xpp);
24667    else if (type.equals("positiveInt"))
24668      return parsePositiveInt(xpp);
24669    else if (type.equals("decimal"))
24670      return parseDecimal(xpp);
24671    throw new FHIRFormatError("Unknown type "+type);
24672  }
24673
24674  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
24675        if (xpp.getName().equals(prefix+"Meta"))
24676      return true;
24677    if (xpp.getName().equals(prefix+"Address"))
24678      return true;
24679    if (xpp.getName().equals(prefix+"Contributor"))
24680      return true;
24681    if (xpp.getName().equals(prefix+"Attachment"))
24682      return true;
24683    if (xpp.getName().equals(prefix+"Count"))
24684      return true;
24685    if (xpp.getName().equals(prefix+"DataRequirement"))
24686      return true;
24687    if (xpp.getName().equals(prefix+"Dosage"))
24688      return true;
24689    if (xpp.getName().equals(prefix+"Money"))
24690      return true;
24691    if (xpp.getName().equals(prefix+"HumanName"))
24692      return true;
24693    if (xpp.getName().equals(prefix+"ContactPoint"))
24694      return true;
24695    if (xpp.getName().equals(prefix+"MarketingStatus"))
24696      return true;
24697    if (xpp.getName().equals(prefix+"Identifier"))
24698      return true;
24699    if (xpp.getName().equals(prefix+"SubstanceAmount"))
24700      return true;
24701    if (xpp.getName().equals(prefix+"Coding"))
24702      return true;
24703    if (xpp.getName().equals(prefix+"SampledData"))
24704      return true;
24705    if (xpp.getName().equals(prefix+"Population"))
24706      return true;
24707    if (xpp.getName().equals(prefix+"Ratio"))
24708      return true;
24709    if (xpp.getName().equals(prefix+"Distance"))
24710      return true;
24711    if (xpp.getName().equals(prefix+"Age"))
24712      return true;
24713    if (xpp.getName().equals(prefix+"Reference"))
24714      return true;
24715    if (xpp.getName().equals(prefix+"TriggerDefinition"))
24716      return true;
24717    if (xpp.getName().equals(prefix+"Quantity"))
24718      return true;
24719    if (xpp.getName().equals(prefix+"Period"))
24720      return true;
24721    if (xpp.getName().equals(prefix+"Duration"))
24722      return true;
24723    if (xpp.getName().equals(prefix+"Range"))
24724      return true;
24725    if (xpp.getName().equals(prefix+"RelatedArtifact"))
24726      return true;
24727    if (xpp.getName().equals(prefix+"Annotation"))
24728      return true;
24729    if (xpp.getName().equals(prefix+"ProductShelfLife"))
24730      return true;
24731    if (xpp.getName().equals(prefix+"ContactDetail"))
24732      return true;
24733    if (xpp.getName().equals(prefix+"UsageContext"))
24734      return true;
24735    if (xpp.getName().equals(prefix+"Expression"))
24736      return true;
24737    if (xpp.getName().equals(prefix+"Signature"))
24738      return true;
24739    if (xpp.getName().equals(prefix+"Timing"))
24740      return true;
24741    if (xpp.getName().equals(prefix+"ProdCharacteristic"))
24742      return true;
24743    if (xpp.getName().equals(prefix+"CodeableConcept"))
24744      return true;
24745    if (xpp.getName().equals(prefix+"ParameterDefinition"))
24746      return true;
24747    if (xpp.getName().equals(prefix+"Parameters"))
24748      return true;
24749    if (xpp.getName().equals(prefix+"Account"))
24750      return true;
24751    if (xpp.getName().equals(prefix+"ActivityDefinition"))
24752      return true;
24753    if (xpp.getName().equals(prefix+"AdverseEvent"))
24754      return true;
24755    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
24756      return true;
24757    if (xpp.getName().equals(prefix+"Appointment"))
24758      return true;
24759    if (xpp.getName().equals(prefix+"AppointmentResponse"))
24760      return true;
24761    if (xpp.getName().equals(prefix+"AuditEvent"))
24762      return true;
24763    if (xpp.getName().equals(prefix+"Basic"))
24764      return true;
24765    if (xpp.getName().equals(prefix+"Binary"))
24766      return true;
24767    if (xpp.getName().equals(prefix+"BiologicallyDerivedProduct"))
24768      return true;
24769    if (xpp.getName().equals(prefix+"BodyStructure"))
24770      return true;
24771    if (xpp.getName().equals(prefix+"Bundle"))
24772      return true;
24773    if (xpp.getName().equals(prefix+"CapabilityStatement"))
24774      return true;
24775    if (xpp.getName().equals(prefix+"CarePlan"))
24776      return true;
24777    if (xpp.getName().equals(prefix+"CareTeam"))
24778      return true;
24779    if (xpp.getName().equals(prefix+"CatalogEntry"))
24780      return true;
24781    if (xpp.getName().equals(prefix+"ChargeItem"))
24782      return true;
24783    if (xpp.getName().equals(prefix+"ChargeItemDefinition"))
24784      return true;
24785    if (xpp.getName().equals(prefix+"Claim"))
24786      return true;
24787    if (xpp.getName().equals(prefix+"ClaimResponse"))
24788      return true;
24789    if (xpp.getName().equals(prefix+"ClinicalImpression"))
24790      return true;
24791    if (xpp.getName().equals(prefix+"CodeSystem"))
24792      return true;
24793    if (xpp.getName().equals(prefix+"Communication"))
24794      return true;
24795    if (xpp.getName().equals(prefix+"CommunicationRequest"))
24796      return true;
24797    if (xpp.getName().equals(prefix+"CompartmentDefinition"))
24798      return true;
24799    if (xpp.getName().equals(prefix+"Composition"))
24800      return true;
24801    if (xpp.getName().equals(prefix+"ConceptMap"))
24802      return true;
24803    if (xpp.getName().equals(prefix+"Condition"))
24804      return true;
24805    if (xpp.getName().equals(prefix+"Consent"))
24806      return true;
24807    if (xpp.getName().equals(prefix+"Contract"))
24808      return true;
24809    if (xpp.getName().equals(prefix+"Coverage"))
24810      return true;
24811    if (xpp.getName().equals(prefix+"CoverageEligibilityRequest"))
24812      return true;
24813    if (xpp.getName().equals(prefix+"CoverageEligibilityResponse"))
24814      return true;
24815    if (xpp.getName().equals(prefix+"DetectedIssue"))
24816      return true;
24817    if (xpp.getName().equals(prefix+"Device"))
24818      return true;
24819    if (xpp.getName().equals(prefix+"DeviceDefinition"))
24820      return true;
24821    if (xpp.getName().equals(prefix+"DeviceMetric"))
24822      return true;
24823    if (xpp.getName().equals(prefix+"DeviceRequest"))
24824      return true;
24825    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
24826      return true;
24827    if (xpp.getName().equals(prefix+"DiagnosticReport"))
24828      return true;
24829    if (xpp.getName().equals(prefix+"DocumentManifest"))
24830      return true;
24831    if (xpp.getName().equals(prefix+"DocumentReference"))
24832      return true;
24833    if (xpp.getName().equals(prefix+"EffectEvidenceSynthesis"))
24834      return true;
24835    if (xpp.getName().equals(prefix+"Encounter"))
24836      return true;
24837    if (xpp.getName().equals(prefix+"Endpoint"))
24838      return true;
24839    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
24840      return true;
24841    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
24842      return true;
24843    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
24844      return true;
24845    if (xpp.getName().equals(prefix+"EventDefinition"))
24846      return true;
24847    if (xpp.getName().equals(prefix+"Evidence"))
24848      return true;
24849    if (xpp.getName().equals(prefix+"EvidenceVariable"))
24850      return true;
24851    if (xpp.getName().equals(prefix+"ExampleScenario"))
24852      return true;
24853    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
24854      return true;
24855    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
24856      return true;
24857    if (xpp.getName().equals(prefix+"Flag"))
24858      return true;
24859    if (xpp.getName().equals(prefix+"Goal"))
24860      return true;
24861    if (xpp.getName().equals(prefix+"GraphDefinition"))
24862      return true;
24863    if (xpp.getName().equals(prefix+"Group"))
24864      return true;
24865    if (xpp.getName().equals(prefix+"GuidanceResponse"))
24866      return true;
24867    if (xpp.getName().equals(prefix+"HealthcareService"))
24868      return true;
24869    if (xpp.getName().equals(prefix+"ImagingStudy"))
24870      return true;
24871    if (xpp.getName().equals(prefix+"Immunization"))
24872      return true;
24873    if (xpp.getName().equals(prefix+"ImmunizationEvaluation"))
24874      return true;
24875    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
24876      return true;
24877    if (xpp.getName().equals(prefix+"ImplementationGuide"))
24878      return true;
24879    if (xpp.getName().equals(prefix+"InsurancePlan"))
24880      return true;
24881    if (xpp.getName().equals(prefix+"Invoice"))
24882      return true;
24883    if (xpp.getName().equals(prefix+"Library"))
24884      return true;
24885    if (xpp.getName().equals(prefix+"Linkage"))
24886      return true;
24887    if (xpp.getName().equals(prefix+"List"))
24888      return true;
24889    if (xpp.getName().equals(prefix+"Location"))
24890      return true;
24891    if (xpp.getName().equals(prefix+"Measure"))
24892      return true;
24893    if (xpp.getName().equals(prefix+"MeasureReport"))
24894      return true;
24895    if (xpp.getName().equals(prefix+"Media"))
24896      return true;
24897    if (xpp.getName().equals(prefix+"Medication"))
24898      return true;
24899    if (xpp.getName().equals(prefix+"MedicationAdministration"))
24900      return true;
24901    if (xpp.getName().equals(prefix+"MedicationDispense"))
24902      return true;
24903    if (xpp.getName().equals(prefix+"MedicationKnowledge"))
24904      return true;
24905    if (xpp.getName().equals(prefix+"MedicationRequest"))
24906      return true;
24907    if (xpp.getName().equals(prefix+"MedicationStatement"))
24908      return true;
24909    if (xpp.getName().equals(prefix+"MedicinalProduct"))
24910      return true;
24911    if (xpp.getName().equals(prefix+"MedicinalProductAuthorization"))
24912      return true;
24913    if (xpp.getName().equals(prefix+"MedicinalProductContraindication"))
24914      return true;
24915    if (xpp.getName().equals(prefix+"MedicinalProductIndication"))
24916      return true;
24917    if (xpp.getName().equals(prefix+"MedicinalProductIngredient"))
24918      return true;
24919    if (xpp.getName().equals(prefix+"MedicinalProductInteraction"))
24920      return true;
24921    if (xpp.getName().equals(prefix+"MedicinalProductManufactured"))
24922      return true;
24923    if (xpp.getName().equals(prefix+"MedicinalProductPackaged"))
24924      return true;
24925    if (xpp.getName().equals(prefix+"MedicinalProductPharmaceutical"))
24926      return true;
24927    if (xpp.getName().equals(prefix+"MedicinalProductUndesirableEffect"))
24928      return true;
24929    if (xpp.getName().equals(prefix+"MessageDefinition"))
24930      return true;
24931    if (xpp.getName().equals(prefix+"MessageHeader"))
24932      return true;
24933    if (xpp.getName().equals(prefix+"MolecularSequence"))
24934      return true;
24935    if (xpp.getName().equals(prefix+"NamingSystem"))
24936      return true;
24937    if (xpp.getName().equals(prefix+"NutritionOrder"))
24938      return true;
24939    if (xpp.getName().equals(prefix+"Observation"))
24940      return true;
24941    if (xpp.getName().equals(prefix+"ObservationDefinition"))
24942      return true;
24943    if (xpp.getName().equals(prefix+"OperationDefinition"))
24944      return true;
24945    if (xpp.getName().equals(prefix+"OperationOutcome"))
24946      return true;
24947    if (xpp.getName().equals(prefix+"Organization"))
24948      return true;
24949    if (xpp.getName().equals(prefix+"OrganizationAffiliation"))
24950      return true;
24951    if (xpp.getName().equals(prefix+"Patient"))
24952      return true;
24953    if (xpp.getName().equals(prefix+"PaymentNotice"))
24954      return true;
24955    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
24956      return true;
24957    if (xpp.getName().equals(prefix+"Person"))
24958      return true;
24959    if (xpp.getName().equals(prefix+"PlanDefinition"))
24960      return true;
24961    if (xpp.getName().equals(prefix+"Practitioner"))
24962      return true;
24963    if (xpp.getName().equals(prefix+"PractitionerRole"))
24964      return true;
24965    if (xpp.getName().equals(prefix+"Procedure"))
24966      return true;
24967    if (xpp.getName().equals(prefix+"Provenance"))
24968      return true;
24969    if (xpp.getName().equals(prefix+"Questionnaire"))
24970      return true;
24971    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
24972      return true;
24973    if (xpp.getName().equals(prefix+"RelatedPerson"))
24974      return true;
24975    if (xpp.getName().equals(prefix+"RequestGroup"))
24976      return true;
24977    if (xpp.getName().equals(prefix+"ResearchDefinition"))
24978      return true;
24979    if (xpp.getName().equals(prefix+"ResearchElementDefinition"))
24980      return true;
24981    if (xpp.getName().equals(prefix+"ResearchStudy"))
24982      return true;
24983    if (xpp.getName().equals(prefix+"ResearchSubject"))
24984      return true;
24985    if (xpp.getName().equals(prefix+"RiskAssessment"))
24986      return true;
24987    if (xpp.getName().equals(prefix+"RiskEvidenceSynthesis"))
24988      return true;
24989    if (xpp.getName().equals(prefix+"Schedule"))
24990      return true;
24991    if (xpp.getName().equals(prefix+"SearchParameter"))
24992      return true;
24993    if (xpp.getName().equals(prefix+"ServiceRequest"))
24994      return true;
24995    if (xpp.getName().equals(prefix+"Slot"))
24996      return true;
24997    if (xpp.getName().equals(prefix+"Specimen"))
24998      return true;
24999    if (xpp.getName().equals(prefix+"SpecimenDefinition"))
25000      return true;
25001    if (xpp.getName().equals(prefix+"StructureDefinition"))
25002      return true;
25003    if (xpp.getName().equals(prefix+"StructureMap"))
25004      return true;
25005    if (xpp.getName().equals(prefix+"Subscription"))
25006      return true;
25007    if (xpp.getName().equals(prefix+"Substance"))
25008      return true;
25009    if (xpp.getName().equals(prefix+"SubstanceNucleicAcid"))
25010      return true;
25011    if (xpp.getName().equals(prefix+"SubstancePolymer"))
25012      return true;
25013    if (xpp.getName().equals(prefix+"SubstanceProtein"))
25014      return true;
25015    if (xpp.getName().equals(prefix+"SubstanceReferenceInformation"))
25016      return true;
25017    if (xpp.getName().equals(prefix+"SubstanceSourceMaterial"))
25018      return true;
25019    if (xpp.getName().equals(prefix+"SubstanceSpecification"))
25020      return true;
25021    if (xpp.getName().equals(prefix+"SupplyDelivery"))
25022      return true;
25023    if (xpp.getName().equals(prefix+"SupplyRequest"))
25024      return true;
25025    if (xpp.getName().equals(prefix+"Task"))
25026      return true;
25027    if (xpp.getName().equals(prefix+"TerminologyCapabilities"))
25028      return true;
25029    if (xpp.getName().equals(prefix+"TestReport"))
25030      return true;
25031    if (xpp.getName().equals(prefix+"TestScript"))
25032      return true;
25033    if (xpp.getName().equals(prefix+"ValueSet"))
25034      return true;
25035    if (xpp.getName().equals(prefix+"VerificationResult"))
25036      return true;
25037    if (xpp.getName().equals(prefix+"VisionPrescription"))
25038      return true;
25039    if (xpp.getName().equals(prefix+"Date"))
25040      return true;
25041    if (xpp.getName().equals(prefix+"DateTime"))
25042      return true;
25043    if (xpp.getName().equals(prefix+"Code"))
25044      return true;
25045    if (xpp.getName().equals(prefix+"String"))
25046      return true;
25047    if (xpp.getName().equals(prefix+"Integer"))
25048      return true;
25049    if (xpp.getName().equals(prefix+"Oid"))
25050      return true;
25051    if (xpp.getName().equals(prefix+"Canonical"))
25052      return true;
25053    if (xpp.getName().equals(prefix+"Uri"))
25054      return true;
25055    if (xpp.getName().equals(prefix+"Uuid"))
25056      return true;
25057    if (xpp.getName().equals(prefix+"Url"))
25058      return true;
25059    if (xpp.getName().equals(prefix+"Instant"))
25060      return true;
25061    if (xpp.getName().equals(prefix+"Boolean"))
25062      return true;
25063    if (xpp.getName().equals(prefix+"Base64Binary"))
25064      return true;
25065    if (xpp.getName().equals(prefix+"UnsignedInt"))
25066      return true;
25067    if (xpp.getName().equals(prefix+"Markdown"))
25068      return true;
25069    if (xpp.getName().equals(prefix+"Time"))
25070      return true;
25071    if (xpp.getName().equals(prefix+"Id"))
25072      return true;
25073    if (xpp.getName().equals(prefix+"PositiveInt"))
25074      return true;
25075    if (xpp.getName().equals(prefix+"Decimal"))
25076      return true;
25077    return false;
25078  }
25079
25080  @Override
25081    protected Type parseAnyType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
25082      if (type.equals("ElementDefinition"))
25083        return parseElementDefinition(xpp);
25084      else if (type.equals("DataRequirement"))
25085        return parseDataRequirement(xpp);
25086      else
25087        return parseType(xpp, type);
25088  }
25089
25090  protected void composeElementElements(Element element) throws IOException {
25091    for (Extension e : element.getExtension()) {
25092      composeExtension("extension", e);
25093    }
25094  }
25095
25096  protected void composeBackboneElementElements(BackboneElement element) throws IOException {
25097    composeElementElements(element);
25098    for (Extension e : element.getModifierExtension()) {
25099      composeExtension("modifierExtension", e);
25100    }
25101  }
25102
25103  protected void composeBackboneElementElements(BackboneType element) throws IOException {
25104    composeElementElements(element);
25105    for (Extension e : element.getModifierExtension()) {
25106      composeExtension("modifierExtension", e);
25107    }
25108  }
25109
25110  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
25111    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
25112      composeElementAttributes(value);
25113      if (value.getValue() != null) 
25114        xml.attribute("value", e.toCode(value.getValue()));
25115        
25116      xml.enter(FHIR_NS, name);
25117      composeElementElements(value);
25118      composeElementClose(value);
25119      xml.exit(FHIR_NS, name);
25120    }    
25121  }    
25122
25123  protected void composeDate(String name, DateType value) throws IOException  {
25124    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
25125      composeElementAttributes(value);
25126      if (value.asStringValue() != null) 
25127        xml.attribute("value", value.asStringValue());
25128        
25129      xml.enter(FHIR_NS, name);
25130      composeElementElements(value);
25131      composeElementClose(value);
25132      xml.exit(FHIR_NS, name);
25133    }    
25134  }    
25135
25136  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
25137    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
25138      composeElementAttributes(value);
25139      if (value.asStringValue() != null) 
25140        xml.attribute("value", value.asStringValue());
25141        
25142      xml.enter(FHIR_NS, name);
25143      composeElementElements(value);
25144      composeElementClose(value);
25145      xml.exit(FHIR_NS, name);
25146    }    
25147  }    
25148
25149  protected void composeCode(String name, CodeType value) throws IOException  {
25150    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
25151      composeElementAttributes(value);
25152      if (value.asStringValue() != null) 
25153        xml.attribute("value", value.asStringValue());
25154        
25155      xml.enter(FHIR_NS, name);
25156      composeElementElements(value);
25157      composeElementClose(value);
25158      xml.exit(FHIR_NS, name);
25159    }    
25160  }    
25161
25162  protected void composeString(String name, StringType value) throws IOException  {
25163    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
25164      composeElementAttributes(value);
25165      if (value.asStringValue() != null) 
25166        xml.attribute("value", value.asStringValue());
25167        
25168      xml.enter(FHIR_NS, name);
25169      composeElementElements(value);
25170      composeElementClose(value);
25171      xml.exit(FHIR_NS, name);
25172    }    
25173  }    
25174
25175  protected void composeInteger(String name, IntegerType value) throws IOException  {
25176    if (value != null) { // integer
25177      composeElementAttributes(value);
25178      if (value.asStringValue() != null) 
25179        xml.attribute("value", value.asStringValue());
25180        
25181      xml.enter(FHIR_NS, name);
25182      composeElementElements(value);
25183      composeElementClose(value);
25184      xml.exit(FHIR_NS, name);
25185    }    
25186  }    
25187
25188  protected void composeOid(String name, OidType value) throws IOException  {
25189    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
25190      composeElementAttributes(value);
25191      if (value.asStringValue() != null) 
25192        xml.attribute("value", value.asStringValue());
25193        
25194      xml.enter(FHIR_NS, name);
25195      composeElementElements(value);
25196      composeElementClose(value);
25197      xml.exit(FHIR_NS, name);
25198    }    
25199  }    
25200
25201  protected void composeCanonical(String name, CanonicalType value) throws IOException  {
25202    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// canonical
25203      composeElementAttributes(value);
25204      if (value.asStringValue() != null) 
25205        xml.attribute("value", value.asStringValue());
25206        
25207      xml.enter(FHIR_NS, name);
25208      composeElementElements(value);
25209      composeElementClose(value);
25210      xml.exit(FHIR_NS, name);
25211    }    
25212  }    
25213
25214  protected void composeUri(String name, UriType value) throws IOException  {
25215    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
25216      composeElementAttributes(value);
25217      if (value.asStringValue() != null) 
25218        xml.attribute("value", value.asStringValue());
25219        
25220      xml.enter(FHIR_NS, name);
25221      composeElementElements(value);
25222      composeElementClose(value);
25223      xml.exit(FHIR_NS, name);
25224    }    
25225  }    
25226
25227  protected void composeUuid(String name, UuidType value) throws IOException  {
25228    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
25229      composeElementAttributes(value);
25230      if (value.asStringValue() != null) 
25231        xml.attribute("value", value.asStringValue());
25232        
25233      xml.enter(FHIR_NS, name);
25234      composeElementElements(value);
25235      composeElementClose(value);
25236      xml.exit(FHIR_NS, name);
25237    }    
25238  }    
25239
25240  protected void composeUrl(String name, UrlType value) throws IOException  {
25241    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// url
25242      composeElementAttributes(value);
25243      if (value.asStringValue() != null) 
25244        xml.attribute("value", value.asStringValue());
25245        
25246      xml.enter(FHIR_NS, name);
25247      composeElementElements(value);
25248      composeElementClose(value);
25249      xml.exit(FHIR_NS, name);
25250    }    
25251  }    
25252
25253  protected void composeInstant(String name, InstantType value) throws IOException  {
25254    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
25255      composeElementAttributes(value);
25256      if (value.asStringValue() != null) 
25257        xml.attribute("value", value.asStringValue());
25258        
25259      xml.enter(FHIR_NS, name);
25260      composeElementElements(value);
25261      composeElementClose(value);
25262      xml.exit(FHIR_NS, name);
25263    }    
25264  }    
25265
25266  protected void composeBoolean(String name, BooleanType value) throws IOException  {
25267    if (value != null) { // boolean
25268      composeElementAttributes(value);
25269      if (value.asStringValue() != null) 
25270        xml.attribute("value", value.asStringValue());
25271        
25272      xml.enter(FHIR_NS, name);
25273      composeElementElements(value);
25274      composeElementClose(value);
25275      xml.exit(FHIR_NS, name);
25276    }    
25277  }    
25278
25279  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
25280    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
25281      composeElementAttributes(value);
25282      if (value.asStringValue() != null) 
25283        xml.attribute("value", value.asStringValue());
25284        
25285      xml.enter(FHIR_NS, name);
25286      composeElementElements(value);
25287      composeElementClose(value);
25288      xml.exit(FHIR_NS, name);
25289    }    
25290  }    
25291
25292  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
25293    if (value != null) { // unsignedInt
25294      composeElementAttributes(value);
25295      if (value.asStringValue() != null) 
25296        xml.attribute("value", value.asStringValue());
25297        
25298      xml.enter(FHIR_NS, name);
25299      composeElementElements(value);
25300      composeElementClose(value);
25301      xml.exit(FHIR_NS, name);
25302    }    
25303  }    
25304
25305  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
25306    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
25307      composeElementAttributes(value);
25308      if (value.asStringValue() != null) 
25309        xml.attribute("value", value.asStringValue());
25310        
25311      xml.enter(FHIR_NS, name);
25312      composeElementElements(value);
25313      composeElementClose(value);
25314      xml.exit(FHIR_NS, name);
25315    }    
25316  }    
25317
25318  protected void composeTime(String name, TimeType value) throws IOException  {
25319    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
25320      composeElementAttributes(value);
25321      if (value.asStringValue() != null) 
25322        xml.attribute("value", value.asStringValue());
25323        
25324      xml.enter(FHIR_NS, name);
25325      composeElementElements(value);
25326      composeElementClose(value);
25327      xml.exit(FHIR_NS, name);
25328    }    
25329  }    
25330
25331  protected void composeId(String name, IdType value) throws IOException  {
25332    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
25333      composeElementAttributes(value);
25334      if (value.asStringValue() != null) 
25335        xml.attribute("value", value.asStringValue());
25336        
25337      xml.enter(FHIR_NS, name);
25338      composeElementElements(value);
25339      composeElementClose(value);
25340      xml.exit(FHIR_NS, name);
25341    }    
25342  }    
25343
25344  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
25345    if (value != null) { // positiveInt
25346      composeElementAttributes(value);
25347      if (value.asStringValue() != null) 
25348        xml.attribute("value", value.asStringValue());
25349        
25350      xml.enter(FHIR_NS, name);
25351      composeElementElements(value);
25352      composeElementClose(value);
25353      xml.exit(FHIR_NS, name);
25354    }    
25355  }    
25356
25357  protected void composeDecimal(String name, DecimalType value) throws IOException  {
25358    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
25359      composeElementAttributes(value);
25360      if (value.asStringValue() != null) 
25361        xml.attribute("value", value.asStringValue());
25362        
25363      xml.enter(FHIR_NS, name);
25364      composeElementElements(value);
25365      composeElementClose(value);
25366      xml.exit(FHIR_NS, name);
25367    }    
25368  }    
25369
25370  protected void composeExtension(String name, Extension element) throws IOException {
25371    if (element != null) {
25372      composeElementAttributes(element);
25373      if (element.hasUrlElement())
25374        xml.attribute("url", element.getUrlElement().getValue());
25375      xml.enter(FHIR_NS, name);
25376      composeExtensionElements(element);
25377      composeElementClose(element);
25378      xml.exit(FHIR_NS, name);
25379    }
25380  }
25381
25382  protected void composeExtensionElements(Extension element) throws IOException {
25383      composeElementElements(element);
25384      if (element.hasValue()) {
25385        composeType("value", element.getValue());
25386      }  }
25387
25388  protected void composeNarrative(String name, Narrative element) throws IOException {
25389    if (element != null) {
25390      composeElementAttributes(element);
25391      xml.enter(FHIR_NS, name);
25392      composeNarrativeElements(element);
25393      composeElementClose(element);
25394      xml.exit(FHIR_NS, name);
25395    }
25396  }
25397
25398  protected void composeNarrativeElements(Narrative element) throws IOException {
25399      composeElementElements(element);
25400      if (element.hasStatusElement())
25401        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
25402      if (element.hasDiv()) {
25403        composeXhtml("div", element.getDiv());
25404      }
25405  }
25406
25407  protected void composeCount(String name, Count element) throws IOException {
25408    if (element != null) {
25409      composeTypeAttributes(element);
25410      xml.enter(FHIR_NS, name);
25411      composeCountElements(element);
25412      composeElementClose(element);
25413      xml.exit(FHIR_NS, name);
25414    }
25415  }
25416
25417  protected void composeCountElements(Count element) throws IOException {
25418      composeQuantityElements(element);
25419  }
25420
25421  protected void composeDosage(String name, Dosage element) throws IOException {
25422    if (element != null) {
25423      composeTypeAttributes(element);
25424      xml.enter(FHIR_NS, name);
25425      composeDosageElements(element);
25426      composeElementClose(element);
25427      xml.exit(FHIR_NS, name);
25428    }
25429  }
25430
25431  protected void composeDosageElements(Dosage element) throws IOException {
25432      composeBackboneElementElements(element);
25433      if (element.hasSequenceElement()) {
25434        composeInteger("sequence", element.getSequenceElement());
25435      }
25436      if (element.hasTextElement()) {
25437        composeString("text", element.getTextElement());
25438      }
25439      if (element.hasAdditionalInstruction()) { 
25440        for (CodeableConcept e : element.getAdditionalInstruction()) 
25441          composeCodeableConcept("additionalInstruction", e);
25442      }
25443      if (element.hasPatientInstructionElement()) {
25444        composeString("patientInstruction", element.getPatientInstructionElement());
25445      }
25446      if (element.hasTiming()) {
25447        composeTiming("timing", element.getTiming());
25448      }
25449      if (element.hasAsNeeded()) {
25450        composeType("asNeeded", element.getAsNeeded());
25451      }      if (element.hasSite()) {
25452        composeCodeableConcept("site", element.getSite());
25453      }
25454      if (element.hasRoute()) {
25455        composeCodeableConcept("route", element.getRoute());
25456      }
25457      if (element.hasMethod()) {
25458        composeCodeableConcept("method", element.getMethod());
25459      }
25460      if (element.hasDoseAndRate()) { 
25461        for (Dosage.DosageDoseAndRateComponent e : element.getDoseAndRate()) 
25462          composeDosageDosageDoseAndRateComponent("doseAndRate", e);
25463      }
25464      if (element.hasMaxDosePerPeriod()) {
25465        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
25466      }
25467      if (element.hasMaxDosePerAdministration()) {
25468        composeQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
25469      }
25470      if (element.hasMaxDosePerLifetime()) {
25471        composeQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
25472      }
25473  }
25474
25475  protected void composeDosageDosageDoseAndRateComponent(String name, Dosage.DosageDoseAndRateComponent element) throws IOException {
25476    if (element != null) {
25477      composeElementAttributes(element);
25478      xml.enter(FHIR_NS, name);
25479      composeDosageDosageDoseAndRateComponentElements(element);
25480      composeElementClose(element);
25481      xml.exit(FHIR_NS, name);
25482    }
25483  }
25484
25485  protected void composeDosageDosageDoseAndRateComponentElements(Dosage.DosageDoseAndRateComponent element) throws IOException {
25486      composeElementElements(element);
25487      if (element.hasType()) {
25488        composeCodeableConcept("type", element.getType());
25489      }
25490      if (element.hasDose()) {
25491        composeType("dose", element.getDose());
25492      }      if (element.hasRate()) {
25493        composeType("rate", element.getRate());
25494      }  }
25495
25496  protected void composeMarketingStatus(String name, MarketingStatus element) throws IOException {
25497    if (element != null) {
25498      composeTypeAttributes(element);
25499      xml.enter(FHIR_NS, name);
25500      composeMarketingStatusElements(element);
25501      composeElementClose(element);
25502      xml.exit(FHIR_NS, name);
25503    }
25504  }
25505
25506  protected void composeMarketingStatusElements(MarketingStatus element) throws IOException {
25507      composeBackboneElementElements(element);
25508      if (element.hasCountry()) {
25509        composeCodeableConcept("country", element.getCountry());
25510      }
25511      if (element.hasJurisdiction()) {
25512        composeCodeableConcept("jurisdiction", element.getJurisdiction());
25513      }
25514      if (element.hasStatus()) {
25515        composeCodeableConcept("status", element.getStatus());
25516      }
25517      if (element.hasDateRange()) {
25518        composePeriod("dateRange", element.getDateRange());
25519      }
25520      if (element.hasRestoreDateElement()) {
25521        composeDateTime("restoreDate", element.getRestoreDateElement());
25522      }
25523  }
25524
25525  protected void composeSubstanceAmount(String name, SubstanceAmount element) throws IOException {
25526    if (element != null) {
25527      composeTypeAttributes(element);
25528      xml.enter(FHIR_NS, name);
25529      composeSubstanceAmountElements(element);
25530      composeElementClose(element);
25531      xml.exit(FHIR_NS, name);
25532    }
25533  }
25534
25535  protected void composeSubstanceAmountElements(SubstanceAmount element) throws IOException {
25536      composeBackboneElementElements(element);
25537      if (element.hasAmount()) {
25538        composeType("amount", element.getAmount());
25539      }      if (element.hasAmountType()) {
25540        composeCodeableConcept("amountType", element.getAmountType());
25541      }
25542      if (element.hasAmountTextElement()) {
25543        composeString("amountText", element.getAmountTextElement());
25544      }
25545      if (element.hasReferenceRange()) {
25546        composeSubstanceAmountSubstanceAmountReferenceRangeComponent("referenceRange", element.getReferenceRange());
25547      }
25548  }
25549
25550  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponent(String name, SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
25551    if (element != null) {
25552      composeElementAttributes(element);
25553      xml.enter(FHIR_NS, name);
25554      composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(element);
25555      composeElementClose(element);
25556      xml.exit(FHIR_NS, name);
25557    }
25558  }
25559
25560  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
25561      composeElementElements(element);
25562      if (element.hasLowLimit()) {
25563        composeQuantity("lowLimit", element.getLowLimit());
25564      }
25565      if (element.hasHighLimit()) {
25566        composeQuantity("highLimit", element.getHighLimit());
25567      }
25568  }
25569
25570  protected void composePopulation(String name, Population element) throws IOException {
25571    if (element != null) {
25572      composeTypeAttributes(element);
25573      xml.enter(FHIR_NS, name);
25574      composePopulationElements(element);
25575      composeElementClose(element);
25576      xml.exit(FHIR_NS, name);
25577    }
25578  }
25579
25580  protected void composePopulationElements(Population element) throws IOException {
25581      composeBackboneElementElements(element);
25582      if (element.hasAge()) {
25583        composeType("age", element.getAge());
25584      }      if (element.hasGender()) {
25585        composeCodeableConcept("gender", element.getGender());
25586      }
25587      if (element.hasRace()) {
25588        composeCodeableConcept("race", element.getRace());
25589      }
25590      if (element.hasPhysiologicalCondition()) {
25591        composeCodeableConcept("physiologicalCondition", element.getPhysiologicalCondition());
25592      }
25593  }
25594
25595  protected void composeDistance(String name, Distance element) throws IOException {
25596    if (element != null) {
25597      composeTypeAttributes(element);
25598      xml.enter(FHIR_NS, name);
25599      composeDistanceElements(element);
25600      composeElementClose(element);
25601      xml.exit(FHIR_NS, name);
25602    }
25603  }
25604
25605  protected void composeDistanceElements(Distance element) throws IOException {
25606      composeQuantityElements(element);
25607  }
25608
25609  protected void composeAge(String name, Age element) throws IOException {
25610    if (element != null) {
25611      composeTypeAttributes(element);
25612      xml.enter(FHIR_NS, name);
25613      composeAgeElements(element);
25614      composeElementClose(element);
25615      xml.exit(FHIR_NS, name);
25616    }
25617  }
25618
25619  protected void composeAgeElements(Age element) throws IOException {
25620      composeQuantityElements(element);
25621  }
25622
25623  protected void composeDuration(String name, Duration element) throws IOException {
25624    if (element != null) {
25625      composeTypeAttributes(element);
25626      xml.enter(FHIR_NS, name);
25627      composeDurationElements(element);
25628      composeElementClose(element);
25629      xml.exit(FHIR_NS, name);
25630    }
25631  }
25632
25633  protected void composeDurationElements(Duration element) throws IOException {
25634      composeQuantityElements(element);
25635  }
25636
25637  protected void composeProductShelfLife(String name, ProductShelfLife element) throws IOException {
25638    if (element != null) {
25639      composeTypeAttributes(element);
25640      xml.enter(FHIR_NS, name);
25641      composeProductShelfLifeElements(element);
25642      composeElementClose(element);
25643      xml.exit(FHIR_NS, name);
25644    }
25645  }
25646
25647  protected void composeProductShelfLifeElements(ProductShelfLife element) throws IOException {
25648      composeBackboneElementElements(element);
25649      if (element.hasIdentifier()) {
25650        composeIdentifier("identifier", element.getIdentifier());
25651      }
25652      if (element.hasType()) {
25653        composeCodeableConcept("type", element.getType());
25654      }
25655      if (element.hasPeriod()) {
25656        composeQuantity("period", element.getPeriod());
25657      }
25658      if (element.hasSpecialPrecautionsForStorage()) { 
25659        for (CodeableConcept e : element.getSpecialPrecautionsForStorage()) 
25660          composeCodeableConcept("specialPrecautionsForStorage", e);
25661      }
25662  }
25663
25664  protected void composeTiming(String name, Timing element) throws IOException {
25665    if (element != null) {
25666      composeTypeAttributes(element);
25667      xml.enter(FHIR_NS, name);
25668      composeTimingElements(element);
25669      composeElementClose(element);
25670      xml.exit(FHIR_NS, name);
25671    }
25672  }
25673
25674  protected void composeTimingElements(Timing element) throws IOException {
25675      composeBackboneElementElements(element);
25676      if (element.hasEvent()) { 
25677        for (DateTimeType e : element.getEvent()) 
25678          composeDateTime("event", e);
25679      }
25680      if (element.hasRepeat()) {
25681        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
25682      }
25683      if (element.hasCode()) {
25684        composeCodeableConcept("code", element.getCode());
25685      }
25686  }
25687
25688  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
25689    if (element != null) {
25690      composeElementAttributes(element);
25691      xml.enter(FHIR_NS, name);
25692      composeTimingTimingRepeatComponentElements(element);
25693      composeElementClose(element);
25694      xml.exit(FHIR_NS, name);
25695    }
25696  }
25697
25698  protected void composeTimingTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
25699      composeElementElements(element);
25700      if (element.hasBounds()) {
25701        composeType("bounds", element.getBounds());
25702      }      if (element.hasCountElement()) {
25703        composePositiveInt("count", element.getCountElement());
25704      }
25705      if (element.hasCountMaxElement()) {
25706        composePositiveInt("countMax", element.getCountMaxElement());
25707      }
25708      if (element.hasDurationElement()) {
25709        composeDecimal("duration", element.getDurationElement());
25710      }
25711      if (element.hasDurationMaxElement()) {
25712        composeDecimal("durationMax", element.getDurationMaxElement());
25713      }
25714      if (element.hasDurationUnitElement())
25715        composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
25716      if (element.hasFrequencyElement()) {
25717        composePositiveInt("frequency", element.getFrequencyElement());
25718      }
25719      if (element.hasFrequencyMaxElement()) {
25720        composePositiveInt("frequencyMax", element.getFrequencyMaxElement());
25721      }
25722      if (element.hasPeriodElement()) {
25723        composeDecimal("period", element.getPeriodElement());
25724      }
25725      if (element.hasPeriodMaxElement()) {
25726        composeDecimal("periodMax", element.getPeriodMaxElement());
25727      }
25728      if (element.hasPeriodUnitElement())
25729        composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
25730        if (element.hasDayOfWeek()) 
25731          for (Enumeration<Timing.DayOfWeek> e : element.getDayOfWeek()) 
25732            composeEnumeration("dayOfWeek", e, new Timing.DayOfWeekEnumFactory());
25733      if (element.hasTimeOfDay()) { 
25734        for (TimeType e : element.getTimeOfDay()) 
25735          composeTime("timeOfDay", e);
25736      }
25737        if (element.hasWhen()) 
25738          for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
25739            composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
25740      if (element.hasOffsetElement()) {
25741        composeUnsignedInt("offset", element.getOffsetElement());
25742      }
25743  }
25744
25745  protected void composeProdCharacteristic(String name, ProdCharacteristic element) throws IOException {
25746    if (element != null) {
25747      composeTypeAttributes(element);
25748      xml.enter(FHIR_NS, name);
25749      composeProdCharacteristicElements(element);
25750      composeElementClose(element);
25751      xml.exit(FHIR_NS, name);
25752    }
25753  }
25754
25755  protected void composeProdCharacteristicElements(ProdCharacteristic element) throws IOException {
25756      composeBackboneElementElements(element);
25757      if (element.hasHeight()) {
25758        composeQuantity("height", element.getHeight());
25759      }
25760      if (element.hasWidth()) {
25761        composeQuantity("width", element.getWidth());
25762      }
25763      if (element.hasDepth()) {
25764        composeQuantity("depth", element.getDepth());
25765      }
25766      if (element.hasWeight()) {
25767        composeQuantity("weight", element.getWeight());
25768      }
25769      if (element.hasNominalVolume()) {
25770        composeQuantity("nominalVolume", element.getNominalVolume());
25771      }
25772      if (element.hasExternalDiameter()) {
25773        composeQuantity("externalDiameter", element.getExternalDiameter());
25774      }
25775      if (element.hasShapeElement()) {
25776        composeString("shape", element.getShapeElement());
25777      }
25778      if (element.hasColor()) { 
25779        for (StringType e : element.getColor()) 
25780          composeString("color", e);
25781      }
25782      if (element.hasImprint()) { 
25783        for (StringType e : element.getImprint()) 
25784          composeString("imprint", e);
25785      }
25786      if (element.hasImage()) { 
25787        for (Attachment e : element.getImage()) 
25788          composeAttachment("image", e);
25789      }
25790      if (element.hasScoring()) {
25791        composeCodeableConcept("scoring", element.getScoring());
25792      }
25793  }
25794
25795  protected void composeMeta(String name, Meta element) throws IOException {
25796    if (element != null) {
25797      composeTypeAttributes(element);
25798      xml.enter(FHIR_NS, name);
25799      composeMetaElements(element);
25800      composeElementClose(element);
25801      xml.exit(FHIR_NS, name);
25802    }
25803  }
25804
25805  protected void composeMetaElements(Meta element) throws IOException {
25806      composeElementElements(element);
25807      if (element.hasVersionIdElement()) {
25808        composeId("versionId", element.getVersionIdElement());
25809      }
25810      if (element.hasLastUpdatedElement()) {
25811        composeInstant("lastUpdated", element.getLastUpdatedElement());
25812      }
25813      if (element.hasSourceElement()) {
25814        composeUri("source", element.getSourceElement());
25815      }
25816      if (element.hasProfile()) { 
25817        for (CanonicalType e : element.getProfile()) 
25818          composeCanonical("profile", e);
25819      }
25820      if (element.hasSecurity()) { 
25821        for (Coding e : element.getSecurity()) 
25822          composeCoding("security", e);
25823      }
25824      if (element.hasTag()) { 
25825        for (Coding e : element.getTag()) 
25826          composeCoding("tag", e);
25827      }
25828  }
25829
25830  protected void composeAddress(String name, Address element) throws IOException {
25831    if (element != null) {
25832      composeTypeAttributes(element);
25833      xml.enter(FHIR_NS, name);
25834      composeAddressElements(element);
25835      composeElementClose(element);
25836      xml.exit(FHIR_NS, name);
25837    }
25838  }
25839
25840  protected void composeAddressElements(Address element) throws IOException {
25841      composeElementElements(element);
25842      if (element.hasUseElement())
25843        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
25844      if (element.hasTypeElement())
25845        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
25846      if (element.hasTextElement()) {
25847        composeString("text", element.getTextElement());
25848      }
25849      if (element.hasLine()) { 
25850        for (StringType e : element.getLine()) 
25851          composeString("line", e);
25852      }
25853      if (element.hasCityElement()) {
25854        composeString("city", element.getCityElement());
25855      }
25856      if (element.hasDistrictElement()) {
25857        composeString("district", element.getDistrictElement());
25858      }
25859      if (element.hasStateElement()) {
25860        composeString("state", element.getStateElement());
25861      }
25862      if (element.hasPostalCodeElement()) {
25863        composeString("postalCode", element.getPostalCodeElement());
25864      }
25865      if (element.hasCountryElement()) {
25866        composeString("country", element.getCountryElement());
25867      }
25868      if (element.hasPeriod()) {
25869        composePeriod("period", element.getPeriod());
25870      }
25871  }
25872
25873  protected void composeContributor(String name, Contributor element) throws IOException {
25874    if (element != null) {
25875      composeTypeAttributes(element);
25876      xml.enter(FHIR_NS, name);
25877      composeContributorElements(element);
25878      composeElementClose(element);
25879      xml.exit(FHIR_NS, name);
25880    }
25881  }
25882
25883  protected void composeContributorElements(Contributor element) throws IOException {
25884      composeElementElements(element);
25885      if (element.hasTypeElement())
25886        composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
25887      if (element.hasNameElement()) {
25888        composeString("name", element.getNameElement());
25889      }
25890      if (element.hasContact()) { 
25891        for (ContactDetail e : element.getContact()) 
25892          composeContactDetail("contact", e);
25893      }
25894  }
25895
25896  protected void composeAttachment(String name, Attachment element) throws IOException {
25897    if (element != null) {
25898      composeTypeAttributes(element);
25899      xml.enter(FHIR_NS, name);
25900      composeAttachmentElements(element);
25901      composeElementClose(element);
25902      xml.exit(FHIR_NS, name);
25903    }
25904  }
25905
25906  protected void composeAttachmentElements(Attachment element) throws IOException {
25907      composeElementElements(element);
25908      if (element.hasContentTypeElement()) {
25909        composeCode("contentType", element.getContentTypeElement());
25910      }
25911      if (element.hasLanguageElement()) {
25912        composeCode("language", element.getLanguageElement());
25913      }
25914      if (element.hasDataElement()) {
25915        composeBase64Binary("data", element.getDataElement());
25916      }
25917      if (element.hasUrlElement()) {
25918        composeUrl("url", element.getUrlElement());
25919      }
25920      if (element.hasSizeElement()) {
25921        composeUnsignedInt("size", element.getSizeElement());
25922      }
25923      if (element.hasHashElement()) {
25924        composeBase64Binary("hash", element.getHashElement());
25925      }
25926      if (element.hasTitleElement()) {
25927        composeString("title", element.getTitleElement());
25928      }
25929      if (element.hasCreationElement()) {
25930        composeDateTime("creation", element.getCreationElement());
25931      }
25932  }
25933
25934  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
25935    if (element != null) {
25936      composeTypeAttributes(element);
25937      xml.enter(FHIR_NS, name);
25938      composeDataRequirementElements(element);
25939      composeElementClose(element);
25940      xml.exit(FHIR_NS, name);
25941    }
25942  }
25943
25944  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
25945      composeElementElements(element);
25946      if (element.hasTypeElement()) {
25947        composeCode("type", element.getTypeElement());
25948      }
25949      if (element.hasProfile()) { 
25950        for (CanonicalType e : element.getProfile()) 
25951          composeCanonical("profile", e);
25952      }
25953      if (element.hasSubject()) {
25954        composeType("subject", element.getSubject());
25955      }      if (element.hasMustSupport()) { 
25956        for (StringType e : element.getMustSupport()) 
25957          composeString("mustSupport", e);
25958      }
25959      if (element.hasCodeFilter()) { 
25960        for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
25961          composeDataRequirementDataRequirementCodeFilterComponent("codeFilter", e);
25962      }
25963      if (element.hasDateFilter()) { 
25964        for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
25965          composeDataRequirementDataRequirementDateFilterComponent("dateFilter", e);
25966      }
25967      if (element.hasLimitElement()) {
25968        composePositiveInt("limit", element.getLimitElement());
25969      }
25970      if (element.hasSort()) { 
25971        for (DataRequirement.DataRequirementSortComponent e : element.getSort()) 
25972          composeDataRequirementDataRequirementSortComponent("sort", e);
25973      }
25974  }
25975
25976  protected void composeDataRequirementDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
25977    if (element != null) {
25978      composeElementAttributes(element);
25979      xml.enter(FHIR_NS, name);
25980      composeDataRequirementDataRequirementCodeFilterComponentElements(element);
25981      composeElementClose(element);
25982      xml.exit(FHIR_NS, name);
25983    }
25984  }
25985
25986  protected void composeDataRequirementDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
25987      composeElementElements(element);
25988      if (element.hasPathElement()) {
25989        composeString("path", element.getPathElement());
25990      }
25991      if (element.hasSearchParamElement()) {
25992        composeString("searchParam", element.getSearchParamElement());
25993      }
25994      if (element.hasValueSetElement()) {
25995        composeCanonical("valueSet", element.getValueSetElement());
25996      }
25997      if (element.hasCode()) { 
25998        for (Coding e : element.getCode()) 
25999          composeCoding("code", e);
26000      }
26001  }
26002
26003  protected void composeDataRequirementDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
26004    if (element != null) {
26005      composeElementAttributes(element);
26006      xml.enter(FHIR_NS, name);
26007      composeDataRequirementDataRequirementDateFilterComponentElements(element);
26008      composeElementClose(element);
26009      xml.exit(FHIR_NS, name);
26010    }
26011  }
26012
26013  protected void composeDataRequirementDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
26014      composeElementElements(element);
26015      if (element.hasPathElement()) {
26016        composeString("path", element.getPathElement());
26017      }
26018      if (element.hasSearchParamElement()) {
26019        composeString("searchParam", element.getSearchParamElement());
26020      }
26021      if (element.hasValue()) {
26022        composeType("value", element.getValue());
26023      }  }
26024
26025  protected void composeDataRequirementDataRequirementSortComponent(String name, DataRequirement.DataRequirementSortComponent element) throws IOException {
26026    if (element != null) {
26027      composeElementAttributes(element);
26028      xml.enter(FHIR_NS, name);
26029      composeDataRequirementDataRequirementSortComponentElements(element);
26030      composeElementClose(element);
26031      xml.exit(FHIR_NS, name);
26032    }
26033  }
26034
26035  protected void composeDataRequirementDataRequirementSortComponentElements(DataRequirement.DataRequirementSortComponent element) throws IOException {
26036      composeElementElements(element);
26037      if (element.hasPathElement()) {
26038        composeString("path", element.getPathElement());
26039      }
26040      if (element.hasDirectionElement())
26041        composeEnumeration("direction", element.getDirectionElement(), new DataRequirement.SortDirectionEnumFactory());
26042  }
26043
26044  protected void composeMoney(String name, Money element) throws IOException {
26045    if (element != null) {
26046      composeTypeAttributes(element);
26047      xml.enter(FHIR_NS, name);
26048      composeMoneyElements(element);
26049      composeElementClose(element);
26050      xml.exit(FHIR_NS, name);
26051    }
26052  }
26053
26054  protected void composeMoneyElements(Money element) throws IOException {
26055      composeElementElements(element);
26056      if (element.hasValueElement()) {
26057        composeDecimal("value", element.getValueElement());
26058      }
26059      if (element.hasCurrencyElement()) {
26060        composeCode("currency", element.getCurrencyElement());
26061      }
26062  }
26063
26064  protected void composeHumanName(String name, HumanName element) throws IOException {
26065    if (element != null) {
26066      composeTypeAttributes(element);
26067      xml.enter(FHIR_NS, name);
26068      composeHumanNameElements(element);
26069      composeElementClose(element);
26070      xml.exit(FHIR_NS, name);
26071    }
26072  }
26073
26074  protected void composeHumanNameElements(HumanName element) throws IOException {
26075      composeElementElements(element);
26076      if (element.hasUseElement())
26077        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
26078      if (element.hasTextElement()) {
26079        composeString("text", element.getTextElement());
26080      }
26081      if (element.hasFamilyElement()) {
26082        composeString("family", element.getFamilyElement());
26083      }
26084      if (element.hasGiven()) { 
26085        for (StringType e : element.getGiven()) 
26086          composeString("given", e);
26087      }
26088      if (element.hasPrefix()) { 
26089        for (StringType e : element.getPrefix()) 
26090          composeString("prefix", e);
26091      }
26092      if (element.hasSuffix()) { 
26093        for (StringType e : element.getSuffix()) 
26094          composeString("suffix", e);
26095      }
26096      if (element.hasPeriod()) {
26097        composePeriod("period", element.getPeriod());
26098      }
26099  }
26100
26101  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
26102    if (element != null) {
26103      composeTypeAttributes(element);
26104      xml.enter(FHIR_NS, name);
26105      composeContactPointElements(element);
26106      composeElementClose(element);
26107      xml.exit(FHIR_NS, name);
26108    }
26109  }
26110
26111  protected void composeContactPointElements(ContactPoint element) throws IOException {
26112      composeElementElements(element);
26113      if (element.hasSystemElement())
26114        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
26115      if (element.hasValueElement()) {
26116        composeString("value", element.getValueElement());
26117      }
26118      if (element.hasUseElement())
26119        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
26120      if (element.hasRankElement()) {
26121        composePositiveInt("rank", element.getRankElement());
26122      }
26123      if (element.hasPeriod()) {
26124        composePeriod("period", element.getPeriod());
26125      }
26126  }
26127
26128  protected void composeIdentifier(String name, Identifier element) throws IOException {
26129    if (element != null) {
26130      composeTypeAttributes(element);
26131      xml.enter(FHIR_NS, name);
26132      composeIdentifierElements(element);
26133      composeElementClose(element);
26134      xml.exit(FHIR_NS, name);
26135    }
26136  }
26137
26138  protected void composeIdentifierElements(Identifier element) throws IOException {
26139      composeElementElements(element);
26140      if (element.hasUseElement())
26141        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
26142      if (element.hasType()) {
26143        composeCodeableConcept("type", element.getType());
26144      }
26145      if (element.hasSystemElement()) {
26146        composeUri("system", element.getSystemElement());
26147      }
26148      if (element.hasValueElement()) {
26149        composeString("value", element.getValueElement());
26150      }
26151      if (element.hasPeriod()) {
26152        composePeriod("period", element.getPeriod());
26153      }
26154      if (element.hasAssigner()) {
26155        composeReference("assigner", element.getAssigner());
26156      }
26157  }
26158
26159  protected void composeCoding(String name, Coding element) throws IOException {
26160    if (element != null) {
26161      composeTypeAttributes(element);
26162      xml.enter(FHIR_NS, name);
26163      composeCodingElements(element);
26164      composeElementClose(element);
26165      xml.exit(FHIR_NS, name);
26166    }
26167  }
26168
26169  protected void composeCodingElements(Coding element) throws IOException {
26170      composeElementElements(element);
26171      if (element.hasSystemElement()) {
26172        composeUri("system", element.getSystemElement());
26173      }
26174      if (element.hasVersionElement()) {
26175        composeString("version", element.getVersionElement());
26176      }
26177      if (element.hasCodeElement()) {
26178        composeCode("code", element.getCodeElement());
26179      }
26180      if (element.hasDisplayElement()) {
26181        composeString("display", element.getDisplayElement());
26182      }
26183      if (element.hasUserSelectedElement()) {
26184        composeBoolean("userSelected", element.getUserSelectedElement());
26185      }
26186  }
26187
26188  protected void composeSampledData(String name, SampledData element) throws IOException {
26189    if (element != null) {
26190      composeTypeAttributes(element);
26191      xml.enter(FHIR_NS, name);
26192      composeSampledDataElements(element);
26193      composeElementClose(element);
26194      xml.exit(FHIR_NS, name);
26195    }
26196  }
26197
26198  protected void composeSampledDataElements(SampledData element) throws IOException {
26199      composeElementElements(element);
26200      if (element.hasOrigin()) {
26201        composeQuantity("origin", element.getOrigin());
26202      }
26203      if (element.hasPeriodElement()) {
26204        composeDecimal("period", element.getPeriodElement());
26205      }
26206      if (element.hasFactorElement()) {
26207        composeDecimal("factor", element.getFactorElement());
26208      }
26209      if (element.hasLowerLimitElement()) {
26210        composeDecimal("lowerLimit", element.getLowerLimitElement());
26211      }
26212      if (element.hasUpperLimitElement()) {
26213        composeDecimal("upperLimit", element.getUpperLimitElement());
26214      }
26215      if (element.hasDimensionsElement()) {
26216        composePositiveInt("dimensions", element.getDimensionsElement());
26217      }
26218      if (element.hasDataElement()) {
26219        composeString("data", element.getDataElement());
26220      }
26221  }
26222
26223  protected void composeRatio(String name, Ratio element) throws IOException {
26224    if (element != null) {
26225      composeTypeAttributes(element);
26226      xml.enter(FHIR_NS, name);
26227      composeRatioElements(element);
26228      composeElementClose(element);
26229      xml.exit(FHIR_NS, name);
26230    }
26231  }
26232
26233  protected void composeRatioElements(Ratio element) throws IOException {
26234      composeElementElements(element);
26235      if (element.hasNumerator()) {
26236        composeQuantity("numerator", element.getNumerator());
26237      }
26238      if (element.hasDenominator()) {
26239        composeQuantity("denominator", element.getDenominator());
26240      }
26241  }
26242
26243  protected void composeReference(String name, Reference element) throws IOException {
26244    if (element != null) {
26245      composeTypeAttributes(element);
26246      xml.enter(FHIR_NS, name);
26247      composeReferenceElements(element);
26248      composeElementClose(element);
26249      xml.exit(FHIR_NS, name);
26250    }
26251  }
26252
26253  protected void composeReferenceElements(Reference element) throws IOException {
26254      composeElementElements(element);
26255      if (element.hasReferenceElement()) {
26256        composeString("reference", element.getReferenceElement());
26257      }
26258      if (element.hasTypeElement()) {
26259        composeUri("type", element.getTypeElement());
26260      }
26261      if (element.hasIdentifier()) {
26262        composeIdentifier("identifier", element.getIdentifier());
26263      }
26264      if (element.hasDisplayElement()) {
26265        composeString("display", element.getDisplayElement());
26266      }
26267  }
26268
26269  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
26270    if (element != null) {
26271      composeTypeAttributes(element);
26272      xml.enter(FHIR_NS, name);
26273      composeTriggerDefinitionElements(element);
26274      composeElementClose(element);
26275      xml.exit(FHIR_NS, name);
26276    }
26277  }
26278
26279  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
26280      composeElementElements(element);
26281      if (element.hasTypeElement())
26282        composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
26283      if (element.hasNameElement()) {
26284        composeString("name", element.getNameElement());
26285      }
26286      if (element.hasTiming()) {
26287        composeType("timing", element.getTiming());
26288      }      if (element.hasData()) { 
26289        for (DataRequirement e : element.getData()) 
26290          composeDataRequirement("data", e);
26291      }
26292      if (element.hasCondition()) {
26293        composeExpression("condition", element.getCondition());
26294      }
26295  }
26296
26297  protected void composeQuantity(String name, Quantity element) throws IOException {
26298    if (element != null) {
26299      composeTypeAttributes(element);
26300      xml.enter(FHIR_NS, name);
26301      composeQuantityElements(element);
26302      composeElementClose(element);
26303      xml.exit(FHIR_NS, name);
26304    }
26305  }
26306
26307  protected void composeQuantityElements(Quantity element) throws IOException {
26308      composeElementElements(element);
26309      if (element.hasValueElement()) {
26310        composeDecimal("value", element.getValueElement());
26311      }
26312      if (element.hasComparatorElement())
26313        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
26314      if (element.hasUnitElement()) {
26315        composeString("unit", element.getUnitElement());
26316      }
26317      if (element.hasSystemElement()) {
26318        composeUri("system", element.getSystemElement());
26319      }
26320      if (element.hasCodeElement()) {
26321        composeCode("code", element.getCodeElement());
26322      }
26323  }
26324
26325  protected void composePeriod(String name, Period element) throws IOException {
26326    if (element != null) {
26327      composeTypeAttributes(element);
26328      xml.enter(FHIR_NS, name);
26329      composePeriodElements(element);
26330      composeElementClose(element);
26331      xml.exit(FHIR_NS, name);
26332    }
26333  }
26334
26335  protected void composePeriodElements(Period element) throws IOException {
26336      composeElementElements(element);
26337      if (element.hasStartElement()) {
26338        composeDateTime("start", element.getStartElement());
26339      }
26340      if (element.hasEndElement()) {
26341        composeDateTime("end", element.getEndElement());
26342      }
26343  }
26344
26345  protected void composeRange(String name, Range element) throws IOException {
26346    if (element != null) {
26347      composeTypeAttributes(element);
26348      xml.enter(FHIR_NS, name);
26349      composeRangeElements(element);
26350      composeElementClose(element);
26351      xml.exit(FHIR_NS, name);
26352    }
26353  }
26354
26355  protected void composeRangeElements(Range element) throws IOException {
26356      composeElementElements(element);
26357      if (element.hasLow()) {
26358        composeQuantity("low", element.getLow());
26359      }
26360      if (element.hasHigh()) {
26361        composeQuantity("high", element.getHigh());
26362      }
26363  }
26364
26365  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
26366    if (element != null) {
26367      composeTypeAttributes(element);
26368      xml.enter(FHIR_NS, name);
26369      composeRelatedArtifactElements(element);
26370      composeElementClose(element);
26371      xml.exit(FHIR_NS, name);
26372    }
26373  }
26374
26375  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
26376      composeElementElements(element);
26377      if (element.hasTypeElement())
26378        composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
26379      if (element.hasLabelElement()) {
26380        composeString("label", element.getLabelElement());
26381      }
26382      if (element.hasDisplayElement()) {
26383        composeString("display", element.getDisplayElement());
26384      }
26385      if (element.hasCitationElement()) {
26386        composeMarkdown("citation", element.getCitationElement());
26387      }
26388      if (element.hasUrlElement()) {
26389        composeUrl("url", element.getUrlElement());
26390      }
26391      if (element.hasDocument()) {
26392        composeAttachment("document", element.getDocument());
26393      }
26394      if (element.hasResourceElement()) {
26395        composeCanonical("resource", element.getResourceElement());
26396      }
26397  }
26398
26399  protected void composeAnnotation(String name, Annotation element) throws IOException {
26400    if (element != null) {
26401      composeTypeAttributes(element);
26402      xml.enter(FHIR_NS, name);
26403      composeAnnotationElements(element);
26404      composeElementClose(element);
26405      xml.exit(FHIR_NS, name);
26406    }
26407  }
26408
26409  protected void composeAnnotationElements(Annotation element) throws IOException {
26410      composeElementElements(element);
26411      if (element.hasAuthor()) {
26412        composeType("author", element.getAuthor());
26413      }      if (element.hasTimeElement()) {
26414        composeDateTime("time", element.getTimeElement());
26415      }
26416      if (element.hasTextElement()) {
26417        composeMarkdown("text", element.getTextElement());
26418      }
26419  }
26420
26421  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
26422    if (element != null) {
26423      composeTypeAttributes(element);
26424      xml.enter(FHIR_NS, name);
26425      composeContactDetailElements(element);
26426      composeElementClose(element);
26427      xml.exit(FHIR_NS, name);
26428    }
26429  }
26430
26431  protected void composeContactDetailElements(ContactDetail element) throws IOException {
26432      composeElementElements(element);
26433      if (element.hasNameElement()) {
26434        composeString("name", element.getNameElement());
26435      }
26436      if (element.hasTelecom()) { 
26437        for (ContactPoint e : element.getTelecom()) 
26438          composeContactPoint("telecom", e);
26439      }
26440  }
26441
26442  protected void composeUsageContext(String name, UsageContext element) throws IOException {
26443    if (element != null) {
26444      composeTypeAttributes(element);
26445      xml.enter(FHIR_NS, name);
26446      composeUsageContextElements(element);
26447      composeElementClose(element);
26448      xml.exit(FHIR_NS, name);
26449    }
26450  }
26451
26452  protected void composeUsageContextElements(UsageContext element) throws IOException {
26453      composeElementElements(element);
26454      if (element.hasCode()) {
26455        composeCoding("code", element.getCode());
26456      }
26457      if (element.hasValue()) {
26458        composeType("value", element.getValue());
26459      }  }
26460
26461  protected void composeExpression(String name, Expression element) throws IOException {
26462    if (element != null) {
26463      composeTypeAttributes(element);
26464      xml.enter(FHIR_NS, name);
26465      composeExpressionElements(element);
26466      composeElementClose(element);
26467      xml.exit(FHIR_NS, name);
26468    }
26469  }
26470
26471  protected void composeExpressionElements(Expression element) throws IOException {
26472      composeElementElements(element);
26473      if (element.hasDescriptionElement()) {
26474        composeString("description", element.getDescriptionElement());
26475      }
26476      if (element.hasNameElement()) {
26477        composeId("name", element.getNameElement());
26478      }
26479      if (element.hasLanguageElement())
26480        composeCode("language", element.getLanguageElement());
26481      if (element.hasExpressionElement()) {
26482        composeString("expression", element.getExpressionElement());
26483      }
26484      if (element.hasReferenceElement()) {
26485        composeUri("reference", element.getReferenceElement());
26486      }
26487  }
26488
26489  protected void composeSignature(String name, Signature element) throws IOException {
26490    if (element != null) {
26491      composeTypeAttributes(element);
26492      xml.enter(FHIR_NS, name);
26493      composeSignatureElements(element);
26494      composeElementClose(element);
26495      xml.exit(FHIR_NS, name);
26496    }
26497  }
26498
26499  protected void composeSignatureElements(Signature element) throws IOException {
26500      composeElementElements(element);
26501      if (element.hasType()) { 
26502        for (Coding e : element.getType()) 
26503          composeCoding("type", e);
26504      }
26505      if (element.hasWhenElement()) {
26506        composeInstant("when", element.getWhenElement());
26507      }
26508      if (element.hasWho()) {
26509        composeReference("who", element.getWho());
26510      }
26511      if (element.hasOnBehalfOf()) {
26512        composeReference("onBehalfOf", element.getOnBehalfOf());
26513      }
26514      if (element.hasTargetFormatElement()) {
26515        composeCode("targetFormat", element.getTargetFormatElement());
26516      }
26517      if (element.hasSigFormatElement()) {
26518        composeCode("sigFormat", element.getSigFormatElement());
26519      }
26520      if (element.hasDataElement()) {
26521        composeBase64Binary("data", element.getDataElement());
26522      }
26523  }
26524
26525  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
26526    if (element != null) {
26527      composeTypeAttributes(element);
26528      xml.enter(FHIR_NS, name);
26529      composeCodeableConceptElements(element);
26530      composeElementClose(element);
26531      xml.exit(FHIR_NS, name);
26532    }
26533  }
26534
26535  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
26536      composeElementElements(element);
26537      if (element.hasCoding()) { 
26538        for (Coding e : element.getCoding()) 
26539          composeCoding("coding", e);
26540      }
26541      if (element.hasTextElement()) {
26542        composeString("text", element.getTextElement());
26543      }
26544  }
26545
26546  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
26547    if (element != null) {
26548      composeTypeAttributes(element);
26549      xml.enter(FHIR_NS, name);
26550      composeParameterDefinitionElements(element);
26551      composeElementClose(element);
26552      xml.exit(FHIR_NS, name);
26553    }
26554  }
26555
26556  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
26557      composeElementElements(element);
26558      if (element.hasNameElement()) {
26559        composeCode("name", element.getNameElement());
26560      }
26561      if (element.hasUseElement())
26562        composeEnumeration("use", element.getUseElement(), new ParameterDefinition.ParameterUseEnumFactory());
26563      if (element.hasMinElement()) {
26564        composeInteger("min", element.getMinElement());
26565      }
26566      if (element.hasMaxElement()) {
26567        composeString("max", element.getMaxElement());
26568      }
26569      if (element.hasDocumentationElement()) {
26570        composeString("documentation", element.getDocumentationElement());
26571      }
26572      if (element.hasTypeElement()) {
26573        composeCode("type", element.getTypeElement());
26574      }
26575      if (element.hasProfileElement()) {
26576        composeCanonical("profile", element.getProfileElement());
26577      }
26578  }
26579
26580  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
26581    if (element != null) {
26582      composeElementAttributes(element);
26583      xml.enter(FHIR_NS, name);
26584      composeElementDefinitionElements(element);
26585      composeElementClose(element);
26586      xml.exit(FHIR_NS, name);
26587    }
26588  }
26589
26590  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
26591      composeBackboneElementElements(element);
26592      if (element.hasPathElement()) {
26593        composeString("path", element.getPathElement());
26594      }
26595        if (element.hasRepresentation()) 
26596          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
26597            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
26598      if (element.hasSliceNameElement()) {
26599        composeString("sliceName", element.getSliceNameElement());
26600      }
26601      if (element.hasSliceIsConstrainingElement()) {
26602        composeBoolean("sliceIsConstraining", element.getSliceIsConstrainingElement());
26603      }
26604      if (element.hasLabelElement()) {
26605        composeString("label", element.getLabelElement());
26606      }
26607      if (element.hasCode()) { 
26608        for (Coding e : element.getCode()) 
26609          composeCoding("code", e);
26610      }
26611      if (element.hasSlicing()) {
26612        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
26613      }
26614      if (element.hasShortElement()) {
26615        composeString("short", element.getShortElement());
26616      }
26617      if (element.hasDefinitionElement()) {
26618        composeMarkdown("definition", element.getDefinitionElement());
26619      }
26620      if (element.hasCommentElement()) {
26621        composeMarkdown("comment", element.getCommentElement());
26622      }
26623      if (element.hasRequirementsElement()) {
26624        composeMarkdown("requirements", element.getRequirementsElement());
26625      }
26626      if (element.hasAlias()) { 
26627        for (StringType e : element.getAlias()) 
26628          composeString("alias", e);
26629      }
26630      if (element.hasMinElement()) {
26631        composeUnsignedInt("min", element.getMinElement());
26632      }
26633      if (element.hasMaxElement()) {
26634        composeString("max", element.getMaxElement());
26635      }
26636      if (element.hasBase()) {
26637        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
26638      }
26639      if (element.hasContentReferenceElement()) {
26640        composeUri("contentReference", element.getContentReferenceElement());
26641      }
26642      if (element.hasType()) { 
26643        for (ElementDefinition.TypeRefComponent e : element.getType()) 
26644          composeElementDefinitionTypeRefComponent("type", e);
26645      }
26646      if (element.hasDefaultValue()) {
26647        composeType("defaultValue", element.getDefaultValue());
26648      }      if (element.hasMeaningWhenMissingElement()) {
26649        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
26650      }
26651      if (element.hasOrderMeaningElement()) {
26652        composeString("orderMeaning", element.getOrderMeaningElement());
26653      }
26654      if (element.hasFixed()) {
26655        composeType("fixed", element.getFixed());
26656      }      if (element.hasPattern()) {
26657        composeType("pattern", element.getPattern());
26658      }      if (element.hasExample()) { 
26659        for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
26660          composeElementDefinitionElementDefinitionExampleComponent("example", e);
26661      }
26662      if (element.hasMinValue()) {
26663        composeType("minValue", element.getMinValue());
26664      }      if (element.hasMaxValue()) {
26665        composeType("maxValue", element.getMaxValue());
26666      }      if (element.hasMaxLengthElement()) {
26667        composeInteger("maxLength", element.getMaxLengthElement());
26668      }
26669      if (element.hasCondition()) { 
26670        for (IdType e : element.getCondition()) 
26671          composeId("condition", e);
26672      }
26673      if (element.hasConstraint()) { 
26674        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
26675          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
26676      }
26677      if (element.hasMustSupportElement()) {
26678        composeBoolean("mustSupport", element.getMustSupportElement());
26679      }
26680      if (element.hasIsModifierElement()) {
26681        composeBoolean("isModifier", element.getIsModifierElement());
26682      }
26683      if (element.hasIsModifierReasonElement()) {
26684        composeString("isModifierReason", element.getIsModifierReasonElement());
26685      }
26686      if (element.hasIsSummaryElement()) {
26687        composeBoolean("isSummary", element.getIsSummaryElement());
26688      }
26689      if (element.hasBinding()) {
26690        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
26691      }
26692      if (element.hasMapping()) { 
26693        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
26694          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
26695      }
26696  }
26697
26698  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
26699    if (element != null) {
26700      composeElementAttributes(element);
26701      xml.enter(FHIR_NS, name);
26702      composeElementDefinitionElementDefinitionSlicingComponentElements(element);
26703      composeElementClose(element);
26704      xml.exit(FHIR_NS, name);
26705    }
26706  }
26707
26708  protected void composeElementDefinitionElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
26709      composeElementElements(element);
26710      if (element.hasDiscriminator()) { 
26711        for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
26712          composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
26713      }
26714      if (element.hasDescriptionElement()) {
26715        composeString("description", element.getDescriptionElement());
26716      }
26717      if (element.hasOrderedElement()) {
26718        composeBoolean("ordered", element.getOrderedElement());
26719      }
26720      if (element.hasRulesElement())
26721        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
26722  }
26723
26724  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
26725    if (element != null) {
26726      composeElementAttributes(element);
26727      xml.enter(FHIR_NS, name);
26728      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(element);
26729      composeElementClose(element);
26730      xml.exit(FHIR_NS, name);
26731    }
26732  }
26733
26734  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
26735      composeElementElements(element);
26736      if (element.hasTypeElement())
26737        composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
26738      if (element.hasPathElement()) {
26739        composeString("path", element.getPathElement());
26740      }
26741  }
26742
26743  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
26744    if (element != null) {
26745      composeElementAttributes(element);
26746      xml.enter(FHIR_NS, name);
26747      composeElementDefinitionElementDefinitionBaseComponentElements(element);
26748      composeElementClose(element);
26749      xml.exit(FHIR_NS, name);
26750    }
26751  }
26752
26753  protected void composeElementDefinitionElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
26754      composeElementElements(element);
26755      if (element.hasPathElement()) {
26756        composeString("path", element.getPathElement());
26757      }
26758      if (element.hasMinElement()) {
26759        composeUnsignedInt("min", element.getMinElement());
26760      }
26761      if (element.hasMaxElement()) {
26762        composeString("max", element.getMaxElement());
26763      }
26764  }
26765
26766  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
26767    if (element != null) {
26768      composeElementAttributes(element);
26769      xml.enter(FHIR_NS, name);
26770      composeElementDefinitionTypeRefComponentElements(element);
26771      composeElementClose(element);
26772      xml.exit(FHIR_NS, name);
26773    }
26774  }
26775
26776  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
26777      composeElementElements(element);
26778      if (element.hasCodeElement()) {
26779        composeUri("code", element.getCodeElement());
26780      }
26781      if (element.hasProfile()) { 
26782        for (CanonicalType e : element.getProfile()) 
26783          composeCanonical("profile", e);
26784      }
26785      if (element.hasTargetProfile()) { 
26786        for (CanonicalType e : element.getTargetProfile()) 
26787          composeCanonical("targetProfile", e);
26788      }
26789        if (element.hasAggregation()) 
26790          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
26791            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
26792      if (element.hasVersioningElement())
26793        composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
26794  }
26795
26796  protected void composeElementDefinitionElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
26797    if (element != null) {
26798      composeElementAttributes(element);
26799      xml.enter(FHIR_NS, name);
26800      composeElementDefinitionElementDefinitionExampleComponentElements(element);
26801      composeElementClose(element);
26802      xml.exit(FHIR_NS, name);
26803    }
26804  }
26805
26806  protected void composeElementDefinitionElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
26807      composeElementElements(element);
26808      if (element.hasLabelElement()) {
26809        composeString("label", element.getLabelElement());
26810      }
26811      if (element.hasValue()) {
26812        composeType("value", element.getValue());
26813      }  }
26814
26815  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
26816    if (element != null) {
26817      composeElementAttributes(element);
26818      xml.enter(FHIR_NS, name);
26819      composeElementDefinitionElementDefinitionConstraintComponentElements(element);
26820      composeElementClose(element);
26821      xml.exit(FHIR_NS, name);
26822    }
26823  }
26824
26825  protected void composeElementDefinitionElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
26826      composeElementElements(element);
26827      if (element.hasKeyElement()) {
26828        composeId("key", element.getKeyElement());
26829      }
26830      if (element.hasRequirementsElement()) {
26831        composeString("requirements", element.getRequirementsElement());
26832      }
26833      if (element.hasSeverityElement())
26834        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
26835      if (element.hasHumanElement()) {
26836        composeString("human", element.getHumanElement());
26837      }
26838      if (element.hasExpressionElement()) {
26839        composeString("expression", element.getExpressionElement());
26840      }
26841      if (element.hasXpathElement()) {
26842        composeString("xpath", element.getXpathElement());
26843      }
26844      if (element.hasSourceElement()) {
26845        composeCanonical("source", element.getSourceElement());
26846      }
26847  }
26848
26849  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
26850    if (element != null) {
26851      composeElementAttributes(element);
26852      xml.enter(FHIR_NS, name);
26853      composeElementDefinitionElementDefinitionBindingComponentElements(element);
26854      composeElementClose(element);
26855      xml.exit(FHIR_NS, name);
26856    }
26857  }
26858
26859  protected void composeElementDefinitionElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
26860      composeElementElements(element);
26861      if (element.hasStrengthElement())
26862        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
26863      if (element.hasDescriptionElement()) {
26864        composeString("description", element.getDescriptionElement());
26865      }
26866      if (element.hasValueSetElement()) {
26867        composeCanonical("valueSet", element.getValueSetElement());
26868      }
26869  }
26870
26871  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
26872    if (element != null) {
26873      composeElementAttributes(element);
26874      xml.enter(FHIR_NS, name);
26875      composeElementDefinitionElementDefinitionMappingComponentElements(element);
26876      composeElementClose(element);
26877      xml.exit(FHIR_NS, name);
26878    }
26879  }
26880
26881  protected void composeElementDefinitionElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
26882      composeElementElements(element);
26883      if (element.hasIdentityElement()) {
26884        composeId("identity", element.getIdentityElement());
26885      }
26886      if (element.hasLanguageElement()) {
26887        composeCode("language", element.getLanguageElement());
26888      }
26889      if (element.hasMapElement()) {
26890        composeString("map", element.getMapElement());
26891      }
26892      if (element.hasCommentElement()) {
26893        composeString("comment", element.getCommentElement());
26894      }
26895  }
26896
26897  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
26898    composeResourceAttributes(element);
26899  }
26900
26901  protected void composeDomainResourceElements(DomainResource element) throws IOException {
26902    composeResourceElements(element);
26903      if (element.hasText()) {
26904        composeNarrative("text", element.getText());
26905      }
26906      if (element.hasContained()) { 
26907        for (Resource e : element.getContained()) 
26908        {
26909          xml.enter(FHIR_NS, "contained");
26910          composeResource(e);
26911          xml.exit(FHIR_NS, "contained");
26912        }
26913      }
26914      if (element.hasExtension()) 
26915        for (Extension e : element.getExtension()) 
26916          composeExtension("extension", e);
26917      if (element.hasModifierExtension()) { 
26918        for (Extension e : element.getModifierExtension()) 
26919          composeExtension("modifierExtension", e);
26920      }
26921  }
26922
26923  protected void composeParameters(String name, Parameters element) throws IOException {
26924    if (element != null) {
26925      composeResourceAttributes(element);
26926      xml.enter(FHIR_NS, name);
26927      composeParametersElements(element);
26928      composeElementClose(element);
26929      xml.exit(FHIR_NS, name);
26930    }
26931  }
26932
26933  protected void composeParametersElements(Parameters element) throws IOException {
26934      composeResourceElements(element);
26935      if (element.hasParameter()) { 
26936        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
26937          composeParametersParametersParameterComponent("parameter", e);
26938      }
26939  }
26940
26941  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
26942    if (element != null) {
26943      composeElementAttributes(element);
26944      xml.enter(FHIR_NS, name);
26945      composeParametersParametersParameterComponentElements(element);
26946      composeElementClose(element);
26947      xml.exit(FHIR_NS, name);
26948    }
26949  }
26950
26951  protected void composeParametersParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
26952      composeBackboneElementElements(element);
26953      if (element.hasNameElement()) {
26954        composeString("name", element.getNameElement());
26955      }
26956      if (element.hasValue()) {
26957        composeType("value", element.getValue());
26958      }      if (element.hasResource()) {
26959        xml.enter(FHIR_NS, "resource");
26960        composeResource(element.getResource());
26961        xml.exit(FHIR_NS, "resource");
26962      }
26963      if (element.hasPart()) { 
26964        for (Parameters.ParametersParameterComponent e : element.getPart()) 
26965          composeParametersParametersParameterComponent("part", e);
26966      }
26967  }
26968
26969  protected void composeResourceAttributes(Resource element) throws IOException {
26970    if (style != OutputStyle.CANONICAL)
26971      for (String comment : element.getFormatCommentsPre())
26972        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
26973  }
26974
26975  protected void composeResourceElements(Resource element) throws IOException {
26976      if (element.hasIdElement()) {
26977        composeId("id", element.getIdElement());
26978      }
26979      if (element.hasMeta()) {
26980        composeMeta("meta", element.getMeta());
26981      }
26982      if (element.hasImplicitRulesElement()) {
26983        composeUri("implicitRules", element.getImplicitRulesElement());
26984      }
26985      if (element.hasLanguageElement()) {
26986        composeCode("language", element.getLanguageElement());
26987      }
26988  }
26989
26990  protected void composeAccount(String name, Account element) throws IOException {
26991    if (element != null) {
26992      composeDomainResourceAttributes(element);
26993      xml.enter(FHIR_NS, name);
26994      composeAccountElements(element);
26995      composeElementClose(element);
26996      xml.exit(FHIR_NS, name);
26997    }
26998  }
26999
27000  protected void composeAccountElements(Account element) throws IOException {
27001      composeDomainResourceElements(element);
27002      if (element.hasIdentifier()) { 
27003        for (Identifier e : element.getIdentifier()) 
27004          composeIdentifier("identifier", e);
27005      }
27006      if (element.hasStatusElement())
27007        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
27008      if (element.hasType()) {
27009        composeCodeableConcept("type", element.getType());
27010      }
27011      if (element.hasNameElement()) {
27012        composeString("name", element.getNameElement());
27013      }
27014      if (element.hasSubject()) { 
27015        for (Reference e : element.getSubject()) 
27016          composeReference("subject", e);
27017      }
27018      if (element.hasServicePeriod()) {
27019        composePeriod("servicePeriod", element.getServicePeriod());
27020      }
27021      if (element.hasCoverage()) { 
27022        for (Account.CoverageComponent e : element.getCoverage()) 
27023          composeAccountCoverageComponent("coverage", e);
27024      }
27025      if (element.hasOwner()) {
27026        composeReference("owner", element.getOwner());
27027      }
27028      if (element.hasDescriptionElement()) {
27029        composeString("description", element.getDescriptionElement());
27030      }
27031      if (element.hasGuarantor()) { 
27032        for (Account.GuarantorComponent e : element.getGuarantor()) 
27033          composeAccountGuarantorComponent("guarantor", e);
27034      }
27035      if (element.hasPartOf()) {
27036        composeReference("partOf", element.getPartOf());
27037      }
27038  }
27039
27040  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
27041    if (element != null) {
27042      composeElementAttributes(element);
27043      xml.enter(FHIR_NS, name);
27044      composeAccountCoverageComponentElements(element);
27045      composeElementClose(element);
27046      xml.exit(FHIR_NS, name);
27047    }
27048  }
27049
27050  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
27051      composeBackboneElementElements(element);
27052      if (element.hasCoverage()) {
27053        composeReference("coverage", element.getCoverage());
27054      }
27055      if (element.hasPriorityElement()) {
27056        composePositiveInt("priority", element.getPriorityElement());
27057      }
27058  }
27059
27060  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
27061    if (element != null) {
27062      composeElementAttributes(element);
27063      xml.enter(FHIR_NS, name);
27064      composeAccountGuarantorComponentElements(element);
27065      composeElementClose(element);
27066      xml.exit(FHIR_NS, name);
27067    }
27068  }
27069
27070  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
27071      composeBackboneElementElements(element);
27072      if (element.hasParty()) {
27073        composeReference("party", element.getParty());
27074      }
27075      if (element.hasOnHoldElement()) {
27076        composeBoolean("onHold", element.getOnHoldElement());
27077      }
27078      if (element.hasPeriod()) {
27079        composePeriod("period", element.getPeriod());
27080      }
27081  }
27082
27083  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
27084    if (element != null) {
27085      composeDomainResourceAttributes(element);
27086      xml.enter(FHIR_NS, name);
27087      composeActivityDefinitionElements(element);
27088      composeElementClose(element);
27089      xml.exit(FHIR_NS, name);
27090    }
27091  }
27092
27093  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
27094      composeDomainResourceElements(element);
27095      if (element.hasUrlElement()) {
27096        composeUri("url", element.getUrlElement());
27097      }
27098      if (element.hasIdentifier()) { 
27099        for (Identifier e : element.getIdentifier()) 
27100          composeIdentifier("identifier", e);
27101      }
27102      if (element.hasVersionElement()) {
27103        composeString("version", element.getVersionElement());
27104      }
27105      if (element.hasNameElement()) {
27106        composeString("name", element.getNameElement());
27107      }
27108      if (element.hasTitleElement()) {
27109        composeString("title", element.getTitleElement());
27110      }
27111      if (element.hasSubtitleElement()) {
27112        composeString("subtitle", element.getSubtitleElement());
27113      }
27114      if (element.hasStatusElement())
27115        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
27116      if (element.hasExperimentalElement()) {
27117        composeBoolean("experimental", element.getExperimentalElement());
27118      }
27119      if (element.hasSubject()) {
27120        composeType("subject", element.getSubject());
27121      }      if (element.hasDateElement()) {
27122        composeDateTime("date", element.getDateElement());
27123      }
27124      if (element.hasPublisherElement()) {
27125        composeString("publisher", element.getPublisherElement());
27126      }
27127      if (element.hasContact()) { 
27128        for (ContactDetail e : element.getContact()) 
27129          composeContactDetail("contact", e);
27130      }
27131      if (element.hasDescriptionElement()) {
27132        composeMarkdown("description", element.getDescriptionElement());
27133      }
27134      if (element.hasUseContext()) { 
27135        for (UsageContext e : element.getUseContext()) 
27136          composeUsageContext("useContext", e);
27137      }
27138      if (element.hasJurisdiction()) { 
27139        for (CodeableConcept e : element.getJurisdiction()) 
27140          composeCodeableConcept("jurisdiction", e);
27141      }
27142      if (element.hasPurposeElement()) {
27143        composeMarkdown("purpose", element.getPurposeElement());
27144      }
27145      if (element.hasUsageElement()) {
27146        composeString("usage", element.getUsageElement());
27147      }
27148      if (element.hasCopyrightElement()) {
27149        composeMarkdown("copyright", element.getCopyrightElement());
27150      }
27151      if (element.hasApprovalDateElement()) {
27152        composeDate("approvalDate", element.getApprovalDateElement());
27153      }
27154      if (element.hasLastReviewDateElement()) {
27155        composeDate("lastReviewDate", element.getLastReviewDateElement());
27156      }
27157      if (element.hasEffectivePeriod()) {
27158        composePeriod("effectivePeriod", element.getEffectivePeriod());
27159      }
27160      if (element.hasTopic()) { 
27161        for (CodeableConcept e : element.getTopic()) 
27162          composeCodeableConcept("topic", e);
27163      }
27164      if (element.hasAuthor()) { 
27165        for (ContactDetail e : element.getAuthor()) 
27166          composeContactDetail("author", e);
27167      }
27168      if (element.hasEditor()) { 
27169        for (ContactDetail e : element.getEditor()) 
27170          composeContactDetail("editor", e);
27171      }
27172      if (element.hasReviewer()) { 
27173        for (ContactDetail e : element.getReviewer()) 
27174          composeContactDetail("reviewer", e);
27175      }
27176      if (element.hasEndorser()) { 
27177        for (ContactDetail e : element.getEndorser()) 
27178          composeContactDetail("endorser", e);
27179      }
27180      if (element.hasRelatedArtifact()) { 
27181        for (RelatedArtifact e : element.getRelatedArtifact()) 
27182          composeRelatedArtifact("relatedArtifact", e);
27183      }
27184      if (element.hasLibrary()) { 
27185        for (CanonicalType e : element.getLibrary()) 
27186          composeCanonical("library", e);
27187      }
27188      if (element.hasKindElement())
27189        composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.ActivityDefinitionKindEnumFactory());
27190      if (element.hasProfileElement()) {
27191        composeCanonical("profile", element.getProfileElement());
27192      }
27193      if (element.hasCode()) {
27194        composeCodeableConcept("code", element.getCode());
27195      }
27196      if (element.hasIntentElement())
27197        composeEnumeration("intent", element.getIntentElement(), new ActivityDefinition.RequestIntentEnumFactory());
27198      if (element.hasPriorityElement())
27199        composeEnumeration("priority", element.getPriorityElement(), new ActivityDefinition.RequestPriorityEnumFactory());
27200      if (element.hasDoNotPerformElement()) {
27201        composeBoolean("doNotPerform", element.getDoNotPerformElement());
27202      }
27203      if (element.hasTiming()) {
27204        composeType("timing", element.getTiming());
27205      }      if (element.hasLocation()) {
27206        composeReference("location", element.getLocation());
27207      }
27208      if (element.hasParticipant()) { 
27209        for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
27210          composeActivityDefinitionActivityDefinitionParticipantComponent("participant", e);
27211      }
27212      if (element.hasProduct()) {
27213        composeType("product", element.getProduct());
27214      }      if (element.hasQuantity()) {
27215        composeQuantity("quantity", element.getQuantity());
27216      }
27217      if (element.hasDosage()) { 
27218        for (Dosage e : element.getDosage()) 
27219          composeDosage("dosage", e);
27220      }
27221      if (element.hasBodySite()) { 
27222        for (CodeableConcept e : element.getBodySite()) 
27223          composeCodeableConcept("bodySite", e);
27224      }
27225      if (element.hasSpecimenRequirement()) { 
27226        for (Reference e : element.getSpecimenRequirement()) 
27227          composeReference("specimenRequirement", e);
27228      }
27229      if (element.hasObservationRequirement()) { 
27230        for (Reference e : element.getObservationRequirement()) 
27231          composeReference("observationRequirement", e);
27232      }
27233      if (element.hasObservationResultRequirement()) { 
27234        for (Reference e : element.getObservationResultRequirement()) 
27235          composeReference("observationResultRequirement", e);
27236      }
27237      if (element.hasTransformElement()) {
27238        composeCanonical("transform", element.getTransformElement());
27239      }
27240      if (element.hasDynamicValue()) { 
27241        for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
27242          composeActivityDefinitionActivityDefinitionDynamicValueComponent("dynamicValue", e);
27243      }
27244  }
27245
27246  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
27247    if (element != null) {
27248      composeElementAttributes(element);
27249      xml.enter(FHIR_NS, name);
27250      composeActivityDefinitionActivityDefinitionParticipantComponentElements(element);
27251      composeElementClose(element);
27252      xml.exit(FHIR_NS, name);
27253    }
27254  }
27255
27256  protected void composeActivityDefinitionActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
27257      composeBackboneElementElements(element);
27258      if (element.hasTypeElement())
27259        composeEnumeration("type", element.getTypeElement(), new ActivityDefinition.ActivityParticipantTypeEnumFactory());
27260      if (element.hasRole()) {
27261        composeCodeableConcept("role", element.getRole());
27262      }
27263  }
27264
27265  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
27266    if (element != null) {
27267      composeElementAttributes(element);
27268      xml.enter(FHIR_NS, name);
27269      composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(element);
27270      composeElementClose(element);
27271      xml.exit(FHIR_NS, name);
27272    }
27273  }
27274
27275  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
27276      composeBackboneElementElements(element);
27277      if (element.hasPathElement()) {
27278        composeString("path", element.getPathElement());
27279      }
27280      if (element.hasExpression()) {
27281        composeExpression("expression", element.getExpression());
27282      }
27283  }
27284
27285  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
27286    if (element != null) {
27287      composeDomainResourceAttributes(element);
27288      xml.enter(FHIR_NS, name);
27289      composeAdverseEventElements(element);
27290      composeElementClose(element);
27291      xml.exit(FHIR_NS, name);
27292    }
27293  }
27294
27295  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
27296      composeDomainResourceElements(element);
27297      if (element.hasIdentifier()) {
27298        composeIdentifier("identifier", element.getIdentifier());
27299      }
27300      if (element.hasActualityElement())
27301        composeEnumeration("actuality", element.getActualityElement(), new AdverseEvent.AdverseEventActualityEnumFactory());
27302      if (element.hasCategory()) { 
27303        for (CodeableConcept e : element.getCategory()) 
27304          composeCodeableConcept("category", e);
27305      }
27306      if (element.hasEvent()) {
27307        composeCodeableConcept("event", element.getEvent());
27308      }
27309      if (element.hasSubject()) {
27310        composeReference("subject", element.getSubject());
27311      }
27312      if (element.hasEncounter()) {
27313        composeReference("encounter", element.getEncounter());
27314      }
27315      if (element.hasDateElement()) {
27316        composeDateTime("date", element.getDateElement());
27317      }
27318      if (element.hasDetectedElement()) {
27319        composeDateTime("detected", element.getDetectedElement());
27320      }
27321      if (element.hasRecordedDateElement()) {
27322        composeDateTime("recordedDate", element.getRecordedDateElement());
27323      }
27324      if (element.hasResultingCondition()) { 
27325        for (Reference e : element.getResultingCondition()) 
27326          composeReference("resultingCondition", e);
27327      }
27328      if (element.hasLocation()) {
27329        composeReference("location", element.getLocation());
27330      }
27331      if (element.hasSeriousness()) {
27332        composeCodeableConcept("seriousness", element.getSeriousness());
27333      }
27334      if (element.hasSeverity()) {
27335        composeCodeableConcept("severity", element.getSeverity());
27336      }
27337      if (element.hasOutcome()) {
27338        composeCodeableConcept("outcome", element.getOutcome());
27339      }
27340      if (element.hasRecorder()) {
27341        composeReference("recorder", element.getRecorder());
27342      }
27343      if (element.hasContributor()) { 
27344        for (Reference e : element.getContributor()) 
27345          composeReference("contributor", e);
27346      }
27347      if (element.hasSuspectEntity()) { 
27348        for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
27349          composeAdverseEventAdverseEventSuspectEntityComponent("suspectEntity", e);
27350      }
27351      if (element.hasSubjectMedicalHistory()) { 
27352        for (Reference e : element.getSubjectMedicalHistory()) 
27353          composeReference("subjectMedicalHistory", e);
27354      }
27355      if (element.hasReferenceDocument()) { 
27356        for (Reference e : element.getReferenceDocument()) 
27357          composeReference("referenceDocument", e);
27358      }
27359      if (element.hasStudy()) { 
27360        for (Reference e : element.getStudy()) 
27361          composeReference("study", e);
27362      }
27363  }
27364
27365  protected void composeAdverseEventAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
27366    if (element != null) {
27367      composeElementAttributes(element);
27368      xml.enter(FHIR_NS, name);
27369      composeAdverseEventAdverseEventSuspectEntityComponentElements(element);
27370      composeElementClose(element);
27371      xml.exit(FHIR_NS, name);
27372    }
27373  }
27374
27375  protected void composeAdverseEventAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
27376      composeBackboneElementElements(element);
27377      if (element.hasInstance()) {
27378        composeReference("instance", element.getInstance());
27379      }
27380      if (element.hasCausality()) { 
27381        for (AdverseEvent.AdverseEventSuspectEntityCausalityComponent e : element.getCausality()) 
27382          composeAdverseEventAdverseEventSuspectEntityCausalityComponent("causality", e);
27383      }
27384  }
27385
27386  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponent(String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
27387    if (element != null) {
27388      composeElementAttributes(element);
27389      xml.enter(FHIR_NS, name);
27390      composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(element);
27391      composeElementClose(element);
27392      xml.exit(FHIR_NS, name);
27393    }
27394  }
27395
27396  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
27397      composeBackboneElementElements(element);
27398      if (element.hasAssessment()) {
27399        composeCodeableConcept("assessment", element.getAssessment());
27400      }
27401      if (element.hasProductRelatednessElement()) {
27402        composeString("productRelatedness", element.getProductRelatednessElement());
27403      }
27404      if (element.hasAuthor()) {
27405        composeReference("author", element.getAuthor());
27406      }
27407      if (element.hasMethod()) {
27408        composeCodeableConcept("method", element.getMethod());
27409      }
27410  }
27411
27412  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
27413    if (element != null) {
27414      composeDomainResourceAttributes(element);
27415      xml.enter(FHIR_NS, name);
27416      composeAllergyIntoleranceElements(element);
27417      composeElementClose(element);
27418      xml.exit(FHIR_NS, name);
27419    }
27420  }
27421
27422  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
27423      composeDomainResourceElements(element);
27424      if (element.hasIdentifier()) { 
27425        for (Identifier e : element.getIdentifier()) 
27426          composeIdentifier("identifier", e);
27427      }
27428      if (element.hasClinicalStatus()) {
27429        composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
27430      }
27431      if (element.hasVerificationStatus()) {
27432        composeCodeableConcept("verificationStatus", element.getVerificationStatus());
27433      }
27434      if (element.hasTypeElement())
27435        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
27436        if (element.hasCategory()) 
27437          for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
27438            composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
27439      if (element.hasCriticalityElement())
27440        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
27441      if (element.hasCode()) {
27442        composeCodeableConcept("code", element.getCode());
27443      }
27444      if (element.hasPatient()) {
27445        composeReference("patient", element.getPatient());
27446      }
27447      if (element.hasEncounter()) {
27448        composeReference("encounter", element.getEncounter());
27449      }
27450      if (element.hasOnset()) {
27451        composeType("onset", element.getOnset());
27452      }      if (element.hasRecordedDateElement()) {
27453        composeDateTime("recordedDate", element.getRecordedDateElement());
27454      }
27455      if (element.hasRecorder()) {
27456        composeReference("recorder", element.getRecorder());
27457      }
27458      if (element.hasAsserter()) {
27459        composeReference("asserter", element.getAsserter());
27460      }
27461      if (element.hasLastOccurrenceElement()) {
27462        composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
27463      }
27464      if (element.hasNote()) { 
27465        for (Annotation e : element.getNote()) 
27466          composeAnnotation("note", e);
27467      }
27468      if (element.hasReaction()) { 
27469        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
27470          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
27471      }
27472  }
27473
27474  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
27475    if (element != null) {
27476      composeElementAttributes(element);
27477      xml.enter(FHIR_NS, name);
27478      composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(element);
27479      composeElementClose(element);
27480      xml.exit(FHIR_NS, name);
27481    }
27482  }
27483
27484  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
27485      composeBackboneElementElements(element);
27486      if (element.hasSubstance()) {
27487        composeCodeableConcept("substance", element.getSubstance());
27488      }
27489      if (element.hasManifestation()) { 
27490        for (CodeableConcept e : element.getManifestation()) 
27491          composeCodeableConcept("manifestation", e);
27492      }
27493      if (element.hasDescriptionElement()) {
27494        composeString("description", element.getDescriptionElement());
27495      }
27496      if (element.hasOnsetElement()) {
27497        composeDateTime("onset", element.getOnsetElement());
27498      }
27499      if (element.hasSeverityElement())
27500        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
27501      if (element.hasExposureRoute()) {
27502        composeCodeableConcept("exposureRoute", element.getExposureRoute());
27503      }
27504      if (element.hasNote()) { 
27505        for (Annotation e : element.getNote()) 
27506          composeAnnotation("note", e);
27507      }
27508  }
27509
27510  protected void composeAppointment(String name, Appointment element) throws IOException {
27511    if (element != null) {
27512      composeDomainResourceAttributes(element);
27513      xml.enter(FHIR_NS, name);
27514      composeAppointmentElements(element);
27515      composeElementClose(element);
27516      xml.exit(FHIR_NS, name);
27517    }
27518  }
27519
27520  protected void composeAppointmentElements(Appointment element) throws IOException {
27521      composeDomainResourceElements(element);
27522      if (element.hasIdentifier()) { 
27523        for (Identifier e : element.getIdentifier()) 
27524          composeIdentifier("identifier", e);
27525      }
27526      if (element.hasStatusElement())
27527        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
27528      if (element.hasCancelationReason()) {
27529        composeCodeableConcept("cancelationReason", element.getCancelationReason());
27530      }
27531      if (element.hasServiceCategory()) { 
27532        for (CodeableConcept e : element.getServiceCategory()) 
27533          composeCodeableConcept("serviceCategory", e);
27534      }
27535      if (element.hasServiceType()) { 
27536        for (CodeableConcept e : element.getServiceType()) 
27537          composeCodeableConcept("serviceType", e);
27538      }
27539      if (element.hasSpecialty()) { 
27540        for (CodeableConcept e : element.getSpecialty()) 
27541          composeCodeableConcept("specialty", e);
27542      }
27543      if (element.hasAppointmentType()) {
27544        composeCodeableConcept("appointmentType", element.getAppointmentType());
27545      }
27546      if (element.hasReasonCode()) { 
27547        for (CodeableConcept e : element.getReasonCode()) 
27548          composeCodeableConcept("reasonCode", e);
27549      }
27550      if (element.hasReasonReference()) { 
27551        for (Reference e : element.getReasonReference()) 
27552          composeReference("reasonReference", e);
27553      }
27554      if (element.hasPriorityElement()) {
27555        composeUnsignedInt("priority", element.getPriorityElement());
27556      }
27557      if (element.hasDescriptionElement()) {
27558        composeString("description", element.getDescriptionElement());
27559      }
27560      if (element.hasSupportingInformation()) { 
27561        for (Reference e : element.getSupportingInformation()) 
27562          composeReference("supportingInformation", e);
27563      }
27564      if (element.hasStartElement()) {
27565        composeInstant("start", element.getStartElement());
27566      }
27567      if (element.hasEndElement()) {
27568        composeInstant("end", element.getEndElement());
27569      }
27570      if (element.hasMinutesDurationElement()) {
27571        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
27572      }
27573      if (element.hasSlot()) { 
27574        for (Reference e : element.getSlot()) 
27575          composeReference("slot", e);
27576      }
27577      if (element.hasCreatedElement()) {
27578        composeDateTime("created", element.getCreatedElement());
27579      }
27580      if (element.hasCommentElement()) {
27581        composeString("comment", element.getCommentElement());
27582      }
27583      if (element.hasPatientInstructionElement()) {
27584        composeString("patientInstruction", element.getPatientInstructionElement());
27585      }
27586      if (element.hasBasedOn()) { 
27587        for (Reference e : element.getBasedOn()) 
27588          composeReference("basedOn", e);
27589      }
27590      if (element.hasParticipant()) { 
27591        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
27592          composeAppointmentAppointmentParticipantComponent("participant", e);
27593      }
27594      if (element.hasRequestedPeriod()) { 
27595        for (Period e : element.getRequestedPeriod()) 
27596          composePeriod("requestedPeriod", e);
27597      }
27598  }
27599
27600  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
27601    if (element != null) {
27602      composeElementAttributes(element);
27603      xml.enter(FHIR_NS, name);
27604      composeAppointmentAppointmentParticipantComponentElements(element);
27605      composeElementClose(element);
27606      xml.exit(FHIR_NS, name);
27607    }
27608  }
27609
27610  protected void composeAppointmentAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
27611      composeBackboneElementElements(element);
27612      if (element.hasType()) { 
27613        for (CodeableConcept e : element.getType()) 
27614          composeCodeableConcept("type", e);
27615      }
27616      if (element.hasActor()) {
27617        composeReference("actor", element.getActor());
27618      }
27619      if (element.hasRequiredElement())
27620        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
27621      if (element.hasStatusElement())
27622        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
27623      if (element.hasPeriod()) {
27624        composePeriod("period", element.getPeriod());
27625      }
27626  }
27627
27628  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
27629    if (element != null) {
27630      composeDomainResourceAttributes(element);
27631      xml.enter(FHIR_NS, name);
27632      composeAppointmentResponseElements(element);
27633      composeElementClose(element);
27634      xml.exit(FHIR_NS, name);
27635    }
27636  }
27637
27638  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
27639      composeDomainResourceElements(element);
27640      if (element.hasIdentifier()) { 
27641        for (Identifier e : element.getIdentifier()) 
27642          composeIdentifier("identifier", e);
27643      }
27644      if (element.hasAppointment()) {
27645        composeReference("appointment", element.getAppointment());
27646      }
27647      if (element.hasStartElement()) {
27648        composeInstant("start", element.getStartElement());
27649      }
27650      if (element.hasEndElement()) {
27651        composeInstant("end", element.getEndElement());
27652      }
27653      if (element.hasParticipantType()) { 
27654        for (CodeableConcept e : element.getParticipantType()) 
27655          composeCodeableConcept("participantType", e);
27656      }
27657      if (element.hasActor()) {
27658        composeReference("actor", element.getActor());
27659      }
27660      if (element.hasParticipantStatusElement())
27661        composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.ParticipantStatusEnumFactory());
27662      if (element.hasCommentElement()) {
27663        composeString("comment", element.getCommentElement());
27664      }
27665  }
27666
27667  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
27668    if (element != null) {
27669      composeDomainResourceAttributes(element);
27670      xml.enter(FHIR_NS, name);
27671      composeAuditEventElements(element);
27672      composeElementClose(element);
27673      xml.exit(FHIR_NS, name);
27674    }
27675  }
27676
27677  protected void composeAuditEventElements(AuditEvent element) throws IOException {
27678      composeDomainResourceElements(element);
27679      if (element.hasType()) {
27680        composeCoding("type", element.getType());
27681      }
27682      if (element.hasSubtype()) { 
27683        for (Coding e : element.getSubtype()) 
27684          composeCoding("subtype", e);
27685      }
27686      if (element.hasActionElement())
27687        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
27688      if (element.hasPeriod()) {
27689        composePeriod("period", element.getPeriod());
27690      }
27691      if (element.hasRecordedElement()) {
27692        composeInstant("recorded", element.getRecordedElement());
27693      }
27694      if (element.hasOutcomeElement())
27695        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
27696      if (element.hasOutcomeDescElement()) {
27697        composeString("outcomeDesc", element.getOutcomeDescElement());
27698      }
27699      if (element.hasPurposeOfEvent()) { 
27700        for (CodeableConcept e : element.getPurposeOfEvent()) 
27701          composeCodeableConcept("purposeOfEvent", e);
27702      }
27703      if (element.hasAgent()) { 
27704        for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
27705          composeAuditEventAuditEventAgentComponent("agent", e);
27706      }
27707      if (element.hasSource()) {
27708        composeAuditEventAuditEventSourceComponent("source", element.getSource());
27709      }
27710      if (element.hasEntity()) { 
27711        for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
27712          composeAuditEventAuditEventEntityComponent("entity", e);
27713      }
27714  }
27715
27716  protected void composeAuditEventAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
27717    if (element != null) {
27718      composeElementAttributes(element);
27719      xml.enter(FHIR_NS, name);
27720      composeAuditEventAuditEventAgentComponentElements(element);
27721      composeElementClose(element);
27722      xml.exit(FHIR_NS, name);
27723    }
27724  }
27725
27726  protected void composeAuditEventAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
27727      composeBackboneElementElements(element);
27728      if (element.hasType()) {
27729        composeCodeableConcept("type", element.getType());
27730      }
27731      if (element.hasRole()) { 
27732        for (CodeableConcept e : element.getRole()) 
27733          composeCodeableConcept("role", e);
27734      }
27735      if (element.hasWho()) {
27736        composeReference("who", element.getWho());
27737      }
27738      if (element.hasAltIdElement()) {
27739        composeString("altId", element.getAltIdElement());
27740      }
27741      if (element.hasNameElement()) {
27742        composeString("name", element.getNameElement());
27743      }
27744      if (element.hasRequestorElement()) {
27745        composeBoolean("requestor", element.getRequestorElement());
27746      }
27747      if (element.hasLocation()) {
27748        composeReference("location", element.getLocation());
27749      }
27750      if (element.hasPolicy()) { 
27751        for (UriType e : element.getPolicy()) 
27752          composeUri("policy", e);
27753      }
27754      if (element.hasMedia()) {
27755        composeCoding("media", element.getMedia());
27756      }
27757      if (element.hasNetwork()) {
27758        composeAuditEventAuditEventAgentNetworkComponent("network", element.getNetwork());
27759      }
27760      if (element.hasPurposeOfUse()) { 
27761        for (CodeableConcept e : element.getPurposeOfUse()) 
27762          composeCodeableConcept("purposeOfUse", e);
27763      }
27764  }
27765
27766  protected void composeAuditEventAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
27767    if (element != null) {
27768      composeElementAttributes(element);
27769      xml.enter(FHIR_NS, name);
27770      composeAuditEventAuditEventAgentNetworkComponentElements(element);
27771      composeElementClose(element);
27772      xml.exit(FHIR_NS, name);
27773    }
27774  }
27775
27776  protected void composeAuditEventAuditEventAgentNetworkComponentElements(AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
27777      composeBackboneElementElements(element);
27778      if (element.hasAddressElement()) {
27779        composeString("address", element.getAddressElement());
27780      }
27781      if (element.hasTypeElement())
27782        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventAgentNetworkTypeEnumFactory());
27783  }
27784
27785  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
27786    if (element != null) {
27787      composeElementAttributes(element);
27788      xml.enter(FHIR_NS, name);
27789      composeAuditEventAuditEventSourceComponentElements(element);
27790      composeElementClose(element);
27791      xml.exit(FHIR_NS, name);
27792    }
27793  }
27794
27795  protected void composeAuditEventAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
27796      composeBackboneElementElements(element);
27797      if (element.hasSiteElement()) {
27798        composeString("site", element.getSiteElement());
27799      }
27800      if (element.hasObserver()) {
27801        composeReference("observer", element.getObserver());
27802      }
27803      if (element.hasType()) { 
27804        for (Coding e : element.getType()) 
27805          composeCoding("type", e);
27806      }
27807  }
27808
27809  protected void composeAuditEventAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
27810    if (element != null) {
27811      composeElementAttributes(element);
27812      xml.enter(FHIR_NS, name);
27813      composeAuditEventAuditEventEntityComponentElements(element);
27814      composeElementClose(element);
27815      xml.exit(FHIR_NS, name);
27816    }
27817  }
27818
27819  protected void composeAuditEventAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
27820      composeBackboneElementElements(element);
27821      if (element.hasWhat()) {
27822        composeReference("what", element.getWhat());
27823      }
27824      if (element.hasType()) {
27825        composeCoding("type", element.getType());
27826      }
27827      if (element.hasRole()) {
27828        composeCoding("role", element.getRole());
27829      }
27830      if (element.hasLifecycle()) {
27831        composeCoding("lifecycle", element.getLifecycle());
27832      }
27833      if (element.hasSecurityLabel()) { 
27834        for (Coding e : element.getSecurityLabel()) 
27835          composeCoding("securityLabel", e);
27836      }
27837      if (element.hasNameElement()) {
27838        composeString("name", element.getNameElement());
27839      }
27840      if (element.hasDescriptionElement()) {
27841        composeString("description", element.getDescriptionElement());
27842      }
27843      if (element.hasQueryElement()) {
27844        composeBase64Binary("query", element.getQueryElement());
27845      }
27846      if (element.hasDetail()) { 
27847        for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
27848          composeAuditEventAuditEventEntityDetailComponent("detail", e);
27849      }
27850  }
27851
27852  protected void composeAuditEventAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
27853    if (element != null) {
27854      composeElementAttributes(element);
27855      xml.enter(FHIR_NS, name);
27856      composeAuditEventAuditEventEntityDetailComponentElements(element);
27857      composeElementClose(element);
27858      xml.exit(FHIR_NS, name);
27859    }
27860  }
27861
27862  protected void composeAuditEventAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
27863      composeBackboneElementElements(element);
27864      if (element.hasTypeElement()) {
27865        composeString("type", element.getTypeElement());
27866      }
27867      if (element.hasValue()) {
27868        composeType("value", element.getValue());
27869      }  }
27870
27871  protected void composeBasic(String name, Basic element) throws IOException {
27872    if (element != null) {
27873      composeDomainResourceAttributes(element);
27874      xml.enter(FHIR_NS, name);
27875      composeBasicElements(element);
27876      composeElementClose(element);
27877      xml.exit(FHIR_NS, name);
27878    }
27879  }
27880
27881  protected void composeBasicElements(Basic element) throws IOException {
27882      composeDomainResourceElements(element);
27883      if (element.hasIdentifier()) { 
27884        for (Identifier e : element.getIdentifier()) 
27885          composeIdentifier("identifier", e);
27886      }
27887      if (element.hasCode()) {
27888        composeCodeableConcept("code", element.getCode());
27889      }
27890      if (element.hasSubject()) {
27891        composeReference("subject", element.getSubject());
27892      }
27893      if (element.hasCreatedElement()) {
27894        composeDate("created", element.getCreatedElement());
27895      }
27896      if (element.hasAuthor()) {
27897        composeReference("author", element.getAuthor());
27898      }
27899  }
27900
27901  protected void composeBinary(String name, Binary element) throws IOException {
27902    if (element != null) {
27903      composeResourceAttributes(element);
27904      xml.enter(FHIR_NS, name);
27905      composeBinaryElements(element);
27906      composeElementClose(element);
27907      xml.exit(FHIR_NS, name);
27908    }
27909  }
27910
27911  protected void composeBinaryElements(Binary element) throws IOException {
27912      composeResourceElements(element);
27913      if (element.hasContentTypeElement()) {
27914        composeCode("contentType", element.getContentTypeElement());
27915      }
27916      if (element.hasSecurityContext()) {
27917        composeReference("securityContext", element.getSecurityContext());
27918      }
27919      if (element.hasDataElement()) {
27920        composeBase64Binary("data", element.getDataElement());
27921      }
27922  }
27923
27924  protected void composeBiologicallyDerivedProduct(String name, BiologicallyDerivedProduct element) throws IOException {
27925    if (element != null) {
27926      composeDomainResourceAttributes(element);
27927      xml.enter(FHIR_NS, name);
27928      composeBiologicallyDerivedProductElements(element);
27929      composeElementClose(element);
27930      xml.exit(FHIR_NS, name);
27931    }
27932  }
27933
27934  protected void composeBiologicallyDerivedProductElements(BiologicallyDerivedProduct element) throws IOException {
27935      composeDomainResourceElements(element);
27936      if (element.hasIdentifier()) { 
27937        for (Identifier e : element.getIdentifier()) 
27938          composeIdentifier("identifier", e);
27939      }
27940      if (element.hasProductCategoryElement())
27941        composeEnumeration("productCategory", element.getProductCategoryElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory());
27942      if (element.hasProductCode()) {
27943        composeCodeableConcept("productCode", element.getProductCode());
27944      }
27945      if (element.hasStatusElement())
27946        composeEnumeration("status", element.getStatusElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory());
27947      if (element.hasRequest()) { 
27948        for (Reference e : element.getRequest()) 
27949          composeReference("request", e);
27950      }
27951      if (element.hasQuantityElement()) {
27952        composeInteger("quantity", element.getQuantityElement());
27953      }
27954      if (element.hasParent()) { 
27955        for (Reference e : element.getParent()) 
27956          composeReference("parent", e);
27957      }
27958      if (element.hasCollection()) {
27959        composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent("collection", element.getCollection());
27960      }
27961      if (element.hasProcessing()) { 
27962        for (BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent e : element.getProcessing()) 
27963          composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent("processing", e);
27964      }
27965      if (element.hasManipulation()) {
27966        composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent("manipulation", element.getManipulation());
27967      }
27968      if (element.hasStorage()) { 
27969        for (BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent e : element.getStorage()) 
27970          composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent("storage", e);
27971      }
27972  }
27973
27974  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
27975    if (element != null) {
27976      composeElementAttributes(element);
27977      xml.enter(FHIR_NS, name);
27978      composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(element);
27979      composeElementClose(element);
27980      xml.exit(FHIR_NS, name);
27981    }
27982  }
27983
27984  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
27985      composeBackboneElementElements(element);
27986      if (element.hasCollector()) {
27987        composeReference("collector", element.getCollector());
27988      }
27989      if (element.hasSource()) {
27990        composeReference("source", element.getSource());
27991      }
27992      if (element.hasCollected()) {
27993        composeType("collected", element.getCollected());
27994      }  }
27995
27996  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
27997    if (element != null) {
27998      composeElementAttributes(element);
27999      xml.enter(FHIR_NS, name);
28000      composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(element);
28001      composeElementClose(element);
28002      xml.exit(FHIR_NS, name);
28003    }
28004  }
28005
28006  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
28007      composeBackboneElementElements(element);
28008      if (element.hasDescriptionElement()) {
28009        composeString("description", element.getDescriptionElement());
28010      }
28011      if (element.hasProcedure()) {
28012        composeCodeableConcept("procedure", element.getProcedure());
28013      }
28014      if (element.hasAdditive()) {
28015        composeReference("additive", element.getAdditive());
28016      }
28017      if (element.hasTime()) {
28018        composeType("time", element.getTime());
28019      }  }
28020
28021  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
28022    if (element != null) {
28023      composeElementAttributes(element);
28024      xml.enter(FHIR_NS, name);
28025      composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(element);
28026      composeElementClose(element);
28027      xml.exit(FHIR_NS, name);
28028    }
28029  }
28030
28031  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
28032      composeBackboneElementElements(element);
28033      if (element.hasDescriptionElement()) {
28034        composeString("description", element.getDescriptionElement());
28035      }
28036      if (element.hasTime()) {
28037        composeType("time", element.getTime());
28038      }  }
28039
28040  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
28041    if (element != null) {
28042      composeElementAttributes(element);
28043      xml.enter(FHIR_NS, name);
28044      composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(element);
28045      composeElementClose(element);
28046      xml.exit(FHIR_NS, name);
28047    }
28048  }
28049
28050  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
28051      composeBackboneElementElements(element);
28052      if (element.hasDescriptionElement()) {
28053        composeString("description", element.getDescriptionElement());
28054      }
28055      if (element.hasTemperatureElement()) {
28056        composeDecimal("temperature", element.getTemperatureElement());
28057      }
28058      if (element.hasScaleElement())
28059        composeEnumeration("scale", element.getScaleElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory());
28060      if (element.hasDuration()) {
28061        composePeriod("duration", element.getDuration());
28062      }
28063  }
28064
28065  protected void composeBodyStructure(String name, BodyStructure element) throws IOException {
28066    if (element != null) {
28067      composeDomainResourceAttributes(element);
28068      xml.enter(FHIR_NS, name);
28069      composeBodyStructureElements(element);
28070      composeElementClose(element);
28071      xml.exit(FHIR_NS, name);
28072    }
28073  }
28074
28075  protected void composeBodyStructureElements(BodyStructure element) throws IOException {
28076      composeDomainResourceElements(element);
28077      if (element.hasIdentifier()) { 
28078        for (Identifier e : element.getIdentifier()) 
28079          composeIdentifier("identifier", e);
28080      }
28081      if (element.hasActiveElement()) {
28082        composeBoolean("active", element.getActiveElement());
28083      }
28084      if (element.hasMorphology()) {
28085        composeCodeableConcept("morphology", element.getMorphology());
28086      }
28087      if (element.hasLocation()) {
28088        composeCodeableConcept("location", element.getLocation());
28089      }
28090      if (element.hasLocationQualifier()) { 
28091        for (CodeableConcept e : element.getLocationQualifier()) 
28092          composeCodeableConcept("locationQualifier", e);
28093      }
28094      if (element.hasDescriptionElement()) {
28095        composeString("description", element.getDescriptionElement());
28096      }
28097      if (element.hasImage()) { 
28098        for (Attachment e : element.getImage()) 
28099          composeAttachment("image", e);
28100      }
28101      if (element.hasPatient()) {
28102        composeReference("patient", element.getPatient());
28103      }
28104  }
28105
28106  protected void composeBundle(String name, Bundle element) throws IOException {
28107    if (element != null) {
28108      composeResourceAttributes(element);
28109      xml.enter(FHIR_NS, name);
28110      composeBundleElements(element);
28111      composeElementClose(element);
28112      xml.exit(FHIR_NS, name);
28113    }
28114  }
28115
28116  protected void composeBundleElements(Bundle element) throws IOException {
28117      composeResourceElements(element);
28118      if (element.hasIdentifier()) {
28119        composeIdentifier("identifier", element.getIdentifier());
28120      }
28121      if (element.hasTypeElement())
28122        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
28123      if (element.hasTimestampElement()) {
28124        composeInstant("timestamp", element.getTimestampElement());
28125      }
28126      if (element.hasTotalElement()) {
28127        composeUnsignedInt("total", element.getTotalElement());
28128      }
28129      if (element.hasLink()) { 
28130        for (Bundle.BundleLinkComponent e : element.getLink()) 
28131          composeBundleBundleLinkComponent("link", e);
28132      }
28133      if (element.hasEntry()) { 
28134        for (Bundle.BundleEntryComponent e : element.getEntry()) 
28135          composeBundleBundleEntryComponent("entry", e);
28136      }
28137      if (element.hasSignature()) {
28138        composeSignature("signature", element.getSignature());
28139      }
28140  }
28141
28142  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
28143    if (element != null) {
28144      composeElementAttributes(element);
28145      xml.enter(FHIR_NS, name);
28146      composeBundleBundleLinkComponentElements(element);
28147      composeElementClose(element);
28148      xml.exit(FHIR_NS, name);
28149    }
28150  }
28151
28152  protected void composeBundleBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
28153      composeBackboneElementElements(element);
28154      if (element.hasRelationElement()) {
28155        composeString("relation", element.getRelationElement());
28156      }
28157      if (element.hasUrlElement()) {
28158        composeUri("url", element.getUrlElement());
28159      }
28160  }
28161
28162  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
28163    if (element != null) {
28164      composeElementAttributes(element);
28165      xml.enter(FHIR_NS, name);
28166      composeBundleBundleEntryComponentElements(element);
28167      composeElementClose(element);
28168      xml.exit(FHIR_NS, name);
28169    }
28170  }
28171
28172  protected void composeBundleBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
28173      composeBackboneElementElements(element);
28174      if (element.hasLink()) { 
28175        for (Bundle.BundleLinkComponent e : element.getLink()) 
28176          composeBundleBundleLinkComponent("link", e);
28177      }
28178      if (element.hasFullUrlElement()) {
28179        composeUri("fullUrl", element.getFullUrlElement());
28180      }
28181      if (element.hasResource()) {
28182        xml.enter(FHIR_NS, "resource");
28183        composeResource(element.getResource());
28184        xml.exit(FHIR_NS, "resource");
28185      }
28186      if (element.hasSearch()) {
28187        composeBundleBundleEntrySearchComponent("search", element.getSearch());
28188      }
28189      if (element.hasRequest()) {
28190        composeBundleBundleEntryRequestComponent("request", element.getRequest());
28191      }
28192      if (element.hasResponse()) {
28193        composeBundleBundleEntryResponseComponent("response", element.getResponse());
28194      }
28195  }
28196
28197  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
28198    if (element != null) {
28199      composeElementAttributes(element);
28200      xml.enter(FHIR_NS, name);
28201      composeBundleBundleEntrySearchComponentElements(element);
28202      composeElementClose(element);
28203      xml.exit(FHIR_NS, name);
28204    }
28205  }
28206
28207  protected void composeBundleBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
28208      composeBackboneElementElements(element);
28209      if (element.hasModeElement())
28210        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
28211      if (element.hasScoreElement()) {
28212        composeDecimal("score", element.getScoreElement());
28213      }
28214  }
28215
28216  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
28217    if (element != null) {
28218      composeElementAttributes(element);
28219      xml.enter(FHIR_NS, name);
28220      composeBundleBundleEntryRequestComponentElements(element);
28221      composeElementClose(element);
28222      xml.exit(FHIR_NS, name);
28223    }
28224  }
28225
28226  protected void composeBundleBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
28227      composeBackboneElementElements(element);
28228      if (element.hasMethodElement())
28229        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
28230      if (element.hasUrlElement()) {
28231        composeUri("url", element.getUrlElement());
28232      }
28233      if (element.hasIfNoneMatchElement()) {
28234        composeString("ifNoneMatch", element.getIfNoneMatchElement());
28235      }
28236      if (element.hasIfModifiedSinceElement()) {
28237        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
28238      }
28239      if (element.hasIfMatchElement()) {
28240        composeString("ifMatch", element.getIfMatchElement());
28241      }
28242      if (element.hasIfNoneExistElement()) {
28243        composeString("ifNoneExist", element.getIfNoneExistElement());
28244      }
28245  }
28246
28247  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
28248    if (element != null) {
28249      composeElementAttributes(element);
28250      xml.enter(FHIR_NS, name);
28251      composeBundleBundleEntryResponseComponentElements(element);
28252      composeElementClose(element);
28253      xml.exit(FHIR_NS, name);
28254    }
28255  }
28256
28257  protected void composeBundleBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
28258      composeBackboneElementElements(element);
28259      if (element.hasStatusElement()) {
28260        composeString("status", element.getStatusElement());
28261      }
28262      if (element.hasLocationElement()) {
28263        composeUri("location", element.getLocationElement());
28264      }
28265      if (element.hasEtagElement()) {
28266        composeString("etag", element.getEtagElement());
28267      }
28268      if (element.hasLastModifiedElement()) {
28269        composeInstant("lastModified", element.getLastModifiedElement());
28270      }
28271      if (element.hasOutcome()) {
28272        xml.enter(FHIR_NS, "outcome");
28273        composeResource(element.getOutcome());
28274        xml.exit(FHIR_NS, "outcome");
28275      }
28276  }
28277
28278  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
28279    if (element != null) {
28280      composeDomainResourceAttributes(element);
28281      xml.enter(FHIR_NS, name);
28282      composeCapabilityStatementElements(element);
28283      composeElementClose(element);
28284      xml.exit(FHIR_NS, name);
28285    }
28286  }
28287
28288  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
28289      composeDomainResourceElements(element);
28290      if (element.hasUrlElement()) {
28291        composeUri("url", element.getUrlElement());
28292      }
28293      if (element.hasVersionElement()) {
28294        composeString("version", element.getVersionElement());
28295      }
28296      if (element.hasNameElement()) {
28297        composeString("name", element.getNameElement());
28298      }
28299      if (element.hasTitleElement()) {
28300        composeString("title", element.getTitleElement());
28301      }
28302      if (element.hasStatusElement())
28303        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28304      if (element.hasExperimentalElement()) {
28305        composeBoolean("experimental", element.getExperimentalElement());
28306      }
28307      if (element.hasDateElement()) {
28308        composeDateTime("date", element.getDateElement());
28309      }
28310      if (element.hasPublisherElement()) {
28311        composeString("publisher", element.getPublisherElement());
28312      }
28313      if (element.hasContact()) { 
28314        for (ContactDetail e : element.getContact()) 
28315          composeContactDetail("contact", e);
28316      }
28317      if (element.hasDescriptionElement()) {
28318        composeMarkdown("description", element.getDescriptionElement());
28319      }
28320      if (element.hasUseContext()) { 
28321        for (UsageContext e : element.getUseContext()) 
28322          composeUsageContext("useContext", e);
28323      }
28324      if (element.hasJurisdiction()) { 
28325        for (CodeableConcept e : element.getJurisdiction()) 
28326          composeCodeableConcept("jurisdiction", e);
28327      }
28328      if (element.hasPurposeElement()) {
28329        composeMarkdown("purpose", element.getPurposeElement());
28330      }
28331      if (element.hasCopyrightElement()) {
28332        composeMarkdown("copyright", element.getCopyrightElement());
28333      }
28334      if (element.hasKindElement())
28335        composeEnumeration("kind", element.getKindElement(), new CapabilityStatement.CapabilityStatementKindEnumFactory());
28336      if (element.hasInstantiates()) { 
28337        for (CanonicalType e : element.getInstantiates()) 
28338          composeCanonical("instantiates", e);
28339      }
28340      if (element.hasImports()) { 
28341        for (CanonicalType e : element.getImports()) 
28342          composeCanonical("imports", e);
28343      }
28344      if (element.hasSoftware()) {
28345        composeCapabilityStatementCapabilityStatementSoftwareComponent("software", element.getSoftware());
28346      }
28347      if (element.hasImplementation()) {
28348        composeCapabilityStatementCapabilityStatementImplementationComponent("implementation", element.getImplementation());
28349      }
28350      if (element.hasFhirVersionElement())
28351        composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
28352      if (element.hasFormat()) { 
28353        for (CodeType e : element.getFormat()) 
28354          composeCode("format", e);
28355      }
28356      if (element.hasPatchFormat()) { 
28357        for (CodeType e : element.getPatchFormat()) 
28358          composeCode("patchFormat", e);
28359      }
28360      if (element.hasImplementationGuide()) { 
28361        for (CanonicalType e : element.getImplementationGuide()) 
28362          composeCanonical("implementationGuide", e);
28363      }
28364      if (element.hasRest()) { 
28365        for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
28366          composeCapabilityStatementCapabilityStatementRestComponent("rest", e);
28367      }
28368      if (element.hasMessaging()) { 
28369        for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
28370          composeCapabilityStatementCapabilityStatementMessagingComponent("messaging", e);
28371      }
28372      if (element.hasDocument()) { 
28373        for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
28374          composeCapabilityStatementCapabilityStatementDocumentComponent("document", e);
28375      }
28376  }
28377
28378  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
28379    if (element != null) {
28380      composeElementAttributes(element);
28381      xml.enter(FHIR_NS, name);
28382      composeCapabilityStatementCapabilityStatementSoftwareComponentElements(element);
28383      composeElementClose(element);
28384      xml.exit(FHIR_NS, name);
28385    }
28386  }
28387
28388  protected void composeCapabilityStatementCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
28389      composeBackboneElementElements(element);
28390      if (element.hasNameElement()) {
28391        composeString("name", element.getNameElement());
28392      }
28393      if (element.hasVersionElement()) {
28394        composeString("version", element.getVersionElement());
28395      }
28396      if (element.hasReleaseDateElement()) {
28397        composeDateTime("releaseDate", element.getReleaseDateElement());
28398      }
28399  }
28400
28401  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
28402    if (element != null) {
28403      composeElementAttributes(element);
28404      xml.enter(FHIR_NS, name);
28405      composeCapabilityStatementCapabilityStatementImplementationComponentElements(element);
28406      composeElementClose(element);
28407      xml.exit(FHIR_NS, name);
28408    }
28409  }
28410
28411  protected void composeCapabilityStatementCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
28412      composeBackboneElementElements(element);
28413      if (element.hasDescriptionElement()) {
28414        composeString("description", element.getDescriptionElement());
28415      }
28416      if (element.hasUrlElement()) {
28417        composeUrl("url", element.getUrlElement());
28418      }
28419      if (element.hasCustodian()) {
28420        composeReference("custodian", element.getCustodian());
28421      }
28422  }
28423
28424  protected void composeCapabilityStatementCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
28425    if (element != null) {
28426      composeElementAttributes(element);
28427      xml.enter(FHIR_NS, name);
28428      composeCapabilityStatementCapabilityStatementRestComponentElements(element);
28429      composeElementClose(element);
28430      xml.exit(FHIR_NS, name);
28431    }
28432  }
28433
28434  protected void composeCapabilityStatementCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
28435      composeBackboneElementElements(element);
28436      if (element.hasModeElement())
28437        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
28438      if (element.hasDocumentationElement()) {
28439        composeMarkdown("documentation", element.getDocumentationElement());
28440      }
28441      if (element.hasSecurity()) {
28442        composeCapabilityStatementCapabilityStatementRestSecurityComponent("security", element.getSecurity());
28443      }
28444      if (element.hasResource()) { 
28445        for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
28446          composeCapabilityStatementCapabilityStatementRestResourceComponent("resource", e);
28447      }
28448      if (element.hasInteraction()) { 
28449        for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
28450          composeCapabilityStatementSystemInteractionComponent("interaction", e);
28451      }
28452      if (element.hasSearchParam()) { 
28453        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
28454          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
28455      }
28456      if (element.hasOperation()) { 
28457        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
28458          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
28459      }
28460      if (element.hasCompartment()) { 
28461        for (CanonicalType e : element.getCompartment()) 
28462          composeCanonical("compartment", e);
28463      }
28464  }
28465
28466  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
28467    if (element != null) {
28468      composeElementAttributes(element);
28469      xml.enter(FHIR_NS, name);
28470      composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(element);
28471      composeElementClose(element);
28472      xml.exit(FHIR_NS, name);
28473    }
28474  }
28475
28476  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
28477      composeBackboneElementElements(element);
28478      if (element.hasCorsElement()) {
28479        composeBoolean("cors", element.getCorsElement());
28480      }
28481      if (element.hasService()) { 
28482        for (CodeableConcept e : element.getService()) 
28483          composeCodeableConcept("service", e);
28484      }
28485      if (element.hasDescriptionElement()) {
28486        composeMarkdown("description", element.getDescriptionElement());
28487      }
28488  }
28489
28490  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
28491    if (element != null) {
28492      composeElementAttributes(element);
28493      xml.enter(FHIR_NS, name);
28494      composeCapabilityStatementCapabilityStatementRestResourceComponentElements(element);
28495      composeElementClose(element);
28496      xml.exit(FHIR_NS, name);
28497    }
28498  }
28499
28500  protected void composeCapabilityStatementCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
28501      composeBackboneElementElements(element);
28502      if (element.hasTypeElement()) {
28503        composeCode("type", element.getTypeElement());
28504      }
28505      if (element.hasProfileElement()) {
28506        composeCanonical("profile", element.getProfileElement());
28507      }
28508      if (element.hasSupportedProfile()) { 
28509        for (CanonicalType e : element.getSupportedProfile()) 
28510          composeCanonical("supportedProfile", e);
28511      }
28512      if (element.hasDocumentationElement()) {
28513        composeMarkdown("documentation", element.getDocumentationElement());
28514      }
28515      if (element.hasInteraction()) { 
28516        for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
28517          composeCapabilityStatementResourceInteractionComponent("interaction", e);
28518      }
28519      if (element.hasVersioningElement())
28520        composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
28521      if (element.hasReadHistoryElement()) {
28522        composeBoolean("readHistory", element.getReadHistoryElement());
28523      }
28524      if (element.hasUpdateCreateElement()) {
28525        composeBoolean("updateCreate", element.getUpdateCreateElement());
28526      }
28527      if (element.hasConditionalCreateElement()) {
28528        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
28529      }
28530      if (element.hasConditionalReadElement())
28531        composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
28532      if (element.hasConditionalUpdateElement()) {
28533        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
28534      }
28535      if (element.hasConditionalDeleteElement())
28536        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
28537        if (element.hasReferencePolicy()) 
28538          for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
28539            composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
28540      if (element.hasSearchInclude()) { 
28541        for (StringType e : element.getSearchInclude()) 
28542          composeString("searchInclude", e);
28543      }
28544      if (element.hasSearchRevInclude()) { 
28545        for (StringType e : element.getSearchRevInclude()) 
28546          composeString("searchRevInclude", e);
28547      }
28548      if (element.hasSearchParam()) { 
28549        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
28550          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
28551      }
28552      if (element.hasOperation()) { 
28553        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
28554          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
28555      }
28556  }
28557
28558  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
28559    if (element != null) {
28560      composeElementAttributes(element);
28561      xml.enter(FHIR_NS, name);
28562      composeCapabilityStatementResourceInteractionComponentElements(element);
28563      composeElementClose(element);
28564      xml.exit(FHIR_NS, name);
28565    }
28566  }
28567
28568  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
28569      composeBackboneElementElements(element);
28570      if (element.hasCodeElement())
28571        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
28572      if (element.hasDocumentationElement()) {
28573        composeMarkdown("documentation", element.getDocumentationElement());
28574      }
28575  }
28576
28577  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
28578    if (element != null) {
28579      composeElementAttributes(element);
28580      xml.enter(FHIR_NS, name);
28581      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(element);
28582      composeElementClose(element);
28583      xml.exit(FHIR_NS, name);
28584    }
28585  }
28586
28587  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
28588      composeBackboneElementElements(element);
28589      if (element.hasNameElement()) {
28590        composeString("name", element.getNameElement());
28591      }
28592      if (element.hasDefinitionElement()) {
28593        composeCanonical("definition", element.getDefinitionElement());
28594      }
28595      if (element.hasTypeElement())
28596        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
28597      if (element.hasDocumentationElement()) {
28598        composeMarkdown("documentation", element.getDocumentationElement());
28599      }
28600  }
28601
28602  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
28603    if (element != null) {
28604      composeElementAttributes(element);
28605      xml.enter(FHIR_NS, name);
28606      composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(element);
28607      composeElementClose(element);
28608      xml.exit(FHIR_NS, name);
28609    }
28610  }
28611
28612  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
28613      composeBackboneElementElements(element);
28614      if (element.hasNameElement()) {
28615        composeString("name", element.getNameElement());
28616      }
28617      if (element.hasDefinitionElement()) {
28618        composeCanonical("definition", element.getDefinitionElement());
28619      }
28620      if (element.hasDocumentationElement()) {
28621        composeMarkdown("documentation", element.getDocumentationElement());
28622      }
28623  }
28624
28625  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
28626    if (element != null) {
28627      composeElementAttributes(element);
28628      xml.enter(FHIR_NS, name);
28629      composeCapabilityStatementSystemInteractionComponentElements(element);
28630      composeElementClose(element);
28631      xml.exit(FHIR_NS, name);
28632    }
28633  }
28634
28635  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
28636      composeBackboneElementElements(element);
28637      if (element.hasCodeElement())
28638        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
28639      if (element.hasDocumentationElement()) {
28640        composeMarkdown("documentation", element.getDocumentationElement());
28641      }
28642  }
28643
28644  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
28645    if (element != null) {
28646      composeElementAttributes(element);
28647      xml.enter(FHIR_NS, name);
28648      composeCapabilityStatementCapabilityStatementMessagingComponentElements(element);
28649      composeElementClose(element);
28650      xml.exit(FHIR_NS, name);
28651    }
28652  }
28653
28654  protected void composeCapabilityStatementCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
28655      composeBackboneElementElements(element);
28656      if (element.hasEndpoint()) { 
28657        for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
28658          composeCapabilityStatementCapabilityStatementMessagingEndpointComponent("endpoint", e);
28659      }
28660      if (element.hasReliableCacheElement()) {
28661        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
28662      }
28663      if (element.hasDocumentationElement()) {
28664        composeMarkdown("documentation", element.getDocumentationElement());
28665      }
28666      if (element.hasSupportedMessage()) { 
28667        for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
28668          composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
28669      }
28670  }
28671
28672  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
28673    if (element != null) {
28674      composeElementAttributes(element);
28675      xml.enter(FHIR_NS, name);
28676      composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(element);
28677      composeElementClose(element);
28678      xml.exit(FHIR_NS, name);
28679    }
28680  }
28681
28682  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
28683      composeBackboneElementElements(element);
28684      if (element.hasProtocol()) {
28685        composeCoding("protocol", element.getProtocol());
28686      }
28687      if (element.hasAddressElement()) {
28688        composeUrl("address", element.getAddressElement());
28689      }
28690  }
28691
28692  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
28693    if (element != null) {
28694      composeElementAttributes(element);
28695      xml.enter(FHIR_NS, name);
28696      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(element);
28697      composeElementClose(element);
28698      xml.exit(FHIR_NS, name);
28699    }
28700  }
28701
28702  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
28703      composeBackboneElementElements(element);
28704      if (element.hasModeElement())
28705        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
28706      if (element.hasDefinitionElement()) {
28707        composeCanonical("definition", element.getDefinitionElement());
28708      }
28709  }
28710
28711  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
28712    if (element != null) {
28713      composeElementAttributes(element);
28714      xml.enter(FHIR_NS, name);
28715      composeCapabilityStatementCapabilityStatementDocumentComponentElements(element);
28716      composeElementClose(element);
28717      xml.exit(FHIR_NS, name);
28718    }
28719  }
28720
28721  protected void composeCapabilityStatementCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
28722      composeBackboneElementElements(element);
28723      if (element.hasModeElement())
28724        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
28725      if (element.hasDocumentationElement()) {
28726        composeMarkdown("documentation", element.getDocumentationElement());
28727      }
28728      if (element.hasProfileElement()) {
28729        composeCanonical("profile", element.getProfileElement());
28730      }
28731  }
28732
28733  protected void composeCarePlan(String name, CarePlan element) throws IOException {
28734    if (element != null) {
28735      composeDomainResourceAttributes(element);
28736      xml.enter(FHIR_NS, name);
28737      composeCarePlanElements(element);
28738      composeElementClose(element);
28739      xml.exit(FHIR_NS, name);
28740    }
28741  }
28742
28743  protected void composeCarePlanElements(CarePlan element) throws IOException {
28744      composeDomainResourceElements(element);
28745      if (element.hasIdentifier()) { 
28746        for (Identifier e : element.getIdentifier()) 
28747          composeIdentifier("identifier", e);
28748      }
28749      if (element.hasInstantiatesCanonical()) { 
28750        for (CanonicalType e : element.getInstantiatesCanonical()) 
28751          composeCanonical("instantiatesCanonical", e);
28752      }
28753      if (element.hasInstantiatesUri()) { 
28754        for (UriType e : element.getInstantiatesUri()) 
28755          composeUri("instantiatesUri", e);
28756      }
28757      if (element.hasBasedOn()) { 
28758        for (Reference e : element.getBasedOn()) 
28759          composeReference("basedOn", e);
28760      }
28761      if (element.hasReplaces()) { 
28762        for (Reference e : element.getReplaces()) 
28763          composeReference("replaces", e);
28764      }
28765      if (element.hasPartOf()) { 
28766        for (Reference e : element.getPartOf()) 
28767          composeReference("partOf", e);
28768      }
28769      if (element.hasStatusElement())
28770        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
28771      if (element.hasIntentElement())
28772        composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
28773      if (element.hasCategory()) { 
28774        for (CodeableConcept e : element.getCategory()) 
28775          composeCodeableConcept("category", e);
28776      }
28777      if (element.hasTitleElement()) {
28778        composeString("title", element.getTitleElement());
28779      }
28780      if (element.hasDescriptionElement()) {
28781        composeString("description", element.getDescriptionElement());
28782      }
28783      if (element.hasSubject()) {
28784        composeReference("subject", element.getSubject());
28785      }
28786      if (element.hasEncounter()) {
28787        composeReference("encounter", element.getEncounter());
28788      }
28789      if (element.hasPeriod()) {
28790        composePeriod("period", element.getPeriod());
28791      }
28792      if (element.hasCreatedElement()) {
28793        composeDateTime("created", element.getCreatedElement());
28794      }
28795      if (element.hasAuthor()) {
28796        composeReference("author", element.getAuthor());
28797      }
28798      if (element.hasContributor()) { 
28799        for (Reference e : element.getContributor()) 
28800          composeReference("contributor", e);
28801      }
28802      if (element.hasCareTeam()) { 
28803        for (Reference e : element.getCareTeam()) 
28804          composeReference("careTeam", e);
28805      }
28806      if (element.hasAddresses()) { 
28807        for (Reference e : element.getAddresses()) 
28808          composeReference("addresses", e);
28809      }
28810      if (element.hasSupportingInfo()) { 
28811        for (Reference e : element.getSupportingInfo()) 
28812          composeReference("supportingInfo", e);
28813      }
28814      if (element.hasGoal()) { 
28815        for (Reference e : element.getGoal()) 
28816          composeReference("goal", e);
28817      }
28818      if (element.hasActivity()) { 
28819        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
28820          composeCarePlanCarePlanActivityComponent("activity", e);
28821      }
28822      if (element.hasNote()) { 
28823        for (Annotation e : element.getNote()) 
28824          composeAnnotation("note", e);
28825      }
28826  }
28827
28828  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
28829    if (element != null) {
28830      composeElementAttributes(element);
28831      xml.enter(FHIR_NS, name);
28832      composeCarePlanCarePlanActivityComponentElements(element);
28833      composeElementClose(element);
28834      xml.exit(FHIR_NS, name);
28835    }
28836  }
28837
28838  protected void composeCarePlanCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
28839      composeBackboneElementElements(element);
28840      if (element.hasOutcomeCodeableConcept()) { 
28841        for (CodeableConcept e : element.getOutcomeCodeableConcept()) 
28842          composeCodeableConcept("outcomeCodeableConcept", e);
28843      }
28844      if (element.hasOutcomeReference()) { 
28845        for (Reference e : element.getOutcomeReference()) 
28846          composeReference("outcomeReference", e);
28847      }
28848      if (element.hasProgress()) { 
28849        for (Annotation e : element.getProgress()) 
28850          composeAnnotation("progress", e);
28851      }
28852      if (element.hasReference()) {
28853        composeReference("reference", element.getReference());
28854      }
28855      if (element.hasDetail()) {
28856        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
28857      }
28858  }
28859
28860  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
28861    if (element != null) {
28862      composeElementAttributes(element);
28863      xml.enter(FHIR_NS, name);
28864      composeCarePlanCarePlanActivityDetailComponentElements(element);
28865      composeElementClose(element);
28866      xml.exit(FHIR_NS, name);
28867    }
28868  }
28869
28870  protected void composeCarePlanCarePlanActivityDetailComponentElements(CarePlan.CarePlanActivityDetailComponent element) throws IOException {
28871      composeBackboneElementElements(element);
28872      if (element.hasKindElement())
28873        composeEnumeration("kind", element.getKindElement(), new CarePlan.CarePlanActivityKindEnumFactory());
28874      if (element.hasInstantiatesCanonical()) { 
28875        for (CanonicalType e : element.getInstantiatesCanonical()) 
28876          composeCanonical("instantiatesCanonical", e);
28877      }
28878      if (element.hasInstantiatesUri()) { 
28879        for (UriType e : element.getInstantiatesUri()) 
28880          composeUri("instantiatesUri", e);
28881      }
28882      if (element.hasCode()) {
28883        composeCodeableConcept("code", element.getCode());
28884      }
28885      if (element.hasReasonCode()) { 
28886        for (CodeableConcept e : element.getReasonCode()) 
28887          composeCodeableConcept("reasonCode", e);
28888      }
28889      if (element.hasReasonReference()) { 
28890        for (Reference e : element.getReasonReference()) 
28891          composeReference("reasonReference", e);
28892      }
28893      if (element.hasGoal()) { 
28894        for (Reference e : element.getGoal()) 
28895          composeReference("goal", e);
28896      }
28897      if (element.hasStatusElement())
28898        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
28899      if (element.hasStatusReason()) {
28900        composeCodeableConcept("statusReason", element.getStatusReason());
28901      }
28902      if (element.hasDoNotPerformElement()) {
28903        composeBoolean("doNotPerform", element.getDoNotPerformElement());
28904      }
28905      if (element.hasScheduled()) {
28906        composeType("scheduled", element.getScheduled());
28907      }      if (element.hasLocation()) {
28908        composeReference("location", element.getLocation());
28909      }
28910      if (element.hasPerformer()) { 
28911        for (Reference e : element.getPerformer()) 
28912          composeReference("performer", e);
28913      }
28914      if (element.hasProduct()) {
28915        composeType("product", element.getProduct());
28916      }      if (element.hasDailyAmount()) {
28917        composeQuantity("dailyAmount", element.getDailyAmount());
28918      }
28919      if (element.hasQuantity()) {
28920        composeQuantity("quantity", element.getQuantity());
28921      }
28922      if (element.hasDescriptionElement()) {
28923        composeString("description", element.getDescriptionElement());
28924      }
28925  }
28926
28927  protected void composeCareTeam(String name, CareTeam element) throws IOException {
28928    if (element != null) {
28929      composeDomainResourceAttributes(element);
28930      xml.enter(FHIR_NS, name);
28931      composeCareTeamElements(element);
28932      composeElementClose(element);
28933      xml.exit(FHIR_NS, name);
28934    }
28935  }
28936
28937  protected void composeCareTeamElements(CareTeam element) throws IOException {
28938      composeDomainResourceElements(element);
28939      if (element.hasIdentifier()) { 
28940        for (Identifier e : element.getIdentifier()) 
28941          composeIdentifier("identifier", e);
28942      }
28943      if (element.hasStatusElement())
28944        composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
28945      if (element.hasCategory()) { 
28946        for (CodeableConcept e : element.getCategory()) 
28947          composeCodeableConcept("category", e);
28948      }
28949      if (element.hasNameElement()) {
28950        composeString("name", element.getNameElement());
28951      }
28952      if (element.hasSubject()) {
28953        composeReference("subject", element.getSubject());
28954      }
28955      if (element.hasEncounter()) {
28956        composeReference("encounter", element.getEncounter());
28957      }
28958      if (element.hasPeriod()) {
28959        composePeriod("period", element.getPeriod());
28960      }
28961      if (element.hasParticipant()) { 
28962        for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
28963          composeCareTeamCareTeamParticipantComponent("participant", e);
28964      }
28965      if (element.hasReasonCode()) { 
28966        for (CodeableConcept e : element.getReasonCode()) 
28967          composeCodeableConcept("reasonCode", e);
28968      }
28969      if (element.hasReasonReference()) { 
28970        for (Reference e : element.getReasonReference()) 
28971          composeReference("reasonReference", e);
28972      }
28973      if (element.hasManagingOrganization()) { 
28974        for (Reference e : element.getManagingOrganization()) 
28975          composeReference("managingOrganization", e);
28976      }
28977      if (element.hasTelecom()) { 
28978        for (ContactPoint e : element.getTelecom()) 
28979          composeContactPoint("telecom", e);
28980      }
28981      if (element.hasNote()) { 
28982        for (Annotation e : element.getNote()) 
28983          composeAnnotation("note", e);
28984      }
28985  }
28986
28987  protected void composeCareTeamCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
28988    if (element != null) {
28989      composeElementAttributes(element);
28990      xml.enter(FHIR_NS, name);
28991      composeCareTeamCareTeamParticipantComponentElements(element);
28992      composeElementClose(element);
28993      xml.exit(FHIR_NS, name);
28994    }
28995  }
28996
28997  protected void composeCareTeamCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
28998      composeBackboneElementElements(element);
28999      if (element.hasRole()) { 
29000        for (CodeableConcept e : element.getRole()) 
29001          composeCodeableConcept("role", e);
29002      }
29003      if (element.hasMember()) {
29004        composeReference("member", element.getMember());
29005      }
29006      if (element.hasOnBehalfOf()) {
29007        composeReference("onBehalfOf", element.getOnBehalfOf());
29008      }
29009      if (element.hasPeriod()) {
29010        composePeriod("period", element.getPeriod());
29011      }
29012  }
29013
29014  protected void composeCatalogEntry(String name, CatalogEntry element) throws IOException {
29015    if (element != null) {
29016      composeDomainResourceAttributes(element);
29017      xml.enter(FHIR_NS, name);
29018      composeCatalogEntryElements(element);
29019      composeElementClose(element);
29020      xml.exit(FHIR_NS, name);
29021    }
29022  }
29023
29024  protected void composeCatalogEntryElements(CatalogEntry element) throws IOException {
29025      composeDomainResourceElements(element);
29026      if (element.hasIdentifier()) { 
29027        for (Identifier e : element.getIdentifier()) 
29028          composeIdentifier("identifier", e);
29029      }
29030      if (element.hasType()) {
29031        composeCodeableConcept("type", element.getType());
29032      }
29033      if (element.hasOrderableElement()) {
29034        composeBoolean("orderable", element.getOrderableElement());
29035      }
29036      if (element.hasReferencedItem()) {
29037        composeReference("referencedItem", element.getReferencedItem());
29038      }
29039      if (element.hasAdditionalIdentifier()) { 
29040        for (Identifier e : element.getAdditionalIdentifier()) 
29041          composeIdentifier("additionalIdentifier", e);
29042      }
29043      if (element.hasClassification()) { 
29044        for (CodeableConcept e : element.getClassification()) 
29045          composeCodeableConcept("classification", e);
29046      }
29047      if (element.hasStatusElement())
29048        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29049      if (element.hasValidityPeriod()) {
29050        composePeriod("validityPeriod", element.getValidityPeriod());
29051      }
29052      if (element.hasValidToElement()) {
29053        composeDateTime("validTo", element.getValidToElement());
29054      }
29055      if (element.hasLastUpdatedElement()) {
29056        composeDateTime("lastUpdated", element.getLastUpdatedElement());
29057      }
29058      if (element.hasAdditionalCharacteristic()) { 
29059        for (CodeableConcept e : element.getAdditionalCharacteristic()) 
29060          composeCodeableConcept("additionalCharacteristic", e);
29061      }
29062      if (element.hasAdditionalClassification()) { 
29063        for (CodeableConcept e : element.getAdditionalClassification()) 
29064          composeCodeableConcept("additionalClassification", e);
29065      }
29066      if (element.hasRelatedEntry()) { 
29067        for (CatalogEntry.CatalogEntryRelatedEntryComponent e : element.getRelatedEntry()) 
29068          composeCatalogEntryCatalogEntryRelatedEntryComponent("relatedEntry", e);
29069      }
29070  }
29071
29072  protected void composeCatalogEntryCatalogEntryRelatedEntryComponent(String name, CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
29073    if (element != null) {
29074      composeElementAttributes(element);
29075      xml.enter(FHIR_NS, name);
29076      composeCatalogEntryCatalogEntryRelatedEntryComponentElements(element);
29077      composeElementClose(element);
29078      xml.exit(FHIR_NS, name);
29079    }
29080  }
29081
29082  protected void composeCatalogEntryCatalogEntryRelatedEntryComponentElements(CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
29083      composeBackboneElementElements(element);
29084      if (element.hasRelationtypeElement())
29085        composeEnumeration("relationtype", element.getRelationtypeElement(), new CatalogEntry.CatalogEntryRelationTypeEnumFactory());
29086      if (element.hasItem()) {
29087        composeReference("item", element.getItem());
29088      }
29089  }
29090
29091  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
29092    if (element != null) {
29093      composeDomainResourceAttributes(element);
29094      xml.enter(FHIR_NS, name);
29095      composeChargeItemElements(element);
29096      composeElementClose(element);
29097      xml.exit(FHIR_NS, name);
29098    }
29099  }
29100
29101  protected void composeChargeItemElements(ChargeItem element) throws IOException {
29102      composeDomainResourceElements(element);
29103      if (element.hasIdentifier()) { 
29104        for (Identifier e : element.getIdentifier()) 
29105          composeIdentifier("identifier", e);
29106      }
29107      if (element.hasDefinitionUri()) { 
29108        for (UriType e : element.getDefinitionUri()) 
29109          composeUri("definitionUri", e);
29110      }
29111      if (element.hasDefinitionCanonical()) { 
29112        for (CanonicalType e : element.getDefinitionCanonical()) 
29113          composeCanonical("definitionCanonical", e);
29114      }
29115      if (element.hasStatusElement())
29116        composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
29117      if (element.hasPartOf()) { 
29118        for (Reference e : element.getPartOf()) 
29119          composeReference("partOf", e);
29120      }
29121      if (element.hasCode()) {
29122        composeCodeableConcept("code", element.getCode());
29123      }
29124      if (element.hasSubject()) {
29125        composeReference("subject", element.getSubject());
29126      }
29127      if (element.hasContext()) {
29128        composeReference("context", element.getContext());
29129      }
29130      if (element.hasOccurrence()) {
29131        composeType("occurrence", element.getOccurrence());
29132      }      if (element.hasPerformer()) { 
29133        for (ChargeItem.ChargeItemPerformerComponent e : element.getPerformer()) 
29134          composeChargeItemChargeItemPerformerComponent("performer", e);
29135      }
29136      if (element.hasPerformingOrganization()) {
29137        composeReference("performingOrganization", element.getPerformingOrganization());
29138      }
29139      if (element.hasRequestingOrganization()) {
29140        composeReference("requestingOrganization", element.getRequestingOrganization());
29141      }
29142      if (element.hasCostCenter()) {
29143        composeReference("costCenter", element.getCostCenter());
29144      }
29145      if (element.hasQuantity()) {
29146        composeQuantity("quantity", element.getQuantity());
29147      }
29148      if (element.hasBodysite()) { 
29149        for (CodeableConcept e : element.getBodysite()) 
29150          composeCodeableConcept("bodysite", e);
29151      }
29152      if (element.hasFactorOverrideElement()) {
29153        composeDecimal("factorOverride", element.getFactorOverrideElement());
29154      }
29155      if (element.hasPriceOverride()) {
29156        composeMoney("priceOverride", element.getPriceOverride());
29157      }
29158      if (element.hasOverrideReasonElement()) {
29159        composeString("overrideReason", element.getOverrideReasonElement());
29160      }
29161      if (element.hasEnterer()) {
29162        composeReference("enterer", element.getEnterer());
29163      }
29164      if (element.hasEnteredDateElement()) {
29165        composeDateTime("enteredDate", element.getEnteredDateElement());
29166      }
29167      if (element.hasReason()) { 
29168        for (CodeableConcept e : element.getReason()) 
29169          composeCodeableConcept("reason", e);
29170      }
29171      if (element.hasService()) { 
29172        for (Reference e : element.getService()) 
29173          composeReference("service", e);
29174      }
29175      if (element.hasProduct()) {
29176        composeType("product", element.getProduct());
29177      }      if (element.hasAccount()) { 
29178        for (Reference e : element.getAccount()) 
29179          composeReference("account", e);
29180      }
29181      if (element.hasNote()) { 
29182        for (Annotation e : element.getNote()) 
29183          composeAnnotation("note", e);
29184      }
29185      if (element.hasSupportingInformation()) { 
29186        for (Reference e : element.getSupportingInformation()) 
29187          composeReference("supportingInformation", e);
29188      }
29189  }
29190
29191  protected void composeChargeItemChargeItemPerformerComponent(String name, ChargeItem.ChargeItemPerformerComponent element) throws IOException {
29192    if (element != null) {
29193      composeElementAttributes(element);
29194      xml.enter(FHIR_NS, name);
29195      composeChargeItemChargeItemPerformerComponentElements(element);
29196      composeElementClose(element);
29197      xml.exit(FHIR_NS, name);
29198    }
29199  }
29200
29201  protected void composeChargeItemChargeItemPerformerComponentElements(ChargeItem.ChargeItemPerformerComponent element) throws IOException {
29202      composeBackboneElementElements(element);
29203      if (element.hasFunction()) {
29204        composeCodeableConcept("function", element.getFunction());
29205      }
29206      if (element.hasActor()) {
29207        composeReference("actor", element.getActor());
29208      }
29209  }
29210
29211  protected void composeChargeItemDefinition(String name, ChargeItemDefinition element) throws IOException {
29212    if (element != null) {
29213      composeDomainResourceAttributes(element);
29214      xml.enter(FHIR_NS, name);
29215      composeChargeItemDefinitionElements(element);
29216      composeElementClose(element);
29217      xml.exit(FHIR_NS, name);
29218    }
29219  }
29220
29221  protected void composeChargeItemDefinitionElements(ChargeItemDefinition element) throws IOException {
29222      composeDomainResourceElements(element);
29223      if (element.hasUrlElement()) {
29224        composeUri("url", element.getUrlElement());
29225      }
29226      if (element.hasIdentifier()) { 
29227        for (Identifier e : element.getIdentifier()) 
29228          composeIdentifier("identifier", e);
29229      }
29230      if (element.hasVersionElement()) {
29231        composeString("version", element.getVersionElement());
29232      }
29233      if (element.hasTitleElement()) {
29234        composeString("title", element.getTitleElement());
29235      }
29236      if (element.hasDerivedFromUri()) { 
29237        for (UriType e : element.getDerivedFromUri()) 
29238          composeUri("derivedFromUri", e);
29239      }
29240      if (element.hasPartOf()) { 
29241        for (CanonicalType e : element.getPartOf()) 
29242          composeCanonical("partOf", e);
29243      }
29244      if (element.hasReplaces()) { 
29245        for (CanonicalType e : element.getReplaces()) 
29246          composeCanonical("replaces", e);
29247      }
29248      if (element.hasStatusElement())
29249        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29250      if (element.hasExperimentalElement()) {
29251        composeBoolean("experimental", element.getExperimentalElement());
29252      }
29253      if (element.hasDateElement()) {
29254        composeDateTime("date", element.getDateElement());
29255      }
29256      if (element.hasPublisherElement()) {
29257        composeString("publisher", element.getPublisherElement());
29258      }
29259      if (element.hasContact()) { 
29260        for (ContactDetail e : element.getContact()) 
29261          composeContactDetail("contact", e);
29262      }
29263      if (element.hasDescriptionElement()) {
29264        composeMarkdown("description", element.getDescriptionElement());
29265      }
29266      if (element.hasUseContext()) { 
29267        for (UsageContext e : element.getUseContext()) 
29268          composeUsageContext("useContext", e);
29269      }
29270      if (element.hasJurisdiction()) { 
29271        for (CodeableConcept e : element.getJurisdiction()) 
29272          composeCodeableConcept("jurisdiction", e);
29273      }
29274      if (element.hasCopyrightElement()) {
29275        composeMarkdown("copyright", element.getCopyrightElement());
29276      }
29277      if (element.hasApprovalDateElement()) {
29278        composeDate("approvalDate", element.getApprovalDateElement());
29279      }
29280      if (element.hasLastReviewDateElement()) {
29281        composeDate("lastReviewDate", element.getLastReviewDateElement());
29282      }
29283      if (element.hasEffectivePeriod()) {
29284        composePeriod("effectivePeriod", element.getEffectivePeriod());
29285      }
29286      if (element.hasCode()) {
29287        composeCodeableConcept("code", element.getCode());
29288      }
29289      if (element.hasInstance()) { 
29290        for (Reference e : element.getInstance()) 
29291          composeReference("instance", e);
29292      }
29293      if (element.hasApplicability()) { 
29294        for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
29295          composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent("applicability", e);
29296      }
29297      if (element.hasPropertyGroup()) { 
29298        for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent e : element.getPropertyGroup()) 
29299          composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent("propertyGroup", e);
29300      }
29301  }
29302
29303  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(String name, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
29304    if (element != null) {
29305      composeElementAttributes(element);
29306      xml.enter(FHIR_NS, name);
29307      composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponentElements(element);
29308      composeElementClose(element);
29309      xml.exit(FHIR_NS, name);
29310    }
29311  }
29312
29313  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponentElements(ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
29314      composeBackboneElementElements(element);
29315      if (element.hasDescriptionElement()) {
29316        composeString("description", element.getDescriptionElement());
29317      }
29318      if (element.hasLanguageElement()) {
29319        composeString("language", element.getLanguageElement());
29320      }
29321      if (element.hasExpressionElement()) {
29322        composeString("expression", element.getExpressionElement());
29323      }
29324  }
29325
29326  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
29327    if (element != null) {
29328      composeElementAttributes(element);
29329      xml.enter(FHIR_NS, name);
29330      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentElements(element);
29331      composeElementClose(element);
29332      xml.exit(FHIR_NS, name);
29333    }
29334  }
29335
29336  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
29337      composeBackboneElementElements(element);
29338      if (element.hasApplicability()) { 
29339        for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
29340          composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent("applicability", e);
29341      }
29342      if (element.hasPriceComponent()) { 
29343        for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent e : element.getPriceComponent()) 
29344          composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent("priceComponent", e);
29345      }
29346  }
29347
29348  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
29349    if (element != null) {
29350      composeElementAttributes(element);
29351      xml.enter(FHIR_NS, name);
29352      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentElements(element);
29353      composeElementClose(element);
29354      xml.exit(FHIR_NS, name);
29355    }
29356  }
29357
29358  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
29359      composeBackboneElementElements(element);
29360      if (element.hasTypeElement())
29361        composeEnumeration("type", element.getTypeElement(), new ChargeItemDefinition.ChargeItemDefinitionPriceComponentTypeEnumFactory());
29362      if (element.hasCode()) {
29363        composeCodeableConcept("code", element.getCode());
29364      }
29365      if (element.hasFactorElement()) {
29366        composeDecimal("factor", element.getFactorElement());
29367      }
29368      if (element.hasAmount()) {
29369        composeMoney("amount", element.getAmount());
29370      }
29371  }
29372
29373  protected void composeClaim(String name, Claim element) throws IOException {
29374    if (element != null) {
29375      composeDomainResourceAttributes(element);
29376      xml.enter(FHIR_NS, name);
29377      composeClaimElements(element);
29378      composeElementClose(element);
29379      xml.exit(FHIR_NS, name);
29380    }
29381  }
29382
29383  protected void composeClaimElements(Claim element) throws IOException {
29384      composeDomainResourceElements(element);
29385      if (element.hasIdentifier()) { 
29386        for (Identifier e : element.getIdentifier()) 
29387          composeIdentifier("identifier", e);
29388      }
29389      if (element.hasStatusElement())
29390        composeEnumeration("status", element.getStatusElement(), new Claim.ClaimStatusEnumFactory());
29391      if (element.hasType()) {
29392        composeCodeableConcept("type", element.getType());
29393      }
29394      if (element.hasSubType()) {
29395        composeCodeableConcept("subType", element.getSubType());
29396      }
29397      if (element.hasUseElement())
29398        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
29399      if (element.hasPatient()) {
29400        composeReference("patient", element.getPatient());
29401      }
29402      if (element.hasBillablePeriod()) {
29403        composePeriod("billablePeriod", element.getBillablePeriod());
29404      }
29405      if (element.hasCreatedElement()) {
29406        composeDateTime("created", element.getCreatedElement());
29407      }
29408      if (element.hasEnterer()) {
29409        composeReference("enterer", element.getEnterer());
29410      }
29411      if (element.hasInsurer()) {
29412        composeReference("insurer", element.getInsurer());
29413      }
29414      if (element.hasProvider()) {
29415        composeReference("provider", element.getProvider());
29416      }
29417      if (element.hasPriority()) {
29418        composeCodeableConcept("priority", element.getPriority());
29419      }
29420      if (element.hasFundsReserve()) {
29421        composeCodeableConcept("fundsReserve", element.getFundsReserve());
29422      }
29423      if (element.hasRelated()) { 
29424        for (Claim.RelatedClaimComponent e : element.getRelated()) 
29425          composeClaimRelatedClaimComponent("related", e);
29426      }
29427      if (element.hasPrescription()) {
29428        composeReference("prescription", element.getPrescription());
29429      }
29430      if (element.hasOriginalPrescription()) {
29431        composeReference("originalPrescription", element.getOriginalPrescription());
29432      }
29433      if (element.hasPayee()) {
29434        composeClaimPayeeComponent("payee", element.getPayee());
29435      }
29436      if (element.hasReferral()) {
29437        composeReference("referral", element.getReferral());
29438      }
29439      if (element.hasFacility()) {
29440        composeReference("facility", element.getFacility());
29441      }
29442      if (element.hasCareTeam()) { 
29443        for (Claim.CareTeamComponent e : element.getCareTeam()) 
29444          composeClaimCareTeamComponent("careTeam", e);
29445      }
29446      if (element.hasSupportingInfo()) { 
29447        for (Claim.SupportingInformationComponent e : element.getSupportingInfo()) 
29448          composeClaimSupportingInformationComponent("supportingInfo", e);
29449      }
29450      if (element.hasDiagnosis()) { 
29451        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
29452          composeClaimDiagnosisComponent("diagnosis", e);
29453      }
29454      if (element.hasProcedure()) { 
29455        for (Claim.ProcedureComponent e : element.getProcedure()) 
29456          composeClaimProcedureComponent("procedure", e);
29457      }
29458      if (element.hasInsurance()) { 
29459        for (Claim.InsuranceComponent e : element.getInsurance()) 
29460          composeClaimInsuranceComponent("insurance", e);
29461      }
29462      if (element.hasAccident()) {
29463        composeClaimAccidentComponent("accident", element.getAccident());
29464      }
29465      if (element.hasItem()) { 
29466        for (Claim.ItemComponent e : element.getItem()) 
29467          composeClaimItemComponent("item", e);
29468      }
29469      if (element.hasTotal()) {
29470        composeMoney("total", element.getTotal());
29471      }
29472  }
29473
29474  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
29475    if (element != null) {
29476      composeElementAttributes(element);
29477      xml.enter(FHIR_NS, name);
29478      composeClaimRelatedClaimComponentElements(element);
29479      composeElementClose(element);
29480      xml.exit(FHIR_NS, name);
29481    }
29482  }
29483
29484  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
29485      composeBackboneElementElements(element);
29486      if (element.hasClaim()) {
29487        composeReference("claim", element.getClaim());
29488      }
29489      if (element.hasRelationship()) {
29490        composeCodeableConcept("relationship", element.getRelationship());
29491      }
29492      if (element.hasReference()) {
29493        composeIdentifier("reference", element.getReference());
29494      }
29495  }
29496
29497  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
29498    if (element != null) {
29499      composeElementAttributes(element);
29500      xml.enter(FHIR_NS, name);
29501      composeClaimPayeeComponentElements(element);
29502      composeElementClose(element);
29503      xml.exit(FHIR_NS, name);
29504    }
29505  }
29506
29507  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
29508      composeBackboneElementElements(element);
29509      if (element.hasType()) {
29510        composeCodeableConcept("type", element.getType());
29511      }
29512      if (element.hasParty()) {
29513        composeReference("party", element.getParty());
29514      }
29515  }
29516
29517  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
29518    if (element != null) {
29519      composeElementAttributes(element);
29520      xml.enter(FHIR_NS, name);
29521      composeClaimCareTeamComponentElements(element);
29522      composeElementClose(element);
29523      xml.exit(FHIR_NS, name);
29524    }
29525  }
29526
29527  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
29528      composeBackboneElementElements(element);
29529      if (element.hasSequenceElement()) {
29530        composePositiveInt("sequence", element.getSequenceElement());
29531      }
29532      if (element.hasProvider()) {
29533        composeReference("provider", element.getProvider());
29534      }
29535      if (element.hasResponsibleElement()) {
29536        composeBoolean("responsible", element.getResponsibleElement());
29537      }
29538      if (element.hasRole()) {
29539        composeCodeableConcept("role", element.getRole());
29540      }
29541      if (element.hasQualification()) {
29542        composeCodeableConcept("qualification", element.getQualification());
29543      }
29544  }
29545
29546  protected void composeClaimSupportingInformationComponent(String name, Claim.SupportingInformationComponent element) throws IOException {
29547    if (element != null) {
29548      composeElementAttributes(element);
29549      xml.enter(FHIR_NS, name);
29550      composeClaimSupportingInformationComponentElements(element);
29551      composeElementClose(element);
29552      xml.exit(FHIR_NS, name);
29553    }
29554  }
29555
29556  protected void composeClaimSupportingInformationComponentElements(Claim.SupportingInformationComponent element) throws IOException {
29557      composeBackboneElementElements(element);
29558      if (element.hasSequenceElement()) {
29559        composePositiveInt("sequence", element.getSequenceElement());
29560      }
29561      if (element.hasCategory()) {
29562        composeCodeableConcept("category", element.getCategory());
29563      }
29564      if (element.hasCode()) {
29565        composeCodeableConcept("code", element.getCode());
29566      }
29567      if (element.hasTiming()) {
29568        composeType("timing", element.getTiming());
29569      }      if (element.hasValue()) {
29570        composeType("value", element.getValue());
29571      }      if (element.hasReason()) {
29572        composeCodeableConcept("reason", element.getReason());
29573      }
29574  }
29575
29576  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
29577    if (element != null) {
29578      composeElementAttributes(element);
29579      xml.enter(FHIR_NS, name);
29580      composeClaimDiagnosisComponentElements(element);
29581      composeElementClose(element);
29582      xml.exit(FHIR_NS, name);
29583    }
29584  }
29585
29586  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
29587      composeBackboneElementElements(element);
29588      if (element.hasSequenceElement()) {
29589        composePositiveInt("sequence", element.getSequenceElement());
29590      }
29591      if (element.hasDiagnosis()) {
29592        composeType("diagnosis", element.getDiagnosis());
29593      }      if (element.hasType()) { 
29594        for (CodeableConcept e : element.getType()) 
29595          composeCodeableConcept("type", e);
29596      }
29597      if (element.hasOnAdmission()) {
29598        composeCodeableConcept("onAdmission", element.getOnAdmission());
29599      }
29600      if (element.hasPackageCode()) {
29601        composeCodeableConcept("packageCode", element.getPackageCode());
29602      }
29603  }
29604
29605  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
29606    if (element != null) {
29607      composeElementAttributes(element);
29608      xml.enter(FHIR_NS, name);
29609      composeClaimProcedureComponentElements(element);
29610      composeElementClose(element);
29611      xml.exit(FHIR_NS, name);
29612    }
29613  }
29614
29615  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
29616      composeBackboneElementElements(element);
29617      if (element.hasSequenceElement()) {
29618        composePositiveInt("sequence", element.getSequenceElement());
29619      }
29620      if (element.hasType()) { 
29621        for (CodeableConcept e : element.getType()) 
29622          composeCodeableConcept("type", e);
29623      }
29624      if (element.hasDateElement()) {
29625        composeDateTime("date", element.getDateElement());
29626      }
29627      if (element.hasProcedure()) {
29628        composeType("procedure", element.getProcedure());
29629      }      if (element.hasUdi()) { 
29630        for (Reference e : element.getUdi()) 
29631          composeReference("udi", e);
29632      }
29633  }
29634
29635  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
29636    if (element != null) {
29637      composeElementAttributes(element);
29638      xml.enter(FHIR_NS, name);
29639      composeClaimInsuranceComponentElements(element);
29640      composeElementClose(element);
29641      xml.exit(FHIR_NS, name);
29642    }
29643  }
29644
29645  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
29646      composeBackboneElementElements(element);
29647      if (element.hasSequenceElement()) {
29648        composePositiveInt("sequence", element.getSequenceElement());
29649      }
29650      if (element.hasFocalElement()) {
29651        composeBoolean("focal", element.getFocalElement());
29652      }
29653      if (element.hasIdentifier()) {
29654        composeIdentifier("identifier", element.getIdentifier());
29655      }
29656      if (element.hasCoverage()) {
29657        composeReference("coverage", element.getCoverage());
29658      }
29659      if (element.hasBusinessArrangementElement()) {
29660        composeString("businessArrangement", element.getBusinessArrangementElement());
29661      }
29662      if (element.hasPreAuthRef()) { 
29663        for (StringType e : element.getPreAuthRef()) 
29664          composeString("preAuthRef", e);
29665      }
29666      if (element.hasClaimResponse()) {
29667        composeReference("claimResponse", element.getClaimResponse());
29668      }
29669  }
29670
29671  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
29672    if (element != null) {
29673      composeElementAttributes(element);
29674      xml.enter(FHIR_NS, name);
29675      composeClaimAccidentComponentElements(element);
29676      composeElementClose(element);
29677      xml.exit(FHIR_NS, name);
29678    }
29679  }
29680
29681  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
29682      composeBackboneElementElements(element);
29683      if (element.hasDateElement()) {
29684        composeDate("date", element.getDateElement());
29685      }
29686      if (element.hasType()) {
29687        composeCodeableConcept("type", element.getType());
29688      }
29689      if (element.hasLocation()) {
29690        composeType("location", element.getLocation());
29691      }  }
29692
29693  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
29694    if (element != null) {
29695      composeElementAttributes(element);
29696      xml.enter(FHIR_NS, name);
29697      composeClaimItemComponentElements(element);
29698      composeElementClose(element);
29699      xml.exit(FHIR_NS, name);
29700    }
29701  }
29702
29703  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
29704      composeBackboneElementElements(element);
29705      if (element.hasSequenceElement()) {
29706        composePositiveInt("sequence", element.getSequenceElement());
29707      }
29708      if (element.hasCareTeamSequence()) { 
29709        for (PositiveIntType e : element.getCareTeamSequence()) 
29710          composePositiveInt("careTeamSequence", e);
29711      }
29712      if (element.hasDiagnosisSequence()) { 
29713        for (PositiveIntType e : element.getDiagnosisSequence()) 
29714          composePositiveInt("diagnosisSequence", e);
29715      }
29716      if (element.hasProcedureSequence()) { 
29717        for (PositiveIntType e : element.getProcedureSequence()) 
29718          composePositiveInt("procedureSequence", e);
29719      }
29720      if (element.hasInformationSequence()) { 
29721        for (PositiveIntType e : element.getInformationSequence()) 
29722          composePositiveInt("informationSequence", e);
29723      }
29724      if (element.hasRevenue()) {
29725        composeCodeableConcept("revenue", element.getRevenue());
29726      }
29727      if (element.hasCategory()) {
29728        composeCodeableConcept("category", element.getCategory());
29729      }
29730      if (element.hasProductOrService()) {
29731        composeCodeableConcept("productOrService", element.getProductOrService());
29732      }
29733      if (element.hasModifier()) { 
29734        for (CodeableConcept e : element.getModifier()) 
29735          composeCodeableConcept("modifier", e);
29736      }
29737      if (element.hasProgramCode()) { 
29738        for (CodeableConcept e : element.getProgramCode()) 
29739          composeCodeableConcept("programCode", e);
29740      }
29741      if (element.hasServiced()) {
29742        composeType("serviced", element.getServiced());
29743      }      if (element.hasLocation()) {
29744        composeType("location", element.getLocation());
29745      }      if (element.hasQuantity()) {
29746        composeQuantity("quantity", element.getQuantity());
29747      }
29748      if (element.hasUnitPrice()) {
29749        composeMoney("unitPrice", element.getUnitPrice());
29750      }
29751      if (element.hasFactorElement()) {
29752        composeDecimal("factor", element.getFactorElement());
29753      }
29754      if (element.hasNet()) {
29755        composeMoney("net", element.getNet());
29756      }
29757      if (element.hasUdi()) { 
29758        for (Reference e : element.getUdi()) 
29759          composeReference("udi", e);
29760      }
29761      if (element.hasBodySite()) {
29762        composeCodeableConcept("bodySite", element.getBodySite());
29763      }
29764      if (element.hasSubSite()) { 
29765        for (CodeableConcept e : element.getSubSite()) 
29766          composeCodeableConcept("subSite", e);
29767      }
29768      if (element.hasEncounter()) { 
29769        for (Reference e : element.getEncounter()) 
29770          composeReference("encounter", e);
29771      }
29772      if (element.hasDetail()) { 
29773        for (Claim.DetailComponent e : element.getDetail()) 
29774          composeClaimDetailComponent("detail", e);
29775      }
29776  }
29777
29778  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
29779    if (element != null) {
29780      composeElementAttributes(element);
29781      xml.enter(FHIR_NS, name);
29782      composeClaimDetailComponentElements(element);
29783      composeElementClose(element);
29784      xml.exit(FHIR_NS, name);
29785    }
29786  }
29787
29788  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
29789      composeBackboneElementElements(element);
29790      if (element.hasSequenceElement()) {
29791        composePositiveInt("sequence", element.getSequenceElement());
29792      }
29793      if (element.hasRevenue()) {
29794        composeCodeableConcept("revenue", element.getRevenue());
29795      }
29796      if (element.hasCategory()) {
29797        composeCodeableConcept("category", element.getCategory());
29798      }
29799      if (element.hasProductOrService()) {
29800        composeCodeableConcept("productOrService", element.getProductOrService());
29801      }
29802      if (element.hasModifier()) { 
29803        for (CodeableConcept e : element.getModifier()) 
29804          composeCodeableConcept("modifier", e);
29805      }
29806      if (element.hasProgramCode()) { 
29807        for (CodeableConcept e : element.getProgramCode()) 
29808          composeCodeableConcept("programCode", e);
29809      }
29810      if (element.hasQuantity()) {
29811        composeQuantity("quantity", element.getQuantity());
29812      }
29813      if (element.hasUnitPrice()) {
29814        composeMoney("unitPrice", element.getUnitPrice());
29815      }
29816      if (element.hasFactorElement()) {
29817        composeDecimal("factor", element.getFactorElement());
29818      }
29819      if (element.hasNet()) {
29820        composeMoney("net", element.getNet());
29821      }
29822      if (element.hasUdi()) { 
29823        for (Reference e : element.getUdi()) 
29824          composeReference("udi", e);
29825      }
29826      if (element.hasSubDetail()) { 
29827        for (Claim.SubDetailComponent e : element.getSubDetail()) 
29828          composeClaimSubDetailComponent("subDetail", e);
29829      }
29830  }
29831
29832  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
29833    if (element != null) {
29834      composeElementAttributes(element);
29835      xml.enter(FHIR_NS, name);
29836      composeClaimSubDetailComponentElements(element);
29837      composeElementClose(element);
29838      xml.exit(FHIR_NS, name);
29839    }
29840  }
29841
29842  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
29843      composeBackboneElementElements(element);
29844      if (element.hasSequenceElement()) {
29845        composePositiveInt("sequence", element.getSequenceElement());
29846      }
29847      if (element.hasRevenue()) {
29848        composeCodeableConcept("revenue", element.getRevenue());
29849      }
29850      if (element.hasCategory()) {
29851        composeCodeableConcept("category", element.getCategory());
29852      }
29853      if (element.hasProductOrService()) {
29854        composeCodeableConcept("productOrService", element.getProductOrService());
29855      }
29856      if (element.hasModifier()) { 
29857        for (CodeableConcept e : element.getModifier()) 
29858          composeCodeableConcept("modifier", e);
29859      }
29860      if (element.hasProgramCode()) { 
29861        for (CodeableConcept e : element.getProgramCode()) 
29862          composeCodeableConcept("programCode", e);
29863      }
29864      if (element.hasQuantity()) {
29865        composeQuantity("quantity", element.getQuantity());
29866      }
29867      if (element.hasUnitPrice()) {
29868        composeMoney("unitPrice", element.getUnitPrice());
29869      }
29870      if (element.hasFactorElement()) {
29871        composeDecimal("factor", element.getFactorElement());
29872      }
29873      if (element.hasNet()) {
29874        composeMoney("net", element.getNet());
29875      }
29876      if (element.hasUdi()) { 
29877        for (Reference e : element.getUdi()) 
29878          composeReference("udi", e);
29879      }
29880  }
29881
29882  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
29883    if (element != null) {
29884      composeDomainResourceAttributes(element);
29885      xml.enter(FHIR_NS, name);
29886      composeClaimResponseElements(element);
29887      composeElementClose(element);
29888      xml.exit(FHIR_NS, name);
29889    }
29890  }
29891
29892  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
29893      composeDomainResourceElements(element);
29894      if (element.hasIdentifier()) { 
29895        for (Identifier e : element.getIdentifier()) 
29896          composeIdentifier("identifier", e);
29897      }
29898      if (element.hasStatusElement())
29899        composeEnumeration("status", element.getStatusElement(), new ClaimResponse.ClaimResponseStatusEnumFactory());
29900      if (element.hasType()) {
29901        composeCodeableConcept("type", element.getType());
29902      }
29903      if (element.hasSubType()) {
29904        composeCodeableConcept("subType", element.getSubType());
29905      }
29906      if (element.hasUseElement())
29907        composeEnumeration("use", element.getUseElement(), new ClaimResponse.UseEnumFactory());
29908      if (element.hasPatient()) {
29909        composeReference("patient", element.getPatient());
29910      }
29911      if (element.hasCreatedElement()) {
29912        composeDateTime("created", element.getCreatedElement());
29913      }
29914      if (element.hasInsurer()) {
29915        composeReference("insurer", element.getInsurer());
29916      }
29917      if (element.hasRequestor()) {
29918        composeReference("requestor", element.getRequestor());
29919      }
29920      if (element.hasRequest()) {
29921        composeReference("request", element.getRequest());
29922      }
29923      if (element.hasOutcomeElement())
29924        composeEnumeration("outcome", element.getOutcomeElement(), new ClaimResponse.RemittanceOutcomeEnumFactory());
29925      if (element.hasDispositionElement()) {
29926        composeString("disposition", element.getDispositionElement());
29927      }
29928      if (element.hasPreAuthRefElement()) {
29929        composeString("preAuthRef", element.getPreAuthRefElement());
29930      }
29931      if (element.hasPreAuthPeriod()) {
29932        composePeriod("preAuthPeriod", element.getPreAuthPeriod());
29933      }
29934      if (element.hasPayeeType()) {
29935        composeCodeableConcept("payeeType", element.getPayeeType());
29936      }
29937      if (element.hasItem()) { 
29938        for (ClaimResponse.ItemComponent e : element.getItem()) 
29939          composeClaimResponseItemComponent("item", e);
29940      }
29941      if (element.hasAddItem()) { 
29942        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
29943          composeClaimResponseAddedItemComponent("addItem", e);
29944      }
29945      if (element.hasAdjudication()) { 
29946        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
29947          composeClaimResponseAdjudicationComponent("adjudication", e);
29948      }
29949      if (element.hasTotal()) { 
29950        for (ClaimResponse.TotalComponent e : element.getTotal()) 
29951          composeClaimResponseTotalComponent("total", e);
29952      }
29953      if (element.hasPayment()) {
29954        composeClaimResponsePaymentComponent("payment", element.getPayment());
29955      }
29956      if (element.hasFundsReserve()) {
29957        composeCodeableConcept("fundsReserve", element.getFundsReserve());
29958      }
29959      if (element.hasFormCode()) {
29960        composeCodeableConcept("formCode", element.getFormCode());
29961      }
29962      if (element.hasForm()) {
29963        composeAttachment("form", element.getForm());
29964      }
29965      if (element.hasProcessNote()) { 
29966        for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
29967          composeClaimResponseNoteComponent("processNote", e);
29968      }
29969      if (element.hasCommunicationRequest()) { 
29970        for (Reference e : element.getCommunicationRequest()) 
29971          composeReference("communicationRequest", e);
29972      }
29973      if (element.hasInsurance()) { 
29974        for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
29975          composeClaimResponseInsuranceComponent("insurance", e);
29976      }
29977      if (element.hasError()) { 
29978        for (ClaimResponse.ErrorComponent e : element.getError()) 
29979          composeClaimResponseErrorComponent("error", e);
29980      }
29981  }
29982
29983  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
29984    if (element != null) {
29985      composeElementAttributes(element);
29986      xml.enter(FHIR_NS, name);
29987      composeClaimResponseItemComponentElements(element);
29988      composeElementClose(element);
29989      xml.exit(FHIR_NS, name);
29990    }
29991  }
29992
29993  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
29994      composeBackboneElementElements(element);
29995      if (element.hasItemSequenceElement()) {
29996        composePositiveInt("itemSequence", element.getItemSequenceElement());
29997      }
29998      if (element.hasNoteNumber()) { 
29999        for (PositiveIntType e : element.getNoteNumber()) 
30000          composePositiveInt("noteNumber", e);
30001      }
30002      if (element.hasAdjudication()) { 
30003        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30004          composeClaimResponseAdjudicationComponent("adjudication", e);
30005      }
30006      if (element.hasDetail()) { 
30007        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
30008          composeClaimResponseItemDetailComponent("detail", e);
30009      }
30010  }
30011
30012  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
30013    if (element != null) {
30014      composeElementAttributes(element);
30015      xml.enter(FHIR_NS, name);
30016      composeClaimResponseAdjudicationComponentElements(element);
30017      composeElementClose(element);
30018      xml.exit(FHIR_NS, name);
30019    }
30020  }
30021
30022  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
30023      composeBackboneElementElements(element);
30024      if (element.hasCategory()) {
30025        composeCodeableConcept("category", element.getCategory());
30026      }
30027      if (element.hasReason()) {
30028        composeCodeableConcept("reason", element.getReason());
30029      }
30030      if (element.hasAmount()) {
30031        composeMoney("amount", element.getAmount());
30032      }
30033      if (element.hasValueElement()) {
30034        composeDecimal("value", element.getValueElement());
30035      }
30036  }
30037
30038  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
30039    if (element != null) {
30040      composeElementAttributes(element);
30041      xml.enter(FHIR_NS, name);
30042      composeClaimResponseItemDetailComponentElements(element);
30043      composeElementClose(element);
30044      xml.exit(FHIR_NS, name);
30045    }
30046  }
30047
30048  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
30049      composeBackboneElementElements(element);
30050      if (element.hasDetailSequenceElement()) {
30051        composePositiveInt("detailSequence", element.getDetailSequenceElement());
30052      }
30053      if (element.hasNoteNumber()) { 
30054        for (PositiveIntType e : element.getNoteNumber()) 
30055          composePositiveInt("noteNumber", e);
30056      }
30057      if (element.hasAdjudication()) { 
30058        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30059          composeClaimResponseAdjudicationComponent("adjudication", e);
30060      }
30061      if (element.hasSubDetail()) { 
30062        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
30063          composeClaimResponseSubDetailComponent("subDetail", e);
30064      }
30065  }
30066
30067  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
30068    if (element != null) {
30069      composeElementAttributes(element);
30070      xml.enter(FHIR_NS, name);
30071      composeClaimResponseSubDetailComponentElements(element);
30072      composeElementClose(element);
30073      xml.exit(FHIR_NS, name);
30074    }
30075  }
30076
30077  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
30078      composeBackboneElementElements(element);
30079      if (element.hasSubDetailSequenceElement()) {
30080        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
30081      }
30082      if (element.hasNoteNumber()) { 
30083        for (PositiveIntType e : element.getNoteNumber()) 
30084          composePositiveInt("noteNumber", e);
30085      }
30086      if (element.hasAdjudication()) { 
30087        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30088          composeClaimResponseAdjudicationComponent("adjudication", e);
30089      }
30090  }
30091
30092  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
30093    if (element != null) {
30094      composeElementAttributes(element);
30095      xml.enter(FHIR_NS, name);
30096      composeClaimResponseAddedItemComponentElements(element);
30097      composeElementClose(element);
30098      xml.exit(FHIR_NS, name);
30099    }
30100  }
30101
30102  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
30103      composeBackboneElementElements(element);
30104      if (element.hasItemSequence()) { 
30105        for (PositiveIntType e : element.getItemSequence()) 
30106          composePositiveInt("itemSequence", e);
30107      }
30108      if (element.hasDetailSequence()) { 
30109        for (PositiveIntType e : element.getDetailSequence()) 
30110          composePositiveInt("detailSequence", e);
30111      }
30112      if (element.hasSubdetailSequence()) { 
30113        for (PositiveIntType e : element.getSubdetailSequence()) 
30114          composePositiveInt("subdetailSequence", e);
30115      }
30116      if (element.hasProvider()) { 
30117        for (Reference e : element.getProvider()) 
30118          composeReference("provider", e);
30119      }
30120      if (element.hasProductOrService()) {
30121        composeCodeableConcept("productOrService", element.getProductOrService());
30122      }
30123      if (element.hasModifier()) { 
30124        for (CodeableConcept e : element.getModifier()) 
30125          composeCodeableConcept("modifier", e);
30126      }
30127      if (element.hasProgramCode()) { 
30128        for (CodeableConcept e : element.getProgramCode()) 
30129          composeCodeableConcept("programCode", e);
30130      }
30131      if (element.hasServiced()) {
30132        composeType("serviced", element.getServiced());
30133      }      if (element.hasLocation()) {
30134        composeType("location", element.getLocation());
30135      }      if (element.hasQuantity()) {
30136        composeQuantity("quantity", element.getQuantity());
30137      }
30138      if (element.hasUnitPrice()) {
30139        composeMoney("unitPrice", element.getUnitPrice());
30140      }
30141      if (element.hasFactorElement()) {
30142        composeDecimal("factor", element.getFactorElement());
30143      }
30144      if (element.hasNet()) {
30145        composeMoney("net", element.getNet());
30146      }
30147      if (element.hasBodySite()) {
30148        composeCodeableConcept("bodySite", element.getBodySite());
30149      }
30150      if (element.hasSubSite()) { 
30151        for (CodeableConcept e : element.getSubSite()) 
30152          composeCodeableConcept("subSite", e);
30153      }
30154      if (element.hasNoteNumber()) { 
30155        for (PositiveIntType e : element.getNoteNumber()) 
30156          composePositiveInt("noteNumber", e);
30157      }
30158      if (element.hasAdjudication()) { 
30159        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30160          composeClaimResponseAdjudicationComponent("adjudication", e);
30161      }
30162      if (element.hasDetail()) { 
30163        for (ClaimResponse.AddedItemDetailComponent e : element.getDetail()) 
30164          composeClaimResponseAddedItemDetailComponent("detail", e);
30165      }
30166  }
30167
30168  protected void composeClaimResponseAddedItemDetailComponent(String name, ClaimResponse.AddedItemDetailComponent element) throws IOException {
30169    if (element != null) {
30170      composeElementAttributes(element);
30171      xml.enter(FHIR_NS, name);
30172      composeClaimResponseAddedItemDetailComponentElements(element);
30173      composeElementClose(element);
30174      xml.exit(FHIR_NS, name);
30175    }
30176  }
30177
30178  protected void composeClaimResponseAddedItemDetailComponentElements(ClaimResponse.AddedItemDetailComponent element) throws IOException {
30179      composeBackboneElementElements(element);
30180      if (element.hasProductOrService()) {
30181        composeCodeableConcept("productOrService", element.getProductOrService());
30182      }
30183      if (element.hasModifier()) { 
30184        for (CodeableConcept e : element.getModifier()) 
30185          composeCodeableConcept("modifier", e);
30186      }
30187      if (element.hasQuantity()) {
30188        composeQuantity("quantity", element.getQuantity());
30189      }
30190      if (element.hasUnitPrice()) {
30191        composeMoney("unitPrice", element.getUnitPrice());
30192      }
30193      if (element.hasFactorElement()) {
30194        composeDecimal("factor", element.getFactorElement());
30195      }
30196      if (element.hasNet()) {
30197        composeMoney("net", element.getNet());
30198      }
30199      if (element.hasNoteNumber()) { 
30200        for (PositiveIntType e : element.getNoteNumber()) 
30201          composePositiveInt("noteNumber", e);
30202      }
30203      if (element.hasAdjudication()) { 
30204        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30205          composeClaimResponseAdjudicationComponent("adjudication", e);
30206      }
30207      if (element.hasSubDetail()) { 
30208        for (ClaimResponse.AddedItemSubDetailComponent e : element.getSubDetail()) 
30209          composeClaimResponseAddedItemSubDetailComponent("subDetail", e);
30210      }
30211  }
30212
30213  protected void composeClaimResponseAddedItemSubDetailComponent(String name, ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
30214    if (element != null) {
30215      composeElementAttributes(element);
30216      xml.enter(FHIR_NS, name);
30217      composeClaimResponseAddedItemSubDetailComponentElements(element);
30218      composeElementClose(element);
30219      xml.exit(FHIR_NS, name);
30220    }
30221  }
30222
30223  protected void composeClaimResponseAddedItemSubDetailComponentElements(ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
30224      composeBackboneElementElements(element);
30225      if (element.hasProductOrService()) {
30226        composeCodeableConcept("productOrService", element.getProductOrService());
30227      }
30228      if (element.hasModifier()) { 
30229        for (CodeableConcept e : element.getModifier()) 
30230          composeCodeableConcept("modifier", e);
30231      }
30232      if (element.hasQuantity()) {
30233        composeQuantity("quantity", element.getQuantity());
30234      }
30235      if (element.hasUnitPrice()) {
30236        composeMoney("unitPrice", element.getUnitPrice());
30237      }
30238      if (element.hasFactorElement()) {
30239        composeDecimal("factor", element.getFactorElement());
30240      }
30241      if (element.hasNet()) {
30242        composeMoney("net", element.getNet());
30243      }
30244      if (element.hasNoteNumber()) { 
30245        for (PositiveIntType e : element.getNoteNumber()) 
30246          composePositiveInt("noteNumber", e);
30247      }
30248      if (element.hasAdjudication()) { 
30249        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30250          composeClaimResponseAdjudicationComponent("adjudication", e);
30251      }
30252  }
30253
30254  protected void composeClaimResponseTotalComponent(String name, ClaimResponse.TotalComponent element) throws IOException {
30255    if (element != null) {
30256      composeElementAttributes(element);
30257      xml.enter(FHIR_NS, name);
30258      composeClaimResponseTotalComponentElements(element);
30259      composeElementClose(element);
30260      xml.exit(FHIR_NS, name);
30261    }
30262  }
30263
30264  protected void composeClaimResponseTotalComponentElements(ClaimResponse.TotalComponent element) throws IOException {
30265      composeBackboneElementElements(element);
30266      if (element.hasCategory()) {
30267        composeCodeableConcept("category", element.getCategory());
30268      }
30269      if (element.hasAmount()) {
30270        composeMoney("amount", element.getAmount());
30271      }
30272  }
30273
30274  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
30275    if (element != null) {
30276      composeElementAttributes(element);
30277      xml.enter(FHIR_NS, name);
30278      composeClaimResponsePaymentComponentElements(element);
30279      composeElementClose(element);
30280      xml.exit(FHIR_NS, name);
30281    }
30282  }
30283
30284  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
30285      composeBackboneElementElements(element);
30286      if (element.hasType()) {
30287        composeCodeableConcept("type", element.getType());
30288      }
30289      if (element.hasAdjustment()) {
30290        composeMoney("adjustment", element.getAdjustment());
30291      }
30292      if (element.hasAdjustmentReason()) {
30293        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
30294      }
30295      if (element.hasDateElement()) {
30296        composeDate("date", element.getDateElement());
30297      }
30298      if (element.hasAmount()) {
30299        composeMoney("amount", element.getAmount());
30300      }
30301      if (element.hasIdentifier()) {
30302        composeIdentifier("identifier", element.getIdentifier());
30303      }
30304  }
30305
30306  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
30307    if (element != null) {
30308      composeElementAttributes(element);
30309      xml.enter(FHIR_NS, name);
30310      composeClaimResponseNoteComponentElements(element);
30311      composeElementClose(element);
30312      xml.exit(FHIR_NS, name);
30313    }
30314  }
30315
30316  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
30317      composeBackboneElementElements(element);
30318      if (element.hasNumberElement()) {
30319        composePositiveInt("number", element.getNumberElement());
30320      }
30321      if (element.hasTypeElement())
30322        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
30323      if (element.hasTextElement()) {
30324        composeString("text", element.getTextElement());
30325      }
30326      if (element.hasLanguage()) {
30327        composeCodeableConcept("language", element.getLanguage());
30328      }
30329  }
30330
30331  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
30332    if (element != null) {
30333      composeElementAttributes(element);
30334      xml.enter(FHIR_NS, name);
30335      composeClaimResponseInsuranceComponentElements(element);
30336      composeElementClose(element);
30337      xml.exit(FHIR_NS, name);
30338    }
30339  }
30340
30341  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
30342      composeBackboneElementElements(element);
30343      if (element.hasSequenceElement()) {
30344        composePositiveInt("sequence", element.getSequenceElement());
30345      }
30346      if (element.hasFocalElement()) {
30347        composeBoolean("focal", element.getFocalElement());
30348      }
30349      if (element.hasCoverage()) {
30350        composeReference("coverage", element.getCoverage());
30351      }
30352      if (element.hasBusinessArrangementElement()) {
30353        composeString("businessArrangement", element.getBusinessArrangementElement());
30354      }
30355      if (element.hasClaimResponse()) {
30356        composeReference("claimResponse", element.getClaimResponse());
30357      }
30358  }
30359
30360  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
30361    if (element != null) {
30362      composeElementAttributes(element);
30363      xml.enter(FHIR_NS, name);
30364      composeClaimResponseErrorComponentElements(element);
30365      composeElementClose(element);
30366      xml.exit(FHIR_NS, name);
30367    }
30368  }
30369
30370  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
30371      composeBackboneElementElements(element);
30372      if (element.hasItemSequenceElement()) {
30373        composePositiveInt("itemSequence", element.getItemSequenceElement());
30374      }
30375      if (element.hasDetailSequenceElement()) {
30376        composePositiveInt("detailSequence", element.getDetailSequenceElement());
30377      }
30378      if (element.hasSubDetailSequenceElement()) {
30379        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
30380      }
30381      if (element.hasCode()) {
30382        composeCodeableConcept("code", element.getCode());
30383      }
30384  }
30385
30386  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
30387    if (element != null) {
30388      composeDomainResourceAttributes(element);
30389      xml.enter(FHIR_NS, name);
30390      composeClinicalImpressionElements(element);
30391      composeElementClose(element);
30392      xml.exit(FHIR_NS, name);
30393    }
30394  }
30395
30396  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
30397      composeDomainResourceElements(element);
30398      if (element.hasIdentifier()) { 
30399        for (Identifier e : element.getIdentifier()) 
30400          composeIdentifier("identifier", e);
30401      }
30402      if (element.hasStatusElement())
30403        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
30404      if (element.hasStatusReason()) {
30405        composeCodeableConcept("statusReason", element.getStatusReason());
30406      }
30407      if (element.hasCode()) {
30408        composeCodeableConcept("code", element.getCode());
30409      }
30410      if (element.hasDescriptionElement()) {
30411        composeString("description", element.getDescriptionElement());
30412      }
30413      if (element.hasSubject()) {
30414        composeReference("subject", element.getSubject());
30415      }
30416      if (element.hasEncounter()) {
30417        composeReference("encounter", element.getEncounter());
30418      }
30419      if (element.hasEffective()) {
30420        composeType("effective", element.getEffective());
30421      }      if (element.hasDateElement()) {
30422        composeDateTime("date", element.getDateElement());
30423      }
30424      if (element.hasAssessor()) {
30425        composeReference("assessor", element.getAssessor());
30426      }
30427      if (element.hasPrevious()) {
30428        composeReference("previous", element.getPrevious());
30429      }
30430      if (element.hasProblem()) { 
30431        for (Reference e : element.getProblem()) 
30432          composeReference("problem", e);
30433      }
30434      if (element.hasInvestigation()) { 
30435        for (ClinicalImpression.ClinicalImpressionInvestigationComponent e : element.getInvestigation()) 
30436          composeClinicalImpressionClinicalImpressionInvestigationComponent("investigation", e);
30437      }
30438      if (element.hasProtocol()) { 
30439        for (UriType e : element.getProtocol()) 
30440          composeUri("protocol", e);
30441      }
30442      if (element.hasSummaryElement()) {
30443        composeString("summary", element.getSummaryElement());
30444      }
30445      if (element.hasFinding()) { 
30446        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
30447          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
30448      }
30449      if (element.hasPrognosisCodeableConcept()) { 
30450        for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
30451          composeCodeableConcept("prognosisCodeableConcept", e);
30452      }
30453      if (element.hasPrognosisReference()) { 
30454        for (Reference e : element.getPrognosisReference()) 
30455          composeReference("prognosisReference", e);
30456      }
30457      if (element.hasSupportingInfo()) { 
30458        for (Reference e : element.getSupportingInfo()) 
30459          composeReference("supportingInfo", e);
30460      }
30461      if (element.hasNote()) { 
30462        for (Annotation e : element.getNote()) 
30463          composeAnnotation("note", e);
30464      }
30465  }
30466
30467  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
30468    if (element != null) {
30469      composeElementAttributes(element);
30470      xml.enter(FHIR_NS, name);
30471      composeClinicalImpressionClinicalImpressionInvestigationComponentElements(element);
30472      composeElementClose(element);
30473      xml.exit(FHIR_NS, name);
30474    }
30475  }
30476
30477  protected void composeClinicalImpressionClinicalImpressionInvestigationComponentElements(ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
30478      composeBackboneElementElements(element);
30479      if (element.hasCode()) {
30480        composeCodeableConcept("code", element.getCode());
30481      }
30482      if (element.hasItem()) { 
30483        for (Reference e : element.getItem()) 
30484          composeReference("item", e);
30485      }
30486  }
30487
30488  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
30489    if (element != null) {
30490      composeElementAttributes(element);
30491      xml.enter(FHIR_NS, name);
30492      composeClinicalImpressionClinicalImpressionFindingComponentElements(element);
30493      composeElementClose(element);
30494      xml.exit(FHIR_NS, name);
30495    }
30496  }
30497
30498  protected void composeClinicalImpressionClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
30499      composeBackboneElementElements(element);
30500      if (element.hasItemCodeableConcept()) {
30501        composeCodeableConcept("itemCodeableConcept", element.getItemCodeableConcept());
30502      }
30503      if (element.hasItemReference()) {
30504        composeReference("itemReference", element.getItemReference());
30505      }
30506      if (element.hasBasisElement()) {
30507        composeString("basis", element.getBasisElement());
30508      }
30509  }
30510
30511  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
30512    if (element != null) {
30513      composeDomainResourceAttributes(element);
30514      xml.enter(FHIR_NS, name);
30515      composeCodeSystemElements(element);
30516      composeElementClose(element);
30517      xml.exit(FHIR_NS, name);
30518    }
30519  }
30520
30521  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
30522      composeDomainResourceElements(element);
30523      if (element.hasUrlElement()) {
30524        composeUri("url", element.getUrlElement());
30525      }
30526      if (element.hasIdentifier()) { 
30527        for (Identifier e : element.getIdentifier()) 
30528          composeIdentifier("identifier", e);
30529      }
30530      if (element.hasVersionElement()) {
30531        composeString("version", element.getVersionElement());
30532      }
30533      if (element.hasNameElement()) {
30534        composeString("name", element.getNameElement());
30535      }
30536      if (element.hasTitleElement()) {
30537        composeString("title", element.getTitleElement());
30538      }
30539      if (element.hasStatusElement())
30540        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30541      if (element.hasExperimentalElement()) {
30542        composeBoolean("experimental", element.getExperimentalElement());
30543      }
30544      if (element.hasDateElement()) {
30545        composeDateTime("date", element.getDateElement());
30546      }
30547      if (element.hasPublisherElement()) {
30548        composeString("publisher", element.getPublisherElement());
30549      }
30550      if (element.hasContact()) { 
30551        for (ContactDetail e : element.getContact()) 
30552          composeContactDetail("contact", e);
30553      }
30554      if (element.hasDescriptionElement()) {
30555        composeMarkdown("description", element.getDescriptionElement());
30556      }
30557      if (element.hasUseContext()) { 
30558        for (UsageContext e : element.getUseContext()) 
30559          composeUsageContext("useContext", e);
30560      }
30561      if (element.hasJurisdiction()) { 
30562        for (CodeableConcept e : element.getJurisdiction()) 
30563          composeCodeableConcept("jurisdiction", e);
30564      }
30565      if (element.hasPurposeElement()) {
30566        composeMarkdown("purpose", element.getPurposeElement());
30567      }
30568      if (element.hasCopyrightElement()) {
30569        composeMarkdown("copyright", element.getCopyrightElement());
30570      }
30571      if (element.hasCaseSensitiveElement()) {
30572        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
30573      }
30574      if (element.hasValueSetElement()) {
30575        composeCanonical("valueSet", element.getValueSetElement());
30576      }
30577      if (element.hasHierarchyMeaningElement())
30578        composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
30579      if (element.hasCompositionalElement()) {
30580        composeBoolean("compositional", element.getCompositionalElement());
30581      }
30582      if (element.hasVersionNeededElement()) {
30583        composeBoolean("versionNeeded", element.getVersionNeededElement());
30584      }
30585      if (element.hasContentElement())
30586        composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
30587      if (element.hasSupplementsElement()) {
30588        composeCanonical("supplements", element.getSupplementsElement());
30589      }
30590      if (element.hasCountElement()) {
30591        composeUnsignedInt("count", element.getCountElement());
30592      }
30593      if (element.hasFilter()) { 
30594        for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
30595          composeCodeSystemCodeSystemFilterComponent("filter", e);
30596      }
30597      if (element.hasProperty()) { 
30598        for (CodeSystem.PropertyComponent e : element.getProperty()) 
30599          composeCodeSystemPropertyComponent("property", e);
30600      }
30601      if (element.hasConcept()) { 
30602        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
30603          composeCodeSystemConceptDefinitionComponent("concept", e);
30604      }
30605  }
30606
30607  protected void composeCodeSystemCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
30608    if (element != null) {
30609      composeElementAttributes(element);
30610      xml.enter(FHIR_NS, name);
30611      composeCodeSystemCodeSystemFilterComponentElements(element);
30612      composeElementClose(element);
30613      xml.exit(FHIR_NS, name);
30614    }
30615  }
30616
30617  protected void composeCodeSystemCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
30618      composeBackboneElementElements(element);
30619      if (element.hasCodeElement()) {
30620        composeCode("code", element.getCodeElement());
30621      }
30622      if (element.hasDescriptionElement()) {
30623        composeString("description", element.getDescriptionElement());
30624      }
30625        if (element.hasOperator()) 
30626          for (Enumeration<CodeSystem.FilterOperator> e : element.getOperator()) 
30627            composeEnumeration("operator", e, new CodeSystem.FilterOperatorEnumFactory());
30628      if (element.hasValueElement()) {
30629        composeString("value", element.getValueElement());
30630      }
30631  }
30632
30633  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
30634    if (element != null) {
30635      composeElementAttributes(element);
30636      xml.enter(FHIR_NS, name);
30637      composeCodeSystemPropertyComponentElements(element);
30638      composeElementClose(element);
30639      xml.exit(FHIR_NS, name);
30640    }
30641  }
30642
30643  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
30644      composeBackboneElementElements(element);
30645      if (element.hasCodeElement()) {
30646        composeCode("code", element.getCodeElement());
30647      }
30648      if (element.hasUriElement()) {
30649        composeUri("uri", element.getUriElement());
30650      }
30651      if (element.hasDescriptionElement()) {
30652        composeString("description", element.getDescriptionElement());
30653      }
30654      if (element.hasTypeElement())
30655        composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
30656  }
30657
30658  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
30659    if (element != null) {
30660      composeElementAttributes(element);
30661      xml.enter(FHIR_NS, name);
30662      composeCodeSystemConceptDefinitionComponentElements(element);
30663      composeElementClose(element);
30664      xml.exit(FHIR_NS, name);
30665    }
30666  }
30667
30668  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
30669      composeBackboneElementElements(element);
30670      if (element.hasCodeElement()) {
30671        composeCode("code", element.getCodeElement());
30672      }
30673      if (element.hasDisplayElement()) {
30674        composeString("display", element.getDisplayElement());
30675      }
30676      if (element.hasDefinitionElement()) {
30677        composeString("definition", element.getDefinitionElement());
30678      }
30679      if (element.hasDesignation()) { 
30680        for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
30681          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
30682      }
30683      if (element.hasProperty()) { 
30684        for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
30685          composeCodeSystemConceptPropertyComponent("property", e);
30686      }
30687      if (element.hasConcept()) { 
30688        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
30689          composeCodeSystemConceptDefinitionComponent("concept", e);
30690      }
30691  }
30692
30693  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
30694    if (element != null) {
30695      composeElementAttributes(element);
30696      xml.enter(FHIR_NS, name);
30697      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
30698      composeElementClose(element);
30699      xml.exit(FHIR_NS, name);
30700    }
30701  }
30702
30703  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
30704      composeBackboneElementElements(element);
30705      if (element.hasLanguageElement()) {
30706        composeCode("language", element.getLanguageElement());
30707      }
30708      if (element.hasUse()) {
30709        composeCoding("use", element.getUse());
30710      }
30711      if (element.hasValueElement()) {
30712        composeString("value", element.getValueElement());
30713      }
30714  }
30715
30716  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
30717    if (element != null) {
30718      composeElementAttributes(element);
30719      xml.enter(FHIR_NS, name);
30720      composeCodeSystemConceptPropertyComponentElements(element);
30721      composeElementClose(element);
30722      xml.exit(FHIR_NS, name);
30723    }
30724  }
30725
30726  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
30727      composeBackboneElementElements(element);
30728      if (element.hasCodeElement()) {
30729        composeCode("code", element.getCodeElement());
30730      }
30731      if (element.hasValue()) {
30732        composeType("value", element.getValue());
30733      }  }
30734
30735  protected void composeCommunication(String name, Communication element) throws IOException {
30736    if (element != null) {
30737      composeDomainResourceAttributes(element);
30738      xml.enter(FHIR_NS, name);
30739      composeCommunicationElements(element);
30740      composeElementClose(element);
30741      xml.exit(FHIR_NS, name);
30742    }
30743  }
30744
30745  protected void composeCommunicationElements(Communication element) throws IOException {
30746      composeDomainResourceElements(element);
30747      if (element.hasIdentifier()) { 
30748        for (Identifier e : element.getIdentifier()) 
30749          composeIdentifier("identifier", e);
30750      }
30751      if (element.hasInstantiatesCanonical()) { 
30752        for (CanonicalType e : element.getInstantiatesCanonical()) 
30753          composeCanonical("instantiatesCanonical", e);
30754      }
30755      if (element.hasInstantiatesUri()) { 
30756        for (UriType e : element.getInstantiatesUri()) 
30757          composeUri("instantiatesUri", e);
30758      }
30759      if (element.hasBasedOn()) { 
30760        for (Reference e : element.getBasedOn()) 
30761          composeReference("basedOn", e);
30762      }
30763      if (element.hasPartOf()) { 
30764        for (Reference e : element.getPartOf()) 
30765          composeReference("partOf", e);
30766      }
30767      if (element.hasInResponseTo()) { 
30768        for (Reference e : element.getInResponseTo()) 
30769          composeReference("inResponseTo", e);
30770      }
30771      if (element.hasStatusElement())
30772        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
30773      if (element.hasStatusReason()) {
30774        composeCodeableConcept("statusReason", element.getStatusReason());
30775      }
30776      if (element.hasCategory()) { 
30777        for (CodeableConcept e : element.getCategory()) 
30778          composeCodeableConcept("category", e);
30779      }
30780      if (element.hasPriorityElement())
30781        composeEnumeration("priority", element.getPriorityElement(), new Communication.CommunicationPriorityEnumFactory());
30782      if (element.hasMedium()) { 
30783        for (CodeableConcept e : element.getMedium()) 
30784          composeCodeableConcept("medium", e);
30785      }
30786      if (element.hasSubject()) {
30787        composeReference("subject", element.getSubject());
30788      }
30789      if (element.hasTopic()) {
30790        composeCodeableConcept("topic", element.getTopic());
30791      }
30792      if (element.hasAbout()) { 
30793        for (Reference e : element.getAbout()) 
30794          composeReference("about", e);
30795      }
30796      if (element.hasEncounter()) {
30797        composeReference("encounter", element.getEncounter());
30798      }
30799      if (element.hasSentElement()) {
30800        composeDateTime("sent", element.getSentElement());
30801      }
30802      if (element.hasReceivedElement()) {
30803        composeDateTime("received", element.getReceivedElement());
30804      }
30805      if (element.hasRecipient()) { 
30806        for (Reference e : element.getRecipient()) 
30807          composeReference("recipient", e);
30808      }
30809      if (element.hasSender()) {
30810        composeReference("sender", element.getSender());
30811      }
30812      if (element.hasReasonCode()) { 
30813        for (CodeableConcept e : element.getReasonCode()) 
30814          composeCodeableConcept("reasonCode", e);
30815      }
30816      if (element.hasReasonReference()) { 
30817        for (Reference e : element.getReasonReference()) 
30818          composeReference("reasonReference", e);
30819      }
30820      if (element.hasPayload()) { 
30821        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
30822          composeCommunicationCommunicationPayloadComponent("payload", e);
30823      }
30824      if (element.hasNote()) { 
30825        for (Annotation e : element.getNote()) 
30826          composeAnnotation("note", e);
30827      }
30828  }
30829
30830  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
30831    if (element != null) {
30832      composeElementAttributes(element);
30833      xml.enter(FHIR_NS, name);
30834      composeCommunicationCommunicationPayloadComponentElements(element);
30835      composeElementClose(element);
30836      xml.exit(FHIR_NS, name);
30837    }
30838  }
30839
30840  protected void composeCommunicationCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
30841      composeBackboneElementElements(element);
30842      if (element.hasContent()) {
30843        composeType("content", element.getContent());
30844      }  }
30845
30846  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
30847    if (element != null) {
30848      composeDomainResourceAttributes(element);
30849      xml.enter(FHIR_NS, name);
30850      composeCommunicationRequestElements(element);
30851      composeElementClose(element);
30852      xml.exit(FHIR_NS, name);
30853    }
30854  }
30855
30856  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
30857      composeDomainResourceElements(element);
30858      if (element.hasIdentifier()) { 
30859        for (Identifier e : element.getIdentifier()) 
30860          composeIdentifier("identifier", e);
30861      }
30862      if (element.hasBasedOn()) { 
30863        for (Reference e : element.getBasedOn()) 
30864          composeReference("basedOn", e);
30865      }
30866      if (element.hasReplaces()) { 
30867        for (Reference e : element.getReplaces()) 
30868          composeReference("replaces", e);
30869      }
30870      if (element.hasGroupIdentifier()) {
30871        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
30872      }
30873      if (element.hasStatusElement())
30874        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
30875      if (element.hasStatusReason()) {
30876        composeCodeableConcept("statusReason", element.getStatusReason());
30877      }
30878      if (element.hasCategory()) { 
30879        for (CodeableConcept e : element.getCategory()) 
30880          composeCodeableConcept("category", e);
30881      }
30882      if (element.hasPriorityElement())
30883        composeEnumeration("priority", element.getPriorityElement(), new CommunicationRequest.CommunicationPriorityEnumFactory());
30884      if (element.hasDoNotPerformElement()) {
30885        composeBoolean("doNotPerform", element.getDoNotPerformElement());
30886      }
30887      if (element.hasMedium()) { 
30888        for (CodeableConcept e : element.getMedium()) 
30889          composeCodeableConcept("medium", e);
30890      }
30891      if (element.hasSubject()) {
30892        composeReference("subject", element.getSubject());
30893      }
30894      if (element.hasAbout()) { 
30895        for (Reference e : element.getAbout()) 
30896          composeReference("about", e);
30897      }
30898      if (element.hasEncounter()) {
30899        composeReference("encounter", element.getEncounter());
30900      }
30901      if (element.hasPayload()) { 
30902        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
30903          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
30904      }
30905      if (element.hasOccurrence()) {
30906        composeType("occurrence", element.getOccurrence());
30907      }      if (element.hasAuthoredOnElement()) {
30908        composeDateTime("authoredOn", element.getAuthoredOnElement());
30909      }
30910      if (element.hasRequester()) {
30911        composeReference("requester", element.getRequester());
30912      }
30913      if (element.hasRecipient()) { 
30914        for (Reference e : element.getRecipient()) 
30915          composeReference("recipient", e);
30916      }
30917      if (element.hasSender()) {
30918        composeReference("sender", element.getSender());
30919      }
30920      if (element.hasReasonCode()) { 
30921        for (CodeableConcept e : element.getReasonCode()) 
30922          composeCodeableConcept("reasonCode", e);
30923      }
30924      if (element.hasReasonReference()) { 
30925        for (Reference e : element.getReasonReference()) 
30926          composeReference("reasonReference", e);
30927      }
30928      if (element.hasNote()) { 
30929        for (Annotation e : element.getNote()) 
30930          composeAnnotation("note", e);
30931      }
30932  }
30933
30934  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
30935    if (element != null) {
30936      composeElementAttributes(element);
30937      xml.enter(FHIR_NS, name);
30938      composeCommunicationRequestCommunicationRequestPayloadComponentElements(element);
30939      composeElementClose(element);
30940      xml.exit(FHIR_NS, name);
30941    }
30942  }
30943
30944  protected void composeCommunicationRequestCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
30945      composeBackboneElementElements(element);
30946      if (element.hasContent()) {
30947        composeType("content", element.getContent());
30948      }  }
30949
30950  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
30951    if (element != null) {
30952      composeDomainResourceAttributes(element);
30953      xml.enter(FHIR_NS, name);
30954      composeCompartmentDefinitionElements(element);
30955      composeElementClose(element);
30956      xml.exit(FHIR_NS, name);
30957    }
30958  }
30959
30960  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
30961      composeDomainResourceElements(element);
30962      if (element.hasUrlElement()) {
30963        composeUri("url", element.getUrlElement());
30964      }
30965      if (element.hasVersionElement()) {
30966        composeString("version", element.getVersionElement());
30967      }
30968      if (element.hasNameElement()) {
30969        composeString("name", element.getNameElement());
30970      }
30971      if (element.hasStatusElement())
30972        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30973      if (element.hasExperimentalElement()) {
30974        composeBoolean("experimental", element.getExperimentalElement());
30975      }
30976      if (element.hasDateElement()) {
30977        composeDateTime("date", element.getDateElement());
30978      }
30979      if (element.hasPublisherElement()) {
30980        composeString("publisher", element.getPublisherElement());
30981      }
30982      if (element.hasContact()) { 
30983        for (ContactDetail e : element.getContact()) 
30984          composeContactDetail("contact", e);
30985      }
30986      if (element.hasDescriptionElement()) {
30987        composeMarkdown("description", element.getDescriptionElement());
30988      }
30989      if (element.hasUseContext()) { 
30990        for (UsageContext e : element.getUseContext()) 
30991          composeUsageContext("useContext", e);
30992      }
30993      if (element.hasPurposeElement()) {
30994        composeMarkdown("purpose", element.getPurposeElement());
30995      }
30996      if (element.hasCodeElement())
30997        composeEnumeration("code", element.getCodeElement(), new CompartmentDefinition.CompartmentTypeEnumFactory());
30998      if (element.hasSearchElement()) {
30999        composeBoolean("search", element.getSearchElement());
31000      }
31001      if (element.hasResource()) { 
31002        for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
31003          composeCompartmentDefinitionCompartmentDefinitionResourceComponent("resource", e);
31004      }
31005  }
31006
31007  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
31008    if (element != null) {
31009      composeElementAttributes(element);
31010      xml.enter(FHIR_NS, name);
31011      composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(element);
31012      composeElementClose(element);
31013      xml.exit(FHIR_NS, name);
31014    }
31015  }
31016
31017  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
31018      composeBackboneElementElements(element);
31019      if (element.hasCodeElement()) {
31020        composeCode("code", element.getCodeElement());
31021      }
31022      if (element.hasParam()) { 
31023        for (StringType e : element.getParam()) 
31024          composeString("param", e);
31025      }
31026      if (element.hasDocumentationElement()) {
31027        composeString("documentation", element.getDocumentationElement());
31028      }
31029  }
31030
31031  protected void composeComposition(String name, Composition element) throws IOException {
31032    if (element != null) {
31033      composeDomainResourceAttributes(element);
31034      xml.enter(FHIR_NS, name);
31035      composeCompositionElements(element);
31036      composeElementClose(element);
31037      xml.exit(FHIR_NS, name);
31038    }
31039  }
31040
31041  protected void composeCompositionElements(Composition element) throws IOException {
31042      composeDomainResourceElements(element);
31043      if (element.hasIdentifier()) {
31044        composeIdentifier("identifier", element.getIdentifier());
31045      }
31046      if (element.hasStatusElement())
31047        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
31048      if (element.hasType()) {
31049        composeCodeableConcept("type", element.getType());
31050      }
31051      if (element.hasCategory()) { 
31052        for (CodeableConcept e : element.getCategory()) 
31053          composeCodeableConcept("category", e);
31054      }
31055      if (element.hasSubject()) {
31056        composeReference("subject", element.getSubject());
31057      }
31058      if (element.hasEncounter()) {
31059        composeReference("encounter", element.getEncounter());
31060      }
31061      if (element.hasDateElement()) {
31062        composeDateTime("date", element.getDateElement());
31063      }
31064      if (element.hasAuthor()) { 
31065        for (Reference e : element.getAuthor()) 
31066          composeReference("author", e);
31067      }
31068      if (element.hasTitleElement()) {
31069        composeString("title", element.getTitleElement());
31070      }
31071      if (element.hasConfidentialityElement())
31072        composeEnumeration("confidentiality", element.getConfidentialityElement(), new Composition.DocumentConfidentialityEnumFactory());
31073      if (element.hasAttester()) { 
31074        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
31075          composeCompositionCompositionAttesterComponent("attester", e);
31076      }
31077      if (element.hasCustodian()) {
31078        composeReference("custodian", element.getCustodian());
31079      }
31080      if (element.hasRelatesTo()) { 
31081        for (Composition.CompositionRelatesToComponent e : element.getRelatesTo()) 
31082          composeCompositionCompositionRelatesToComponent("relatesTo", e);
31083      }
31084      if (element.hasEvent()) { 
31085        for (Composition.CompositionEventComponent e : element.getEvent()) 
31086          composeCompositionCompositionEventComponent("event", e);
31087      }
31088      if (element.hasSection()) { 
31089        for (Composition.SectionComponent e : element.getSection()) 
31090          composeCompositionSectionComponent("section", e);
31091      }
31092  }
31093
31094  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
31095    if (element != null) {
31096      composeElementAttributes(element);
31097      xml.enter(FHIR_NS, name);
31098      composeCompositionCompositionAttesterComponentElements(element);
31099      composeElementClose(element);
31100      xml.exit(FHIR_NS, name);
31101    }
31102  }
31103
31104  protected void composeCompositionCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
31105      composeBackboneElementElements(element);
31106      if (element.hasModeElement())
31107        composeEnumeration("mode", element.getModeElement(), new Composition.CompositionAttestationModeEnumFactory());
31108      if (element.hasTimeElement()) {
31109        composeDateTime("time", element.getTimeElement());
31110      }
31111      if (element.hasParty()) {
31112        composeReference("party", element.getParty());
31113      }
31114  }
31115
31116  protected void composeCompositionCompositionRelatesToComponent(String name, Composition.CompositionRelatesToComponent element) throws IOException {
31117    if (element != null) {
31118      composeElementAttributes(element);
31119      xml.enter(FHIR_NS, name);
31120      composeCompositionCompositionRelatesToComponentElements(element);
31121      composeElementClose(element);
31122      xml.exit(FHIR_NS, name);
31123    }
31124  }
31125
31126  protected void composeCompositionCompositionRelatesToComponentElements(Composition.CompositionRelatesToComponent element) throws IOException {
31127      composeBackboneElementElements(element);
31128      if (element.hasCodeElement())
31129        composeEnumeration("code", element.getCodeElement(), new Composition.DocumentRelationshipTypeEnumFactory());
31130      if (element.hasTarget()) {
31131        composeType("target", element.getTarget());
31132      }  }
31133
31134  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
31135    if (element != null) {
31136      composeElementAttributes(element);
31137      xml.enter(FHIR_NS, name);
31138      composeCompositionCompositionEventComponentElements(element);
31139      composeElementClose(element);
31140      xml.exit(FHIR_NS, name);
31141    }
31142  }
31143
31144  protected void composeCompositionCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
31145      composeBackboneElementElements(element);
31146      if (element.hasCode()) { 
31147        for (CodeableConcept e : element.getCode()) 
31148          composeCodeableConcept("code", e);
31149      }
31150      if (element.hasPeriod()) {
31151        composePeriod("period", element.getPeriod());
31152      }
31153      if (element.hasDetail()) { 
31154        for (Reference e : element.getDetail()) 
31155          composeReference("detail", e);
31156      }
31157  }
31158
31159  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
31160    if (element != null) {
31161      composeElementAttributes(element);
31162      xml.enter(FHIR_NS, name);
31163      composeCompositionSectionComponentElements(element);
31164      composeElementClose(element);
31165      xml.exit(FHIR_NS, name);
31166    }
31167  }
31168
31169  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
31170      composeBackboneElementElements(element);
31171      if (element.hasTitleElement()) {
31172        composeString("title", element.getTitleElement());
31173      }
31174      if (element.hasCode()) {
31175        composeCodeableConcept("code", element.getCode());
31176      }
31177      if (element.hasAuthor()) { 
31178        for (Reference e : element.getAuthor()) 
31179          composeReference("author", e);
31180      }
31181      if (element.hasFocus()) {
31182        composeReference("focus", element.getFocus());
31183      }
31184      if (element.hasText()) {
31185        composeNarrative("text", element.getText());
31186      }
31187      if (element.hasModeElement())
31188        composeEnumeration("mode", element.getModeElement(), new Composition.SectionModeEnumFactory());
31189      if (element.hasOrderedBy()) {
31190        composeCodeableConcept("orderedBy", element.getOrderedBy());
31191      }
31192      if (element.hasEntry()) { 
31193        for (Reference e : element.getEntry()) 
31194          composeReference("entry", e);
31195      }
31196      if (element.hasEmptyReason()) {
31197        composeCodeableConcept("emptyReason", element.getEmptyReason());
31198      }
31199      if (element.hasSection()) { 
31200        for (Composition.SectionComponent e : element.getSection()) 
31201          composeCompositionSectionComponent("section", e);
31202      }
31203  }
31204
31205  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
31206    if (element != null) {
31207      composeDomainResourceAttributes(element);
31208      xml.enter(FHIR_NS, name);
31209      composeConceptMapElements(element);
31210      composeElementClose(element);
31211      xml.exit(FHIR_NS, name);
31212    }
31213  }
31214
31215  protected void composeConceptMapElements(ConceptMap element) throws IOException {
31216      composeDomainResourceElements(element);
31217      if (element.hasUrlElement()) {
31218        composeUri("url", element.getUrlElement());
31219      }
31220      if (element.hasIdentifier()) {
31221        composeIdentifier("identifier", element.getIdentifier());
31222      }
31223      if (element.hasVersionElement()) {
31224        composeString("version", element.getVersionElement());
31225      }
31226      if (element.hasNameElement()) {
31227        composeString("name", element.getNameElement());
31228      }
31229      if (element.hasTitleElement()) {
31230        composeString("title", element.getTitleElement());
31231      }
31232      if (element.hasStatusElement())
31233        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31234      if (element.hasExperimentalElement()) {
31235        composeBoolean("experimental", element.getExperimentalElement());
31236      }
31237      if (element.hasDateElement()) {
31238        composeDateTime("date", element.getDateElement());
31239      }
31240      if (element.hasPublisherElement()) {
31241        composeString("publisher", element.getPublisherElement());
31242      }
31243      if (element.hasContact()) { 
31244        for (ContactDetail e : element.getContact()) 
31245          composeContactDetail("contact", e);
31246      }
31247      if (element.hasDescriptionElement()) {
31248        composeMarkdown("description", element.getDescriptionElement());
31249      }
31250      if (element.hasUseContext()) { 
31251        for (UsageContext e : element.getUseContext()) 
31252          composeUsageContext("useContext", e);
31253      }
31254      if (element.hasJurisdiction()) { 
31255        for (CodeableConcept e : element.getJurisdiction()) 
31256          composeCodeableConcept("jurisdiction", e);
31257      }
31258      if (element.hasPurposeElement()) {
31259        composeMarkdown("purpose", element.getPurposeElement());
31260      }
31261      if (element.hasCopyrightElement()) {
31262        composeMarkdown("copyright", element.getCopyrightElement());
31263      }
31264      if (element.hasSource()) {
31265        composeType("source", element.getSource());
31266      }      if (element.hasTarget()) {
31267        composeType("target", element.getTarget());
31268      }      if (element.hasGroup()) { 
31269        for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
31270          composeConceptMapConceptMapGroupComponent("group", e);
31271      }
31272  }
31273
31274  protected void composeConceptMapConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
31275    if (element != null) {
31276      composeElementAttributes(element);
31277      xml.enter(FHIR_NS, name);
31278      composeConceptMapConceptMapGroupComponentElements(element);
31279      composeElementClose(element);
31280      xml.exit(FHIR_NS, name);
31281    }
31282  }
31283
31284  protected void composeConceptMapConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
31285      composeBackboneElementElements(element);
31286      if (element.hasSourceElement()) {
31287        composeUri("source", element.getSourceElement());
31288      }
31289      if (element.hasSourceVersionElement()) {
31290        composeString("sourceVersion", element.getSourceVersionElement());
31291      }
31292      if (element.hasTargetElement()) {
31293        composeUri("target", element.getTargetElement());
31294      }
31295      if (element.hasTargetVersionElement()) {
31296        composeString("targetVersion", element.getTargetVersionElement());
31297      }
31298      if (element.hasElement()) { 
31299        for (ConceptMap.SourceElementComponent e : element.getElement()) 
31300          composeConceptMapSourceElementComponent("element", e);
31301      }
31302      if (element.hasUnmapped()) {
31303        composeConceptMapConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
31304      }
31305  }
31306
31307  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
31308    if (element != null) {
31309      composeElementAttributes(element);
31310      xml.enter(FHIR_NS, name);
31311      composeConceptMapSourceElementComponentElements(element);
31312      composeElementClose(element);
31313      xml.exit(FHIR_NS, name);
31314    }
31315  }
31316
31317  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
31318      composeBackboneElementElements(element);
31319      if (element.hasCodeElement()) {
31320        composeCode("code", element.getCodeElement());
31321      }
31322      if (element.hasDisplayElement()) {
31323        composeString("display", element.getDisplayElement());
31324      }
31325      if (element.hasTarget()) { 
31326        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
31327          composeConceptMapTargetElementComponent("target", e);
31328      }
31329  }
31330
31331  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
31332    if (element != null) {
31333      composeElementAttributes(element);
31334      xml.enter(FHIR_NS, name);
31335      composeConceptMapTargetElementComponentElements(element);
31336      composeElementClose(element);
31337      xml.exit(FHIR_NS, name);
31338    }
31339  }
31340
31341  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
31342      composeBackboneElementElements(element);
31343      if (element.hasCodeElement()) {
31344        composeCode("code", element.getCodeElement());
31345      }
31346      if (element.hasDisplayElement()) {
31347        composeString("display", element.getDisplayElement());
31348      }
31349      if (element.hasEquivalenceElement())
31350        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
31351      if (element.hasCommentElement()) {
31352        composeString("comment", element.getCommentElement());
31353      }
31354      if (element.hasDependsOn()) { 
31355        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
31356          composeConceptMapOtherElementComponent("dependsOn", e);
31357      }
31358      if (element.hasProduct()) { 
31359        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
31360          composeConceptMapOtherElementComponent("product", e);
31361      }
31362  }
31363
31364  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
31365    if (element != null) {
31366      composeElementAttributes(element);
31367      xml.enter(FHIR_NS, name);
31368      composeConceptMapOtherElementComponentElements(element);
31369      composeElementClose(element);
31370      xml.exit(FHIR_NS, name);
31371    }
31372  }
31373
31374  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
31375      composeBackboneElementElements(element);
31376      if (element.hasPropertyElement()) {
31377        composeUri("property", element.getPropertyElement());
31378      }
31379      if (element.hasSystemElement()) {
31380        composeCanonical("system", element.getSystemElement());
31381      }
31382      if (element.hasValueElement()) {
31383        composeString("value", element.getValueElement());
31384      }
31385      if (element.hasDisplayElement()) {
31386        composeString("display", element.getDisplayElement());
31387      }
31388  }
31389
31390  protected void composeConceptMapConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
31391    if (element != null) {
31392      composeElementAttributes(element);
31393      xml.enter(FHIR_NS, name);
31394      composeConceptMapConceptMapGroupUnmappedComponentElements(element);
31395      composeElementClose(element);
31396      xml.exit(FHIR_NS, name);
31397    }
31398  }
31399
31400  protected void composeConceptMapConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
31401      composeBackboneElementElements(element);
31402      if (element.hasModeElement())
31403        composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
31404      if (element.hasCodeElement()) {
31405        composeCode("code", element.getCodeElement());
31406      }
31407      if (element.hasDisplayElement()) {
31408        composeString("display", element.getDisplayElement());
31409      }
31410      if (element.hasUrlElement()) {
31411        composeCanonical("url", element.getUrlElement());
31412      }
31413  }
31414
31415  protected void composeCondition(String name, Condition element) throws IOException {
31416    if (element != null) {
31417      composeDomainResourceAttributes(element);
31418      xml.enter(FHIR_NS, name);
31419      composeConditionElements(element);
31420      composeElementClose(element);
31421      xml.exit(FHIR_NS, name);
31422    }
31423  }
31424
31425  protected void composeConditionElements(Condition element) throws IOException {
31426      composeDomainResourceElements(element);
31427      if (element.hasIdentifier()) { 
31428        for (Identifier e : element.getIdentifier()) 
31429          composeIdentifier("identifier", e);
31430      }
31431      if (element.hasClinicalStatus()) {
31432        composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
31433      }
31434      if (element.hasVerificationStatus()) {
31435        composeCodeableConcept("verificationStatus", element.getVerificationStatus());
31436      }
31437      if (element.hasCategory()) { 
31438        for (CodeableConcept e : element.getCategory()) 
31439          composeCodeableConcept("category", e);
31440      }
31441      if (element.hasSeverity()) {
31442        composeCodeableConcept("severity", element.getSeverity());
31443      }
31444      if (element.hasCode()) {
31445        composeCodeableConcept("code", element.getCode());
31446      }
31447      if (element.hasBodySite()) { 
31448        for (CodeableConcept e : element.getBodySite()) 
31449          composeCodeableConcept("bodySite", e);
31450      }
31451      if (element.hasSubject()) {
31452        composeReference("subject", element.getSubject());
31453      }
31454      if (element.hasEncounter()) {
31455        composeReference("encounter", element.getEncounter());
31456      }
31457      if (element.hasOnset()) {
31458        composeType("onset", element.getOnset());
31459      }      if (element.hasAbatement()) {
31460        composeType("abatement", element.getAbatement());
31461      }      if (element.hasRecordedDateElement()) {
31462        composeDateTime("recordedDate", element.getRecordedDateElement());
31463      }
31464      if (element.hasRecorder()) {
31465        composeReference("recorder", element.getRecorder());
31466      }
31467      if (element.hasAsserter()) {
31468        composeReference("asserter", element.getAsserter());
31469      }
31470      if (element.hasStage()) { 
31471        for (Condition.ConditionStageComponent e : element.getStage()) 
31472          composeConditionConditionStageComponent("stage", e);
31473      }
31474      if (element.hasEvidence()) { 
31475        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
31476          composeConditionConditionEvidenceComponent("evidence", e);
31477      }
31478      if (element.hasNote()) { 
31479        for (Annotation e : element.getNote()) 
31480          composeAnnotation("note", e);
31481      }
31482  }
31483
31484  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
31485    if (element != null) {
31486      composeElementAttributes(element);
31487      xml.enter(FHIR_NS, name);
31488      composeConditionConditionStageComponentElements(element);
31489      composeElementClose(element);
31490      xml.exit(FHIR_NS, name);
31491    }
31492  }
31493
31494  protected void composeConditionConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
31495      composeBackboneElementElements(element);
31496      if (element.hasSummary()) {
31497        composeCodeableConcept("summary", element.getSummary());
31498      }
31499      if (element.hasAssessment()) { 
31500        for (Reference e : element.getAssessment()) 
31501          composeReference("assessment", e);
31502      }
31503      if (element.hasType()) {
31504        composeCodeableConcept("type", element.getType());
31505      }
31506  }
31507
31508  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
31509    if (element != null) {
31510      composeElementAttributes(element);
31511      xml.enter(FHIR_NS, name);
31512      composeConditionConditionEvidenceComponentElements(element);
31513      composeElementClose(element);
31514      xml.exit(FHIR_NS, name);
31515    }
31516  }
31517
31518  protected void composeConditionConditionEvidenceComponentElements(Condition.ConditionEvidenceComponent element) throws IOException {
31519      composeBackboneElementElements(element);
31520      if (element.hasCode()) { 
31521        for (CodeableConcept e : element.getCode()) 
31522          composeCodeableConcept("code", e);
31523      }
31524      if (element.hasDetail()) { 
31525        for (Reference e : element.getDetail()) 
31526          composeReference("detail", e);
31527      }
31528  }
31529
31530  protected void composeConsent(String name, Consent element) throws IOException {
31531    if (element != null) {
31532      composeDomainResourceAttributes(element);
31533      xml.enter(FHIR_NS, name);
31534      composeConsentElements(element);
31535      composeElementClose(element);
31536      xml.exit(FHIR_NS, name);
31537    }
31538  }
31539
31540  protected void composeConsentElements(Consent element) throws IOException {
31541      composeDomainResourceElements(element);
31542      if (element.hasIdentifier()) { 
31543        for (Identifier e : element.getIdentifier()) 
31544          composeIdentifier("identifier", e);
31545      }
31546      if (element.hasStatusElement())
31547        composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
31548      if (element.hasScope()) {
31549        composeCodeableConcept("scope", element.getScope());
31550      }
31551      if (element.hasCategory()) { 
31552        for (CodeableConcept e : element.getCategory()) 
31553          composeCodeableConcept("category", e);
31554      }
31555      if (element.hasPatient()) {
31556        composeReference("patient", element.getPatient());
31557      }
31558      if (element.hasDateTimeElement()) {
31559        composeDateTime("dateTime", element.getDateTimeElement());
31560      }
31561      if (element.hasPerformer()) { 
31562        for (Reference e : element.getPerformer()) 
31563          composeReference("performer", e);
31564      }
31565      if (element.hasOrganization()) { 
31566        for (Reference e : element.getOrganization()) 
31567          composeReference("organization", e);
31568      }
31569      if (element.hasSource()) {
31570        composeType("source", element.getSource());
31571      }      if (element.hasPolicy()) { 
31572        for (Consent.ConsentPolicyComponent e : element.getPolicy()) 
31573          composeConsentConsentPolicyComponent("policy", e);
31574      }
31575      if (element.hasPolicyRule()) {
31576        composeCodeableConcept("policyRule", element.getPolicyRule());
31577      }
31578      if (element.hasVerification()) { 
31579        for (Consent.ConsentVerificationComponent e : element.getVerification()) 
31580          composeConsentConsentVerificationComponent("verification", e);
31581      }
31582      if (element.hasProvision()) {
31583        composeConsentprovisionComponent("provision", element.getProvision());
31584      }
31585  }
31586
31587  protected void composeConsentConsentPolicyComponent(String name, Consent.ConsentPolicyComponent element) throws IOException {
31588    if (element != null) {
31589      composeElementAttributes(element);
31590      xml.enter(FHIR_NS, name);
31591      composeConsentConsentPolicyComponentElements(element);
31592      composeElementClose(element);
31593      xml.exit(FHIR_NS, name);
31594    }
31595  }
31596
31597  protected void composeConsentConsentPolicyComponentElements(Consent.ConsentPolicyComponent element) throws IOException {
31598      composeBackboneElementElements(element);
31599      if (element.hasAuthorityElement()) {
31600        composeUri("authority", element.getAuthorityElement());
31601      }
31602      if (element.hasUriElement()) {
31603        composeUri("uri", element.getUriElement());
31604      }
31605  }
31606
31607  protected void composeConsentConsentVerificationComponent(String name, Consent.ConsentVerificationComponent element) throws IOException {
31608    if (element != null) {
31609      composeElementAttributes(element);
31610      xml.enter(FHIR_NS, name);
31611      composeConsentConsentVerificationComponentElements(element);
31612      composeElementClose(element);
31613      xml.exit(FHIR_NS, name);
31614    }
31615  }
31616
31617  protected void composeConsentConsentVerificationComponentElements(Consent.ConsentVerificationComponent element) throws IOException {
31618      composeBackboneElementElements(element);
31619      if (element.hasVerifiedElement()) {
31620        composeBoolean("verified", element.getVerifiedElement());
31621      }
31622      if (element.hasVerifiedWith()) {
31623        composeReference("verifiedWith", element.getVerifiedWith());
31624      }
31625      if (element.hasVerificationDateElement()) {
31626        composeDateTime("verificationDate", element.getVerificationDateElement());
31627      }
31628  }
31629
31630  protected void composeConsentprovisionComponent(String name, Consent.provisionComponent element) throws IOException {
31631    if (element != null) {
31632      composeElementAttributes(element);
31633      xml.enter(FHIR_NS, name);
31634      composeConsentprovisionComponentElements(element);
31635      composeElementClose(element);
31636      xml.exit(FHIR_NS, name);
31637    }
31638  }
31639
31640  protected void composeConsentprovisionComponentElements(Consent.provisionComponent element) throws IOException {
31641      composeBackboneElementElements(element);
31642      if (element.hasTypeElement())
31643        composeEnumeration("type", element.getTypeElement(), new Consent.ConsentProvisionTypeEnumFactory());
31644      if (element.hasPeriod()) {
31645        composePeriod("period", element.getPeriod());
31646      }
31647      if (element.hasActor()) { 
31648        for (Consent.provisionActorComponent e : element.getActor()) 
31649          composeConsentprovisionActorComponent("actor", e);
31650      }
31651      if (element.hasAction()) { 
31652        for (CodeableConcept e : element.getAction()) 
31653          composeCodeableConcept("action", e);
31654      }
31655      if (element.hasSecurityLabel()) { 
31656        for (Coding e : element.getSecurityLabel()) 
31657          composeCoding("securityLabel", e);
31658      }
31659      if (element.hasPurpose()) { 
31660        for (Coding e : element.getPurpose()) 
31661          composeCoding("purpose", e);
31662      }
31663      if (element.hasClass_()) { 
31664        for (Coding e : element.getClass_()) 
31665          composeCoding("class", e);
31666      }
31667      if (element.hasCode()) { 
31668        for (CodeableConcept e : element.getCode()) 
31669          composeCodeableConcept("code", e);
31670      }
31671      if (element.hasDataPeriod()) {
31672        composePeriod("dataPeriod", element.getDataPeriod());
31673      }
31674      if (element.hasData()) { 
31675        for (Consent.provisionDataComponent e : element.getData()) 
31676          composeConsentprovisionDataComponent("data", e);
31677      }
31678      if (element.hasProvision()) { 
31679        for (Consent.provisionComponent e : element.getProvision()) 
31680          composeConsentprovisionComponent("provision", e);
31681      }
31682  }
31683
31684  protected void composeConsentprovisionActorComponent(String name, Consent.provisionActorComponent element) throws IOException {
31685    if (element != null) {
31686      composeElementAttributes(element);
31687      xml.enter(FHIR_NS, name);
31688      composeConsentprovisionActorComponentElements(element);
31689      composeElementClose(element);
31690      xml.exit(FHIR_NS, name);
31691    }
31692  }
31693
31694  protected void composeConsentprovisionActorComponentElements(Consent.provisionActorComponent element) throws IOException {
31695      composeBackboneElementElements(element);
31696      if (element.hasRole()) {
31697        composeCodeableConcept("role", element.getRole());
31698      }
31699      if (element.hasReference()) {
31700        composeReference("reference", element.getReference());
31701      }
31702  }
31703
31704  protected void composeConsentprovisionDataComponent(String name, Consent.provisionDataComponent element) throws IOException {
31705    if (element != null) {
31706      composeElementAttributes(element);
31707      xml.enter(FHIR_NS, name);
31708      composeConsentprovisionDataComponentElements(element);
31709      composeElementClose(element);
31710      xml.exit(FHIR_NS, name);
31711    }
31712  }
31713
31714  protected void composeConsentprovisionDataComponentElements(Consent.provisionDataComponent element) throws IOException {
31715      composeBackboneElementElements(element);
31716      if (element.hasMeaningElement())
31717        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
31718      if (element.hasReference()) {
31719        composeReference("reference", element.getReference());
31720      }
31721  }
31722
31723  protected void composeContract(String name, Contract element) throws IOException {
31724    if (element != null) {
31725      composeDomainResourceAttributes(element);
31726      xml.enter(FHIR_NS, name);
31727      composeContractElements(element);
31728      composeElementClose(element);
31729      xml.exit(FHIR_NS, name);
31730    }
31731  }
31732
31733  protected void composeContractElements(Contract element) throws IOException {
31734      composeDomainResourceElements(element);
31735      if (element.hasIdentifier()) { 
31736        for (Identifier e : element.getIdentifier()) 
31737          composeIdentifier("identifier", e);
31738      }
31739      if (element.hasUrlElement()) {
31740        composeUri("url", element.getUrlElement());
31741      }
31742      if (element.hasVersionElement()) {
31743        composeString("version", element.getVersionElement());
31744      }
31745      if (element.hasStatusElement())
31746        composeEnumeration("status", element.getStatusElement(), new Contract.ContractStatusEnumFactory());
31747      if (element.hasLegalState()) {
31748        composeCodeableConcept("legalState", element.getLegalState());
31749      }
31750      if (element.hasInstantiatesCanonical()) {
31751        composeReference("instantiatesCanonical", element.getInstantiatesCanonical());
31752      }
31753      if (element.hasInstantiatesUriElement()) {
31754        composeUri("instantiatesUri", element.getInstantiatesUriElement());
31755      }
31756      if (element.hasContentDerivative()) {
31757        composeCodeableConcept("contentDerivative", element.getContentDerivative());
31758      }
31759      if (element.hasIssuedElement()) {
31760        composeDateTime("issued", element.getIssuedElement());
31761      }
31762      if (element.hasApplies()) {
31763        composePeriod("applies", element.getApplies());
31764      }
31765      if (element.hasExpirationType()) {
31766        composeCodeableConcept("expirationType", element.getExpirationType());
31767      }
31768      if (element.hasSubject()) { 
31769        for (Reference e : element.getSubject()) 
31770          composeReference("subject", e);
31771      }
31772      if (element.hasAuthority()) { 
31773        for (Reference e : element.getAuthority()) 
31774          composeReference("authority", e);
31775      }
31776      if (element.hasDomain()) { 
31777        for (Reference e : element.getDomain()) 
31778          composeReference("domain", e);
31779      }
31780      if (element.hasSite()) { 
31781        for (Reference e : element.getSite()) 
31782          composeReference("site", e);
31783      }
31784      if (element.hasNameElement()) {
31785        composeString("name", element.getNameElement());
31786      }
31787      if (element.hasTitleElement()) {
31788        composeString("title", element.getTitleElement());
31789      }
31790      if (element.hasSubtitleElement()) {
31791        composeString("subtitle", element.getSubtitleElement());
31792      }
31793      if (element.hasAlias()) { 
31794        for (StringType e : element.getAlias()) 
31795          composeString("alias", e);
31796      }
31797      if (element.hasAuthor()) {
31798        composeReference("author", element.getAuthor());
31799      }
31800      if (element.hasScope()) {
31801        composeCodeableConcept("scope", element.getScope());
31802      }
31803      if (element.hasTopic()) {
31804        composeType("topic", element.getTopic());
31805      }      if (element.hasType()) {
31806        composeCodeableConcept("type", element.getType());
31807      }
31808      if (element.hasSubType()) { 
31809        for (CodeableConcept e : element.getSubType()) 
31810          composeCodeableConcept("subType", e);
31811      }
31812      if (element.hasContentDefinition()) {
31813        composeContractContentDefinitionComponent("contentDefinition", element.getContentDefinition());
31814      }
31815      if (element.hasTerm()) { 
31816        for (Contract.TermComponent e : element.getTerm()) 
31817          composeContractTermComponent("term", e);
31818      }
31819      if (element.hasSupportingInfo()) { 
31820        for (Reference e : element.getSupportingInfo()) 
31821          composeReference("supportingInfo", e);
31822      }
31823      if (element.hasRelevantHistory()) { 
31824        for (Reference e : element.getRelevantHistory()) 
31825          composeReference("relevantHistory", e);
31826      }
31827      if (element.hasSigner()) { 
31828        for (Contract.SignatoryComponent e : element.getSigner()) 
31829          composeContractSignatoryComponent("signer", e);
31830      }
31831      if (element.hasFriendly()) { 
31832        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
31833          composeContractFriendlyLanguageComponent("friendly", e);
31834      }
31835      if (element.hasLegal()) { 
31836        for (Contract.LegalLanguageComponent e : element.getLegal()) 
31837          composeContractLegalLanguageComponent("legal", e);
31838      }
31839      if (element.hasRule()) { 
31840        for (Contract.ComputableLanguageComponent e : element.getRule()) 
31841          composeContractComputableLanguageComponent("rule", e);
31842      }
31843      if (element.hasLegallyBinding()) {
31844        composeType("legallyBinding", element.getLegallyBinding());
31845      }  }
31846
31847  protected void composeContractContentDefinitionComponent(String name, Contract.ContentDefinitionComponent element) throws IOException {
31848    if (element != null) {
31849      composeElementAttributes(element);
31850      xml.enter(FHIR_NS, name);
31851      composeContractContentDefinitionComponentElements(element);
31852      composeElementClose(element);
31853      xml.exit(FHIR_NS, name);
31854    }
31855  }
31856
31857  protected void composeContractContentDefinitionComponentElements(Contract.ContentDefinitionComponent element) throws IOException {
31858      composeBackboneElementElements(element);
31859      if (element.hasType()) {
31860        composeCodeableConcept("type", element.getType());
31861      }
31862      if (element.hasSubType()) {
31863        composeCodeableConcept("subType", element.getSubType());
31864      }
31865      if (element.hasPublisher()) {
31866        composeReference("publisher", element.getPublisher());
31867      }
31868      if (element.hasPublicationDateElement()) {
31869        composeDateTime("publicationDate", element.getPublicationDateElement());
31870      }
31871      if (element.hasPublicationStatusElement())
31872        composeEnumeration("publicationStatus", element.getPublicationStatusElement(), new Contract.ContractPublicationStatusEnumFactory());
31873      if (element.hasCopyrightElement()) {
31874        composeMarkdown("copyright", element.getCopyrightElement());
31875      }
31876  }
31877
31878  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
31879    if (element != null) {
31880      composeElementAttributes(element);
31881      xml.enter(FHIR_NS, name);
31882      composeContractTermComponentElements(element);
31883      composeElementClose(element);
31884      xml.exit(FHIR_NS, name);
31885    }
31886  }
31887
31888  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
31889      composeBackboneElementElements(element);
31890      if (element.hasIdentifier()) {
31891        composeIdentifier("identifier", element.getIdentifier());
31892      }
31893      if (element.hasIssuedElement()) {
31894        composeDateTime("issued", element.getIssuedElement());
31895      }
31896      if (element.hasApplies()) {
31897        composePeriod("applies", element.getApplies());
31898      }
31899      if (element.hasTopic()) {
31900        composeType("topic", element.getTopic());
31901      }      if (element.hasType()) {
31902        composeCodeableConcept("type", element.getType());
31903      }
31904      if (element.hasSubType()) {
31905        composeCodeableConcept("subType", element.getSubType());
31906      }
31907      if (element.hasTextElement()) {
31908        composeString("text", element.getTextElement());
31909      }
31910      if (element.hasSecurityLabel()) { 
31911        for (Contract.SecurityLabelComponent e : element.getSecurityLabel()) 
31912          composeContractSecurityLabelComponent("securityLabel", e);
31913      }
31914      if (element.hasOffer()) {
31915        composeContractContractOfferComponent("offer", element.getOffer());
31916      }
31917      if (element.hasAsset()) { 
31918        for (Contract.ContractAssetComponent e : element.getAsset()) 
31919          composeContractContractAssetComponent("asset", e);
31920      }
31921      if (element.hasAction()) { 
31922        for (Contract.ActionComponent e : element.getAction()) 
31923          composeContractActionComponent("action", e);
31924      }
31925      if (element.hasGroup()) { 
31926        for (Contract.TermComponent e : element.getGroup()) 
31927          composeContractTermComponent("group", e);
31928      }
31929  }
31930
31931  protected void composeContractSecurityLabelComponent(String name, Contract.SecurityLabelComponent element) throws IOException {
31932    if (element != null) {
31933      composeElementAttributes(element);
31934      xml.enter(FHIR_NS, name);
31935      composeContractSecurityLabelComponentElements(element);
31936      composeElementClose(element);
31937      xml.exit(FHIR_NS, name);
31938    }
31939  }
31940
31941  protected void composeContractSecurityLabelComponentElements(Contract.SecurityLabelComponent element) throws IOException {
31942      composeBackboneElementElements(element);
31943      if (element.hasNumber()) { 
31944        for (UnsignedIntType e : element.getNumber()) 
31945          composeUnsignedInt("number", e);
31946      }
31947      if (element.hasClassification()) {
31948        composeCoding("classification", element.getClassification());
31949      }
31950      if (element.hasCategory()) { 
31951        for (Coding e : element.getCategory()) 
31952          composeCoding("category", e);
31953      }
31954      if (element.hasControl()) { 
31955        for (Coding e : element.getControl()) 
31956          composeCoding("control", e);
31957      }
31958  }
31959
31960  protected void composeContractContractOfferComponent(String name, Contract.ContractOfferComponent element) throws IOException {
31961    if (element != null) {
31962      composeElementAttributes(element);
31963      xml.enter(FHIR_NS, name);
31964      composeContractContractOfferComponentElements(element);
31965      composeElementClose(element);
31966      xml.exit(FHIR_NS, name);
31967    }
31968  }
31969
31970  protected void composeContractContractOfferComponentElements(Contract.ContractOfferComponent element) throws IOException {
31971      composeBackboneElementElements(element);
31972      if (element.hasIdentifier()) { 
31973        for (Identifier e : element.getIdentifier()) 
31974          composeIdentifier("identifier", e);
31975      }
31976      if (element.hasParty()) { 
31977        for (Contract.ContractPartyComponent e : element.getParty()) 
31978          composeContractContractPartyComponent("party", e);
31979      }
31980      if (element.hasTopic()) {
31981        composeReference("topic", element.getTopic());
31982      }
31983      if (element.hasType()) {
31984        composeCodeableConcept("type", element.getType());
31985      }
31986      if (element.hasDecision()) {
31987        composeCodeableConcept("decision", element.getDecision());
31988      }
31989      if (element.hasDecisionMode()) { 
31990        for (CodeableConcept e : element.getDecisionMode()) 
31991          composeCodeableConcept("decisionMode", e);
31992      }
31993      if (element.hasAnswer()) { 
31994        for (Contract.AnswerComponent e : element.getAnswer()) 
31995          composeContractAnswerComponent("answer", e);
31996      }
31997      if (element.hasTextElement()) {
31998        composeString("text", element.getTextElement());
31999      }
32000      if (element.hasLinkId()) { 
32001        for (StringType e : element.getLinkId()) 
32002          composeString("linkId", e);
32003      }
32004      if (element.hasSecurityLabelNumber()) { 
32005        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32006          composeUnsignedInt("securityLabelNumber", e);
32007      }
32008  }
32009
32010  protected void composeContractContractPartyComponent(String name, Contract.ContractPartyComponent element) throws IOException {
32011    if (element != null) {
32012      composeElementAttributes(element);
32013      xml.enter(FHIR_NS, name);
32014      composeContractContractPartyComponentElements(element);
32015      composeElementClose(element);
32016      xml.exit(FHIR_NS, name);
32017    }
32018  }
32019
32020  protected void composeContractContractPartyComponentElements(Contract.ContractPartyComponent element) throws IOException {
32021      composeBackboneElementElements(element);
32022      if (element.hasReference()) { 
32023        for (Reference e : element.getReference()) 
32024          composeReference("reference", e);
32025      }
32026      if (element.hasRole()) {
32027        composeCodeableConcept("role", element.getRole());
32028      }
32029  }
32030
32031  protected void composeContractAnswerComponent(String name, Contract.AnswerComponent element) throws IOException {
32032    if (element != null) {
32033      composeElementAttributes(element);
32034      xml.enter(FHIR_NS, name);
32035      composeContractAnswerComponentElements(element);
32036      composeElementClose(element);
32037      xml.exit(FHIR_NS, name);
32038    }
32039  }
32040
32041  protected void composeContractAnswerComponentElements(Contract.AnswerComponent element) throws IOException {
32042      composeBackboneElementElements(element);
32043      if (element.hasValue()) {
32044        composeType("value", element.getValue());
32045      }  }
32046
32047  protected void composeContractContractAssetComponent(String name, Contract.ContractAssetComponent element) throws IOException {
32048    if (element != null) {
32049      composeElementAttributes(element);
32050      xml.enter(FHIR_NS, name);
32051      composeContractContractAssetComponentElements(element);
32052      composeElementClose(element);
32053      xml.exit(FHIR_NS, name);
32054    }
32055  }
32056
32057  protected void composeContractContractAssetComponentElements(Contract.ContractAssetComponent element) throws IOException {
32058      composeBackboneElementElements(element);
32059      if (element.hasScope()) {
32060        composeCodeableConcept("scope", element.getScope());
32061      }
32062      if (element.hasType()) { 
32063        for (CodeableConcept e : element.getType()) 
32064          composeCodeableConcept("type", e);
32065      }
32066      if (element.hasTypeReference()) { 
32067        for (Reference e : element.getTypeReference()) 
32068          composeReference("typeReference", e);
32069      }
32070      if (element.hasSubtype()) { 
32071        for (CodeableConcept e : element.getSubtype()) 
32072          composeCodeableConcept("subtype", e);
32073      }
32074      if (element.hasRelationship()) {
32075        composeCoding("relationship", element.getRelationship());
32076      }
32077      if (element.hasContext()) { 
32078        for (Contract.AssetContextComponent e : element.getContext()) 
32079          composeContractAssetContextComponent("context", e);
32080      }
32081      if (element.hasConditionElement()) {
32082        composeString("condition", element.getConditionElement());
32083      }
32084      if (element.hasPeriodType()) { 
32085        for (CodeableConcept e : element.getPeriodType()) 
32086          composeCodeableConcept("periodType", e);
32087      }
32088      if (element.hasPeriod()) { 
32089        for (Period e : element.getPeriod()) 
32090          composePeriod("period", e);
32091      }
32092      if (element.hasUsePeriod()) { 
32093        for (Period e : element.getUsePeriod()) 
32094          composePeriod("usePeriod", e);
32095      }
32096      if (element.hasTextElement()) {
32097        composeString("text", element.getTextElement());
32098      }
32099      if (element.hasLinkId()) { 
32100        for (StringType e : element.getLinkId()) 
32101          composeString("linkId", e);
32102      }
32103      if (element.hasAnswer()) { 
32104        for (Contract.AnswerComponent e : element.getAnswer()) 
32105          composeContractAnswerComponent("answer", e);
32106      }
32107      if (element.hasSecurityLabelNumber()) { 
32108        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32109          composeUnsignedInt("securityLabelNumber", e);
32110      }
32111      if (element.hasValuedItem()) { 
32112        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
32113          composeContractValuedItemComponent("valuedItem", e);
32114      }
32115  }
32116
32117  protected void composeContractAssetContextComponent(String name, Contract.AssetContextComponent element) throws IOException {
32118    if (element != null) {
32119      composeElementAttributes(element);
32120      xml.enter(FHIR_NS, name);
32121      composeContractAssetContextComponentElements(element);
32122      composeElementClose(element);
32123      xml.exit(FHIR_NS, name);
32124    }
32125  }
32126
32127  protected void composeContractAssetContextComponentElements(Contract.AssetContextComponent element) throws IOException {
32128      composeBackboneElementElements(element);
32129      if (element.hasReference()) {
32130        composeReference("reference", element.getReference());
32131      }
32132      if (element.hasCode()) { 
32133        for (CodeableConcept e : element.getCode()) 
32134          composeCodeableConcept("code", e);
32135      }
32136      if (element.hasTextElement()) {
32137        composeString("text", element.getTextElement());
32138      }
32139  }
32140
32141  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
32142    if (element != null) {
32143      composeElementAttributes(element);
32144      xml.enter(FHIR_NS, name);
32145      composeContractValuedItemComponentElements(element);
32146      composeElementClose(element);
32147      xml.exit(FHIR_NS, name);
32148    }
32149  }
32150
32151  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
32152      composeBackboneElementElements(element);
32153      if (element.hasEntity()) {
32154        composeType("entity", element.getEntity());
32155      }      if (element.hasIdentifier()) {
32156        composeIdentifier("identifier", element.getIdentifier());
32157      }
32158      if (element.hasEffectiveTimeElement()) {
32159        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
32160      }
32161      if (element.hasQuantity()) {
32162        composeQuantity("quantity", element.getQuantity());
32163      }
32164      if (element.hasUnitPrice()) {
32165        composeMoney("unitPrice", element.getUnitPrice());
32166      }
32167      if (element.hasFactorElement()) {
32168        composeDecimal("factor", element.getFactorElement());
32169      }
32170      if (element.hasPointsElement()) {
32171        composeDecimal("points", element.getPointsElement());
32172      }
32173      if (element.hasNet()) {
32174        composeMoney("net", element.getNet());
32175      }
32176      if (element.hasPaymentElement()) {
32177        composeString("payment", element.getPaymentElement());
32178      }
32179      if (element.hasPaymentDateElement()) {
32180        composeDateTime("paymentDate", element.getPaymentDateElement());
32181      }
32182      if (element.hasResponsible()) {
32183        composeReference("responsible", element.getResponsible());
32184      }
32185      if (element.hasRecipient()) {
32186        composeReference("recipient", element.getRecipient());
32187      }
32188      if (element.hasLinkId()) { 
32189        for (StringType e : element.getLinkId()) 
32190          composeString("linkId", e);
32191      }
32192      if (element.hasSecurityLabelNumber()) { 
32193        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32194          composeUnsignedInt("securityLabelNumber", e);
32195      }
32196  }
32197
32198  protected void composeContractActionComponent(String name, Contract.ActionComponent element) throws IOException {
32199    if (element != null) {
32200      composeElementAttributes(element);
32201      xml.enter(FHIR_NS, name);
32202      composeContractActionComponentElements(element);
32203      composeElementClose(element);
32204      xml.exit(FHIR_NS, name);
32205    }
32206  }
32207
32208  protected void composeContractActionComponentElements(Contract.ActionComponent element) throws IOException {
32209      composeBackboneElementElements(element);
32210      if (element.hasDoNotPerformElement()) {
32211        composeBoolean("doNotPerform", element.getDoNotPerformElement());
32212      }
32213      if (element.hasType()) {
32214        composeCodeableConcept("type", element.getType());
32215      }
32216      if (element.hasSubject()) { 
32217        for (Contract.ActionSubjectComponent e : element.getSubject()) 
32218          composeContractActionSubjectComponent("subject", e);
32219      }
32220      if (element.hasIntent()) {
32221        composeCodeableConcept("intent", element.getIntent());
32222      }
32223      if (element.hasLinkId()) { 
32224        for (StringType e : element.getLinkId()) 
32225          composeString("linkId", e);
32226      }
32227      if (element.hasStatus()) {
32228        composeCodeableConcept("status", element.getStatus());
32229      }
32230      if (element.hasContext()) {
32231        composeReference("context", element.getContext());
32232      }
32233      if (element.hasContextLinkId()) { 
32234        for (StringType e : element.getContextLinkId()) 
32235          composeString("contextLinkId", e);
32236      }
32237      if (element.hasOccurrence()) {
32238        composeType("occurrence", element.getOccurrence());
32239      }      if (element.hasRequester()) { 
32240        for (Reference e : element.getRequester()) 
32241          composeReference("requester", e);
32242      }
32243      if (element.hasRequesterLinkId()) { 
32244        for (StringType e : element.getRequesterLinkId()) 
32245          composeString("requesterLinkId", e);
32246      }
32247      if (element.hasPerformerType()) { 
32248        for (CodeableConcept e : element.getPerformerType()) 
32249          composeCodeableConcept("performerType", e);
32250      }
32251      if (element.hasPerformerRole()) {
32252        composeCodeableConcept("performerRole", element.getPerformerRole());
32253      }
32254      if (element.hasPerformer()) {
32255        composeReference("performer", element.getPerformer());
32256      }
32257      if (element.hasPerformerLinkId()) { 
32258        for (StringType e : element.getPerformerLinkId()) 
32259          composeString("performerLinkId", e);
32260      }
32261      if (element.hasReasonCode()) { 
32262        for (CodeableConcept e : element.getReasonCode()) 
32263          composeCodeableConcept("reasonCode", e);
32264      }
32265      if (element.hasReasonReference()) { 
32266        for (Reference e : element.getReasonReference()) 
32267          composeReference("reasonReference", e);
32268      }
32269      if (element.hasReason()) { 
32270        for (StringType e : element.getReason()) 
32271          composeString("reason", e);
32272      }
32273      if (element.hasReasonLinkId()) { 
32274        for (StringType e : element.getReasonLinkId()) 
32275          composeString("reasonLinkId", e);
32276      }
32277      if (element.hasNote()) { 
32278        for (Annotation e : element.getNote()) 
32279          composeAnnotation("note", e);
32280      }
32281      if (element.hasSecurityLabelNumber()) { 
32282        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32283          composeUnsignedInt("securityLabelNumber", e);
32284      }
32285  }
32286
32287  protected void composeContractActionSubjectComponent(String name, Contract.ActionSubjectComponent element) throws IOException {
32288    if (element != null) {
32289      composeElementAttributes(element);
32290      xml.enter(FHIR_NS, name);
32291      composeContractActionSubjectComponentElements(element);
32292      composeElementClose(element);
32293      xml.exit(FHIR_NS, name);
32294    }
32295  }
32296
32297  protected void composeContractActionSubjectComponentElements(Contract.ActionSubjectComponent element) throws IOException {
32298      composeBackboneElementElements(element);
32299      if (element.hasReference()) { 
32300        for (Reference e : element.getReference()) 
32301          composeReference("reference", e);
32302      }
32303      if (element.hasRole()) {
32304        composeCodeableConcept("role", element.getRole());
32305      }
32306  }
32307
32308  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
32309    if (element != null) {
32310      composeElementAttributes(element);
32311      xml.enter(FHIR_NS, name);
32312      composeContractSignatoryComponentElements(element);
32313      composeElementClose(element);
32314      xml.exit(FHIR_NS, name);
32315    }
32316  }
32317
32318  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
32319      composeBackboneElementElements(element);
32320      if (element.hasType()) {
32321        composeCoding("type", element.getType());
32322      }
32323      if (element.hasParty()) {
32324        composeReference("party", element.getParty());
32325      }
32326      if (element.hasSignature()) { 
32327        for (Signature e : element.getSignature()) 
32328          composeSignature("signature", e);
32329      }
32330  }
32331
32332  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
32333    if (element != null) {
32334      composeElementAttributes(element);
32335      xml.enter(FHIR_NS, name);
32336      composeContractFriendlyLanguageComponentElements(element);
32337      composeElementClose(element);
32338      xml.exit(FHIR_NS, name);
32339    }
32340  }
32341
32342  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
32343      composeBackboneElementElements(element);
32344      if (element.hasContent()) {
32345        composeType("content", element.getContent());
32346      }  }
32347
32348  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
32349    if (element != null) {
32350      composeElementAttributes(element);
32351      xml.enter(FHIR_NS, name);
32352      composeContractLegalLanguageComponentElements(element);
32353      composeElementClose(element);
32354      xml.exit(FHIR_NS, name);
32355    }
32356  }
32357
32358  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
32359      composeBackboneElementElements(element);
32360      if (element.hasContent()) {
32361        composeType("content", element.getContent());
32362      }  }
32363
32364  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
32365    if (element != null) {
32366      composeElementAttributes(element);
32367      xml.enter(FHIR_NS, name);
32368      composeContractComputableLanguageComponentElements(element);
32369      composeElementClose(element);
32370      xml.exit(FHIR_NS, name);
32371    }
32372  }
32373
32374  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
32375      composeBackboneElementElements(element);
32376      if (element.hasContent()) {
32377        composeType("content", element.getContent());
32378      }  }
32379
32380  protected void composeCoverage(String name, Coverage element) throws IOException {
32381    if (element != null) {
32382      composeDomainResourceAttributes(element);
32383      xml.enter(FHIR_NS, name);
32384      composeCoverageElements(element);
32385      composeElementClose(element);
32386      xml.exit(FHIR_NS, name);
32387    }
32388  }
32389
32390  protected void composeCoverageElements(Coverage element) throws IOException {
32391      composeDomainResourceElements(element);
32392      if (element.hasIdentifier()) { 
32393        for (Identifier e : element.getIdentifier()) 
32394          composeIdentifier("identifier", e);
32395      }
32396      if (element.hasStatusElement())
32397        composeEnumeration("status", element.getStatusElement(), new Coverage.CoverageStatusEnumFactory());
32398      if (element.hasType()) {
32399        composeCodeableConcept("type", element.getType());
32400      }
32401      if (element.hasPolicyHolder()) {
32402        composeReference("policyHolder", element.getPolicyHolder());
32403      }
32404      if (element.hasSubscriber()) {
32405        composeReference("subscriber", element.getSubscriber());
32406      }
32407      if (element.hasSubscriberIdElement()) {
32408        composeString("subscriberId", element.getSubscriberIdElement());
32409      }
32410      if (element.hasBeneficiary()) {
32411        composeReference("beneficiary", element.getBeneficiary());
32412      }
32413      if (element.hasDependentElement()) {
32414        composeString("dependent", element.getDependentElement());
32415      }
32416      if (element.hasRelationship()) {
32417        composeCodeableConcept("relationship", element.getRelationship());
32418      }
32419      if (element.hasPeriod()) {
32420        composePeriod("period", element.getPeriod());
32421      }
32422      if (element.hasPayor()) { 
32423        for (Reference e : element.getPayor()) 
32424          composeReference("payor", e);
32425      }
32426      if (element.hasClass_()) { 
32427        for (Coverage.ClassComponent e : element.getClass_()) 
32428          composeCoverageClassComponent("class", e);
32429      }
32430      if (element.hasOrderElement()) {
32431        composePositiveInt("order", element.getOrderElement());
32432      }
32433      if (element.hasNetworkElement()) {
32434        composeString("network", element.getNetworkElement());
32435      }
32436      if (element.hasCostToBeneficiary()) { 
32437        for (Coverage.CostToBeneficiaryComponent e : element.getCostToBeneficiary()) 
32438          composeCoverageCostToBeneficiaryComponent("costToBeneficiary", e);
32439      }
32440      if (element.hasSubrogationElement()) {
32441        composeBoolean("subrogation", element.getSubrogationElement());
32442      }
32443      if (element.hasContract()) { 
32444        for (Reference e : element.getContract()) 
32445          composeReference("contract", e);
32446      }
32447  }
32448
32449  protected void composeCoverageClassComponent(String name, Coverage.ClassComponent element) throws IOException {
32450    if (element != null) {
32451      composeElementAttributes(element);
32452      xml.enter(FHIR_NS, name);
32453      composeCoverageClassComponentElements(element);
32454      composeElementClose(element);
32455      xml.exit(FHIR_NS, name);
32456    }
32457  }
32458
32459  protected void composeCoverageClassComponentElements(Coverage.ClassComponent element) throws IOException {
32460      composeBackboneElementElements(element);
32461      if (element.hasType()) {
32462        composeCodeableConcept("type", element.getType());
32463      }
32464      if (element.hasValueElement()) {
32465        composeString("value", element.getValueElement());
32466      }
32467      if (element.hasNameElement()) {
32468        composeString("name", element.getNameElement());
32469      }
32470  }
32471
32472  protected void composeCoverageCostToBeneficiaryComponent(String name, Coverage.CostToBeneficiaryComponent element) throws IOException {
32473    if (element != null) {
32474      composeElementAttributes(element);
32475      xml.enter(FHIR_NS, name);
32476      composeCoverageCostToBeneficiaryComponentElements(element);
32477      composeElementClose(element);
32478      xml.exit(FHIR_NS, name);
32479    }
32480  }
32481
32482  protected void composeCoverageCostToBeneficiaryComponentElements(Coverage.CostToBeneficiaryComponent element) throws IOException {
32483      composeBackboneElementElements(element);
32484      if (element.hasType()) {
32485        composeCodeableConcept("type", element.getType());
32486      }
32487      if (element.hasValue()) {
32488        composeType("value", element.getValue());
32489      }      if (element.hasException()) { 
32490        for (Coverage.ExemptionComponent e : element.getException()) 
32491          composeCoverageExemptionComponent("exception", e);
32492      }
32493  }
32494
32495  protected void composeCoverageExemptionComponent(String name, Coverage.ExemptionComponent element) throws IOException {
32496    if (element != null) {
32497      composeElementAttributes(element);
32498      xml.enter(FHIR_NS, name);
32499      composeCoverageExemptionComponentElements(element);
32500      composeElementClose(element);
32501      xml.exit(FHIR_NS, name);
32502    }
32503  }
32504
32505  protected void composeCoverageExemptionComponentElements(Coverage.ExemptionComponent element) throws IOException {
32506      composeBackboneElementElements(element);
32507      if (element.hasType()) {
32508        composeCodeableConcept("type", element.getType());
32509      }
32510      if (element.hasPeriod()) {
32511        composePeriod("period", element.getPeriod());
32512      }
32513  }
32514
32515  protected void composeCoverageEligibilityRequest(String name, CoverageEligibilityRequest element) throws IOException {
32516    if (element != null) {
32517      composeDomainResourceAttributes(element);
32518      xml.enter(FHIR_NS, name);
32519      composeCoverageEligibilityRequestElements(element);
32520      composeElementClose(element);
32521      xml.exit(FHIR_NS, name);
32522    }
32523  }
32524
32525  protected void composeCoverageEligibilityRequestElements(CoverageEligibilityRequest element) throws IOException {
32526      composeDomainResourceElements(element);
32527      if (element.hasIdentifier()) { 
32528        for (Identifier e : element.getIdentifier()) 
32529          composeIdentifier("identifier", e);
32530      }
32531      if (element.hasStatusElement())
32532        composeEnumeration("status", element.getStatusElement(), new CoverageEligibilityRequest.EligibilityRequestStatusEnumFactory());
32533      if (element.hasPriority()) {
32534        composeCodeableConcept("priority", element.getPriority());
32535      }
32536        if (element.hasPurpose()) 
32537          for (Enumeration<CoverageEligibilityRequest.EligibilityRequestPurpose> e : element.getPurpose()) 
32538            composeEnumeration("purpose", e, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory());
32539      if (element.hasPatient()) {
32540        composeReference("patient", element.getPatient());
32541      }
32542      if (element.hasServiced()) {
32543        composeType("serviced", element.getServiced());
32544      }      if (element.hasCreatedElement()) {
32545        composeDateTime("created", element.getCreatedElement());
32546      }
32547      if (element.hasEnterer()) {
32548        composeReference("enterer", element.getEnterer());
32549      }
32550      if (element.hasProvider()) {
32551        composeReference("provider", element.getProvider());
32552      }
32553      if (element.hasInsurer()) {
32554        composeReference("insurer", element.getInsurer());
32555      }
32556      if (element.hasFacility()) {
32557        composeReference("facility", element.getFacility());
32558      }
32559      if (element.hasSupportingInfo()) { 
32560        for (CoverageEligibilityRequest.SupportingInformationComponent e : element.getSupportingInfo()) 
32561          composeCoverageEligibilityRequestSupportingInformationComponent("supportingInfo", e);
32562      }
32563      if (element.hasInsurance()) { 
32564        for (CoverageEligibilityRequest.InsuranceComponent e : element.getInsurance()) 
32565          composeCoverageEligibilityRequestInsuranceComponent("insurance", e);
32566      }
32567      if (element.hasItem()) { 
32568        for (CoverageEligibilityRequest.DetailsComponent e : element.getItem()) 
32569          composeCoverageEligibilityRequestDetailsComponent("item", e);
32570      }
32571  }
32572
32573  protected void composeCoverageEligibilityRequestSupportingInformationComponent(String name, CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
32574    if (element != null) {
32575      composeElementAttributes(element);
32576      xml.enter(FHIR_NS, name);
32577      composeCoverageEligibilityRequestSupportingInformationComponentElements(element);
32578      composeElementClose(element);
32579      xml.exit(FHIR_NS, name);
32580    }
32581  }
32582
32583  protected void composeCoverageEligibilityRequestSupportingInformationComponentElements(CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
32584      composeBackboneElementElements(element);
32585      if (element.hasSequenceElement()) {
32586        composePositiveInt("sequence", element.getSequenceElement());
32587      }
32588      if (element.hasInformation()) {
32589        composeReference("information", element.getInformation());
32590      }
32591      if (element.hasAppliesToAllElement()) {
32592        composeBoolean("appliesToAll", element.getAppliesToAllElement());
32593      }
32594  }
32595
32596  protected void composeCoverageEligibilityRequestInsuranceComponent(String name, CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
32597    if (element != null) {
32598      composeElementAttributes(element);
32599      xml.enter(FHIR_NS, name);
32600      composeCoverageEligibilityRequestInsuranceComponentElements(element);
32601      composeElementClose(element);
32602      xml.exit(FHIR_NS, name);
32603    }
32604  }
32605
32606  protected void composeCoverageEligibilityRequestInsuranceComponentElements(CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
32607      composeBackboneElementElements(element);
32608      if (element.hasFocalElement()) {
32609        composeBoolean("focal", element.getFocalElement());
32610      }
32611      if (element.hasCoverage()) {
32612        composeReference("coverage", element.getCoverage());
32613      }
32614      if (element.hasBusinessArrangementElement()) {
32615        composeString("businessArrangement", element.getBusinessArrangementElement());
32616      }
32617  }
32618
32619  protected void composeCoverageEligibilityRequestDetailsComponent(String name, CoverageEligibilityRequest.DetailsComponent element) throws IOException {
32620    if (element != null) {
32621      composeElementAttributes(element);
32622      xml.enter(FHIR_NS, name);
32623      composeCoverageEligibilityRequestDetailsComponentElements(element);
32624      composeElementClose(element);
32625      xml.exit(FHIR_NS, name);
32626    }
32627  }
32628
32629  protected void composeCoverageEligibilityRequestDetailsComponentElements(CoverageEligibilityRequest.DetailsComponent element) throws IOException {
32630      composeBackboneElementElements(element);
32631      if (element.hasSupportingInfoSequence()) { 
32632        for (PositiveIntType e : element.getSupportingInfoSequence()) 
32633          composePositiveInt("supportingInfoSequence", e);
32634      }
32635      if (element.hasCategory()) {
32636        composeCodeableConcept("category", element.getCategory());
32637      }
32638      if (element.hasProductOrService()) {
32639        composeCodeableConcept("productOrService", element.getProductOrService());
32640      }
32641      if (element.hasModifier()) { 
32642        for (CodeableConcept e : element.getModifier()) 
32643          composeCodeableConcept("modifier", e);
32644      }
32645      if (element.hasProvider()) {
32646        composeReference("provider", element.getProvider());
32647      }
32648      if (element.hasQuantity()) {
32649        composeQuantity("quantity", element.getQuantity());
32650      }
32651      if (element.hasUnitPrice()) {
32652        composeMoney("unitPrice", element.getUnitPrice());
32653      }
32654      if (element.hasFacility()) {
32655        composeReference("facility", element.getFacility());
32656      }
32657      if (element.hasDiagnosis()) { 
32658        for (CoverageEligibilityRequest.DiagnosisComponent e : element.getDiagnosis()) 
32659          composeCoverageEligibilityRequestDiagnosisComponent("diagnosis", e);
32660      }
32661      if (element.hasDetail()) { 
32662        for (Reference e : element.getDetail()) 
32663          composeReference("detail", e);
32664      }
32665  }
32666
32667  protected void composeCoverageEligibilityRequestDiagnosisComponent(String name, CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
32668    if (element != null) {
32669      composeElementAttributes(element);
32670      xml.enter(FHIR_NS, name);
32671      composeCoverageEligibilityRequestDiagnosisComponentElements(element);
32672      composeElementClose(element);
32673      xml.exit(FHIR_NS, name);
32674    }
32675  }
32676
32677  protected void composeCoverageEligibilityRequestDiagnosisComponentElements(CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
32678      composeBackboneElementElements(element);
32679      if (element.hasDiagnosis()) {
32680        composeType("diagnosis", element.getDiagnosis());
32681      }  }
32682
32683  protected void composeCoverageEligibilityResponse(String name, CoverageEligibilityResponse element) throws IOException {
32684    if (element != null) {
32685      composeDomainResourceAttributes(element);
32686      xml.enter(FHIR_NS, name);
32687      composeCoverageEligibilityResponseElements(element);
32688      composeElementClose(element);
32689      xml.exit(FHIR_NS, name);
32690    }
32691  }
32692
32693  protected void composeCoverageEligibilityResponseElements(CoverageEligibilityResponse element) throws IOException {
32694      composeDomainResourceElements(element);
32695      if (element.hasIdentifier()) { 
32696        for (Identifier e : element.getIdentifier()) 
32697          composeIdentifier("identifier", e);
32698      }
32699      if (element.hasStatusElement())
32700        composeEnumeration("status", element.getStatusElement(), new CoverageEligibilityResponse.EligibilityResponseStatusEnumFactory());
32701        if (element.hasPurpose()) 
32702          for (Enumeration<CoverageEligibilityResponse.EligibilityResponsePurpose> e : element.getPurpose()) 
32703            composeEnumeration("purpose", e, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory());
32704      if (element.hasPatient()) {
32705        composeReference("patient", element.getPatient());
32706      }
32707      if (element.hasServiced()) {
32708        composeType("serviced", element.getServiced());
32709      }      if (element.hasCreatedElement()) {
32710        composeDateTime("created", element.getCreatedElement());
32711      }
32712      if (element.hasRequestor()) {
32713        composeReference("requestor", element.getRequestor());
32714      }
32715      if (element.hasRequest()) {
32716        composeReference("request", element.getRequest());
32717      }
32718      if (element.hasOutcomeElement())
32719        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
32720      if (element.hasDispositionElement()) {
32721        composeString("disposition", element.getDispositionElement());
32722      }
32723      if (element.hasInsurer()) {
32724        composeReference("insurer", element.getInsurer());
32725      }
32726      if (element.hasInsurance()) { 
32727        for (CoverageEligibilityResponse.InsuranceComponent e : element.getInsurance()) 
32728          composeCoverageEligibilityResponseInsuranceComponent("insurance", e);
32729      }
32730      if (element.hasPreAuthRefElement()) {
32731        composeString("preAuthRef", element.getPreAuthRefElement());
32732      }
32733      if (element.hasForm()) {
32734        composeCodeableConcept("form", element.getForm());
32735      }
32736      if (element.hasError()) { 
32737        for (CoverageEligibilityResponse.ErrorsComponent e : element.getError()) 
32738          composeCoverageEligibilityResponseErrorsComponent("error", e);
32739      }
32740  }
32741
32742  protected void composeCoverageEligibilityResponseInsuranceComponent(String name, CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
32743    if (element != null) {
32744      composeElementAttributes(element);
32745      xml.enter(FHIR_NS, name);
32746      composeCoverageEligibilityResponseInsuranceComponentElements(element);
32747      composeElementClose(element);
32748      xml.exit(FHIR_NS, name);
32749    }
32750  }
32751
32752  protected void composeCoverageEligibilityResponseInsuranceComponentElements(CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
32753      composeBackboneElementElements(element);
32754      if (element.hasCoverage()) {
32755        composeReference("coverage", element.getCoverage());
32756      }
32757      if (element.hasInforceElement()) {
32758        composeBoolean("inforce", element.getInforceElement());
32759      }
32760      if (element.hasBenefitPeriod()) {
32761        composePeriod("benefitPeriod", element.getBenefitPeriod());
32762      }
32763      if (element.hasItem()) { 
32764        for (CoverageEligibilityResponse.ItemsComponent e : element.getItem()) 
32765          composeCoverageEligibilityResponseItemsComponent("item", e);
32766      }
32767  }
32768
32769  protected void composeCoverageEligibilityResponseItemsComponent(String name, CoverageEligibilityResponse.ItemsComponent element) throws IOException {
32770    if (element != null) {
32771      composeElementAttributes(element);
32772      xml.enter(FHIR_NS, name);
32773      composeCoverageEligibilityResponseItemsComponentElements(element);
32774      composeElementClose(element);
32775      xml.exit(FHIR_NS, name);
32776    }
32777  }
32778
32779  protected void composeCoverageEligibilityResponseItemsComponentElements(CoverageEligibilityResponse.ItemsComponent element) throws IOException {
32780      composeBackboneElementElements(element);
32781      if (element.hasCategory()) {
32782        composeCodeableConcept("category", element.getCategory());
32783      }
32784      if (element.hasProductOrService()) {
32785        composeCodeableConcept("productOrService", element.getProductOrService());
32786      }
32787      if (element.hasModifier()) { 
32788        for (CodeableConcept e : element.getModifier()) 
32789          composeCodeableConcept("modifier", e);
32790      }
32791      if (element.hasProvider()) {
32792        composeReference("provider", element.getProvider());
32793      }
32794      if (element.hasExcludedElement()) {
32795        composeBoolean("excluded", element.getExcludedElement());
32796      }
32797      if (element.hasNameElement()) {
32798        composeString("name", element.getNameElement());
32799      }
32800      if (element.hasDescriptionElement()) {
32801        composeString("description", element.getDescriptionElement());
32802      }
32803      if (element.hasNetwork()) {
32804        composeCodeableConcept("network", element.getNetwork());
32805      }
32806      if (element.hasUnit()) {
32807        composeCodeableConcept("unit", element.getUnit());
32808      }
32809      if (element.hasTerm()) {
32810        composeCodeableConcept("term", element.getTerm());
32811      }
32812      if (element.hasBenefit()) { 
32813        for (CoverageEligibilityResponse.BenefitComponent e : element.getBenefit()) 
32814          composeCoverageEligibilityResponseBenefitComponent("benefit", e);
32815      }
32816      if (element.hasAuthorizationRequiredElement()) {
32817        composeBoolean("authorizationRequired", element.getAuthorizationRequiredElement());
32818      }
32819      if (element.hasAuthorizationSupporting()) { 
32820        for (CodeableConcept e : element.getAuthorizationSupporting()) 
32821          composeCodeableConcept("authorizationSupporting", e);
32822      }
32823      if (element.hasAuthorizationUrlElement()) {
32824        composeUri("authorizationUrl", element.getAuthorizationUrlElement());
32825      }
32826  }
32827
32828  protected void composeCoverageEligibilityResponseBenefitComponent(String name, CoverageEligibilityResponse.BenefitComponent element) throws IOException {
32829    if (element != null) {
32830      composeElementAttributes(element);
32831      xml.enter(FHIR_NS, name);
32832      composeCoverageEligibilityResponseBenefitComponentElements(element);
32833      composeElementClose(element);
32834      xml.exit(FHIR_NS, name);
32835    }
32836  }
32837
32838  protected void composeCoverageEligibilityResponseBenefitComponentElements(CoverageEligibilityResponse.BenefitComponent element) throws IOException {
32839      composeBackboneElementElements(element);
32840      if (element.hasType()) {
32841        composeCodeableConcept("type", element.getType());
32842      }
32843      if (element.hasAllowed()) {
32844        composeType("allowed", element.getAllowed());
32845      }      if (element.hasUsed()) {
32846        composeType("used", element.getUsed());
32847      }  }
32848
32849  protected void composeCoverageEligibilityResponseErrorsComponent(String name, CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
32850    if (element != null) {
32851      composeElementAttributes(element);
32852      xml.enter(FHIR_NS, name);
32853      composeCoverageEligibilityResponseErrorsComponentElements(element);
32854      composeElementClose(element);
32855      xml.exit(FHIR_NS, name);
32856    }
32857  }
32858
32859  protected void composeCoverageEligibilityResponseErrorsComponentElements(CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
32860      composeBackboneElementElements(element);
32861      if (element.hasCode()) {
32862        composeCodeableConcept("code", element.getCode());
32863      }
32864  }
32865
32866  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
32867    if (element != null) {
32868      composeDomainResourceAttributes(element);
32869      xml.enter(FHIR_NS, name);
32870      composeDetectedIssueElements(element);
32871      composeElementClose(element);
32872      xml.exit(FHIR_NS, name);
32873    }
32874  }
32875
32876  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
32877      composeDomainResourceElements(element);
32878      if (element.hasIdentifier()) { 
32879        for (Identifier e : element.getIdentifier()) 
32880          composeIdentifier("identifier", e);
32881      }
32882      if (element.hasStatusElement())
32883        composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
32884      if (element.hasCode()) {
32885        composeCodeableConcept("code", element.getCode());
32886      }
32887      if (element.hasSeverityElement())
32888        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
32889      if (element.hasPatient()) {
32890        composeReference("patient", element.getPatient());
32891      }
32892      if (element.hasIdentified()) {
32893        composeType("identified", element.getIdentified());
32894      }      if (element.hasAuthor()) {
32895        composeReference("author", element.getAuthor());
32896      }
32897      if (element.hasImplicated()) { 
32898        for (Reference e : element.getImplicated()) 
32899          composeReference("implicated", e);
32900      }
32901      if (element.hasEvidence()) { 
32902        for (DetectedIssue.DetectedIssueEvidenceComponent e : element.getEvidence()) 
32903          composeDetectedIssueDetectedIssueEvidenceComponent("evidence", e);
32904      }
32905      if (element.hasDetailElement()) {
32906        composeString("detail", element.getDetailElement());
32907      }
32908      if (element.hasReferenceElement()) {
32909        composeUri("reference", element.getReferenceElement());
32910      }
32911      if (element.hasMitigation()) { 
32912        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
32913          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
32914      }
32915  }
32916
32917  protected void composeDetectedIssueDetectedIssueEvidenceComponent(String name, DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
32918    if (element != null) {
32919      composeElementAttributes(element);
32920      xml.enter(FHIR_NS, name);
32921      composeDetectedIssueDetectedIssueEvidenceComponentElements(element);
32922      composeElementClose(element);
32923      xml.exit(FHIR_NS, name);
32924    }
32925  }
32926
32927  protected void composeDetectedIssueDetectedIssueEvidenceComponentElements(DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
32928      composeBackboneElementElements(element);
32929      if (element.hasCode()) { 
32930        for (CodeableConcept e : element.getCode()) 
32931          composeCodeableConcept("code", e);
32932      }
32933      if (element.hasDetail()) { 
32934        for (Reference e : element.getDetail()) 
32935          composeReference("detail", e);
32936      }
32937  }
32938
32939  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
32940    if (element != null) {
32941      composeElementAttributes(element);
32942      xml.enter(FHIR_NS, name);
32943      composeDetectedIssueDetectedIssueMitigationComponentElements(element);
32944      composeElementClose(element);
32945      xml.exit(FHIR_NS, name);
32946    }
32947  }
32948
32949  protected void composeDetectedIssueDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
32950      composeBackboneElementElements(element);
32951      if (element.hasAction()) {
32952        composeCodeableConcept("action", element.getAction());
32953      }
32954      if (element.hasDateElement()) {
32955        composeDateTime("date", element.getDateElement());
32956      }
32957      if (element.hasAuthor()) {
32958        composeReference("author", element.getAuthor());
32959      }
32960  }
32961
32962  protected void composeDevice(String name, Device element) throws IOException {
32963    if (element != null) {
32964      composeDomainResourceAttributes(element);
32965      xml.enter(FHIR_NS, name);
32966      composeDeviceElements(element);
32967      composeElementClose(element);
32968      xml.exit(FHIR_NS, name);
32969    }
32970  }
32971
32972  protected void composeDeviceElements(Device element) throws IOException {
32973      composeDomainResourceElements(element);
32974      if (element.hasIdentifier()) { 
32975        for (Identifier e : element.getIdentifier()) 
32976          composeIdentifier("identifier", e);
32977      }
32978      if (element.hasDefinition()) {
32979        composeReference("definition", element.getDefinition());
32980      }
32981      if (element.hasUdiCarrier()) { 
32982        for (Device.DeviceUdiCarrierComponent e : element.getUdiCarrier()) 
32983          composeDeviceDeviceUdiCarrierComponent("udiCarrier", e);
32984      }
32985      if (element.hasStatusElement())
32986        composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
32987      if (element.hasStatusReason()) { 
32988        for (CodeableConcept e : element.getStatusReason()) 
32989          composeCodeableConcept("statusReason", e);
32990      }
32991      if (element.hasDistinctIdentifierElement()) {
32992        composeString("distinctIdentifier", element.getDistinctIdentifierElement());
32993      }
32994      if (element.hasManufacturerElement()) {
32995        composeString("manufacturer", element.getManufacturerElement());
32996      }
32997      if (element.hasManufactureDateElement()) {
32998        composeDateTime("manufactureDate", element.getManufactureDateElement());
32999      }
33000      if (element.hasExpirationDateElement()) {
33001        composeDateTime("expirationDate", element.getExpirationDateElement());
33002      }
33003      if (element.hasLotNumberElement()) {
33004        composeString("lotNumber", element.getLotNumberElement());
33005      }
33006      if (element.hasSerialNumberElement()) {
33007        composeString("serialNumber", element.getSerialNumberElement());
33008      }
33009      if (element.hasDeviceName()) { 
33010        for (Device.DeviceDeviceNameComponent e : element.getDeviceName()) 
33011          composeDeviceDeviceDeviceNameComponent("deviceName", e);
33012      }
33013      if (element.hasModelNumberElement()) {
33014        composeString("modelNumber", element.getModelNumberElement());
33015      }
33016      if (element.hasPartNumberElement()) {
33017        composeString("partNumber", element.getPartNumberElement());
33018      }
33019      if (element.hasType()) {
33020        composeCodeableConcept("type", element.getType());
33021      }
33022      if (element.hasSpecialization()) { 
33023        for (Device.DeviceSpecializationComponent e : element.getSpecialization()) 
33024          composeDeviceDeviceSpecializationComponent("specialization", e);
33025      }
33026      if (element.hasVersion()) { 
33027        for (Device.DeviceVersionComponent e : element.getVersion()) 
33028          composeDeviceDeviceVersionComponent("version", e);
33029      }
33030      if (element.hasProperty()) { 
33031        for (Device.DevicePropertyComponent e : element.getProperty()) 
33032          composeDeviceDevicePropertyComponent("property", e);
33033      }
33034      if (element.hasPatient()) {
33035        composeReference("patient", element.getPatient());
33036      }
33037      if (element.hasOwner()) {
33038        composeReference("owner", element.getOwner());
33039      }
33040      if (element.hasContact()) { 
33041        for (ContactPoint e : element.getContact()) 
33042          composeContactPoint("contact", e);
33043      }
33044      if (element.hasLocation()) {
33045        composeReference("location", element.getLocation());
33046      }
33047      if (element.hasUrlElement()) {
33048        composeUri("url", element.getUrlElement());
33049      }
33050      if (element.hasNote()) { 
33051        for (Annotation e : element.getNote()) 
33052          composeAnnotation("note", e);
33053      }
33054      if (element.hasSafety()) { 
33055        for (CodeableConcept e : element.getSafety()) 
33056          composeCodeableConcept("safety", e);
33057      }
33058      if (element.hasParent()) {
33059        composeReference("parent", element.getParent());
33060      }
33061  }
33062
33063  protected void composeDeviceDeviceUdiCarrierComponent(String name, Device.DeviceUdiCarrierComponent element) throws IOException {
33064    if (element != null) {
33065      composeElementAttributes(element);
33066      xml.enter(FHIR_NS, name);
33067      composeDeviceDeviceUdiCarrierComponentElements(element);
33068      composeElementClose(element);
33069      xml.exit(FHIR_NS, name);
33070    }
33071  }
33072
33073  protected void composeDeviceDeviceUdiCarrierComponentElements(Device.DeviceUdiCarrierComponent element) throws IOException {
33074      composeBackboneElementElements(element);
33075      if (element.hasDeviceIdentifierElement()) {
33076        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
33077      }
33078      if (element.hasIssuerElement()) {
33079        composeUri("issuer", element.getIssuerElement());
33080      }
33081      if (element.hasJurisdictionElement()) {
33082        composeUri("jurisdiction", element.getJurisdictionElement());
33083      }
33084      if (element.hasCarrierAIDCElement()) {
33085        composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
33086      }
33087      if (element.hasCarrierHRFElement()) {
33088        composeString("carrierHRF", element.getCarrierHRFElement());
33089      }
33090      if (element.hasEntryTypeElement())
33091        composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
33092  }
33093
33094  protected void composeDeviceDeviceDeviceNameComponent(String name, Device.DeviceDeviceNameComponent element) throws IOException {
33095    if (element != null) {
33096      composeElementAttributes(element);
33097      xml.enter(FHIR_NS, name);
33098      composeDeviceDeviceDeviceNameComponentElements(element);
33099      composeElementClose(element);
33100      xml.exit(FHIR_NS, name);
33101    }
33102  }
33103
33104  protected void composeDeviceDeviceDeviceNameComponentElements(Device.DeviceDeviceNameComponent element) throws IOException {
33105      composeBackboneElementElements(element);
33106      if (element.hasNameElement()) {
33107        composeString("name", element.getNameElement());
33108      }
33109      if (element.hasTypeElement())
33110        composeEnumeration("type", element.getTypeElement(), new Device.DeviceNameTypeEnumFactory());
33111  }
33112
33113  protected void composeDeviceDeviceSpecializationComponent(String name, Device.DeviceSpecializationComponent element) throws IOException {
33114    if (element != null) {
33115      composeElementAttributes(element);
33116      xml.enter(FHIR_NS, name);
33117      composeDeviceDeviceSpecializationComponentElements(element);
33118      composeElementClose(element);
33119      xml.exit(FHIR_NS, name);
33120    }
33121  }
33122
33123  protected void composeDeviceDeviceSpecializationComponentElements(Device.DeviceSpecializationComponent element) throws IOException {
33124      composeBackboneElementElements(element);
33125      if (element.hasSystemType()) {
33126        composeCodeableConcept("systemType", element.getSystemType());
33127      }
33128      if (element.hasVersionElement()) {
33129        composeString("version", element.getVersionElement());
33130      }
33131  }
33132
33133  protected void composeDeviceDeviceVersionComponent(String name, Device.DeviceVersionComponent element) throws IOException {
33134    if (element != null) {
33135      composeElementAttributes(element);
33136      xml.enter(FHIR_NS, name);
33137      composeDeviceDeviceVersionComponentElements(element);
33138      composeElementClose(element);
33139      xml.exit(FHIR_NS, name);
33140    }
33141  }
33142
33143  protected void composeDeviceDeviceVersionComponentElements(Device.DeviceVersionComponent element) throws IOException {
33144      composeBackboneElementElements(element);
33145      if (element.hasType()) {
33146        composeCodeableConcept("type", element.getType());
33147      }
33148      if (element.hasComponent()) {
33149        composeIdentifier("component", element.getComponent());
33150      }
33151      if (element.hasValueElement()) {
33152        composeString("value", element.getValueElement());
33153      }
33154  }
33155
33156  protected void composeDeviceDevicePropertyComponent(String name, Device.DevicePropertyComponent element) throws IOException {
33157    if (element != null) {
33158      composeElementAttributes(element);
33159      xml.enter(FHIR_NS, name);
33160      composeDeviceDevicePropertyComponentElements(element);
33161      composeElementClose(element);
33162      xml.exit(FHIR_NS, name);
33163    }
33164  }
33165
33166  protected void composeDeviceDevicePropertyComponentElements(Device.DevicePropertyComponent element) throws IOException {
33167      composeBackboneElementElements(element);
33168      if (element.hasType()) {
33169        composeCodeableConcept("type", element.getType());
33170      }
33171      if (element.hasValueQuantity()) { 
33172        for (Quantity e : element.getValueQuantity()) 
33173          composeQuantity("valueQuantity", e);
33174      }
33175      if (element.hasValueCode()) { 
33176        for (CodeableConcept e : element.getValueCode()) 
33177          composeCodeableConcept("valueCode", e);
33178      }
33179  }
33180
33181  protected void composeDeviceDefinition(String name, DeviceDefinition element) throws IOException {
33182    if (element != null) {
33183      composeDomainResourceAttributes(element);
33184      xml.enter(FHIR_NS, name);
33185      composeDeviceDefinitionElements(element);
33186      composeElementClose(element);
33187      xml.exit(FHIR_NS, name);
33188    }
33189  }
33190
33191  protected void composeDeviceDefinitionElements(DeviceDefinition element) throws IOException {
33192      composeDomainResourceElements(element);
33193      if (element.hasIdentifier()) { 
33194        for (Identifier e : element.getIdentifier()) 
33195          composeIdentifier("identifier", e);
33196      }
33197      if (element.hasUdiDeviceIdentifier()) { 
33198        for (DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent e : element.getUdiDeviceIdentifier()) 
33199          composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent("udiDeviceIdentifier", e);
33200      }
33201      if (element.hasManufacturer()) {
33202        composeType("manufacturer", element.getManufacturer());
33203      }      if (element.hasDeviceName()) { 
33204        for (DeviceDefinition.DeviceDefinitionDeviceNameComponent e : element.getDeviceName()) 
33205          composeDeviceDefinitionDeviceDefinitionDeviceNameComponent("deviceName", e);
33206      }
33207      if (element.hasModelNumberElement()) {
33208        composeString("modelNumber", element.getModelNumberElement());
33209      }
33210      if (element.hasType()) {
33211        composeCodeableConcept("type", element.getType());
33212      }
33213      if (element.hasSpecialization()) { 
33214        for (DeviceDefinition.DeviceDefinitionSpecializationComponent e : element.getSpecialization()) 
33215          composeDeviceDefinitionDeviceDefinitionSpecializationComponent("specialization", e);
33216      }
33217      if (element.hasVersion()) { 
33218        for (StringType e : element.getVersion()) 
33219          composeString("version", e);
33220      }
33221      if (element.hasSafety()) { 
33222        for (CodeableConcept e : element.getSafety()) 
33223          composeCodeableConcept("safety", e);
33224      }
33225      if (element.hasShelfLifeStorage()) { 
33226        for (ProductShelfLife e : element.getShelfLifeStorage()) 
33227          composeProductShelfLife("shelfLifeStorage", e);
33228      }
33229      if (element.hasPhysicalCharacteristics()) {
33230        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
33231      }
33232      if (element.hasLanguageCode()) { 
33233        for (CodeableConcept e : element.getLanguageCode()) 
33234          composeCodeableConcept("languageCode", e);
33235      }
33236      if (element.hasCapability()) { 
33237        for (DeviceDefinition.DeviceDefinitionCapabilityComponent e : element.getCapability()) 
33238          composeDeviceDefinitionDeviceDefinitionCapabilityComponent("capability", e);
33239      }
33240      if (element.hasProperty()) { 
33241        for (DeviceDefinition.DeviceDefinitionPropertyComponent e : element.getProperty()) 
33242          composeDeviceDefinitionDeviceDefinitionPropertyComponent("property", e);
33243      }
33244      if (element.hasOwner()) {
33245        composeReference("owner", element.getOwner());
33246      }
33247      if (element.hasContact()) { 
33248        for (ContactPoint e : element.getContact()) 
33249          composeContactPoint("contact", e);
33250      }
33251      if (element.hasUrlElement()) {
33252        composeUri("url", element.getUrlElement());
33253      }
33254      if (element.hasOnlineInformationElement()) {
33255        composeUri("onlineInformation", element.getOnlineInformationElement());
33256      }
33257      if (element.hasNote()) { 
33258        for (Annotation e : element.getNote()) 
33259          composeAnnotation("note", e);
33260      }
33261      if (element.hasQuantity()) {
33262        composeQuantity("quantity", element.getQuantity());
33263      }
33264      if (element.hasParentDevice()) {
33265        composeReference("parentDevice", element.getParentDevice());
33266      }
33267      if (element.hasMaterial()) { 
33268        for (DeviceDefinition.DeviceDefinitionMaterialComponent e : element.getMaterial()) 
33269          composeDeviceDefinitionDeviceDefinitionMaterialComponent("material", e);
33270      }
33271  }
33272
33273  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(String name, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
33274    if (element != null) {
33275      composeElementAttributes(element);
33276      xml.enter(FHIR_NS, name);
33277      composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentElements(element);
33278      composeElementClose(element);
33279      xml.exit(FHIR_NS, name);
33280    }
33281  }
33282
33283  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentElements(DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
33284      composeBackboneElementElements(element);
33285      if (element.hasDeviceIdentifierElement()) {
33286        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
33287      }
33288      if (element.hasIssuerElement()) {
33289        composeUri("issuer", element.getIssuerElement());
33290      }
33291      if (element.hasJurisdictionElement()) {
33292        composeUri("jurisdiction", element.getJurisdictionElement());
33293      }
33294  }
33295
33296  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponent(String name, DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
33297    if (element != null) {
33298      composeElementAttributes(element);
33299      xml.enter(FHIR_NS, name);
33300      composeDeviceDefinitionDeviceDefinitionDeviceNameComponentElements(element);
33301      composeElementClose(element);
33302      xml.exit(FHIR_NS, name);
33303    }
33304  }
33305
33306  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponentElements(DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
33307      composeBackboneElementElements(element);
33308      if (element.hasNameElement()) {
33309        composeString("name", element.getNameElement());
33310      }
33311      if (element.hasTypeElement())
33312        composeEnumeration("type", element.getTypeElement(), new DeviceDefinition.DeviceNameTypeEnumFactory());
33313  }
33314
33315  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponent(String name, DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
33316    if (element != null) {
33317      composeElementAttributes(element);
33318      xml.enter(FHIR_NS, name);
33319      composeDeviceDefinitionDeviceDefinitionSpecializationComponentElements(element);
33320      composeElementClose(element);
33321      xml.exit(FHIR_NS, name);
33322    }
33323  }
33324
33325  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponentElements(DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
33326      composeBackboneElementElements(element);
33327      if (element.hasSystemTypeElement()) {
33328        composeString("systemType", element.getSystemTypeElement());
33329      }
33330      if (element.hasVersionElement()) {
33331        composeString("version", element.getVersionElement());
33332      }
33333  }
33334
33335  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponent(String name, DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
33336    if (element != null) {
33337      composeElementAttributes(element);
33338      xml.enter(FHIR_NS, name);
33339      composeDeviceDefinitionDeviceDefinitionCapabilityComponentElements(element);
33340      composeElementClose(element);
33341      xml.exit(FHIR_NS, name);
33342    }
33343  }
33344
33345  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponentElements(DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
33346      composeBackboneElementElements(element);
33347      if (element.hasType()) {
33348        composeCodeableConcept("type", element.getType());
33349      }
33350      if (element.hasDescription()) { 
33351        for (CodeableConcept e : element.getDescription()) 
33352          composeCodeableConcept("description", e);
33353      }
33354  }
33355
33356  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponent(String name, DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
33357    if (element != null) {
33358      composeElementAttributes(element);
33359      xml.enter(FHIR_NS, name);
33360      composeDeviceDefinitionDeviceDefinitionPropertyComponentElements(element);
33361      composeElementClose(element);
33362      xml.exit(FHIR_NS, name);
33363    }
33364  }
33365
33366  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponentElements(DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
33367      composeBackboneElementElements(element);
33368      if (element.hasType()) {
33369        composeCodeableConcept("type", element.getType());
33370      }
33371      if (element.hasValueQuantity()) { 
33372        for (Quantity e : element.getValueQuantity()) 
33373          composeQuantity("valueQuantity", e);
33374      }
33375      if (element.hasValueCode()) { 
33376        for (CodeableConcept e : element.getValueCode()) 
33377          composeCodeableConcept("valueCode", e);
33378      }
33379  }
33380
33381  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponent(String name, DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
33382    if (element != null) {
33383      composeElementAttributes(element);
33384      xml.enter(FHIR_NS, name);
33385      composeDeviceDefinitionDeviceDefinitionMaterialComponentElements(element);
33386      composeElementClose(element);
33387      xml.exit(FHIR_NS, name);
33388    }
33389  }
33390
33391  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponentElements(DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
33392      composeBackboneElementElements(element);
33393      if (element.hasSubstance()) {
33394        composeCodeableConcept("substance", element.getSubstance());
33395      }
33396      if (element.hasAlternateElement()) {
33397        composeBoolean("alternate", element.getAlternateElement());
33398      }
33399      if (element.hasAllergenicIndicatorElement()) {
33400        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
33401      }
33402  }
33403
33404  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
33405    if (element != null) {
33406      composeDomainResourceAttributes(element);
33407      xml.enter(FHIR_NS, name);
33408      composeDeviceMetricElements(element);
33409      composeElementClose(element);
33410      xml.exit(FHIR_NS, name);
33411    }
33412  }
33413
33414  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
33415      composeDomainResourceElements(element);
33416      if (element.hasIdentifier()) { 
33417        for (Identifier e : element.getIdentifier()) 
33418          composeIdentifier("identifier", e);
33419      }
33420      if (element.hasType()) {
33421        composeCodeableConcept("type", element.getType());
33422      }
33423      if (element.hasUnit()) {
33424        composeCodeableConcept("unit", element.getUnit());
33425      }
33426      if (element.hasSource()) {
33427        composeReference("source", element.getSource());
33428      }
33429      if (element.hasParent()) {
33430        composeReference("parent", element.getParent());
33431      }
33432      if (element.hasOperationalStatusElement())
33433        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
33434      if (element.hasColorElement())
33435        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
33436      if (element.hasCategoryElement())
33437        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
33438      if (element.hasMeasurementPeriod()) {
33439        composeTiming("measurementPeriod", element.getMeasurementPeriod());
33440      }
33441      if (element.hasCalibration()) { 
33442        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
33443          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
33444      }
33445  }
33446
33447  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
33448    if (element != null) {
33449      composeElementAttributes(element);
33450      xml.enter(FHIR_NS, name);
33451      composeDeviceMetricDeviceMetricCalibrationComponentElements(element);
33452      composeElementClose(element);
33453      xml.exit(FHIR_NS, name);
33454    }
33455  }
33456
33457  protected void composeDeviceMetricDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
33458      composeBackboneElementElements(element);
33459      if (element.hasTypeElement())
33460        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
33461      if (element.hasStateElement())
33462        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
33463      if (element.hasTimeElement()) {
33464        composeInstant("time", element.getTimeElement());
33465      }
33466  }
33467
33468  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
33469    if (element != null) {
33470      composeDomainResourceAttributes(element);
33471      xml.enter(FHIR_NS, name);
33472      composeDeviceRequestElements(element);
33473      composeElementClose(element);
33474      xml.exit(FHIR_NS, name);
33475    }
33476  }
33477
33478  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
33479      composeDomainResourceElements(element);
33480      if (element.hasIdentifier()) { 
33481        for (Identifier e : element.getIdentifier()) 
33482          composeIdentifier("identifier", e);
33483      }
33484      if (element.hasInstantiatesCanonical()) { 
33485        for (CanonicalType e : element.getInstantiatesCanonical()) 
33486          composeCanonical("instantiatesCanonical", e);
33487      }
33488      if (element.hasInstantiatesUri()) { 
33489        for (UriType e : element.getInstantiatesUri()) 
33490          composeUri("instantiatesUri", e);
33491      }
33492      if (element.hasBasedOn()) { 
33493        for (Reference e : element.getBasedOn()) 
33494          composeReference("basedOn", e);
33495      }
33496      if (element.hasPriorRequest()) { 
33497        for (Reference e : element.getPriorRequest()) 
33498          composeReference("priorRequest", e);
33499      }
33500      if (element.hasGroupIdentifier()) {
33501        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33502      }
33503      if (element.hasStatusElement())
33504        composeEnumeration("status", element.getStatusElement(), new DeviceRequest.DeviceRequestStatusEnumFactory());
33505      if (element.hasIntentElement())
33506        composeEnumeration("intent", element.getIntentElement(), new DeviceRequest.RequestIntentEnumFactory());
33507      if (element.hasPriorityElement())
33508        composeEnumeration("priority", element.getPriorityElement(), new DeviceRequest.RequestPriorityEnumFactory());
33509      if (element.hasCode()) {
33510        composeType("code", element.getCode());
33511      }      if (element.hasParameter()) { 
33512        for (DeviceRequest.DeviceRequestParameterComponent e : element.getParameter()) 
33513          composeDeviceRequestDeviceRequestParameterComponent("parameter", e);
33514      }
33515      if (element.hasSubject()) {
33516        composeReference("subject", element.getSubject());
33517      }
33518      if (element.hasEncounter()) {
33519        composeReference("encounter", element.getEncounter());
33520      }
33521      if (element.hasOccurrence()) {
33522        composeType("occurrence", element.getOccurrence());
33523      }      if (element.hasAuthoredOnElement()) {
33524        composeDateTime("authoredOn", element.getAuthoredOnElement());
33525      }
33526      if (element.hasRequester()) {
33527        composeReference("requester", element.getRequester());
33528      }
33529      if (element.hasPerformerType()) {
33530        composeCodeableConcept("performerType", element.getPerformerType());
33531      }
33532      if (element.hasPerformer()) {
33533        composeReference("performer", element.getPerformer());
33534      }
33535      if (element.hasReasonCode()) { 
33536        for (CodeableConcept e : element.getReasonCode()) 
33537          composeCodeableConcept("reasonCode", e);
33538      }
33539      if (element.hasReasonReference()) { 
33540        for (Reference e : element.getReasonReference()) 
33541          composeReference("reasonReference", e);
33542      }
33543      if (element.hasInsurance()) { 
33544        for (Reference e : element.getInsurance()) 
33545          composeReference("insurance", e);
33546      }
33547      if (element.hasSupportingInfo()) { 
33548        for (Reference e : element.getSupportingInfo()) 
33549          composeReference("supportingInfo", e);
33550      }
33551      if (element.hasNote()) { 
33552        for (Annotation e : element.getNote()) 
33553          composeAnnotation("note", e);
33554      }
33555      if (element.hasRelevantHistory()) { 
33556        for (Reference e : element.getRelevantHistory()) 
33557          composeReference("relevantHistory", e);
33558      }
33559  }
33560
33561  protected void composeDeviceRequestDeviceRequestParameterComponent(String name, DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
33562    if (element != null) {
33563      composeElementAttributes(element);
33564      xml.enter(FHIR_NS, name);
33565      composeDeviceRequestDeviceRequestParameterComponentElements(element);
33566      composeElementClose(element);
33567      xml.exit(FHIR_NS, name);
33568    }
33569  }
33570
33571  protected void composeDeviceRequestDeviceRequestParameterComponentElements(DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
33572      composeBackboneElementElements(element);
33573      if (element.hasCode()) {
33574        composeCodeableConcept("code", element.getCode());
33575      }
33576      if (element.hasValue()) {
33577        composeType("value", element.getValue());
33578      }  }
33579
33580  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
33581    if (element != null) {
33582      composeDomainResourceAttributes(element);
33583      xml.enter(FHIR_NS, name);
33584      composeDeviceUseStatementElements(element);
33585      composeElementClose(element);
33586      xml.exit(FHIR_NS, name);
33587    }
33588  }
33589
33590  protected void composeDeviceUseStatementElements(DeviceUseStatement element) throws IOException {
33591      composeDomainResourceElements(element);
33592      if (element.hasIdentifier()) { 
33593        for (Identifier e : element.getIdentifier()) 
33594          composeIdentifier("identifier", e);
33595      }
33596      if (element.hasBasedOn()) { 
33597        for (Reference e : element.getBasedOn()) 
33598          composeReference("basedOn", e);
33599      }
33600      if (element.hasStatusElement())
33601        composeEnumeration("status", element.getStatusElement(), new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
33602      if (element.hasSubject()) {
33603        composeReference("subject", element.getSubject());
33604      }
33605      if (element.hasDerivedFrom()) { 
33606        for (Reference e : element.getDerivedFrom()) 
33607          composeReference("derivedFrom", e);
33608      }
33609      if (element.hasTiming()) {
33610        composeType("timing", element.getTiming());
33611      }      if (element.hasRecordedOnElement()) {
33612        composeDateTime("recordedOn", element.getRecordedOnElement());
33613      }
33614      if (element.hasSource()) {
33615        composeReference("source", element.getSource());
33616      }
33617      if (element.hasDevice()) {
33618        composeReference("device", element.getDevice());
33619      }
33620      if (element.hasReasonCode()) { 
33621        for (CodeableConcept e : element.getReasonCode()) 
33622          composeCodeableConcept("reasonCode", e);
33623      }
33624      if (element.hasReasonReference()) { 
33625        for (Reference e : element.getReasonReference()) 
33626          composeReference("reasonReference", e);
33627      }
33628      if (element.hasBodySite()) {
33629        composeCodeableConcept("bodySite", element.getBodySite());
33630      }
33631      if (element.hasNote()) { 
33632        for (Annotation e : element.getNote()) 
33633          composeAnnotation("note", e);
33634      }
33635  }
33636
33637  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
33638    if (element != null) {
33639      composeDomainResourceAttributes(element);
33640      xml.enter(FHIR_NS, name);
33641      composeDiagnosticReportElements(element);
33642      composeElementClose(element);
33643      xml.exit(FHIR_NS, name);
33644    }
33645  }
33646
33647  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
33648      composeDomainResourceElements(element);
33649      if (element.hasIdentifier()) { 
33650        for (Identifier e : element.getIdentifier()) 
33651          composeIdentifier("identifier", e);
33652      }
33653      if (element.hasBasedOn()) { 
33654        for (Reference e : element.getBasedOn()) 
33655          composeReference("basedOn", e);
33656      }
33657      if (element.hasStatusElement())
33658        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
33659      if (element.hasCategory()) { 
33660        for (CodeableConcept e : element.getCategory()) 
33661          composeCodeableConcept("category", e);
33662      }
33663      if (element.hasCode()) {
33664        composeCodeableConcept("code", element.getCode());
33665      }
33666      if (element.hasSubject()) {
33667        composeReference("subject", element.getSubject());
33668      }
33669      if (element.hasEncounter()) {
33670        composeReference("encounter", element.getEncounter());
33671      }
33672      if (element.hasEffective()) {
33673        composeType("effective", element.getEffective());
33674      }      if (element.hasIssuedElement()) {
33675        composeInstant("issued", element.getIssuedElement());
33676      }
33677      if (element.hasPerformer()) { 
33678        for (Reference e : element.getPerformer()) 
33679          composeReference("performer", e);
33680      }
33681      if (element.hasResultsInterpreter()) { 
33682        for (Reference e : element.getResultsInterpreter()) 
33683          composeReference("resultsInterpreter", e);
33684      }
33685      if (element.hasSpecimen()) { 
33686        for (Reference e : element.getSpecimen()) 
33687          composeReference("specimen", e);
33688      }
33689      if (element.hasResult()) { 
33690        for (Reference e : element.getResult()) 
33691          composeReference("result", e);
33692      }
33693      if (element.hasImagingStudy()) { 
33694        for (Reference e : element.getImagingStudy()) 
33695          composeReference("imagingStudy", e);
33696      }
33697      if (element.hasMedia()) { 
33698        for (DiagnosticReport.DiagnosticReportMediaComponent e : element.getMedia()) 
33699          composeDiagnosticReportDiagnosticReportMediaComponent("media", e);
33700      }
33701      if (element.hasConclusionElement()) {
33702        composeString("conclusion", element.getConclusionElement());
33703      }
33704      if (element.hasConclusionCode()) { 
33705        for (CodeableConcept e : element.getConclusionCode()) 
33706          composeCodeableConcept("conclusionCode", e);
33707      }
33708      if (element.hasPresentedForm()) { 
33709        for (Attachment e : element.getPresentedForm()) 
33710          composeAttachment("presentedForm", e);
33711      }
33712  }
33713
33714  protected void composeDiagnosticReportDiagnosticReportMediaComponent(String name, DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
33715    if (element != null) {
33716      composeElementAttributes(element);
33717      xml.enter(FHIR_NS, name);
33718      composeDiagnosticReportDiagnosticReportMediaComponentElements(element);
33719      composeElementClose(element);
33720      xml.exit(FHIR_NS, name);
33721    }
33722  }
33723
33724  protected void composeDiagnosticReportDiagnosticReportMediaComponentElements(DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
33725      composeBackboneElementElements(element);
33726      if (element.hasCommentElement()) {
33727        composeString("comment", element.getCommentElement());
33728      }
33729      if (element.hasLink()) {
33730        composeReference("link", element.getLink());
33731      }
33732  }
33733
33734  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
33735    if (element != null) {
33736      composeDomainResourceAttributes(element);
33737      xml.enter(FHIR_NS, name);
33738      composeDocumentManifestElements(element);
33739      composeElementClose(element);
33740      xml.exit(FHIR_NS, name);
33741    }
33742  }
33743
33744  protected void composeDocumentManifestElements(DocumentManifest element) throws IOException {
33745      composeDomainResourceElements(element);
33746      if (element.hasMasterIdentifier()) {
33747        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
33748      }
33749      if (element.hasIdentifier()) { 
33750        for (Identifier e : element.getIdentifier()) 
33751          composeIdentifier("identifier", e);
33752      }
33753      if (element.hasStatusElement())
33754        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
33755      if (element.hasType()) {
33756        composeCodeableConcept("type", element.getType());
33757      }
33758      if (element.hasSubject()) {
33759        composeReference("subject", element.getSubject());
33760      }
33761      if (element.hasCreatedElement()) {
33762        composeDateTime("created", element.getCreatedElement());
33763      }
33764      if (element.hasAuthor()) { 
33765        for (Reference e : element.getAuthor()) 
33766          composeReference("author", e);
33767      }
33768      if (element.hasRecipient()) { 
33769        for (Reference e : element.getRecipient()) 
33770          composeReference("recipient", e);
33771      }
33772      if (element.hasSourceElement()) {
33773        composeUri("source", element.getSourceElement());
33774      }
33775      if (element.hasDescriptionElement()) {
33776        composeString("description", element.getDescriptionElement());
33777      }
33778      if (element.hasContent()) { 
33779        for (Reference e : element.getContent()) 
33780          composeReference("content", e);
33781      }
33782      if (element.hasRelated()) { 
33783        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
33784          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
33785      }
33786  }
33787
33788  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
33789    if (element != null) {
33790      composeElementAttributes(element);
33791      xml.enter(FHIR_NS, name);
33792      composeDocumentManifestDocumentManifestRelatedComponentElements(element);
33793      composeElementClose(element);
33794      xml.exit(FHIR_NS, name);
33795    }
33796  }
33797
33798  protected void composeDocumentManifestDocumentManifestRelatedComponentElements(DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
33799      composeBackboneElementElements(element);
33800      if (element.hasIdentifier()) {
33801        composeIdentifier("identifier", element.getIdentifier());
33802      }
33803      if (element.hasRef()) {
33804        composeReference("ref", element.getRef());
33805      }
33806  }
33807
33808  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
33809    if (element != null) {
33810      composeDomainResourceAttributes(element);
33811      xml.enter(FHIR_NS, name);
33812      composeDocumentReferenceElements(element);
33813      composeElementClose(element);
33814      xml.exit(FHIR_NS, name);
33815    }
33816  }
33817
33818  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
33819      composeDomainResourceElements(element);
33820      if (element.hasMasterIdentifier()) {
33821        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
33822      }
33823      if (element.hasIdentifier()) { 
33824        for (Identifier e : element.getIdentifier()) 
33825          composeIdentifier("identifier", e);
33826      }
33827      if (element.hasStatusElement())
33828        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
33829      if (element.hasDocStatusElement())
33830        composeEnumeration("docStatus", element.getDocStatusElement(), new DocumentReference.ReferredDocumentStatusEnumFactory());
33831      if (element.hasType()) {
33832        composeCodeableConcept("type", element.getType());
33833      }
33834      if (element.hasCategory()) { 
33835        for (CodeableConcept e : element.getCategory()) 
33836          composeCodeableConcept("category", e);
33837      }
33838      if (element.hasSubject()) {
33839        composeReference("subject", element.getSubject());
33840      }
33841      if (element.hasDateElement()) {
33842        composeInstant("date", element.getDateElement());
33843      }
33844      if (element.hasAuthor()) { 
33845        for (Reference e : element.getAuthor()) 
33846          composeReference("author", e);
33847      }
33848      if (element.hasAuthenticator()) {
33849        composeReference("authenticator", element.getAuthenticator());
33850      }
33851      if (element.hasCustodian()) {
33852        composeReference("custodian", element.getCustodian());
33853      }
33854      if (element.hasRelatesTo()) { 
33855        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
33856          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
33857      }
33858      if (element.hasDescriptionElement()) {
33859        composeString("description", element.getDescriptionElement());
33860      }
33861      if (element.hasSecurityLabel()) { 
33862        for (CodeableConcept e : element.getSecurityLabel()) 
33863          composeCodeableConcept("securityLabel", e);
33864      }
33865      if (element.hasContent()) { 
33866        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
33867          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
33868      }
33869      if (element.hasContext()) {
33870        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
33871      }
33872  }
33873
33874  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
33875    if (element != null) {
33876      composeElementAttributes(element);
33877      xml.enter(FHIR_NS, name);
33878      composeDocumentReferenceDocumentReferenceRelatesToComponentElements(element);
33879      composeElementClose(element);
33880      xml.exit(FHIR_NS, name);
33881    }
33882  }
33883
33884  protected void composeDocumentReferenceDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
33885      composeBackboneElementElements(element);
33886      if (element.hasCodeElement())
33887        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
33888      if (element.hasTarget()) {
33889        composeReference("target", element.getTarget());
33890      }
33891  }
33892
33893  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
33894    if (element != null) {
33895      composeElementAttributes(element);
33896      xml.enter(FHIR_NS, name);
33897      composeDocumentReferenceDocumentReferenceContentComponentElements(element);
33898      composeElementClose(element);
33899      xml.exit(FHIR_NS, name);
33900    }
33901  }
33902
33903  protected void composeDocumentReferenceDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
33904      composeBackboneElementElements(element);
33905      if (element.hasAttachment()) {
33906        composeAttachment("attachment", element.getAttachment());
33907      }
33908      if (element.hasFormat()) {
33909        composeCoding("format", element.getFormat());
33910      }
33911  }
33912
33913  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
33914    if (element != null) {
33915      composeElementAttributes(element);
33916      xml.enter(FHIR_NS, name);
33917      composeDocumentReferenceDocumentReferenceContextComponentElements(element);
33918      composeElementClose(element);
33919      xml.exit(FHIR_NS, name);
33920    }
33921  }
33922
33923  protected void composeDocumentReferenceDocumentReferenceContextComponentElements(DocumentReference.DocumentReferenceContextComponent element) throws IOException {
33924      composeBackboneElementElements(element);
33925      if (element.hasEncounter()) { 
33926        for (Reference e : element.getEncounter()) 
33927          composeReference("encounter", e);
33928      }
33929      if (element.hasEvent()) { 
33930        for (CodeableConcept e : element.getEvent()) 
33931          composeCodeableConcept("event", e);
33932      }
33933      if (element.hasPeriod()) {
33934        composePeriod("period", element.getPeriod());
33935      }
33936      if (element.hasFacilityType()) {
33937        composeCodeableConcept("facilityType", element.getFacilityType());
33938      }
33939      if (element.hasPracticeSetting()) {
33940        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
33941      }
33942      if (element.hasSourcePatientInfo()) {
33943        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
33944      }
33945      if (element.hasRelated()) { 
33946        for (Reference e : element.getRelated()) 
33947          composeReference("related", e);
33948      }
33949  }
33950
33951  protected void composeEffectEvidenceSynthesis(String name, EffectEvidenceSynthesis element) throws IOException {
33952    if (element != null) {
33953      composeDomainResourceAttributes(element);
33954      xml.enter(FHIR_NS, name);
33955      composeEffectEvidenceSynthesisElements(element);
33956      composeElementClose(element);
33957      xml.exit(FHIR_NS, name);
33958    }
33959  }
33960
33961  protected void composeEffectEvidenceSynthesisElements(EffectEvidenceSynthesis element) throws IOException {
33962      composeDomainResourceElements(element);
33963      if (element.hasUrlElement()) {
33964        composeUri("url", element.getUrlElement());
33965      }
33966      if (element.hasIdentifier()) { 
33967        for (Identifier e : element.getIdentifier()) 
33968          composeIdentifier("identifier", e);
33969      }
33970      if (element.hasVersionElement()) {
33971        composeString("version", element.getVersionElement());
33972      }
33973      if (element.hasNameElement()) {
33974        composeString("name", element.getNameElement());
33975      }
33976      if (element.hasTitleElement()) {
33977        composeString("title", element.getTitleElement());
33978      }
33979      if (element.hasStatusElement())
33980        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33981      if (element.hasDateElement()) {
33982        composeDateTime("date", element.getDateElement());
33983      }
33984      if (element.hasPublisherElement()) {
33985        composeString("publisher", element.getPublisherElement());
33986      }
33987      if (element.hasContact()) { 
33988        for (ContactDetail e : element.getContact()) 
33989          composeContactDetail("contact", e);
33990      }
33991      if (element.hasDescriptionElement()) {
33992        composeMarkdown("description", element.getDescriptionElement());
33993      }
33994      if (element.hasNote()) { 
33995        for (Annotation e : element.getNote()) 
33996          composeAnnotation("note", e);
33997      }
33998      if (element.hasUseContext()) { 
33999        for (UsageContext e : element.getUseContext()) 
34000          composeUsageContext("useContext", e);
34001      }
34002      if (element.hasJurisdiction()) { 
34003        for (CodeableConcept e : element.getJurisdiction()) 
34004          composeCodeableConcept("jurisdiction", e);
34005      }
34006      if (element.hasCopyrightElement()) {
34007        composeMarkdown("copyright", element.getCopyrightElement());
34008      }
34009      if (element.hasApprovalDateElement()) {
34010        composeDate("approvalDate", element.getApprovalDateElement());
34011      }
34012      if (element.hasLastReviewDateElement()) {
34013        composeDate("lastReviewDate", element.getLastReviewDateElement());
34014      }
34015      if (element.hasEffectivePeriod()) {
34016        composePeriod("effectivePeriod", element.getEffectivePeriod());
34017      }
34018      if (element.hasTopic()) { 
34019        for (CodeableConcept e : element.getTopic()) 
34020          composeCodeableConcept("topic", e);
34021      }
34022      if (element.hasAuthor()) { 
34023        for (ContactDetail e : element.getAuthor()) 
34024          composeContactDetail("author", e);
34025      }
34026      if (element.hasEditor()) { 
34027        for (ContactDetail e : element.getEditor()) 
34028          composeContactDetail("editor", e);
34029      }
34030      if (element.hasReviewer()) { 
34031        for (ContactDetail e : element.getReviewer()) 
34032          composeContactDetail("reviewer", e);
34033      }
34034      if (element.hasEndorser()) { 
34035        for (ContactDetail e : element.getEndorser()) 
34036          composeContactDetail("endorser", e);
34037      }
34038      if (element.hasRelatedArtifact()) { 
34039        for (RelatedArtifact e : element.getRelatedArtifact()) 
34040          composeRelatedArtifact("relatedArtifact", e);
34041      }
34042      if (element.hasSynthesisType()) {
34043        composeCodeableConcept("synthesisType", element.getSynthesisType());
34044      }
34045      if (element.hasStudyType()) {
34046        composeCodeableConcept("studyType", element.getStudyType());
34047      }
34048      if (element.hasPopulation()) {
34049        composeReference("population", element.getPopulation());
34050      }
34051      if (element.hasExposure()) {
34052        composeReference("exposure", element.getExposure());
34053      }
34054      if (element.hasExposureAlternative()) {
34055        composeReference("exposureAlternative", element.getExposureAlternative());
34056      }
34057      if (element.hasOutcome()) {
34058        composeReference("outcome", element.getOutcome());
34059      }
34060      if (element.hasSampleSize()) {
34061        composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent("sampleSize", element.getSampleSize());
34062      }
34063      if (element.hasResultsByExposure()) { 
34064        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent e : element.getResultsByExposure()) 
34065          composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent("resultsByExposure", e);
34066      }
34067      if (element.hasEffectEstimate()) { 
34068        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent e : element.getEffectEstimate()) 
34069          composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent("effectEstimate", e);
34070      }
34071      if (element.hasCertainty()) { 
34072        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent e : element.getCertainty()) 
34073          composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent("certainty", e);
34074      }
34075  }
34076
34077  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent element) throws IOException {
34078    if (element != null) {
34079      composeElementAttributes(element);
34080      xml.enter(FHIR_NS, name);
34081      composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentElements(element);
34082      composeElementClose(element);
34083      xml.exit(FHIR_NS, name);
34084    }
34085  }
34086
34087  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent element) throws IOException {
34088      composeBackboneElementElements(element);
34089      if (element.hasDescriptionElement()) {
34090        composeString("description", element.getDescriptionElement());
34091      }
34092      if (element.hasNumberOfStudiesElement()) {
34093        composeInteger("numberOfStudies", element.getNumberOfStudiesElement());
34094      }
34095      if (element.hasNumberOfParticipantsElement()) {
34096        composeInteger("numberOfParticipants", element.getNumberOfParticipantsElement());
34097      }
34098  }
34099
34100  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent element) throws IOException {
34101    if (element != null) {
34102      composeElementAttributes(element);
34103      xml.enter(FHIR_NS, name);
34104      composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentElements(element);
34105      composeElementClose(element);
34106      xml.exit(FHIR_NS, name);
34107    }
34108  }
34109
34110  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent element) throws IOException {
34111      composeBackboneElementElements(element);
34112      if (element.hasDescriptionElement()) {
34113        composeString("description", element.getDescriptionElement());
34114      }
34115      if (element.hasExposureStateElement())
34116        composeEnumeration("exposureState", element.getExposureStateElement(), new EffectEvidenceSynthesis.ExposureStateEnumFactory());
34117      if (element.hasVariantState()) {
34118        composeCodeableConcept("variantState", element.getVariantState());
34119      }
34120      if (element.hasRiskEvidenceSynthesis()) {
34121        composeReference("riskEvidenceSynthesis", element.getRiskEvidenceSynthesis());
34122      }
34123  }
34124
34125  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent element) throws IOException {
34126    if (element != null) {
34127      composeElementAttributes(element);
34128      xml.enter(FHIR_NS, name);
34129      composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentElements(element);
34130      composeElementClose(element);
34131      xml.exit(FHIR_NS, name);
34132    }
34133  }
34134
34135  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent element) throws IOException {
34136      composeBackboneElementElements(element);
34137      if (element.hasDescriptionElement()) {
34138        composeString("description", element.getDescriptionElement());
34139      }
34140      if (element.hasType()) {
34141        composeCodeableConcept("type", element.getType());
34142      }
34143      if (element.hasVariantState()) {
34144        composeCodeableConcept("variantState", element.getVariantState());
34145      }
34146      if (element.hasValueElement()) {
34147        composeDecimal("value", element.getValueElement());
34148      }
34149      if (element.hasUnitOfMeasure()) {
34150        composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
34151      }
34152      if (element.hasPrecisionEstimate()) { 
34153        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent e : element.getPrecisionEstimate()) 
34154          composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent("precisionEstimate", e);
34155      }
34156  }
34157
34158  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent element) throws IOException {
34159    if (element != null) {
34160      composeElementAttributes(element);
34161      xml.enter(FHIR_NS, name);
34162      composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentElements(element);
34163      composeElementClose(element);
34164      xml.exit(FHIR_NS, name);
34165    }
34166  }
34167
34168  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent element) throws IOException {
34169      composeBackboneElementElements(element);
34170      if (element.hasType()) {
34171        composeCodeableConcept("type", element.getType());
34172      }
34173      if (element.hasLevelElement()) {
34174        composeDecimal("level", element.getLevelElement());
34175      }
34176      if (element.hasFromElement()) {
34177        composeDecimal("from", element.getFromElement());
34178      }
34179      if (element.hasToElement()) {
34180        composeDecimal("to", element.getToElement());
34181      }
34182  }
34183
34184  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent element) throws IOException {
34185    if (element != null) {
34186      composeElementAttributes(element);
34187      xml.enter(FHIR_NS, name);
34188      composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentElements(element);
34189      composeElementClose(element);
34190      xml.exit(FHIR_NS, name);
34191    }
34192  }
34193
34194  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent element) throws IOException {
34195      composeBackboneElementElements(element);
34196      if (element.hasRating()) { 
34197        for (CodeableConcept e : element.getRating()) 
34198          composeCodeableConcept("rating", e);
34199      }
34200      if (element.hasNote()) { 
34201        for (Annotation e : element.getNote()) 
34202          composeAnnotation("note", e);
34203      }
34204      if (element.hasCertaintySubcomponent()) { 
34205        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent e : element.getCertaintySubcomponent()) 
34206          composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent("certaintySubcomponent", e);
34207      }
34208  }
34209
34210  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
34211    if (element != null) {
34212      composeElementAttributes(element);
34213      xml.enter(FHIR_NS, name);
34214      composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(element);
34215      composeElementClose(element);
34216      xml.exit(FHIR_NS, name);
34217    }
34218  }
34219
34220  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
34221      composeBackboneElementElements(element);
34222      if (element.hasType()) {
34223        composeCodeableConcept("type", element.getType());
34224      }
34225      if (element.hasRating()) { 
34226        for (CodeableConcept e : element.getRating()) 
34227          composeCodeableConcept("rating", e);
34228      }
34229      if (element.hasNote()) { 
34230        for (Annotation e : element.getNote()) 
34231          composeAnnotation("note", e);
34232      }
34233  }
34234
34235  protected void composeEncounter(String name, Encounter element) throws IOException {
34236    if (element != null) {
34237      composeDomainResourceAttributes(element);
34238      xml.enter(FHIR_NS, name);
34239      composeEncounterElements(element);
34240      composeElementClose(element);
34241      xml.exit(FHIR_NS, name);
34242    }
34243  }
34244
34245  protected void composeEncounterElements(Encounter element) throws IOException {
34246      composeDomainResourceElements(element);
34247      if (element.hasIdentifier()) { 
34248        for (Identifier e : element.getIdentifier()) 
34249          composeIdentifier("identifier", e);
34250      }
34251      if (element.hasStatusElement())
34252        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
34253      if (element.hasStatusHistory()) { 
34254        for (Encounter.StatusHistoryComponent e : element.getStatusHistory()) 
34255          composeEncounterStatusHistoryComponent("statusHistory", e);
34256      }
34257      if (element.hasClass_()) {
34258        composeCoding("class", element.getClass_());
34259      }
34260      if (element.hasClassHistory()) { 
34261        for (Encounter.ClassHistoryComponent e : element.getClassHistory()) 
34262          composeEncounterClassHistoryComponent("classHistory", e);
34263      }
34264      if (element.hasType()) { 
34265        for (CodeableConcept e : element.getType()) 
34266          composeCodeableConcept("type", e);
34267      }
34268      if (element.hasServiceType()) {
34269        composeCodeableConcept("serviceType", element.getServiceType());
34270      }
34271      if (element.hasPriority()) {
34272        composeCodeableConcept("priority", element.getPriority());
34273      }
34274      if (element.hasSubject()) {
34275        composeReference("subject", element.getSubject());
34276      }
34277      if (element.hasEpisodeOfCare()) { 
34278        for (Reference e : element.getEpisodeOfCare()) 
34279          composeReference("episodeOfCare", e);
34280      }
34281      if (element.hasBasedOn()) { 
34282        for (Reference e : element.getBasedOn()) 
34283          composeReference("basedOn", e);
34284      }
34285      if (element.hasParticipant()) { 
34286        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
34287          composeEncounterEncounterParticipantComponent("participant", e);
34288      }
34289      if (element.hasAppointment()) { 
34290        for (Reference e : element.getAppointment()) 
34291          composeReference("appointment", e);
34292      }
34293      if (element.hasPeriod()) {
34294        composePeriod("period", element.getPeriod());
34295      }
34296      if (element.hasLength()) {
34297        composeDuration("length", element.getLength());
34298      }
34299      if (element.hasReasonCode()) { 
34300        for (CodeableConcept e : element.getReasonCode()) 
34301          composeCodeableConcept("reasonCode", e);
34302      }
34303      if (element.hasReasonReference()) { 
34304        for (Reference e : element.getReasonReference()) 
34305          composeReference("reasonReference", e);
34306      }
34307      if (element.hasDiagnosis()) { 
34308        for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
34309          composeEncounterDiagnosisComponent("diagnosis", e);
34310      }
34311      if (element.hasAccount()) { 
34312        for (Reference e : element.getAccount()) 
34313          composeReference("account", e);
34314      }
34315      if (element.hasHospitalization()) {
34316        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
34317      }
34318      if (element.hasLocation()) { 
34319        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
34320          composeEncounterEncounterLocationComponent("location", e);
34321      }
34322      if (element.hasServiceProvider()) {
34323        composeReference("serviceProvider", element.getServiceProvider());
34324      }
34325      if (element.hasPartOf()) {
34326        composeReference("partOf", element.getPartOf());
34327      }
34328  }
34329
34330  protected void composeEncounterStatusHistoryComponent(String name, Encounter.StatusHistoryComponent element) throws IOException {
34331    if (element != null) {
34332      composeElementAttributes(element);
34333      xml.enter(FHIR_NS, name);
34334      composeEncounterStatusHistoryComponentElements(element);
34335      composeElementClose(element);
34336      xml.exit(FHIR_NS, name);
34337    }
34338  }
34339
34340  protected void composeEncounterStatusHistoryComponentElements(Encounter.StatusHistoryComponent element) throws IOException {
34341      composeBackboneElementElements(element);
34342      if (element.hasStatusElement())
34343        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
34344      if (element.hasPeriod()) {
34345        composePeriod("period", element.getPeriod());
34346      }
34347  }
34348
34349  protected void composeEncounterClassHistoryComponent(String name, Encounter.ClassHistoryComponent element) throws IOException {
34350    if (element != null) {
34351      composeElementAttributes(element);
34352      xml.enter(FHIR_NS, name);
34353      composeEncounterClassHistoryComponentElements(element);
34354      composeElementClose(element);
34355      xml.exit(FHIR_NS, name);
34356    }
34357  }
34358
34359  protected void composeEncounterClassHistoryComponentElements(Encounter.ClassHistoryComponent element) throws IOException {
34360      composeBackboneElementElements(element);
34361      if (element.hasClass_()) {
34362        composeCoding("class", element.getClass_());
34363      }
34364      if (element.hasPeriod()) {
34365        composePeriod("period", element.getPeriod());
34366      }
34367  }
34368
34369  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
34370    if (element != null) {
34371      composeElementAttributes(element);
34372      xml.enter(FHIR_NS, name);
34373      composeEncounterEncounterParticipantComponentElements(element);
34374      composeElementClose(element);
34375      xml.exit(FHIR_NS, name);
34376    }
34377  }
34378
34379  protected void composeEncounterEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
34380      composeBackboneElementElements(element);
34381      if (element.hasType()) { 
34382        for (CodeableConcept e : element.getType()) 
34383          composeCodeableConcept("type", e);
34384      }
34385      if (element.hasPeriod()) {
34386        composePeriod("period", element.getPeriod());
34387      }
34388      if (element.hasIndividual()) {
34389        composeReference("individual", element.getIndividual());
34390      }
34391  }
34392
34393  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
34394    if (element != null) {
34395      composeElementAttributes(element);
34396      xml.enter(FHIR_NS, name);
34397      composeEncounterDiagnosisComponentElements(element);
34398      composeElementClose(element);
34399      xml.exit(FHIR_NS, name);
34400    }
34401  }
34402
34403  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
34404      composeBackboneElementElements(element);
34405      if (element.hasCondition()) {
34406        composeReference("condition", element.getCondition());
34407      }
34408      if (element.hasUse()) {
34409        composeCodeableConcept("use", element.getUse());
34410      }
34411      if (element.hasRankElement()) {
34412        composePositiveInt("rank", element.getRankElement());
34413      }
34414  }
34415
34416  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
34417    if (element != null) {
34418      composeElementAttributes(element);
34419      xml.enter(FHIR_NS, name);
34420      composeEncounterEncounterHospitalizationComponentElements(element);
34421      composeElementClose(element);
34422      xml.exit(FHIR_NS, name);
34423    }
34424  }
34425
34426  protected void composeEncounterEncounterHospitalizationComponentElements(Encounter.EncounterHospitalizationComponent element) throws IOException {
34427      composeBackboneElementElements(element);
34428      if (element.hasPreAdmissionIdentifier()) {
34429        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
34430      }
34431      if (element.hasOrigin()) {
34432        composeReference("origin", element.getOrigin());
34433      }
34434      if (element.hasAdmitSource()) {
34435        composeCodeableConcept("admitSource", element.getAdmitSource());
34436      }
34437      if (element.hasReAdmission()) {
34438        composeCodeableConcept("reAdmission", element.getReAdmission());
34439      }
34440      if (element.hasDietPreference()) { 
34441        for (CodeableConcept e : element.getDietPreference()) 
34442          composeCodeableConcept("dietPreference", e);
34443      }
34444      if (element.hasSpecialCourtesy()) { 
34445        for (CodeableConcept e : element.getSpecialCourtesy()) 
34446          composeCodeableConcept("specialCourtesy", e);
34447      }
34448      if (element.hasSpecialArrangement()) { 
34449        for (CodeableConcept e : element.getSpecialArrangement()) 
34450          composeCodeableConcept("specialArrangement", e);
34451      }
34452      if (element.hasDestination()) {
34453        composeReference("destination", element.getDestination());
34454      }
34455      if (element.hasDischargeDisposition()) {
34456        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
34457      }
34458  }
34459
34460  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
34461    if (element != null) {
34462      composeElementAttributes(element);
34463      xml.enter(FHIR_NS, name);
34464      composeEncounterEncounterLocationComponentElements(element);
34465      composeElementClose(element);
34466      xml.exit(FHIR_NS, name);
34467    }
34468  }
34469
34470  protected void composeEncounterEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
34471      composeBackboneElementElements(element);
34472      if (element.hasLocation()) {
34473        composeReference("location", element.getLocation());
34474      }
34475      if (element.hasStatusElement())
34476        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
34477      if (element.hasPhysicalType()) {
34478        composeCodeableConcept("physicalType", element.getPhysicalType());
34479      }
34480      if (element.hasPeriod()) {
34481        composePeriod("period", element.getPeriod());
34482      }
34483  }
34484
34485  protected void composeEndpoint(String name, Endpoint element) throws IOException {
34486    if (element != null) {
34487      composeDomainResourceAttributes(element);
34488      xml.enter(FHIR_NS, name);
34489      composeEndpointElements(element);
34490      composeElementClose(element);
34491      xml.exit(FHIR_NS, name);
34492    }
34493  }
34494
34495  protected void composeEndpointElements(Endpoint element) throws IOException {
34496      composeDomainResourceElements(element);
34497      if (element.hasIdentifier()) { 
34498        for (Identifier e : element.getIdentifier()) 
34499          composeIdentifier("identifier", e);
34500      }
34501      if (element.hasStatusElement())
34502        composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
34503      if (element.hasConnectionType()) {
34504        composeCoding("connectionType", element.getConnectionType());
34505      }
34506      if (element.hasNameElement()) {
34507        composeString("name", element.getNameElement());
34508      }
34509      if (element.hasManagingOrganization()) {
34510        composeReference("managingOrganization", element.getManagingOrganization());
34511      }
34512      if (element.hasContact()) { 
34513        for (ContactPoint e : element.getContact()) 
34514          composeContactPoint("contact", e);
34515      }
34516      if (element.hasPeriod()) {
34517        composePeriod("period", element.getPeriod());
34518      }
34519      if (element.hasPayloadType()) { 
34520        for (CodeableConcept e : element.getPayloadType()) 
34521          composeCodeableConcept("payloadType", e);
34522      }
34523      if (element.hasPayloadMimeType()) { 
34524        for (CodeType e : element.getPayloadMimeType()) 
34525          composeCode("payloadMimeType", e);
34526      }
34527      if (element.hasAddressElement()) {
34528        composeUrl("address", element.getAddressElement());
34529      }
34530      if (element.hasHeader()) { 
34531        for (StringType e : element.getHeader()) 
34532          composeString("header", e);
34533      }
34534  }
34535
34536  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
34537    if (element != null) {
34538      composeDomainResourceAttributes(element);
34539      xml.enter(FHIR_NS, name);
34540      composeEnrollmentRequestElements(element);
34541      composeElementClose(element);
34542      xml.exit(FHIR_NS, name);
34543    }
34544  }
34545
34546  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
34547      composeDomainResourceElements(element);
34548      if (element.hasIdentifier()) { 
34549        for (Identifier e : element.getIdentifier()) 
34550          composeIdentifier("identifier", e);
34551      }
34552      if (element.hasStatusElement())
34553        composeEnumeration("status", element.getStatusElement(), new EnrollmentRequest.EnrollmentRequestStatusEnumFactory());
34554      if (element.hasCreatedElement()) {
34555        composeDateTime("created", element.getCreatedElement());
34556      }
34557      if (element.hasInsurer()) {
34558        composeReference("insurer", element.getInsurer());
34559      }
34560      if (element.hasProvider()) {
34561        composeReference("provider", element.getProvider());
34562      }
34563      if (element.hasCandidate()) {
34564        composeReference("candidate", element.getCandidate());
34565      }
34566      if (element.hasCoverage()) {
34567        composeReference("coverage", element.getCoverage());
34568      }
34569  }
34570
34571  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
34572    if (element != null) {
34573      composeDomainResourceAttributes(element);
34574      xml.enter(FHIR_NS, name);
34575      composeEnrollmentResponseElements(element);
34576      composeElementClose(element);
34577      xml.exit(FHIR_NS, name);
34578    }
34579  }
34580
34581  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
34582      composeDomainResourceElements(element);
34583      if (element.hasIdentifier()) { 
34584        for (Identifier e : element.getIdentifier()) 
34585          composeIdentifier("identifier", e);
34586      }
34587      if (element.hasStatusElement())
34588        composeEnumeration("status", element.getStatusElement(), new EnrollmentResponse.EnrollmentResponseStatusEnumFactory());
34589      if (element.hasRequest()) {
34590        composeReference("request", element.getRequest());
34591      }
34592      if (element.hasOutcomeElement())
34593        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
34594      if (element.hasDispositionElement()) {
34595        composeString("disposition", element.getDispositionElement());
34596      }
34597      if (element.hasCreatedElement()) {
34598        composeDateTime("created", element.getCreatedElement());
34599      }
34600      if (element.hasOrganization()) {
34601        composeReference("organization", element.getOrganization());
34602      }
34603      if (element.hasRequestProvider()) {
34604        composeReference("requestProvider", element.getRequestProvider());
34605      }
34606  }
34607
34608  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
34609    if (element != null) {
34610      composeDomainResourceAttributes(element);
34611      xml.enter(FHIR_NS, name);
34612      composeEpisodeOfCareElements(element);
34613      composeElementClose(element);
34614      xml.exit(FHIR_NS, name);
34615    }
34616  }
34617
34618  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
34619      composeDomainResourceElements(element);
34620      if (element.hasIdentifier()) { 
34621        for (Identifier e : element.getIdentifier()) 
34622          composeIdentifier("identifier", e);
34623      }
34624      if (element.hasStatusElement())
34625        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
34626      if (element.hasStatusHistory()) { 
34627        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
34628          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
34629      }
34630      if (element.hasType()) { 
34631        for (CodeableConcept e : element.getType()) 
34632          composeCodeableConcept("type", e);
34633      }
34634      if (element.hasDiagnosis()) { 
34635        for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
34636          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
34637      }
34638      if (element.hasPatient()) {
34639        composeReference("patient", element.getPatient());
34640      }
34641      if (element.hasManagingOrganization()) {
34642        composeReference("managingOrganization", element.getManagingOrganization());
34643      }
34644      if (element.hasPeriod()) {
34645        composePeriod("period", element.getPeriod());
34646      }
34647      if (element.hasReferralRequest()) { 
34648        for (Reference e : element.getReferralRequest()) 
34649          composeReference("referralRequest", e);
34650      }
34651      if (element.hasCareManager()) {
34652        composeReference("careManager", element.getCareManager());
34653      }
34654      if (element.hasTeam()) { 
34655        for (Reference e : element.getTeam()) 
34656          composeReference("team", e);
34657      }
34658      if (element.hasAccount()) { 
34659        for (Reference e : element.getAccount()) 
34660          composeReference("account", e);
34661      }
34662  }
34663
34664  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
34665    if (element != null) {
34666      composeElementAttributes(element);
34667      xml.enter(FHIR_NS, name);
34668      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(element);
34669      composeElementClose(element);
34670      xml.exit(FHIR_NS, name);
34671    }
34672  }
34673
34674  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
34675      composeBackboneElementElements(element);
34676      if (element.hasStatusElement())
34677        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
34678      if (element.hasPeriod()) {
34679        composePeriod("period", element.getPeriod());
34680      }
34681  }
34682
34683  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
34684    if (element != null) {
34685      composeElementAttributes(element);
34686      xml.enter(FHIR_NS, name);
34687      composeEpisodeOfCareDiagnosisComponentElements(element);
34688      composeElementClose(element);
34689      xml.exit(FHIR_NS, name);
34690    }
34691  }
34692
34693  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
34694      composeBackboneElementElements(element);
34695      if (element.hasCondition()) {
34696        composeReference("condition", element.getCondition());
34697      }
34698      if (element.hasRole()) {
34699        composeCodeableConcept("role", element.getRole());
34700      }
34701      if (element.hasRankElement()) {
34702        composePositiveInt("rank", element.getRankElement());
34703      }
34704  }
34705
34706  protected void composeEventDefinition(String name, EventDefinition element) throws IOException {
34707    if (element != null) {
34708      composeDomainResourceAttributes(element);
34709      xml.enter(FHIR_NS, name);
34710      composeEventDefinitionElements(element);
34711      composeElementClose(element);
34712      xml.exit(FHIR_NS, name);
34713    }
34714  }
34715
34716  protected void composeEventDefinitionElements(EventDefinition element) throws IOException {
34717      composeDomainResourceElements(element);
34718      if (element.hasUrlElement()) {
34719        composeUri("url", element.getUrlElement());
34720      }
34721      if (element.hasIdentifier()) { 
34722        for (Identifier e : element.getIdentifier()) 
34723          composeIdentifier("identifier", e);
34724      }
34725      if (element.hasVersionElement()) {
34726        composeString("version", element.getVersionElement());
34727      }
34728      if (element.hasNameElement()) {
34729        composeString("name", element.getNameElement());
34730      }
34731      if (element.hasTitleElement()) {
34732        composeString("title", element.getTitleElement());
34733      }
34734      if (element.hasSubtitleElement()) {
34735        composeString("subtitle", element.getSubtitleElement());
34736      }
34737      if (element.hasStatusElement())
34738        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34739      if (element.hasExperimentalElement()) {
34740        composeBoolean("experimental", element.getExperimentalElement());
34741      }
34742      if (element.hasSubject()) {
34743        composeType("subject", element.getSubject());
34744      }      if (element.hasDateElement()) {
34745        composeDateTime("date", element.getDateElement());
34746      }
34747      if (element.hasPublisherElement()) {
34748        composeString("publisher", element.getPublisherElement());
34749      }
34750      if (element.hasContact()) { 
34751        for (ContactDetail e : element.getContact()) 
34752          composeContactDetail("contact", e);
34753      }
34754      if (element.hasDescriptionElement()) {
34755        composeMarkdown("description", element.getDescriptionElement());
34756      }
34757      if (element.hasUseContext()) { 
34758        for (UsageContext e : element.getUseContext()) 
34759          composeUsageContext("useContext", e);
34760      }
34761      if (element.hasJurisdiction()) { 
34762        for (CodeableConcept e : element.getJurisdiction()) 
34763          composeCodeableConcept("jurisdiction", e);
34764      }
34765      if (element.hasPurposeElement()) {
34766        composeMarkdown("purpose", element.getPurposeElement());
34767      }
34768      if (element.hasUsageElement()) {
34769        composeString("usage", element.getUsageElement());
34770      }
34771      if (element.hasCopyrightElement()) {
34772        composeMarkdown("copyright", element.getCopyrightElement());
34773      }
34774      if (element.hasApprovalDateElement()) {
34775        composeDate("approvalDate", element.getApprovalDateElement());
34776      }
34777      if (element.hasLastReviewDateElement()) {
34778        composeDate("lastReviewDate", element.getLastReviewDateElement());
34779      }
34780      if (element.hasEffectivePeriod()) {
34781        composePeriod("effectivePeriod", element.getEffectivePeriod());
34782      }
34783      if (element.hasTopic()) { 
34784        for (CodeableConcept e : element.getTopic()) 
34785          composeCodeableConcept("topic", e);
34786      }
34787      if (element.hasAuthor()) { 
34788        for (ContactDetail e : element.getAuthor()) 
34789          composeContactDetail("author", e);
34790      }
34791      if (element.hasEditor()) { 
34792        for (ContactDetail e : element.getEditor()) 
34793          composeContactDetail("editor", e);
34794      }
34795      if (element.hasReviewer()) { 
34796        for (ContactDetail e : element.getReviewer()) 
34797          composeContactDetail("reviewer", e);
34798      }
34799      if (element.hasEndorser()) { 
34800        for (ContactDetail e : element.getEndorser()) 
34801          composeContactDetail("endorser", e);
34802      }
34803      if (element.hasRelatedArtifact()) { 
34804        for (RelatedArtifact e : element.getRelatedArtifact()) 
34805          composeRelatedArtifact("relatedArtifact", e);
34806      }
34807      if (element.hasTrigger()) { 
34808        for (TriggerDefinition e : element.getTrigger()) 
34809          composeTriggerDefinition("trigger", e);
34810      }
34811  }
34812
34813  protected void composeEvidence(String name, Evidence element) throws IOException {
34814    if (element != null) {
34815      composeDomainResourceAttributes(element);
34816      xml.enter(FHIR_NS, name);
34817      composeEvidenceElements(element);
34818      composeElementClose(element);
34819      xml.exit(FHIR_NS, name);
34820    }
34821  }
34822
34823  protected void composeEvidenceElements(Evidence element) throws IOException {
34824      composeDomainResourceElements(element);
34825      if (element.hasUrlElement()) {
34826        composeUri("url", element.getUrlElement());
34827      }
34828      if (element.hasIdentifier()) { 
34829        for (Identifier e : element.getIdentifier()) 
34830          composeIdentifier("identifier", e);
34831      }
34832      if (element.hasVersionElement()) {
34833        composeString("version", element.getVersionElement());
34834      }
34835      if (element.hasNameElement()) {
34836        composeString("name", element.getNameElement());
34837      }
34838      if (element.hasTitleElement()) {
34839        composeString("title", element.getTitleElement());
34840      }
34841      if (element.hasShortTitleElement()) {
34842        composeString("shortTitle", element.getShortTitleElement());
34843      }
34844      if (element.hasSubtitleElement()) {
34845        composeString("subtitle", element.getSubtitleElement());
34846      }
34847      if (element.hasStatusElement())
34848        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34849      if (element.hasDateElement()) {
34850        composeDateTime("date", element.getDateElement());
34851      }
34852      if (element.hasPublisherElement()) {
34853        composeString("publisher", element.getPublisherElement());
34854      }
34855      if (element.hasContact()) { 
34856        for (ContactDetail e : element.getContact()) 
34857          composeContactDetail("contact", e);
34858      }
34859      if (element.hasDescriptionElement()) {
34860        composeMarkdown("description", element.getDescriptionElement());
34861      }
34862      if (element.hasNote()) { 
34863        for (Annotation e : element.getNote()) 
34864          composeAnnotation("note", e);
34865      }
34866      if (element.hasUseContext()) { 
34867        for (UsageContext e : element.getUseContext()) 
34868          composeUsageContext("useContext", e);
34869      }
34870      if (element.hasJurisdiction()) { 
34871        for (CodeableConcept e : element.getJurisdiction()) 
34872          composeCodeableConcept("jurisdiction", e);
34873      }
34874      if (element.hasCopyrightElement()) {
34875        composeMarkdown("copyright", element.getCopyrightElement());
34876      }
34877      if (element.hasApprovalDateElement()) {
34878        composeDate("approvalDate", element.getApprovalDateElement());
34879      }
34880      if (element.hasLastReviewDateElement()) {
34881        composeDate("lastReviewDate", element.getLastReviewDateElement());
34882      }
34883      if (element.hasEffectivePeriod()) {
34884        composePeriod("effectivePeriod", element.getEffectivePeriod());
34885      }
34886      if (element.hasTopic()) { 
34887        for (CodeableConcept e : element.getTopic()) 
34888          composeCodeableConcept("topic", e);
34889      }
34890      if (element.hasAuthor()) { 
34891        for (ContactDetail e : element.getAuthor()) 
34892          composeContactDetail("author", e);
34893      }
34894      if (element.hasEditor()) { 
34895        for (ContactDetail e : element.getEditor()) 
34896          composeContactDetail("editor", e);
34897      }
34898      if (element.hasReviewer()) { 
34899        for (ContactDetail e : element.getReviewer()) 
34900          composeContactDetail("reviewer", e);
34901      }
34902      if (element.hasEndorser()) { 
34903        for (ContactDetail e : element.getEndorser()) 
34904          composeContactDetail("endorser", e);
34905      }
34906      if (element.hasRelatedArtifact()) { 
34907        for (RelatedArtifact e : element.getRelatedArtifact()) 
34908          composeRelatedArtifact("relatedArtifact", e);
34909      }
34910      if (element.hasExposureBackground()) {
34911        composeReference("exposureBackground", element.getExposureBackground());
34912      }
34913      if (element.hasExposureVariant()) { 
34914        for (Reference e : element.getExposureVariant()) 
34915          composeReference("exposureVariant", e);
34916      }
34917      if (element.hasOutcome()) { 
34918        for (Reference e : element.getOutcome()) 
34919          composeReference("outcome", e);
34920      }
34921  }
34922
34923  protected void composeEvidenceVariable(String name, EvidenceVariable element) throws IOException {
34924    if (element != null) {
34925      composeDomainResourceAttributes(element);
34926      xml.enter(FHIR_NS, name);
34927      composeEvidenceVariableElements(element);
34928      composeElementClose(element);
34929      xml.exit(FHIR_NS, name);
34930    }
34931  }
34932
34933  protected void composeEvidenceVariableElements(EvidenceVariable element) throws IOException {
34934      composeDomainResourceElements(element);
34935      if (element.hasUrlElement()) {
34936        composeUri("url", element.getUrlElement());
34937      }
34938      if (element.hasIdentifier()) { 
34939        for (Identifier e : element.getIdentifier()) 
34940          composeIdentifier("identifier", e);
34941      }
34942      if (element.hasVersionElement()) {
34943        composeString("version", element.getVersionElement());
34944      }
34945      if (element.hasNameElement()) {
34946        composeString("name", element.getNameElement());
34947      }
34948      if (element.hasTitleElement()) {
34949        composeString("title", element.getTitleElement());
34950      }
34951      if (element.hasShortTitleElement()) {
34952        composeString("shortTitle", element.getShortTitleElement());
34953      }
34954      if (element.hasSubtitleElement()) {
34955        composeString("subtitle", element.getSubtitleElement());
34956      }
34957      if (element.hasStatusElement())
34958        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34959      if (element.hasDateElement()) {
34960        composeDateTime("date", element.getDateElement());
34961      }
34962      if (element.hasPublisherElement()) {
34963        composeString("publisher", element.getPublisherElement());
34964      }
34965      if (element.hasContact()) { 
34966        for (ContactDetail e : element.getContact()) 
34967          composeContactDetail("contact", e);
34968      }
34969      if (element.hasDescriptionElement()) {
34970        composeMarkdown("description", element.getDescriptionElement());
34971      }
34972      if (element.hasNote()) { 
34973        for (Annotation e : element.getNote()) 
34974          composeAnnotation("note", e);
34975      }
34976      if (element.hasUseContext()) { 
34977        for (UsageContext e : element.getUseContext()) 
34978          composeUsageContext("useContext", e);
34979      }
34980      if (element.hasJurisdiction()) { 
34981        for (CodeableConcept e : element.getJurisdiction()) 
34982          composeCodeableConcept("jurisdiction", e);
34983      }
34984      if (element.hasCopyrightElement()) {
34985        composeMarkdown("copyright", element.getCopyrightElement());
34986      }
34987      if (element.hasApprovalDateElement()) {
34988        composeDate("approvalDate", element.getApprovalDateElement());
34989      }
34990      if (element.hasLastReviewDateElement()) {
34991        composeDate("lastReviewDate", element.getLastReviewDateElement());
34992      }
34993      if (element.hasEffectivePeriod()) {
34994        composePeriod("effectivePeriod", element.getEffectivePeriod());
34995      }
34996      if (element.hasTopic()) { 
34997        for (CodeableConcept e : element.getTopic()) 
34998          composeCodeableConcept("topic", e);
34999      }
35000      if (element.hasAuthor()) { 
35001        for (ContactDetail e : element.getAuthor()) 
35002          composeContactDetail("author", e);
35003      }
35004      if (element.hasEditor()) { 
35005        for (ContactDetail e : element.getEditor()) 
35006          composeContactDetail("editor", e);
35007      }
35008      if (element.hasReviewer()) { 
35009        for (ContactDetail e : element.getReviewer()) 
35010          composeContactDetail("reviewer", e);
35011      }
35012      if (element.hasEndorser()) { 
35013        for (ContactDetail e : element.getEndorser()) 
35014          composeContactDetail("endorser", e);
35015      }
35016      if (element.hasRelatedArtifact()) { 
35017        for (RelatedArtifact e : element.getRelatedArtifact()) 
35018          composeRelatedArtifact("relatedArtifact", e);
35019      }
35020      if (element.hasTypeElement())
35021        composeEnumeration("type", element.getTypeElement(), new EvidenceVariable.EvidenceVariableTypeEnumFactory());
35022      if (element.hasCharacteristic()) { 
35023        for (EvidenceVariable.EvidenceVariableCharacteristicComponent e : element.getCharacteristic()) 
35024          composeEvidenceVariableEvidenceVariableCharacteristicComponent("characteristic", e);
35025      }
35026  }
35027
35028  protected void composeEvidenceVariableEvidenceVariableCharacteristicComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
35029    if (element != null) {
35030      composeElementAttributes(element);
35031      xml.enter(FHIR_NS, name);
35032      composeEvidenceVariableEvidenceVariableCharacteristicComponentElements(element);
35033      composeElementClose(element);
35034      xml.exit(FHIR_NS, name);
35035    }
35036  }
35037
35038  protected void composeEvidenceVariableEvidenceVariableCharacteristicComponentElements(EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
35039      composeBackboneElementElements(element);
35040      if (element.hasDescriptionElement()) {
35041        composeString("description", element.getDescriptionElement());
35042      }
35043      if (element.hasDefinition()) {
35044        composeType("definition", element.getDefinition());
35045      }      if (element.hasUsageContext()) { 
35046        for (UsageContext e : element.getUsageContext()) 
35047          composeUsageContext("usageContext", e);
35048      }
35049      if (element.hasExcludeElement()) {
35050        composeBoolean("exclude", element.getExcludeElement());
35051      }
35052      if (element.hasParticipantEffective()) {
35053        composeType("participantEffective", element.getParticipantEffective());
35054      }      if (element.hasTimeFromStart()) {
35055        composeDuration("timeFromStart", element.getTimeFromStart());
35056      }
35057      if (element.hasGroupMeasureElement())
35058        composeEnumeration("groupMeasure", element.getGroupMeasureElement(), new EvidenceVariable.GroupMeasureEnumFactory());
35059  }
35060
35061  protected void composeExampleScenario(String name, ExampleScenario element) throws IOException {
35062    if (element != null) {
35063      composeDomainResourceAttributes(element);
35064      xml.enter(FHIR_NS, name);
35065      composeExampleScenarioElements(element);
35066      composeElementClose(element);
35067      xml.exit(FHIR_NS, name);
35068    }
35069  }
35070
35071  protected void composeExampleScenarioElements(ExampleScenario element) throws IOException {
35072      composeDomainResourceElements(element);
35073      if (element.hasUrlElement()) {
35074        composeUri("url", element.getUrlElement());
35075      }
35076      if (element.hasIdentifier()) { 
35077        for (Identifier e : element.getIdentifier()) 
35078          composeIdentifier("identifier", e);
35079      }
35080      if (element.hasVersionElement()) {
35081        composeString("version", element.getVersionElement());
35082      }
35083      if (element.hasNameElement()) {
35084        composeString("name", element.getNameElement());
35085      }
35086      if (element.hasStatusElement())
35087        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
35088      if (element.hasExperimentalElement()) {
35089        composeBoolean("experimental", element.getExperimentalElement());
35090      }
35091      if (element.hasDateElement()) {
35092        composeDateTime("date", element.getDateElement());
35093      }
35094      if (element.hasPublisherElement()) {
35095        composeString("publisher", element.getPublisherElement());
35096      }
35097      if (element.hasContact()) { 
35098        for (ContactDetail e : element.getContact()) 
35099          composeContactDetail("contact", e);
35100      }
35101      if (element.hasUseContext()) { 
35102        for (UsageContext e : element.getUseContext()) 
35103          composeUsageContext("useContext", e);
35104      }
35105      if (element.hasJurisdiction()) { 
35106        for (CodeableConcept e : element.getJurisdiction()) 
35107          composeCodeableConcept("jurisdiction", e);
35108      }
35109      if (element.hasCopyrightElement()) {
35110        composeMarkdown("copyright", element.getCopyrightElement());
35111      }
35112      if (element.hasPurposeElement()) {
35113        composeMarkdown("purpose", element.getPurposeElement());
35114      }
35115      if (element.hasActor()) { 
35116        for (ExampleScenario.ExampleScenarioActorComponent e : element.getActor()) 
35117          composeExampleScenarioExampleScenarioActorComponent("actor", e);
35118      }
35119      if (element.hasInstance()) { 
35120        for (ExampleScenario.ExampleScenarioInstanceComponent e : element.getInstance()) 
35121          composeExampleScenarioExampleScenarioInstanceComponent("instance", e);
35122      }
35123      if (element.hasProcess()) { 
35124        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
35125          composeExampleScenarioExampleScenarioProcessComponent("process", e);
35126      }
35127      if (element.hasWorkflow()) { 
35128        for (CanonicalType e : element.getWorkflow()) 
35129          composeCanonical("workflow", e);
35130      }
35131  }
35132
35133  protected void composeExampleScenarioExampleScenarioActorComponent(String name, ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
35134    if (element != null) {
35135      composeElementAttributes(element);
35136      xml.enter(FHIR_NS, name);
35137      composeExampleScenarioExampleScenarioActorComponentElements(element);
35138      composeElementClose(element);
35139      xml.exit(FHIR_NS, name);
35140    }
35141  }
35142
35143  protected void composeExampleScenarioExampleScenarioActorComponentElements(ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
35144      composeBackboneElementElements(element);
35145      if (element.hasActorIdElement()) {
35146        composeString("actorId", element.getActorIdElement());
35147      }
35148      if (element.hasTypeElement())
35149        composeEnumeration("type", element.getTypeElement(), new ExampleScenario.ExampleScenarioActorTypeEnumFactory());
35150      if (element.hasNameElement()) {
35151        composeString("name", element.getNameElement());
35152      }
35153      if (element.hasDescriptionElement()) {
35154        composeMarkdown("description", element.getDescriptionElement());
35155      }
35156  }
35157
35158  protected void composeExampleScenarioExampleScenarioInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
35159    if (element != null) {
35160      composeElementAttributes(element);
35161      xml.enter(FHIR_NS, name);
35162      composeExampleScenarioExampleScenarioInstanceComponentElements(element);
35163      composeElementClose(element);
35164      xml.exit(FHIR_NS, name);
35165    }
35166  }
35167
35168  protected void composeExampleScenarioExampleScenarioInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
35169      composeBackboneElementElements(element);
35170      if (element.hasResourceIdElement()) {
35171        composeString("resourceId", element.getResourceIdElement());
35172      }
35173      if (element.hasResourceTypeElement())
35174        composeEnumeration("resourceType", element.getResourceTypeElement(), new ExampleScenario.FHIRResourceTypeEnumFactory());
35175      if (element.hasNameElement()) {
35176        composeString("name", element.getNameElement());
35177      }
35178      if (element.hasDescriptionElement()) {
35179        composeMarkdown("description", element.getDescriptionElement());
35180      }
35181      if (element.hasVersion()) { 
35182        for (ExampleScenario.ExampleScenarioInstanceVersionComponent e : element.getVersion()) 
35183          composeExampleScenarioExampleScenarioInstanceVersionComponent("version", e);
35184      }
35185      if (element.hasContainedInstance()) { 
35186        for (ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent e : element.getContainedInstance()) 
35187          composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("containedInstance", e);
35188      }
35189  }
35190
35191  protected void composeExampleScenarioExampleScenarioInstanceVersionComponent(String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
35192    if (element != null) {
35193      composeElementAttributes(element);
35194      xml.enter(FHIR_NS, name);
35195      composeExampleScenarioExampleScenarioInstanceVersionComponentElements(element);
35196      composeElementClose(element);
35197      xml.exit(FHIR_NS, name);
35198    }
35199  }
35200
35201  protected void composeExampleScenarioExampleScenarioInstanceVersionComponentElements(ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
35202      composeBackboneElementElements(element);
35203      if (element.hasVersionIdElement()) {
35204        composeString("versionId", element.getVersionIdElement());
35205      }
35206      if (element.hasDescriptionElement()) {
35207        composeMarkdown("description", element.getDescriptionElement());
35208      }
35209  }
35210
35211  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
35212    if (element != null) {
35213      composeElementAttributes(element);
35214      xml.enter(FHIR_NS, name);
35215      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(element);
35216      composeElementClose(element);
35217      xml.exit(FHIR_NS, name);
35218    }
35219  }
35220
35221  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
35222      composeBackboneElementElements(element);
35223      if (element.hasResourceIdElement()) {
35224        composeString("resourceId", element.getResourceIdElement());
35225      }
35226      if (element.hasVersionIdElement()) {
35227        composeString("versionId", element.getVersionIdElement());
35228      }
35229  }
35230
35231  protected void composeExampleScenarioExampleScenarioProcessComponent(String name, ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
35232    if (element != null) {
35233      composeElementAttributes(element);
35234      xml.enter(FHIR_NS, name);
35235      composeExampleScenarioExampleScenarioProcessComponentElements(element);
35236      composeElementClose(element);
35237      xml.exit(FHIR_NS, name);
35238    }
35239  }
35240
35241  protected void composeExampleScenarioExampleScenarioProcessComponentElements(ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
35242      composeBackboneElementElements(element);
35243      if (element.hasTitleElement()) {
35244        composeString("title", element.getTitleElement());
35245      }
35246      if (element.hasDescriptionElement()) {
35247        composeMarkdown("description", element.getDescriptionElement());
35248      }
35249      if (element.hasPreConditionsElement()) {
35250        composeMarkdown("preConditions", element.getPreConditionsElement());
35251      }
35252      if (element.hasPostConditionsElement()) {
35253        composeMarkdown("postConditions", element.getPostConditionsElement());
35254      }
35255      if (element.hasStep()) { 
35256        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
35257          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
35258      }
35259  }
35260
35261  protected void composeExampleScenarioExampleScenarioProcessStepComponent(String name, ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
35262    if (element != null) {
35263      composeElementAttributes(element);
35264      xml.enter(FHIR_NS, name);
35265      composeExampleScenarioExampleScenarioProcessStepComponentElements(element);
35266      composeElementClose(element);
35267      xml.exit(FHIR_NS, name);
35268    }
35269  }
35270
35271  protected void composeExampleScenarioExampleScenarioProcessStepComponentElements(ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
35272      composeBackboneElementElements(element);
35273      if (element.hasProcess()) { 
35274        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
35275          composeExampleScenarioExampleScenarioProcessComponent("process", e);
35276      }
35277      if (element.hasPauseElement()) {
35278        composeBoolean("pause", element.getPauseElement());
35279      }
35280      if (element.hasOperation()) {
35281        composeExampleScenarioExampleScenarioProcessStepOperationComponent("operation", element.getOperation());
35282      }
35283      if (element.hasAlternative()) { 
35284        for (ExampleScenario.ExampleScenarioProcessStepAlternativeComponent e : element.getAlternative()) 
35285          composeExampleScenarioExampleScenarioProcessStepAlternativeComponent("alternative", e);
35286      }
35287  }
35288
35289  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponent(String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
35290    if (element != null) {
35291      composeElementAttributes(element);
35292      xml.enter(FHIR_NS, name);
35293      composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(element);
35294      composeElementClose(element);
35295      xml.exit(FHIR_NS, name);
35296    }
35297  }
35298
35299  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
35300      composeBackboneElementElements(element);
35301      if (element.hasNumberElement()) {
35302        composeString("number", element.getNumberElement());
35303      }
35304      if (element.hasTypeElement()) {
35305        composeString("type", element.getTypeElement());
35306      }
35307      if (element.hasNameElement()) {
35308        composeString("name", element.getNameElement());
35309      }
35310      if (element.hasInitiatorElement()) {
35311        composeString("initiator", element.getInitiatorElement());
35312      }
35313      if (element.hasReceiverElement()) {
35314        composeString("receiver", element.getReceiverElement());
35315      }
35316      if (element.hasDescriptionElement()) {
35317        composeMarkdown("description", element.getDescriptionElement());
35318      }
35319      if (element.hasInitiatorActiveElement()) {
35320        composeBoolean("initiatorActive", element.getInitiatorActiveElement());
35321      }
35322      if (element.hasReceiverActiveElement()) {
35323        composeBoolean("receiverActive", element.getReceiverActiveElement());
35324      }
35325      if (element.hasRequest()) {
35326        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("request", element.getRequest());
35327      }
35328      if (element.hasResponse()) {
35329        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("response", element.getResponse());
35330      }
35331  }
35332
35333  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
35334    if (element != null) {
35335      composeElementAttributes(element);
35336      xml.enter(FHIR_NS, name);
35337      composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(element);
35338      composeElementClose(element);
35339      xml.exit(FHIR_NS, name);
35340    }
35341  }
35342
35343  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
35344      composeBackboneElementElements(element);
35345      if (element.hasTitleElement()) {
35346        composeString("title", element.getTitleElement());
35347      }
35348      if (element.hasDescriptionElement()) {
35349        composeMarkdown("description", element.getDescriptionElement());
35350      }
35351      if (element.hasStep()) { 
35352        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
35353          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
35354      }
35355  }
35356
35357  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
35358    if (element != null) {
35359      composeDomainResourceAttributes(element);
35360      xml.enter(FHIR_NS, name);
35361      composeExplanationOfBenefitElements(element);
35362      composeElementClose(element);
35363      xml.exit(FHIR_NS, name);
35364    }
35365  }
35366
35367  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
35368      composeDomainResourceElements(element);
35369      if (element.hasIdentifier()) { 
35370        for (Identifier e : element.getIdentifier()) 
35371          composeIdentifier("identifier", e);
35372      }
35373      if (element.hasStatusElement())
35374        composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
35375      if (element.hasType()) {
35376        composeCodeableConcept("type", element.getType());
35377      }
35378      if (element.hasSubType()) {
35379        composeCodeableConcept("subType", element.getSubType());
35380      }
35381      if (element.hasUseElement())
35382        composeEnumeration("use", element.getUseElement(), new ExplanationOfBenefit.UseEnumFactory());
35383      if (element.hasPatient()) {
35384        composeReference("patient", element.getPatient());
35385      }
35386      if (element.hasBillablePeriod()) {
35387        composePeriod("billablePeriod", element.getBillablePeriod());
35388      }
35389      if (element.hasCreatedElement()) {
35390        composeDateTime("created", element.getCreatedElement());
35391      }
35392      if (element.hasEnterer()) {
35393        composeReference("enterer", element.getEnterer());
35394      }
35395      if (element.hasInsurer()) {
35396        composeReference("insurer", element.getInsurer());
35397      }
35398      if (element.hasProvider()) {
35399        composeReference("provider", element.getProvider());
35400      }
35401      if (element.hasPriority()) {
35402        composeCodeableConcept("priority", element.getPriority());
35403      }
35404      if (element.hasFundsReserveRequested()) {
35405        composeCodeableConcept("fundsReserveRequested", element.getFundsReserveRequested());
35406      }
35407      if (element.hasFundsReserve()) {
35408        composeCodeableConcept("fundsReserve", element.getFundsReserve());
35409      }
35410      if (element.hasRelated()) { 
35411        for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
35412          composeExplanationOfBenefitRelatedClaimComponent("related", e);
35413      }
35414      if (element.hasPrescription()) {
35415        composeReference("prescription", element.getPrescription());
35416      }
35417      if (element.hasOriginalPrescription()) {
35418        composeReference("originalPrescription", element.getOriginalPrescription());
35419      }
35420      if (element.hasPayee()) {
35421        composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
35422      }
35423      if (element.hasReferral()) {
35424        composeReference("referral", element.getReferral());
35425      }
35426      if (element.hasFacility()) {
35427        composeReference("facility", element.getFacility());
35428      }
35429      if (element.hasClaim()) {
35430        composeReference("claim", element.getClaim());
35431      }
35432      if (element.hasClaimResponse()) {
35433        composeReference("claimResponse", element.getClaimResponse());
35434      }
35435      if (element.hasOutcomeElement())
35436        composeEnumeration("outcome", element.getOutcomeElement(), new ExplanationOfBenefit.RemittanceOutcomeEnumFactory());
35437      if (element.hasDispositionElement()) {
35438        composeString("disposition", element.getDispositionElement());
35439      }
35440      if (element.hasPreAuthRef()) { 
35441        for (StringType e : element.getPreAuthRef()) 
35442          composeString("preAuthRef", e);
35443      }
35444      if (element.hasPreAuthRefPeriod()) { 
35445        for (Period e : element.getPreAuthRefPeriod()) 
35446          composePeriod("preAuthRefPeriod", e);
35447      }
35448      if (element.hasCareTeam()) { 
35449        for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
35450          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
35451      }
35452      if (element.hasSupportingInfo()) { 
35453        for (ExplanationOfBenefit.SupportingInformationComponent e : element.getSupportingInfo()) 
35454          composeExplanationOfBenefitSupportingInformationComponent("supportingInfo", e);
35455      }
35456      if (element.hasDiagnosis()) { 
35457        for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
35458          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
35459      }
35460      if (element.hasProcedure()) { 
35461        for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
35462          composeExplanationOfBenefitProcedureComponent("procedure", e);
35463      }
35464      if (element.hasPrecedenceElement()) {
35465        composePositiveInt("precedence", element.getPrecedenceElement());
35466      }
35467      if (element.hasInsurance()) { 
35468        for (ExplanationOfBenefit.InsuranceComponent e : element.getInsurance()) 
35469          composeExplanationOfBenefitInsuranceComponent("insurance", e);
35470      }
35471      if (element.hasAccident()) {
35472        composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
35473      }
35474      if (element.hasItem()) { 
35475        for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
35476          composeExplanationOfBenefitItemComponent("item", e);
35477      }
35478      if (element.hasAddItem()) { 
35479        for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
35480          composeExplanationOfBenefitAddedItemComponent("addItem", e);
35481      }
35482      if (element.hasAdjudication()) { 
35483        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35484          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35485      }
35486      if (element.hasTotal()) { 
35487        for (ExplanationOfBenefit.TotalComponent e : element.getTotal()) 
35488          composeExplanationOfBenefitTotalComponent("total", e);
35489      }
35490      if (element.hasPayment()) {
35491        composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
35492      }
35493      if (element.hasFormCode()) {
35494        composeCodeableConcept("formCode", element.getFormCode());
35495      }
35496      if (element.hasForm()) {
35497        composeAttachment("form", element.getForm());
35498      }
35499      if (element.hasProcessNote()) { 
35500        for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
35501          composeExplanationOfBenefitNoteComponent("processNote", e);
35502      }
35503      if (element.hasBenefitPeriod()) {
35504        composePeriod("benefitPeriod", element.getBenefitPeriod());
35505      }
35506      if (element.hasBenefitBalance()) { 
35507        for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
35508          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
35509      }
35510  }
35511
35512  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
35513    if (element != null) {
35514      composeElementAttributes(element);
35515      xml.enter(FHIR_NS, name);
35516      composeExplanationOfBenefitRelatedClaimComponentElements(element);
35517      composeElementClose(element);
35518      xml.exit(FHIR_NS, name);
35519    }
35520  }
35521
35522  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
35523      composeBackboneElementElements(element);
35524      if (element.hasClaim()) {
35525        composeReference("claim", element.getClaim());
35526      }
35527      if (element.hasRelationship()) {
35528        composeCodeableConcept("relationship", element.getRelationship());
35529      }
35530      if (element.hasReference()) {
35531        composeIdentifier("reference", element.getReference());
35532      }
35533  }
35534
35535  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
35536    if (element != null) {
35537      composeElementAttributes(element);
35538      xml.enter(FHIR_NS, name);
35539      composeExplanationOfBenefitPayeeComponentElements(element);
35540      composeElementClose(element);
35541      xml.exit(FHIR_NS, name);
35542    }
35543  }
35544
35545  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
35546      composeBackboneElementElements(element);
35547      if (element.hasType()) {
35548        composeCodeableConcept("type", element.getType());
35549      }
35550      if (element.hasParty()) {
35551        composeReference("party", element.getParty());
35552      }
35553  }
35554
35555  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
35556    if (element != null) {
35557      composeElementAttributes(element);
35558      xml.enter(FHIR_NS, name);
35559      composeExplanationOfBenefitCareTeamComponentElements(element);
35560      composeElementClose(element);
35561      xml.exit(FHIR_NS, name);
35562    }
35563  }
35564
35565  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
35566      composeBackboneElementElements(element);
35567      if (element.hasSequenceElement()) {
35568        composePositiveInt("sequence", element.getSequenceElement());
35569      }
35570      if (element.hasProvider()) {
35571        composeReference("provider", element.getProvider());
35572      }
35573      if (element.hasResponsibleElement()) {
35574        composeBoolean("responsible", element.getResponsibleElement());
35575      }
35576      if (element.hasRole()) {
35577        composeCodeableConcept("role", element.getRole());
35578      }
35579      if (element.hasQualification()) {
35580        composeCodeableConcept("qualification", element.getQualification());
35581      }
35582  }
35583
35584  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
35585    if (element != null) {
35586      composeElementAttributes(element);
35587      xml.enter(FHIR_NS, name);
35588      composeExplanationOfBenefitSupportingInformationComponentElements(element);
35589      composeElementClose(element);
35590      xml.exit(FHIR_NS, name);
35591    }
35592  }
35593
35594  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
35595      composeBackboneElementElements(element);
35596      if (element.hasSequenceElement()) {
35597        composePositiveInt("sequence", element.getSequenceElement());
35598      }
35599      if (element.hasCategory()) {
35600        composeCodeableConcept("category", element.getCategory());
35601      }
35602      if (element.hasCode()) {
35603        composeCodeableConcept("code", element.getCode());
35604      }
35605      if (element.hasTiming()) {
35606        composeType("timing", element.getTiming());
35607      }      if (element.hasValue()) {
35608        composeType("value", element.getValue());
35609      }      if (element.hasReason()) {
35610        composeCoding("reason", element.getReason());
35611      }
35612  }
35613
35614  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
35615    if (element != null) {
35616      composeElementAttributes(element);
35617      xml.enter(FHIR_NS, name);
35618      composeExplanationOfBenefitDiagnosisComponentElements(element);
35619      composeElementClose(element);
35620      xml.exit(FHIR_NS, name);
35621    }
35622  }
35623
35624  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
35625      composeBackboneElementElements(element);
35626      if (element.hasSequenceElement()) {
35627        composePositiveInt("sequence", element.getSequenceElement());
35628      }
35629      if (element.hasDiagnosis()) {
35630        composeType("diagnosis", element.getDiagnosis());
35631      }      if (element.hasType()) { 
35632        for (CodeableConcept e : element.getType()) 
35633          composeCodeableConcept("type", e);
35634      }
35635      if (element.hasOnAdmission()) {
35636        composeCodeableConcept("onAdmission", element.getOnAdmission());
35637      }
35638      if (element.hasPackageCode()) {
35639        composeCodeableConcept("packageCode", element.getPackageCode());
35640      }
35641  }
35642
35643  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
35644    if (element != null) {
35645      composeElementAttributes(element);
35646      xml.enter(FHIR_NS, name);
35647      composeExplanationOfBenefitProcedureComponentElements(element);
35648      composeElementClose(element);
35649      xml.exit(FHIR_NS, name);
35650    }
35651  }
35652
35653  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
35654      composeBackboneElementElements(element);
35655      if (element.hasSequenceElement()) {
35656        composePositiveInt("sequence", element.getSequenceElement());
35657      }
35658      if (element.hasType()) { 
35659        for (CodeableConcept e : element.getType()) 
35660          composeCodeableConcept("type", e);
35661      }
35662      if (element.hasDateElement()) {
35663        composeDateTime("date", element.getDateElement());
35664      }
35665      if (element.hasProcedure()) {
35666        composeType("procedure", element.getProcedure());
35667      }      if (element.hasUdi()) { 
35668        for (Reference e : element.getUdi()) 
35669          composeReference("udi", e);
35670      }
35671  }
35672
35673  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
35674    if (element != null) {
35675      composeElementAttributes(element);
35676      xml.enter(FHIR_NS, name);
35677      composeExplanationOfBenefitInsuranceComponentElements(element);
35678      composeElementClose(element);
35679      xml.exit(FHIR_NS, name);
35680    }
35681  }
35682
35683  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
35684      composeBackboneElementElements(element);
35685      if (element.hasFocalElement()) {
35686        composeBoolean("focal", element.getFocalElement());
35687      }
35688      if (element.hasCoverage()) {
35689        composeReference("coverage", element.getCoverage());
35690      }
35691      if (element.hasPreAuthRef()) { 
35692        for (StringType e : element.getPreAuthRef()) 
35693          composeString("preAuthRef", e);
35694      }
35695  }
35696
35697  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
35698    if (element != null) {
35699      composeElementAttributes(element);
35700      xml.enter(FHIR_NS, name);
35701      composeExplanationOfBenefitAccidentComponentElements(element);
35702      composeElementClose(element);
35703      xml.exit(FHIR_NS, name);
35704    }
35705  }
35706
35707  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
35708      composeBackboneElementElements(element);
35709      if (element.hasDateElement()) {
35710        composeDate("date", element.getDateElement());
35711      }
35712      if (element.hasType()) {
35713        composeCodeableConcept("type", element.getType());
35714      }
35715      if (element.hasLocation()) {
35716        composeType("location", element.getLocation());
35717      }  }
35718
35719  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
35720    if (element != null) {
35721      composeElementAttributes(element);
35722      xml.enter(FHIR_NS, name);
35723      composeExplanationOfBenefitItemComponentElements(element);
35724      composeElementClose(element);
35725      xml.exit(FHIR_NS, name);
35726    }
35727  }
35728
35729  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
35730      composeBackboneElementElements(element);
35731      if (element.hasSequenceElement()) {
35732        composePositiveInt("sequence", element.getSequenceElement());
35733      }
35734      if (element.hasCareTeamSequence()) { 
35735        for (PositiveIntType e : element.getCareTeamSequence()) 
35736          composePositiveInt("careTeamSequence", e);
35737      }
35738      if (element.hasDiagnosisSequence()) { 
35739        for (PositiveIntType e : element.getDiagnosisSequence()) 
35740          composePositiveInt("diagnosisSequence", e);
35741      }
35742      if (element.hasProcedureSequence()) { 
35743        for (PositiveIntType e : element.getProcedureSequence()) 
35744          composePositiveInt("procedureSequence", e);
35745      }
35746      if (element.hasInformationSequence()) { 
35747        for (PositiveIntType e : element.getInformationSequence()) 
35748          composePositiveInt("informationSequence", e);
35749      }
35750      if (element.hasRevenue()) {
35751        composeCodeableConcept("revenue", element.getRevenue());
35752      }
35753      if (element.hasCategory()) {
35754        composeCodeableConcept("category", element.getCategory());
35755      }
35756      if (element.hasProductOrService()) {
35757        composeCodeableConcept("productOrService", element.getProductOrService());
35758      }
35759      if (element.hasModifier()) { 
35760        for (CodeableConcept e : element.getModifier()) 
35761          composeCodeableConcept("modifier", e);
35762      }
35763      if (element.hasProgramCode()) { 
35764        for (CodeableConcept e : element.getProgramCode()) 
35765          composeCodeableConcept("programCode", e);
35766      }
35767      if (element.hasServiced()) {
35768        composeType("serviced", element.getServiced());
35769      }      if (element.hasLocation()) {
35770        composeType("location", element.getLocation());
35771      }      if (element.hasQuantity()) {
35772        composeQuantity("quantity", element.getQuantity());
35773      }
35774      if (element.hasUnitPrice()) {
35775        composeMoney("unitPrice", element.getUnitPrice());
35776      }
35777      if (element.hasFactorElement()) {
35778        composeDecimal("factor", element.getFactorElement());
35779      }
35780      if (element.hasNet()) {
35781        composeMoney("net", element.getNet());
35782      }
35783      if (element.hasUdi()) { 
35784        for (Reference e : element.getUdi()) 
35785          composeReference("udi", e);
35786      }
35787      if (element.hasBodySite()) {
35788        composeCodeableConcept("bodySite", element.getBodySite());
35789      }
35790      if (element.hasSubSite()) { 
35791        for (CodeableConcept e : element.getSubSite()) 
35792          composeCodeableConcept("subSite", e);
35793      }
35794      if (element.hasEncounter()) { 
35795        for (Reference e : element.getEncounter()) 
35796          composeReference("encounter", e);
35797      }
35798      if (element.hasNoteNumber()) { 
35799        for (PositiveIntType e : element.getNoteNumber()) 
35800          composePositiveInt("noteNumber", e);
35801      }
35802      if (element.hasAdjudication()) { 
35803        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35804          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35805      }
35806      if (element.hasDetail()) { 
35807        for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
35808          composeExplanationOfBenefitDetailComponent("detail", e);
35809      }
35810  }
35811
35812  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
35813    if (element != null) {
35814      composeElementAttributes(element);
35815      xml.enter(FHIR_NS, name);
35816      composeExplanationOfBenefitAdjudicationComponentElements(element);
35817      composeElementClose(element);
35818      xml.exit(FHIR_NS, name);
35819    }
35820  }
35821
35822  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
35823      composeBackboneElementElements(element);
35824      if (element.hasCategory()) {
35825        composeCodeableConcept("category", element.getCategory());
35826      }
35827      if (element.hasReason()) {
35828        composeCodeableConcept("reason", element.getReason());
35829      }
35830      if (element.hasAmount()) {
35831        composeMoney("amount", element.getAmount());
35832      }
35833      if (element.hasValueElement()) {
35834        composeDecimal("value", element.getValueElement());
35835      }
35836  }
35837
35838  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
35839    if (element != null) {
35840      composeElementAttributes(element);
35841      xml.enter(FHIR_NS, name);
35842      composeExplanationOfBenefitDetailComponentElements(element);
35843      composeElementClose(element);
35844      xml.exit(FHIR_NS, name);
35845    }
35846  }
35847
35848  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
35849      composeBackboneElementElements(element);
35850      if (element.hasSequenceElement()) {
35851        composePositiveInt("sequence", element.getSequenceElement());
35852      }
35853      if (element.hasRevenue()) {
35854        composeCodeableConcept("revenue", element.getRevenue());
35855      }
35856      if (element.hasCategory()) {
35857        composeCodeableConcept("category", element.getCategory());
35858      }
35859      if (element.hasProductOrService()) {
35860        composeCodeableConcept("productOrService", element.getProductOrService());
35861      }
35862      if (element.hasModifier()) { 
35863        for (CodeableConcept e : element.getModifier()) 
35864          composeCodeableConcept("modifier", e);
35865      }
35866      if (element.hasProgramCode()) { 
35867        for (CodeableConcept e : element.getProgramCode()) 
35868          composeCodeableConcept("programCode", e);
35869      }
35870      if (element.hasQuantity()) {
35871        composeQuantity("quantity", element.getQuantity());
35872      }
35873      if (element.hasUnitPrice()) {
35874        composeMoney("unitPrice", element.getUnitPrice());
35875      }
35876      if (element.hasFactorElement()) {
35877        composeDecimal("factor", element.getFactorElement());
35878      }
35879      if (element.hasNet()) {
35880        composeMoney("net", element.getNet());
35881      }
35882      if (element.hasUdi()) { 
35883        for (Reference e : element.getUdi()) 
35884          composeReference("udi", e);
35885      }
35886      if (element.hasNoteNumber()) { 
35887        for (PositiveIntType e : element.getNoteNumber()) 
35888          composePositiveInt("noteNumber", e);
35889      }
35890      if (element.hasAdjudication()) { 
35891        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35892          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35893      }
35894      if (element.hasSubDetail()) { 
35895        for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
35896          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
35897      }
35898  }
35899
35900  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
35901    if (element != null) {
35902      composeElementAttributes(element);
35903      xml.enter(FHIR_NS, name);
35904      composeExplanationOfBenefitSubDetailComponentElements(element);
35905      composeElementClose(element);
35906      xml.exit(FHIR_NS, name);
35907    }
35908  }
35909
35910  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
35911      composeBackboneElementElements(element);
35912      if (element.hasSequenceElement()) {
35913        composePositiveInt("sequence", element.getSequenceElement());
35914      }
35915      if (element.hasRevenue()) {
35916        composeCodeableConcept("revenue", element.getRevenue());
35917      }
35918      if (element.hasCategory()) {
35919        composeCodeableConcept("category", element.getCategory());
35920      }
35921      if (element.hasProductOrService()) {
35922        composeCodeableConcept("productOrService", element.getProductOrService());
35923      }
35924      if (element.hasModifier()) { 
35925        for (CodeableConcept e : element.getModifier()) 
35926          composeCodeableConcept("modifier", e);
35927      }
35928      if (element.hasProgramCode()) { 
35929        for (CodeableConcept e : element.getProgramCode()) 
35930          composeCodeableConcept("programCode", e);
35931      }
35932      if (element.hasQuantity()) {
35933        composeQuantity("quantity", element.getQuantity());
35934      }
35935      if (element.hasUnitPrice()) {
35936        composeMoney("unitPrice", element.getUnitPrice());
35937      }
35938      if (element.hasFactorElement()) {
35939        composeDecimal("factor", element.getFactorElement());
35940      }
35941      if (element.hasNet()) {
35942        composeMoney("net", element.getNet());
35943      }
35944      if (element.hasUdi()) { 
35945        for (Reference e : element.getUdi()) 
35946          composeReference("udi", e);
35947      }
35948      if (element.hasNoteNumber()) { 
35949        for (PositiveIntType e : element.getNoteNumber()) 
35950          composePositiveInt("noteNumber", e);
35951      }
35952      if (element.hasAdjudication()) { 
35953        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35954          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35955      }
35956  }
35957
35958  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
35959    if (element != null) {
35960      composeElementAttributes(element);
35961      xml.enter(FHIR_NS, name);
35962      composeExplanationOfBenefitAddedItemComponentElements(element);
35963      composeElementClose(element);
35964      xml.exit(FHIR_NS, name);
35965    }
35966  }
35967
35968  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
35969      composeBackboneElementElements(element);
35970      if (element.hasItemSequence()) { 
35971        for (PositiveIntType e : element.getItemSequence()) 
35972          composePositiveInt("itemSequence", e);
35973      }
35974      if (element.hasDetailSequence()) { 
35975        for (PositiveIntType e : element.getDetailSequence()) 
35976          composePositiveInt("detailSequence", e);
35977      }
35978      if (element.hasSubDetailSequence()) { 
35979        for (PositiveIntType e : element.getSubDetailSequence()) 
35980          composePositiveInt("subDetailSequence", e);
35981      }
35982      if (element.hasProvider()) { 
35983        for (Reference e : element.getProvider()) 
35984          composeReference("provider", e);
35985      }
35986      if (element.hasProductOrService()) {
35987        composeCodeableConcept("productOrService", element.getProductOrService());
35988      }
35989      if (element.hasModifier()) { 
35990        for (CodeableConcept e : element.getModifier()) 
35991          composeCodeableConcept("modifier", e);
35992      }
35993      if (element.hasProgramCode()) { 
35994        for (CodeableConcept e : element.getProgramCode()) 
35995          composeCodeableConcept("programCode", e);
35996      }
35997      if (element.hasServiced()) {
35998        composeType("serviced", element.getServiced());
35999      }      if (element.hasLocation()) {
36000        composeType("location", element.getLocation());
36001      }      if (element.hasQuantity()) {
36002        composeQuantity("quantity", element.getQuantity());
36003      }
36004      if (element.hasUnitPrice()) {
36005        composeMoney("unitPrice", element.getUnitPrice());
36006      }
36007      if (element.hasFactorElement()) {
36008        composeDecimal("factor", element.getFactorElement());
36009      }
36010      if (element.hasNet()) {
36011        composeMoney("net", element.getNet());
36012      }
36013      if (element.hasBodySite()) {
36014        composeCodeableConcept("bodySite", element.getBodySite());
36015      }
36016      if (element.hasSubSite()) { 
36017        for (CodeableConcept e : element.getSubSite()) 
36018          composeCodeableConcept("subSite", e);
36019      }
36020      if (element.hasNoteNumber()) { 
36021        for (PositiveIntType e : element.getNoteNumber()) 
36022          composePositiveInt("noteNumber", e);
36023      }
36024      if (element.hasAdjudication()) { 
36025        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
36026          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
36027      }
36028      if (element.hasDetail()) { 
36029        for (ExplanationOfBenefit.AddedItemDetailComponent e : element.getDetail()) 
36030          composeExplanationOfBenefitAddedItemDetailComponent("detail", e);
36031      }
36032  }
36033
36034  protected void composeExplanationOfBenefitAddedItemDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
36035    if (element != null) {
36036      composeElementAttributes(element);
36037      xml.enter(FHIR_NS, name);
36038      composeExplanationOfBenefitAddedItemDetailComponentElements(element);
36039      composeElementClose(element);
36040      xml.exit(FHIR_NS, name);
36041    }
36042  }
36043
36044  protected void composeExplanationOfBenefitAddedItemDetailComponentElements(ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
36045      composeBackboneElementElements(element);
36046      if (element.hasProductOrService()) {
36047        composeCodeableConcept("productOrService", element.getProductOrService());
36048      }
36049      if (element.hasModifier()) { 
36050        for (CodeableConcept e : element.getModifier()) 
36051          composeCodeableConcept("modifier", e);
36052      }
36053      if (element.hasQuantity()) {
36054        composeQuantity("quantity", element.getQuantity());
36055      }
36056      if (element.hasUnitPrice()) {
36057        composeMoney("unitPrice", element.getUnitPrice());
36058      }
36059      if (element.hasFactorElement()) {
36060        composeDecimal("factor", element.getFactorElement());
36061      }
36062      if (element.hasNet()) {
36063        composeMoney("net", element.getNet());
36064      }
36065      if (element.hasNoteNumber()) { 
36066        for (PositiveIntType e : element.getNoteNumber()) 
36067          composePositiveInt("noteNumber", e);
36068      }
36069      if (element.hasAdjudication()) { 
36070        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
36071          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
36072      }
36073      if (element.hasSubDetail()) { 
36074        for (ExplanationOfBenefit.AddedItemDetailSubDetailComponent e : element.getSubDetail()) 
36075          composeExplanationOfBenefitAddedItemDetailSubDetailComponent("subDetail", e);
36076      }
36077  }
36078
36079  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
36080    if (element != null) {
36081      composeElementAttributes(element);
36082      xml.enter(FHIR_NS, name);
36083      composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(element);
36084      composeElementClose(element);
36085      xml.exit(FHIR_NS, name);
36086    }
36087  }
36088
36089  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
36090      composeBackboneElementElements(element);
36091      if (element.hasProductOrService()) {
36092        composeCodeableConcept("productOrService", element.getProductOrService());
36093      }
36094      if (element.hasModifier()) { 
36095        for (CodeableConcept e : element.getModifier()) 
36096          composeCodeableConcept("modifier", e);
36097      }
36098      if (element.hasQuantity()) {
36099        composeQuantity("quantity", element.getQuantity());
36100      }
36101      if (element.hasUnitPrice()) {
36102        composeMoney("unitPrice", element.getUnitPrice());
36103      }
36104      if (element.hasFactorElement()) {
36105        composeDecimal("factor", element.getFactorElement());
36106      }
36107      if (element.hasNet()) {
36108        composeMoney("net", element.getNet());
36109      }
36110      if (element.hasNoteNumber()) { 
36111        for (PositiveIntType e : element.getNoteNumber()) 
36112          composePositiveInt("noteNumber", e);
36113      }
36114      if (element.hasAdjudication()) { 
36115        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
36116          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
36117      }
36118  }
36119
36120  protected void composeExplanationOfBenefitTotalComponent(String name, ExplanationOfBenefit.TotalComponent element) throws IOException {
36121    if (element != null) {
36122      composeElementAttributes(element);
36123      xml.enter(FHIR_NS, name);
36124      composeExplanationOfBenefitTotalComponentElements(element);
36125      composeElementClose(element);
36126      xml.exit(FHIR_NS, name);
36127    }
36128  }
36129
36130  protected void composeExplanationOfBenefitTotalComponentElements(ExplanationOfBenefit.TotalComponent element) throws IOException {
36131      composeBackboneElementElements(element);
36132      if (element.hasCategory()) {
36133        composeCodeableConcept("category", element.getCategory());
36134      }
36135      if (element.hasAmount()) {
36136        composeMoney("amount", element.getAmount());
36137      }
36138  }
36139
36140  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
36141    if (element != null) {
36142      composeElementAttributes(element);
36143      xml.enter(FHIR_NS, name);
36144      composeExplanationOfBenefitPaymentComponentElements(element);
36145      composeElementClose(element);
36146      xml.exit(FHIR_NS, name);
36147    }
36148  }
36149
36150  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
36151      composeBackboneElementElements(element);
36152      if (element.hasType()) {
36153        composeCodeableConcept("type", element.getType());
36154      }
36155      if (element.hasAdjustment()) {
36156        composeMoney("adjustment", element.getAdjustment());
36157      }
36158      if (element.hasAdjustmentReason()) {
36159        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
36160      }
36161      if (element.hasDateElement()) {
36162        composeDate("date", element.getDateElement());
36163      }
36164      if (element.hasAmount()) {
36165        composeMoney("amount", element.getAmount());
36166      }
36167      if (element.hasIdentifier()) {
36168        composeIdentifier("identifier", element.getIdentifier());
36169      }
36170  }
36171
36172  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
36173    if (element != null) {
36174      composeElementAttributes(element);
36175      xml.enter(FHIR_NS, name);
36176      composeExplanationOfBenefitNoteComponentElements(element);
36177      composeElementClose(element);
36178      xml.exit(FHIR_NS, name);
36179    }
36180  }
36181
36182  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
36183      composeBackboneElementElements(element);
36184      if (element.hasNumberElement()) {
36185        composePositiveInt("number", element.getNumberElement());
36186      }
36187      if (element.hasTypeElement())
36188        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
36189      if (element.hasTextElement()) {
36190        composeString("text", element.getTextElement());
36191      }
36192      if (element.hasLanguage()) {
36193        composeCodeableConcept("language", element.getLanguage());
36194      }
36195  }
36196
36197  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
36198    if (element != null) {
36199      composeElementAttributes(element);
36200      xml.enter(FHIR_NS, name);
36201      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
36202      composeElementClose(element);
36203      xml.exit(FHIR_NS, name);
36204    }
36205  }
36206
36207  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
36208      composeBackboneElementElements(element);
36209      if (element.hasCategory()) {
36210        composeCodeableConcept("category", element.getCategory());
36211      }
36212      if (element.hasExcludedElement()) {
36213        composeBoolean("excluded", element.getExcludedElement());
36214      }
36215      if (element.hasNameElement()) {
36216        composeString("name", element.getNameElement());
36217      }
36218      if (element.hasDescriptionElement()) {
36219        composeString("description", element.getDescriptionElement());
36220      }
36221      if (element.hasNetwork()) {
36222        composeCodeableConcept("network", element.getNetwork());
36223      }
36224      if (element.hasUnit()) {
36225        composeCodeableConcept("unit", element.getUnit());
36226      }
36227      if (element.hasTerm()) {
36228        composeCodeableConcept("term", element.getTerm());
36229      }
36230      if (element.hasFinancial()) { 
36231        for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
36232          composeExplanationOfBenefitBenefitComponent("financial", e);
36233      }
36234  }
36235
36236  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
36237    if (element != null) {
36238      composeElementAttributes(element);
36239      xml.enter(FHIR_NS, name);
36240      composeExplanationOfBenefitBenefitComponentElements(element);
36241      composeElementClose(element);
36242      xml.exit(FHIR_NS, name);
36243    }
36244  }
36245
36246  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
36247      composeBackboneElementElements(element);
36248      if (element.hasType()) {
36249        composeCodeableConcept("type", element.getType());
36250      }
36251      if (element.hasAllowed()) {
36252        composeType("allowed", element.getAllowed());
36253      }      if (element.hasUsed()) {
36254        composeType("used", element.getUsed());
36255      }  }
36256
36257  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
36258    if (element != null) {
36259      composeDomainResourceAttributes(element);
36260      xml.enter(FHIR_NS, name);
36261      composeFamilyMemberHistoryElements(element);
36262      composeElementClose(element);
36263      xml.exit(FHIR_NS, name);
36264    }
36265  }
36266
36267  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
36268      composeDomainResourceElements(element);
36269      if (element.hasIdentifier()) { 
36270        for (Identifier e : element.getIdentifier()) 
36271          composeIdentifier("identifier", e);
36272      }
36273      if (element.hasInstantiatesCanonical()) { 
36274        for (CanonicalType e : element.getInstantiatesCanonical()) 
36275          composeCanonical("instantiatesCanonical", e);
36276      }
36277      if (element.hasInstantiatesUri()) { 
36278        for (UriType e : element.getInstantiatesUri()) 
36279          composeUri("instantiatesUri", e);
36280      }
36281      if (element.hasStatusElement())
36282        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
36283      if (element.hasDataAbsentReason()) {
36284        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
36285      }
36286      if (element.hasPatient()) {
36287        composeReference("patient", element.getPatient());
36288      }
36289      if (element.hasDateElement()) {
36290        composeDateTime("date", element.getDateElement());
36291      }
36292      if (element.hasNameElement()) {
36293        composeString("name", element.getNameElement());
36294      }
36295      if (element.hasRelationship()) {
36296        composeCodeableConcept("relationship", element.getRelationship());
36297      }
36298      if (element.hasSex()) {
36299        composeCodeableConcept("sex", element.getSex());
36300      }
36301      if (element.hasBorn()) {
36302        composeType("born", element.getBorn());
36303      }      if (element.hasAge()) {
36304        composeType("age", element.getAge());
36305      }      if (element.hasEstimatedAgeElement()) {
36306        composeBoolean("estimatedAge", element.getEstimatedAgeElement());
36307      }
36308      if (element.hasDeceased()) {
36309        composeType("deceased", element.getDeceased());
36310      }      if (element.hasReasonCode()) { 
36311        for (CodeableConcept e : element.getReasonCode()) 
36312          composeCodeableConcept("reasonCode", e);
36313      }
36314      if (element.hasReasonReference()) { 
36315        for (Reference e : element.getReasonReference()) 
36316          composeReference("reasonReference", e);
36317      }
36318      if (element.hasNote()) { 
36319        for (Annotation e : element.getNote()) 
36320          composeAnnotation("note", e);
36321      }
36322      if (element.hasCondition()) { 
36323        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
36324          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
36325      }
36326  }
36327
36328  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
36329    if (element != null) {
36330      composeElementAttributes(element);
36331      xml.enter(FHIR_NS, name);
36332      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(element);
36333      composeElementClose(element);
36334      xml.exit(FHIR_NS, name);
36335    }
36336  }
36337
36338  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
36339      composeBackboneElementElements(element);
36340      if (element.hasCode()) {
36341        composeCodeableConcept("code", element.getCode());
36342      }
36343      if (element.hasOutcome()) {
36344        composeCodeableConcept("outcome", element.getOutcome());
36345      }
36346      if (element.hasContributedToDeathElement()) {
36347        composeBoolean("contributedToDeath", element.getContributedToDeathElement());
36348      }
36349      if (element.hasOnset()) {
36350        composeType("onset", element.getOnset());
36351      }      if (element.hasNote()) { 
36352        for (Annotation e : element.getNote()) 
36353          composeAnnotation("note", e);
36354      }
36355  }
36356
36357  protected void composeFlag(String name, Flag element) throws IOException {
36358    if (element != null) {
36359      composeDomainResourceAttributes(element);
36360      xml.enter(FHIR_NS, name);
36361      composeFlagElements(element);
36362      composeElementClose(element);
36363      xml.exit(FHIR_NS, name);
36364    }
36365  }
36366
36367  protected void composeFlagElements(Flag element) throws IOException {
36368      composeDomainResourceElements(element);
36369      if (element.hasIdentifier()) { 
36370        for (Identifier e : element.getIdentifier()) 
36371          composeIdentifier("identifier", e);
36372      }
36373      if (element.hasStatusElement())
36374        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
36375      if (element.hasCategory()) { 
36376        for (CodeableConcept e : element.getCategory()) 
36377          composeCodeableConcept("category", e);
36378      }
36379      if (element.hasCode()) {
36380        composeCodeableConcept("code", element.getCode());
36381      }
36382      if (element.hasSubject()) {
36383        composeReference("subject", element.getSubject());
36384      }
36385      if (element.hasPeriod()) {
36386        composePeriod("period", element.getPeriod());
36387      }
36388      if (element.hasEncounter()) {
36389        composeReference("encounter", element.getEncounter());
36390      }
36391      if (element.hasAuthor()) {
36392        composeReference("author", element.getAuthor());
36393      }
36394  }
36395
36396  protected void composeGoal(String name, Goal element) throws IOException {
36397    if (element != null) {
36398      composeDomainResourceAttributes(element);
36399      xml.enter(FHIR_NS, name);
36400      composeGoalElements(element);
36401      composeElementClose(element);
36402      xml.exit(FHIR_NS, name);
36403    }
36404  }
36405
36406  protected void composeGoalElements(Goal element) throws IOException {
36407      composeDomainResourceElements(element);
36408      if (element.hasIdentifier()) { 
36409        for (Identifier e : element.getIdentifier()) 
36410          composeIdentifier("identifier", e);
36411      }
36412      if (element.hasLifecycleStatusElement())
36413        composeEnumeration("lifecycleStatus", element.getLifecycleStatusElement(), new Goal.GoalLifecycleStatusEnumFactory());
36414      if (element.hasAchievementStatus()) {
36415        composeCodeableConcept("achievementStatus", element.getAchievementStatus());
36416      }
36417      if (element.hasCategory()) { 
36418        for (CodeableConcept e : element.getCategory()) 
36419          composeCodeableConcept("category", e);
36420      }
36421      if (element.hasPriority()) {
36422        composeCodeableConcept("priority", element.getPriority());
36423      }
36424      if (element.hasDescription()) {
36425        composeCodeableConcept("description", element.getDescription());
36426      }
36427      if (element.hasSubject()) {
36428        composeReference("subject", element.getSubject());
36429      }
36430      if (element.hasStart()) {
36431        composeType("start", element.getStart());
36432      }      if (element.hasTarget()) { 
36433        for (Goal.GoalTargetComponent e : element.getTarget()) 
36434          composeGoalGoalTargetComponent("target", e);
36435      }
36436      if (element.hasStatusDateElement()) {
36437        composeDate("statusDate", element.getStatusDateElement());
36438      }
36439      if (element.hasStatusReasonElement()) {
36440        composeString("statusReason", element.getStatusReasonElement());
36441      }
36442      if (element.hasExpressedBy()) {
36443        composeReference("expressedBy", element.getExpressedBy());
36444      }
36445      if (element.hasAddresses()) { 
36446        for (Reference e : element.getAddresses()) 
36447          composeReference("addresses", e);
36448      }
36449      if (element.hasNote()) { 
36450        for (Annotation e : element.getNote()) 
36451          composeAnnotation("note", e);
36452      }
36453      if (element.hasOutcomeCode()) { 
36454        for (CodeableConcept e : element.getOutcomeCode()) 
36455          composeCodeableConcept("outcomeCode", e);
36456      }
36457      if (element.hasOutcomeReference()) { 
36458        for (Reference e : element.getOutcomeReference()) 
36459          composeReference("outcomeReference", e);
36460      }
36461  }
36462
36463  protected void composeGoalGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
36464    if (element != null) {
36465      composeElementAttributes(element);
36466      xml.enter(FHIR_NS, name);
36467      composeGoalGoalTargetComponentElements(element);
36468      composeElementClose(element);
36469      xml.exit(FHIR_NS, name);
36470    }
36471  }
36472
36473  protected void composeGoalGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
36474      composeBackboneElementElements(element);
36475      if (element.hasMeasure()) {
36476        composeCodeableConcept("measure", element.getMeasure());
36477      }
36478      if (element.hasDetail()) {
36479        composeType("detail", element.getDetail());
36480      }      if (element.hasDue()) {
36481        composeType("due", element.getDue());
36482      }  }
36483
36484  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
36485    if (element != null) {
36486      composeDomainResourceAttributes(element);
36487      xml.enter(FHIR_NS, name);
36488      composeGraphDefinitionElements(element);
36489      composeElementClose(element);
36490      xml.exit(FHIR_NS, name);
36491    }
36492  }
36493
36494  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
36495      composeDomainResourceElements(element);
36496      if (element.hasUrlElement()) {
36497        composeUri("url", element.getUrlElement());
36498      }
36499      if (element.hasVersionElement()) {
36500        composeString("version", element.getVersionElement());
36501      }
36502      if (element.hasNameElement()) {
36503        composeString("name", element.getNameElement());
36504      }
36505      if (element.hasStatusElement())
36506        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36507      if (element.hasExperimentalElement()) {
36508        composeBoolean("experimental", element.getExperimentalElement());
36509      }
36510      if (element.hasDateElement()) {
36511        composeDateTime("date", element.getDateElement());
36512      }
36513      if (element.hasPublisherElement()) {
36514        composeString("publisher", element.getPublisherElement());
36515      }
36516      if (element.hasContact()) { 
36517        for (ContactDetail e : element.getContact()) 
36518          composeContactDetail("contact", e);
36519      }
36520      if (element.hasDescriptionElement()) {
36521        composeMarkdown("description", element.getDescriptionElement());
36522      }
36523      if (element.hasUseContext()) { 
36524        for (UsageContext e : element.getUseContext()) 
36525          composeUsageContext("useContext", e);
36526      }
36527      if (element.hasJurisdiction()) { 
36528        for (CodeableConcept e : element.getJurisdiction()) 
36529          composeCodeableConcept("jurisdiction", e);
36530      }
36531      if (element.hasPurposeElement()) {
36532        composeMarkdown("purpose", element.getPurposeElement());
36533      }
36534      if (element.hasStartElement()) {
36535        composeCode("start", element.getStartElement());
36536      }
36537      if (element.hasProfileElement()) {
36538        composeCanonical("profile", element.getProfileElement());
36539      }
36540      if (element.hasLink()) { 
36541        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
36542          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
36543      }
36544  }
36545
36546  protected void composeGraphDefinitionGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
36547    if (element != null) {
36548      composeElementAttributes(element);
36549      xml.enter(FHIR_NS, name);
36550      composeGraphDefinitionGraphDefinitionLinkComponentElements(element);
36551      composeElementClose(element);
36552      xml.exit(FHIR_NS, name);
36553    }
36554  }
36555
36556  protected void composeGraphDefinitionGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
36557      composeBackboneElementElements(element);
36558      if (element.hasPathElement()) {
36559        composeString("path", element.getPathElement());
36560      }
36561      if (element.hasSliceNameElement()) {
36562        composeString("sliceName", element.getSliceNameElement());
36563      }
36564      if (element.hasMinElement()) {
36565        composeInteger("min", element.getMinElement());
36566      }
36567      if (element.hasMaxElement()) {
36568        composeString("max", element.getMaxElement());
36569      }
36570      if (element.hasDescriptionElement()) {
36571        composeString("description", element.getDescriptionElement());
36572      }
36573      if (element.hasTarget()) { 
36574        for (GraphDefinition.GraphDefinitionLinkTargetComponent e : element.getTarget()) 
36575          composeGraphDefinitionGraphDefinitionLinkTargetComponent("target", e);
36576      }
36577  }
36578
36579  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(String name, GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
36580    if (element != null) {
36581      composeElementAttributes(element);
36582      xml.enter(FHIR_NS, name);
36583      composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(element);
36584      composeElementClose(element);
36585      xml.exit(FHIR_NS, name);
36586    }
36587  }
36588
36589  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
36590      composeBackboneElementElements(element);
36591      if (element.hasTypeElement()) {
36592        composeCode("type", element.getTypeElement());
36593      }
36594      if (element.hasParamsElement()) {
36595        composeString("params", element.getParamsElement());
36596      }
36597      if (element.hasProfileElement()) {
36598        composeCanonical("profile", element.getProfileElement());
36599      }
36600      if (element.hasCompartment()) { 
36601        for (GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent e : element.getCompartment()) 
36602          composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent("compartment", e);
36603      }
36604      if (element.hasLink()) { 
36605        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
36606          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
36607      }
36608  }
36609
36610  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
36611    if (element != null) {
36612      composeElementAttributes(element);
36613      xml.enter(FHIR_NS, name);
36614      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(element);
36615      composeElementClose(element);
36616      xml.exit(FHIR_NS, name);
36617    }
36618  }
36619
36620  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
36621      composeBackboneElementElements(element);
36622      if (element.hasUseElement())
36623        composeEnumeration("use", element.getUseElement(), new GraphDefinition.GraphCompartmentUseEnumFactory());
36624      if (element.hasCodeElement())
36625        composeEnumeration("code", element.getCodeElement(), new GraphDefinition.CompartmentCodeEnumFactory());
36626      if (element.hasRuleElement())
36627        composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
36628      if (element.hasExpressionElement()) {
36629        composeString("expression", element.getExpressionElement());
36630      }
36631      if (element.hasDescriptionElement()) {
36632        composeString("description", element.getDescriptionElement());
36633      }
36634  }
36635
36636  protected void composeGroup(String name, Group element) throws IOException {
36637    if (element != null) {
36638      composeDomainResourceAttributes(element);
36639      xml.enter(FHIR_NS, name);
36640      composeGroupElements(element);
36641      composeElementClose(element);
36642      xml.exit(FHIR_NS, name);
36643    }
36644  }
36645
36646  protected void composeGroupElements(Group element) throws IOException {
36647      composeDomainResourceElements(element);
36648      if (element.hasIdentifier()) { 
36649        for (Identifier e : element.getIdentifier()) 
36650          composeIdentifier("identifier", e);
36651      }
36652      if (element.hasActiveElement()) {
36653        composeBoolean("active", element.getActiveElement());
36654      }
36655      if (element.hasTypeElement())
36656        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
36657      if (element.hasActualElement()) {
36658        composeBoolean("actual", element.getActualElement());
36659      }
36660      if (element.hasCode()) {
36661        composeCodeableConcept("code", element.getCode());
36662      }
36663      if (element.hasNameElement()) {
36664        composeString("name", element.getNameElement());
36665      }
36666      if (element.hasQuantityElement()) {
36667        composeUnsignedInt("quantity", element.getQuantityElement());
36668      }
36669      if (element.hasManagingEntity()) {
36670        composeReference("managingEntity", element.getManagingEntity());
36671      }
36672      if (element.hasCharacteristic()) { 
36673        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
36674          composeGroupGroupCharacteristicComponent("characteristic", e);
36675      }
36676      if (element.hasMember()) { 
36677        for (Group.GroupMemberComponent e : element.getMember()) 
36678          composeGroupGroupMemberComponent("member", e);
36679      }
36680  }
36681
36682  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
36683    if (element != null) {
36684      composeElementAttributes(element);
36685      xml.enter(FHIR_NS, name);
36686      composeGroupGroupCharacteristicComponentElements(element);
36687      composeElementClose(element);
36688      xml.exit(FHIR_NS, name);
36689    }
36690  }
36691
36692  protected void composeGroupGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
36693      composeBackboneElementElements(element);
36694      if (element.hasCode()) {
36695        composeCodeableConcept("code", element.getCode());
36696      }
36697      if (element.hasValue()) {
36698        composeType("value", element.getValue());
36699      }      if (element.hasExcludeElement()) {
36700        composeBoolean("exclude", element.getExcludeElement());
36701      }
36702      if (element.hasPeriod()) {
36703        composePeriod("period", element.getPeriod());
36704      }
36705  }
36706
36707  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
36708    if (element != null) {
36709      composeElementAttributes(element);
36710      xml.enter(FHIR_NS, name);
36711      composeGroupGroupMemberComponentElements(element);
36712      composeElementClose(element);
36713      xml.exit(FHIR_NS, name);
36714    }
36715  }
36716
36717  protected void composeGroupGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
36718      composeBackboneElementElements(element);
36719      if (element.hasEntity()) {
36720        composeReference("entity", element.getEntity());
36721      }
36722      if (element.hasPeriod()) {
36723        composePeriod("period", element.getPeriod());
36724      }
36725      if (element.hasInactiveElement()) {
36726        composeBoolean("inactive", element.getInactiveElement());
36727      }
36728  }
36729
36730  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
36731    if (element != null) {
36732      composeDomainResourceAttributes(element);
36733      xml.enter(FHIR_NS, name);
36734      composeGuidanceResponseElements(element);
36735      composeElementClose(element);
36736      xml.exit(FHIR_NS, name);
36737    }
36738  }
36739
36740  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
36741      composeDomainResourceElements(element);
36742      if (element.hasRequestIdentifier()) {
36743        composeIdentifier("requestIdentifier", element.getRequestIdentifier());
36744      }
36745      if (element.hasIdentifier()) { 
36746        for (Identifier e : element.getIdentifier()) 
36747          composeIdentifier("identifier", e);
36748      }
36749      if (element.hasModule()) {
36750        composeType("module", element.getModule());
36751      }      if (element.hasStatusElement())
36752        composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
36753      if (element.hasSubject()) {
36754        composeReference("subject", element.getSubject());
36755      }
36756      if (element.hasEncounter()) {
36757        composeReference("encounter", element.getEncounter());
36758      }
36759      if (element.hasOccurrenceDateTimeElement()) {
36760        composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
36761      }
36762      if (element.hasPerformer()) {
36763        composeReference("performer", element.getPerformer());
36764      }
36765      if (element.hasReasonCode()) { 
36766        for (CodeableConcept e : element.getReasonCode()) 
36767          composeCodeableConcept("reasonCode", e);
36768      }
36769      if (element.hasReasonReference()) { 
36770        for (Reference e : element.getReasonReference()) 
36771          composeReference("reasonReference", e);
36772      }
36773      if (element.hasNote()) { 
36774        for (Annotation e : element.getNote()) 
36775          composeAnnotation("note", e);
36776      }
36777      if (element.hasEvaluationMessage()) { 
36778        for (Reference e : element.getEvaluationMessage()) 
36779          composeReference("evaluationMessage", e);
36780      }
36781      if (element.hasOutputParameters()) {
36782        composeReference("outputParameters", element.getOutputParameters());
36783      }
36784      if (element.hasResult()) {
36785        composeReference("result", element.getResult());
36786      }
36787      if (element.hasDataRequirement()) { 
36788        for (DataRequirement e : element.getDataRequirement()) 
36789          composeDataRequirement("dataRequirement", e);
36790      }
36791  }
36792
36793  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
36794    if (element != null) {
36795      composeDomainResourceAttributes(element);
36796      xml.enter(FHIR_NS, name);
36797      composeHealthcareServiceElements(element);
36798      composeElementClose(element);
36799      xml.exit(FHIR_NS, name);
36800    }
36801  }
36802
36803  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
36804      composeDomainResourceElements(element);
36805      if (element.hasIdentifier()) { 
36806        for (Identifier e : element.getIdentifier()) 
36807          composeIdentifier("identifier", e);
36808      }
36809      if (element.hasActiveElement()) {
36810        composeBoolean("active", element.getActiveElement());
36811      }
36812      if (element.hasProvidedBy()) {
36813        composeReference("providedBy", element.getProvidedBy());
36814      }
36815      if (element.hasCategory()) { 
36816        for (CodeableConcept e : element.getCategory()) 
36817          composeCodeableConcept("category", e);
36818      }
36819      if (element.hasType()) { 
36820        for (CodeableConcept e : element.getType()) 
36821          composeCodeableConcept("type", e);
36822      }
36823      if (element.hasSpecialty()) { 
36824        for (CodeableConcept e : element.getSpecialty()) 
36825          composeCodeableConcept("specialty", e);
36826      }
36827      if (element.hasLocation()) { 
36828        for (Reference e : element.getLocation()) 
36829          composeReference("location", e);
36830      }
36831      if (element.hasNameElement()) {
36832        composeString("name", element.getNameElement());
36833      }
36834      if (element.hasCommentElement()) {
36835        composeString("comment", element.getCommentElement());
36836      }
36837      if (element.hasExtraDetailsElement()) {
36838        composeMarkdown("extraDetails", element.getExtraDetailsElement());
36839      }
36840      if (element.hasPhoto()) {
36841        composeAttachment("photo", element.getPhoto());
36842      }
36843      if (element.hasTelecom()) { 
36844        for (ContactPoint e : element.getTelecom()) 
36845          composeContactPoint("telecom", e);
36846      }
36847      if (element.hasCoverageArea()) { 
36848        for (Reference e : element.getCoverageArea()) 
36849          composeReference("coverageArea", e);
36850      }
36851      if (element.hasServiceProvisionCode()) { 
36852        for (CodeableConcept e : element.getServiceProvisionCode()) 
36853          composeCodeableConcept("serviceProvisionCode", e);
36854      }
36855      if (element.hasEligibility()) { 
36856        for (HealthcareService.HealthcareServiceEligibilityComponent e : element.getEligibility()) 
36857          composeHealthcareServiceHealthcareServiceEligibilityComponent("eligibility", e);
36858      }
36859      if (element.hasProgram()) { 
36860        for (CodeableConcept e : element.getProgram()) 
36861          composeCodeableConcept("program", e);
36862      }
36863      if (element.hasCharacteristic()) { 
36864        for (CodeableConcept e : element.getCharacteristic()) 
36865          composeCodeableConcept("characteristic", e);
36866      }
36867      if (element.hasCommunication()) { 
36868        for (CodeableConcept e : element.getCommunication()) 
36869          composeCodeableConcept("communication", e);
36870      }
36871      if (element.hasReferralMethod()) { 
36872        for (CodeableConcept e : element.getReferralMethod()) 
36873          composeCodeableConcept("referralMethod", e);
36874      }
36875      if (element.hasAppointmentRequiredElement()) {
36876        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
36877      }
36878      if (element.hasAvailableTime()) { 
36879        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
36880          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
36881      }
36882      if (element.hasNotAvailable()) { 
36883        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
36884          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
36885      }
36886      if (element.hasAvailabilityExceptionsElement()) {
36887        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
36888      }
36889      if (element.hasEndpoint()) { 
36890        for (Reference e : element.getEndpoint()) 
36891          composeReference("endpoint", e);
36892      }
36893  }
36894
36895  protected void composeHealthcareServiceHealthcareServiceEligibilityComponent(String name, HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
36896    if (element != null) {
36897      composeElementAttributes(element);
36898      xml.enter(FHIR_NS, name);
36899      composeHealthcareServiceHealthcareServiceEligibilityComponentElements(element);
36900      composeElementClose(element);
36901      xml.exit(FHIR_NS, name);
36902    }
36903  }
36904
36905  protected void composeHealthcareServiceHealthcareServiceEligibilityComponentElements(HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
36906      composeBackboneElementElements(element);
36907      if (element.hasCode()) {
36908        composeCodeableConcept("code", element.getCode());
36909      }
36910      if (element.hasCommentElement()) {
36911        composeMarkdown("comment", element.getCommentElement());
36912      }
36913  }
36914
36915  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
36916    if (element != null) {
36917      composeElementAttributes(element);
36918      xml.enter(FHIR_NS, name);
36919      composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(element);
36920      composeElementClose(element);
36921      xml.exit(FHIR_NS, name);
36922    }
36923  }
36924
36925  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
36926      composeBackboneElementElements(element);
36927        if (element.hasDaysOfWeek()) 
36928          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
36929            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
36930      if (element.hasAllDayElement()) {
36931        composeBoolean("allDay", element.getAllDayElement());
36932      }
36933      if (element.hasAvailableStartTimeElement()) {
36934        composeTime("availableStartTime", element.getAvailableStartTimeElement());
36935      }
36936      if (element.hasAvailableEndTimeElement()) {
36937        composeTime("availableEndTime", element.getAvailableEndTimeElement());
36938      }
36939  }
36940
36941  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
36942    if (element != null) {
36943      composeElementAttributes(element);
36944      xml.enter(FHIR_NS, name);
36945      composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(element);
36946      composeElementClose(element);
36947      xml.exit(FHIR_NS, name);
36948    }
36949  }
36950
36951  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
36952      composeBackboneElementElements(element);
36953      if (element.hasDescriptionElement()) {
36954        composeString("description", element.getDescriptionElement());
36955      }
36956      if (element.hasDuring()) {
36957        composePeriod("during", element.getDuring());
36958      }
36959  }
36960
36961  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
36962    if (element != null) {
36963      composeDomainResourceAttributes(element);
36964      xml.enter(FHIR_NS, name);
36965      composeImagingStudyElements(element);
36966      composeElementClose(element);
36967      xml.exit(FHIR_NS, name);
36968    }
36969  }
36970
36971  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
36972      composeDomainResourceElements(element);
36973      if (element.hasIdentifier()) { 
36974        for (Identifier e : element.getIdentifier()) 
36975          composeIdentifier("identifier", e);
36976      }
36977      if (element.hasStatusElement())
36978        composeEnumeration("status", element.getStatusElement(), new ImagingStudy.ImagingStudyStatusEnumFactory());
36979      if (element.hasModality()) { 
36980        for (Coding e : element.getModality()) 
36981          composeCoding("modality", e);
36982      }
36983      if (element.hasSubject()) {
36984        composeReference("subject", element.getSubject());
36985      }
36986      if (element.hasEncounter()) {
36987        composeReference("encounter", element.getEncounter());
36988      }
36989      if (element.hasStartedElement()) {
36990        composeDateTime("started", element.getStartedElement());
36991      }
36992      if (element.hasBasedOn()) { 
36993        for (Reference e : element.getBasedOn()) 
36994          composeReference("basedOn", e);
36995      }
36996      if (element.hasReferrer()) {
36997        composeReference("referrer", element.getReferrer());
36998      }
36999      if (element.hasInterpreter()) { 
37000        for (Reference e : element.getInterpreter()) 
37001          composeReference("interpreter", e);
37002      }
37003      if (element.hasEndpoint()) { 
37004        for (Reference e : element.getEndpoint()) 
37005          composeReference("endpoint", e);
37006      }
37007      if (element.hasNumberOfSeriesElement()) {
37008        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
37009      }
37010      if (element.hasNumberOfInstancesElement()) {
37011        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
37012      }
37013      if (element.hasProcedureReference()) {
37014        composeReference("procedureReference", element.getProcedureReference());
37015      }
37016      if (element.hasProcedureCode()) { 
37017        for (CodeableConcept e : element.getProcedureCode()) 
37018          composeCodeableConcept("procedureCode", e);
37019      }
37020      if (element.hasLocation()) {
37021        composeReference("location", element.getLocation());
37022      }
37023      if (element.hasReasonCode()) { 
37024        for (CodeableConcept e : element.getReasonCode()) 
37025          composeCodeableConcept("reasonCode", e);
37026      }
37027      if (element.hasReasonReference()) { 
37028        for (Reference e : element.getReasonReference()) 
37029          composeReference("reasonReference", e);
37030      }
37031      if (element.hasNote()) { 
37032        for (Annotation e : element.getNote()) 
37033          composeAnnotation("note", e);
37034      }
37035      if (element.hasDescriptionElement()) {
37036        composeString("description", element.getDescriptionElement());
37037      }
37038      if (element.hasSeries()) { 
37039        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
37040          composeImagingStudyImagingStudySeriesComponent("series", e);
37041      }
37042  }
37043
37044  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
37045    if (element != null) {
37046      composeElementAttributes(element);
37047      xml.enter(FHIR_NS, name);
37048      composeImagingStudyImagingStudySeriesComponentElements(element);
37049      composeElementClose(element);
37050      xml.exit(FHIR_NS, name);
37051    }
37052  }
37053
37054  protected void composeImagingStudyImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
37055      composeBackboneElementElements(element);
37056      if (element.hasUidElement()) {
37057        composeId("uid", element.getUidElement());
37058      }
37059      if (element.hasNumberElement()) {
37060        composeUnsignedInt("number", element.getNumberElement());
37061      }
37062      if (element.hasModality()) {
37063        composeCoding("modality", element.getModality());
37064      }
37065      if (element.hasDescriptionElement()) {
37066        composeString("description", element.getDescriptionElement());
37067      }
37068      if (element.hasNumberOfInstancesElement()) {
37069        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
37070      }
37071      if (element.hasEndpoint()) { 
37072        for (Reference e : element.getEndpoint()) 
37073          composeReference("endpoint", e);
37074      }
37075      if (element.hasBodySite()) {
37076        composeCoding("bodySite", element.getBodySite());
37077      }
37078      if (element.hasLaterality()) {
37079        composeCoding("laterality", element.getLaterality());
37080      }
37081      if (element.hasSpecimen()) { 
37082        for (Reference e : element.getSpecimen()) 
37083          composeReference("specimen", e);
37084      }
37085      if (element.hasStartedElement()) {
37086        composeDateTime("started", element.getStartedElement());
37087      }
37088      if (element.hasPerformer()) { 
37089        for (ImagingStudy.ImagingStudySeriesPerformerComponent e : element.getPerformer()) 
37090          composeImagingStudyImagingStudySeriesPerformerComponent("performer", e);
37091      }
37092      if (element.hasInstance()) { 
37093        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
37094          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
37095      }
37096  }
37097
37098  protected void composeImagingStudyImagingStudySeriesPerformerComponent(String name, ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
37099    if (element != null) {
37100      composeElementAttributes(element);
37101      xml.enter(FHIR_NS, name);
37102      composeImagingStudyImagingStudySeriesPerformerComponentElements(element);
37103      composeElementClose(element);
37104      xml.exit(FHIR_NS, name);
37105    }
37106  }
37107
37108  protected void composeImagingStudyImagingStudySeriesPerformerComponentElements(ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
37109      composeBackboneElementElements(element);
37110      if (element.hasFunction()) {
37111        composeCodeableConcept("function", element.getFunction());
37112      }
37113      if (element.hasActor()) {
37114        composeReference("actor", element.getActor());
37115      }
37116  }
37117
37118  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
37119    if (element != null) {
37120      composeElementAttributes(element);
37121      xml.enter(FHIR_NS, name);
37122      composeImagingStudyImagingStudySeriesInstanceComponentElements(element);
37123      composeElementClose(element);
37124      xml.exit(FHIR_NS, name);
37125    }
37126  }
37127
37128  protected void composeImagingStudyImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
37129      composeBackboneElementElements(element);
37130      if (element.hasUidElement()) {
37131        composeId("uid", element.getUidElement());
37132      }
37133      if (element.hasSopClass()) {
37134        composeCoding("sopClass", element.getSopClass());
37135      }
37136      if (element.hasNumberElement()) {
37137        composeUnsignedInt("number", element.getNumberElement());
37138      }
37139      if (element.hasTitleElement()) {
37140        composeString("title", element.getTitleElement());
37141      }
37142  }
37143
37144  protected void composeImmunization(String name, Immunization element) throws IOException {
37145    if (element != null) {
37146      composeDomainResourceAttributes(element);
37147      xml.enter(FHIR_NS, name);
37148      composeImmunizationElements(element);
37149      composeElementClose(element);
37150      xml.exit(FHIR_NS, name);
37151    }
37152  }
37153
37154  protected void composeImmunizationElements(Immunization element) throws IOException {
37155      composeDomainResourceElements(element);
37156      if (element.hasIdentifier()) { 
37157        for (Identifier e : element.getIdentifier()) 
37158          composeIdentifier("identifier", e);
37159      }
37160      if (element.hasStatusElement())
37161        composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusEnumFactory());
37162      if (element.hasStatusReason()) {
37163        composeCodeableConcept("statusReason", element.getStatusReason());
37164      }
37165      if (element.hasVaccineCode()) {
37166        composeCodeableConcept("vaccineCode", element.getVaccineCode());
37167      }
37168      if (element.hasPatient()) {
37169        composeReference("patient", element.getPatient());
37170      }
37171      if (element.hasEncounter()) {
37172        composeReference("encounter", element.getEncounter());
37173      }
37174      if (element.hasOccurrence()) {
37175        composeType("occurrence", element.getOccurrence());
37176      }      if (element.hasRecordedElement()) {
37177        composeDateTime("recorded", element.getRecordedElement());
37178      }
37179      if (element.hasPrimarySourceElement()) {
37180        composeBoolean("primarySource", element.getPrimarySourceElement());
37181      }
37182      if (element.hasReportOrigin()) {
37183        composeCodeableConcept("reportOrigin", element.getReportOrigin());
37184      }
37185      if (element.hasLocation()) {
37186        composeReference("location", element.getLocation());
37187      }
37188      if (element.hasManufacturer()) {
37189        composeReference("manufacturer", element.getManufacturer());
37190      }
37191      if (element.hasLotNumberElement()) {
37192        composeString("lotNumber", element.getLotNumberElement());
37193      }
37194      if (element.hasExpirationDateElement()) {
37195        composeDate("expirationDate", element.getExpirationDateElement());
37196      }
37197      if (element.hasSite()) {
37198        composeCodeableConcept("site", element.getSite());
37199      }
37200      if (element.hasRoute()) {
37201        composeCodeableConcept("route", element.getRoute());
37202      }
37203      if (element.hasDoseQuantity()) {
37204        composeQuantity("doseQuantity", element.getDoseQuantity());
37205      }
37206      if (element.hasPerformer()) { 
37207        for (Immunization.ImmunizationPerformerComponent e : element.getPerformer()) 
37208          composeImmunizationImmunizationPerformerComponent("performer", e);
37209      }
37210      if (element.hasNote()) { 
37211        for (Annotation e : element.getNote()) 
37212          composeAnnotation("note", e);
37213      }
37214      if (element.hasReasonCode()) { 
37215        for (CodeableConcept e : element.getReasonCode()) 
37216          composeCodeableConcept("reasonCode", e);
37217      }
37218      if (element.hasReasonReference()) { 
37219        for (Reference e : element.getReasonReference()) 
37220          composeReference("reasonReference", e);
37221      }
37222      if (element.hasIsSubpotentElement()) {
37223        composeBoolean("isSubpotent", element.getIsSubpotentElement());
37224      }
37225      if (element.hasSubpotentReason()) { 
37226        for (CodeableConcept e : element.getSubpotentReason()) 
37227          composeCodeableConcept("subpotentReason", e);
37228      }
37229      if (element.hasEducation()) { 
37230        for (Immunization.ImmunizationEducationComponent e : element.getEducation()) 
37231          composeImmunizationImmunizationEducationComponent("education", e);
37232      }
37233      if (element.hasProgramEligibility()) { 
37234        for (CodeableConcept e : element.getProgramEligibility()) 
37235          composeCodeableConcept("programEligibility", e);
37236      }
37237      if (element.hasFundingSource()) {
37238        composeCodeableConcept("fundingSource", element.getFundingSource());
37239      }
37240      if (element.hasReaction()) { 
37241        for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
37242          composeImmunizationImmunizationReactionComponent("reaction", e);
37243      }
37244      if (element.hasProtocolApplied()) { 
37245        for (Immunization.ImmunizationProtocolAppliedComponent e : element.getProtocolApplied()) 
37246          composeImmunizationImmunizationProtocolAppliedComponent("protocolApplied", e);
37247      }
37248  }
37249
37250  protected void composeImmunizationImmunizationPerformerComponent(String name, Immunization.ImmunizationPerformerComponent element) throws IOException {
37251    if (element != null) {
37252      composeElementAttributes(element);
37253      xml.enter(FHIR_NS, name);
37254      composeImmunizationImmunizationPerformerComponentElements(element);
37255      composeElementClose(element);
37256      xml.exit(FHIR_NS, name);
37257    }
37258  }
37259
37260  protected void composeImmunizationImmunizationPerformerComponentElements(Immunization.ImmunizationPerformerComponent element) throws IOException {
37261      composeBackboneElementElements(element);
37262      if (element.hasFunction()) {
37263        composeCodeableConcept("function", element.getFunction());
37264      }
37265      if (element.hasActor()) {
37266        composeReference("actor", element.getActor());
37267      }
37268  }
37269
37270  protected void composeImmunizationImmunizationEducationComponent(String name, Immunization.ImmunizationEducationComponent element) throws IOException {
37271    if (element != null) {
37272      composeElementAttributes(element);
37273      xml.enter(FHIR_NS, name);
37274      composeImmunizationImmunizationEducationComponentElements(element);
37275      composeElementClose(element);
37276      xml.exit(FHIR_NS, name);
37277    }
37278  }
37279
37280  protected void composeImmunizationImmunizationEducationComponentElements(Immunization.ImmunizationEducationComponent element) throws IOException {
37281      composeBackboneElementElements(element);
37282      if (element.hasDocumentTypeElement()) {
37283        composeString("documentType", element.getDocumentTypeElement());
37284      }
37285      if (element.hasReferenceElement()) {
37286        composeUri("reference", element.getReferenceElement());
37287      }
37288      if (element.hasPublicationDateElement()) {
37289        composeDateTime("publicationDate", element.getPublicationDateElement());
37290      }
37291      if (element.hasPresentationDateElement()) {
37292        composeDateTime("presentationDate", element.getPresentationDateElement());
37293      }
37294  }
37295
37296  protected void composeImmunizationImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
37297    if (element != null) {
37298      composeElementAttributes(element);
37299      xml.enter(FHIR_NS, name);
37300      composeImmunizationImmunizationReactionComponentElements(element);
37301      composeElementClose(element);
37302      xml.exit(FHIR_NS, name);
37303    }
37304  }
37305
37306  protected void composeImmunizationImmunizationReactionComponentElements(Immunization.ImmunizationReactionComponent element) throws IOException {
37307      composeBackboneElementElements(element);
37308      if (element.hasDateElement()) {
37309        composeDateTime("date", element.getDateElement());
37310      }
37311      if (element.hasDetail()) {
37312        composeReference("detail", element.getDetail());
37313      }
37314      if (element.hasReportedElement()) {
37315        composeBoolean("reported", element.getReportedElement());
37316      }
37317  }
37318
37319  protected void composeImmunizationImmunizationProtocolAppliedComponent(String name, Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
37320    if (element != null) {
37321      composeElementAttributes(element);
37322      xml.enter(FHIR_NS, name);
37323      composeImmunizationImmunizationProtocolAppliedComponentElements(element);
37324      composeElementClose(element);
37325      xml.exit(FHIR_NS, name);
37326    }
37327  }
37328
37329  protected void composeImmunizationImmunizationProtocolAppliedComponentElements(Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
37330      composeBackboneElementElements(element);
37331      if (element.hasSeriesElement()) {
37332        composeString("series", element.getSeriesElement());
37333      }
37334      if (element.hasAuthority()) {
37335        composeReference("authority", element.getAuthority());
37336      }
37337      if (element.hasTargetDisease()) { 
37338        for (CodeableConcept e : element.getTargetDisease()) 
37339          composeCodeableConcept("targetDisease", e);
37340      }
37341      if (element.hasDoseNumber()) {
37342        composeType("doseNumber", element.getDoseNumber());
37343      }      if (element.hasSeriesDoses()) {
37344        composeType("seriesDoses", element.getSeriesDoses());
37345      }  }
37346
37347  protected void composeImmunizationEvaluation(String name, ImmunizationEvaluation element) throws IOException {
37348    if (element != null) {
37349      composeDomainResourceAttributes(element);
37350      xml.enter(FHIR_NS, name);
37351      composeImmunizationEvaluationElements(element);
37352      composeElementClose(element);
37353      xml.exit(FHIR_NS, name);
37354    }
37355  }
37356
37357  protected void composeImmunizationEvaluationElements(ImmunizationEvaluation element) throws IOException {
37358      composeDomainResourceElements(element);
37359      if (element.hasIdentifier()) { 
37360        for (Identifier e : element.getIdentifier()) 
37361          composeIdentifier("identifier", e);
37362      }
37363      if (element.hasStatusElement())
37364        composeEnumeration("status", element.getStatusElement(), new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory());
37365      if (element.hasPatient()) {
37366        composeReference("patient", element.getPatient());
37367      }
37368      if (element.hasDateElement()) {
37369        composeDateTime("date", element.getDateElement());
37370      }
37371      if (element.hasAuthority()) {
37372        composeReference("authority", element.getAuthority());
37373      }
37374      if (element.hasTargetDisease()) {
37375        composeCodeableConcept("targetDisease", element.getTargetDisease());
37376      }
37377      if (element.hasImmunizationEvent()) {
37378        composeReference("immunizationEvent", element.getImmunizationEvent());
37379      }
37380      if (element.hasDoseStatus()) {
37381        composeCodeableConcept("doseStatus", element.getDoseStatus());
37382      }
37383      if (element.hasDoseStatusReason()) { 
37384        for (CodeableConcept e : element.getDoseStatusReason()) 
37385          composeCodeableConcept("doseStatusReason", e);
37386      }
37387      if (element.hasDescriptionElement()) {
37388        composeString("description", element.getDescriptionElement());
37389      }
37390      if (element.hasSeriesElement()) {
37391        composeString("series", element.getSeriesElement());
37392      }
37393      if (element.hasDoseNumber()) {
37394        composeType("doseNumber", element.getDoseNumber());
37395      }      if (element.hasSeriesDoses()) {
37396        composeType("seriesDoses", element.getSeriesDoses());
37397      }  }
37398
37399  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
37400    if (element != null) {
37401      composeDomainResourceAttributes(element);
37402      xml.enter(FHIR_NS, name);
37403      composeImmunizationRecommendationElements(element);
37404      composeElementClose(element);
37405      xml.exit(FHIR_NS, name);
37406    }
37407  }
37408
37409  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
37410      composeDomainResourceElements(element);
37411      if (element.hasIdentifier()) { 
37412        for (Identifier e : element.getIdentifier()) 
37413          composeIdentifier("identifier", e);
37414      }
37415      if (element.hasPatient()) {
37416        composeReference("patient", element.getPatient());
37417      }
37418      if (element.hasDateElement()) {
37419        composeDateTime("date", element.getDateElement());
37420      }
37421      if (element.hasAuthority()) {
37422        composeReference("authority", element.getAuthority());
37423      }
37424      if (element.hasRecommendation()) { 
37425        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
37426          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
37427      }
37428  }
37429
37430  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
37431    if (element != null) {
37432      composeElementAttributes(element);
37433      xml.enter(FHIR_NS, name);
37434      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(element);
37435      composeElementClose(element);
37436      xml.exit(FHIR_NS, name);
37437    }
37438  }
37439
37440  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
37441      composeBackboneElementElements(element);
37442      if (element.hasVaccineCode()) { 
37443        for (CodeableConcept e : element.getVaccineCode()) 
37444          composeCodeableConcept("vaccineCode", e);
37445      }
37446      if (element.hasTargetDisease()) {
37447        composeCodeableConcept("targetDisease", element.getTargetDisease());
37448      }
37449      if (element.hasContraindicatedVaccineCode()) { 
37450        for (CodeableConcept e : element.getContraindicatedVaccineCode()) 
37451          composeCodeableConcept("contraindicatedVaccineCode", e);
37452      }
37453      if (element.hasForecastStatus()) {
37454        composeCodeableConcept("forecastStatus", element.getForecastStatus());
37455      }
37456      if (element.hasForecastReason()) { 
37457        for (CodeableConcept e : element.getForecastReason()) 
37458          composeCodeableConcept("forecastReason", e);
37459      }
37460      if (element.hasDateCriterion()) { 
37461        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
37462          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
37463      }
37464      if (element.hasDescriptionElement()) {
37465        composeString("description", element.getDescriptionElement());
37466      }
37467      if (element.hasSeriesElement()) {
37468        composeString("series", element.getSeriesElement());
37469      }
37470      if (element.hasDoseNumber()) {
37471        composeType("doseNumber", element.getDoseNumber());
37472      }      if (element.hasSeriesDoses()) {
37473        composeType("seriesDoses", element.getSeriesDoses());
37474      }      if (element.hasSupportingImmunization()) { 
37475        for (Reference e : element.getSupportingImmunization()) 
37476          composeReference("supportingImmunization", e);
37477      }
37478      if (element.hasSupportingPatientInformation()) { 
37479        for (Reference e : element.getSupportingPatientInformation()) 
37480          composeReference("supportingPatientInformation", e);
37481      }
37482  }
37483
37484  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
37485    if (element != null) {
37486      composeElementAttributes(element);
37487      xml.enter(FHIR_NS, name);
37488      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
37489      composeElementClose(element);
37490      xml.exit(FHIR_NS, name);
37491    }
37492  }
37493
37494  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
37495      composeBackboneElementElements(element);
37496      if (element.hasCode()) {
37497        composeCodeableConcept("code", element.getCode());
37498      }
37499      if (element.hasValueElement()) {
37500        composeDateTime("value", element.getValueElement());
37501      }
37502  }
37503
37504  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
37505    if (element != null) {
37506      composeDomainResourceAttributes(element);
37507      xml.enter(FHIR_NS, name);
37508      composeImplementationGuideElements(element);
37509      composeElementClose(element);
37510      xml.exit(FHIR_NS, name);
37511    }
37512  }
37513
37514  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
37515      composeDomainResourceElements(element);
37516      if (element.hasUrlElement()) {
37517        composeUri("url", element.getUrlElement());
37518      }
37519      if (element.hasVersionElement()) {
37520        composeString("version", element.getVersionElement());
37521      }
37522      if (element.hasNameElement()) {
37523        composeString("name", element.getNameElement());
37524      }
37525      if (element.hasTitleElement()) {
37526        composeString("title", element.getTitleElement());
37527      }
37528      if (element.hasStatusElement())
37529        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37530      if (element.hasExperimentalElement()) {
37531        composeBoolean("experimental", element.getExperimentalElement());
37532      }
37533      if (element.hasDateElement()) {
37534        composeDateTime("date", element.getDateElement());
37535      }
37536      if (element.hasPublisherElement()) {
37537        composeString("publisher", element.getPublisherElement());
37538      }
37539      if (element.hasContact()) { 
37540        for (ContactDetail e : element.getContact()) 
37541          composeContactDetail("contact", e);
37542      }
37543      if (element.hasDescriptionElement()) {
37544        composeMarkdown("description", element.getDescriptionElement());
37545      }
37546      if (element.hasUseContext()) { 
37547        for (UsageContext e : element.getUseContext()) 
37548          composeUsageContext("useContext", e);
37549      }
37550      if (element.hasJurisdiction()) { 
37551        for (CodeableConcept e : element.getJurisdiction()) 
37552          composeCodeableConcept("jurisdiction", e);
37553      }
37554      if (element.hasCopyrightElement()) {
37555        composeMarkdown("copyright", element.getCopyrightElement());
37556      }
37557      if (element.hasPackageIdElement()) {
37558        composeId("packageId", element.getPackageIdElement());
37559      }
37560      if (element.hasLicenseElement())
37561        composeEnumeration("license", element.getLicenseElement(), new ImplementationGuide.SPDXLicenseEnumFactory());
37562        if (element.hasFhirVersion()) 
37563          for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
37564            composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
37565      if (element.hasDependsOn()) { 
37566        for (ImplementationGuide.ImplementationGuideDependsOnComponent e : element.getDependsOn()) 
37567          composeImplementationGuideImplementationGuideDependsOnComponent("dependsOn", e);
37568      }
37569      if (element.hasGlobal()) { 
37570        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
37571          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
37572      }
37573      if (element.hasDefinition()) {
37574        composeImplementationGuideImplementationGuideDefinitionComponent("definition", element.getDefinition());
37575      }
37576      if (element.hasManifest()) {
37577        composeImplementationGuideImplementationGuideManifestComponent("manifest", element.getManifest());
37578      }
37579  }
37580
37581  protected void composeImplementationGuideImplementationGuideDependsOnComponent(String name, ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
37582    if (element != null) {
37583      composeElementAttributes(element);
37584      xml.enter(FHIR_NS, name);
37585      composeImplementationGuideImplementationGuideDependsOnComponentElements(element);
37586      composeElementClose(element);
37587      xml.exit(FHIR_NS, name);
37588    }
37589  }
37590
37591  protected void composeImplementationGuideImplementationGuideDependsOnComponentElements(ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
37592      composeBackboneElementElements(element);
37593      if (element.hasUriElement()) {
37594        composeCanonical("uri", element.getUriElement());
37595      }
37596      if (element.hasPackageIdElement()) {
37597        composeId("packageId", element.getPackageIdElement());
37598      }
37599      if (element.hasVersionElement()) {
37600        composeString("version", element.getVersionElement());
37601      }
37602  }
37603
37604  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
37605    if (element != null) {
37606      composeElementAttributes(element);
37607      xml.enter(FHIR_NS, name);
37608      composeImplementationGuideImplementationGuideGlobalComponentElements(element);
37609      composeElementClose(element);
37610      xml.exit(FHIR_NS, name);
37611    }
37612  }
37613
37614  protected void composeImplementationGuideImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
37615      composeBackboneElementElements(element);
37616      if (element.hasTypeElement()) {
37617        composeCode("type", element.getTypeElement());
37618      }
37619      if (element.hasProfileElement()) {
37620        composeCanonical("profile", element.getProfileElement());
37621      }
37622  }
37623
37624  protected void composeImplementationGuideImplementationGuideDefinitionComponent(String name, ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
37625    if (element != null) {
37626      composeElementAttributes(element);
37627      xml.enter(FHIR_NS, name);
37628      composeImplementationGuideImplementationGuideDefinitionComponentElements(element);
37629      composeElementClose(element);
37630      xml.exit(FHIR_NS, name);
37631    }
37632  }
37633
37634  protected void composeImplementationGuideImplementationGuideDefinitionComponentElements(ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
37635      composeBackboneElementElements(element);
37636      if (element.hasGrouping()) { 
37637        for (ImplementationGuide.ImplementationGuideDefinitionGroupingComponent e : element.getGrouping()) 
37638          composeImplementationGuideImplementationGuideDefinitionGroupingComponent("grouping", e);
37639      }
37640      if (element.hasResource()) { 
37641        for (ImplementationGuide.ImplementationGuideDefinitionResourceComponent e : element.getResource()) 
37642          composeImplementationGuideImplementationGuideDefinitionResourceComponent("resource", e);
37643      }
37644      if (element.hasPage()) {
37645        composeImplementationGuideImplementationGuideDefinitionPageComponent("page", element.getPage());
37646      }
37647      if (element.hasParameter()) { 
37648        for (ImplementationGuide.ImplementationGuideDefinitionParameterComponent e : element.getParameter()) 
37649          composeImplementationGuideImplementationGuideDefinitionParameterComponent("parameter", e);
37650      }
37651      if (element.hasTemplate()) { 
37652        for (ImplementationGuide.ImplementationGuideDefinitionTemplateComponent e : element.getTemplate()) 
37653          composeImplementationGuideImplementationGuideDefinitionTemplateComponent("template", e);
37654      }
37655  }
37656
37657  protected void composeImplementationGuideImplementationGuideDefinitionGroupingComponent(String name, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
37658    if (element != null) {
37659      composeElementAttributes(element);
37660      xml.enter(FHIR_NS, name);
37661      composeImplementationGuideImplementationGuideDefinitionGroupingComponentElements(element);
37662      composeElementClose(element);
37663      xml.exit(FHIR_NS, name);
37664    }
37665  }
37666
37667  protected void composeImplementationGuideImplementationGuideDefinitionGroupingComponentElements(ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
37668      composeBackboneElementElements(element);
37669      if (element.hasNameElement()) {
37670        composeString("name", element.getNameElement());
37671      }
37672      if (element.hasDescriptionElement()) {
37673        composeString("description", element.getDescriptionElement());
37674      }
37675  }
37676
37677  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponent(String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
37678    if (element != null) {
37679      composeElementAttributes(element);
37680      xml.enter(FHIR_NS, name);
37681      composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(element);
37682      composeElementClose(element);
37683      xml.exit(FHIR_NS, name);
37684    }
37685  }
37686
37687  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
37688      composeBackboneElementElements(element);
37689      if (element.hasReference()) {
37690        composeReference("reference", element.getReference());
37691      }
37692        if (element.hasFhirVersion()) 
37693          for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
37694            composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
37695      if (element.hasNameElement()) {
37696        composeString("name", element.getNameElement());
37697      }
37698      if (element.hasDescriptionElement()) {
37699        composeString("description", element.getDescriptionElement());
37700      }
37701      if (element.hasExample()) {
37702        composeType("example", element.getExample());
37703      }      if (element.hasGroupingIdElement()) {
37704        composeId("groupingId", element.getGroupingIdElement());
37705      }
37706  }
37707
37708  protected void composeImplementationGuideImplementationGuideDefinitionPageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
37709    if (element != null) {
37710      composeElementAttributes(element);
37711      xml.enter(FHIR_NS, name);
37712      composeImplementationGuideImplementationGuideDefinitionPageComponentElements(element);
37713      composeElementClose(element);
37714      xml.exit(FHIR_NS, name);
37715    }
37716  }
37717
37718  protected void composeImplementationGuideImplementationGuideDefinitionPageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
37719      composeBackboneElementElements(element);
37720      if (element.hasName()) {
37721        composeType("name", element.getName());
37722      }      if (element.hasTitleElement()) {
37723        composeString("title", element.getTitleElement());
37724      }
37725      if (element.hasGenerationElement())
37726        composeEnumeration("generation", element.getGenerationElement(), new ImplementationGuide.GuidePageGenerationEnumFactory());
37727      if (element.hasPage()) { 
37728        for (ImplementationGuide.ImplementationGuideDefinitionPageComponent e : element.getPage()) 
37729          composeImplementationGuideImplementationGuideDefinitionPageComponent("page", e);
37730      }
37731  }
37732
37733  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponent(String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
37734    if (element != null) {
37735      composeElementAttributes(element);
37736      xml.enter(FHIR_NS, name);
37737      composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(element);
37738      composeElementClose(element);
37739      xml.exit(FHIR_NS, name);
37740    }
37741  }
37742
37743  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
37744      composeBackboneElementElements(element);
37745      if (element.hasCodeElement())
37746        composeString("code", element.getCodeElement());
37747      if (element.hasValueElement()) {
37748        composeString("value", element.getValueElement());
37749      }
37750  }
37751
37752  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponent(String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
37753    if (element != null) {
37754      composeElementAttributes(element);
37755      xml.enter(FHIR_NS, name);
37756      composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(element);
37757      composeElementClose(element);
37758      xml.exit(FHIR_NS, name);
37759    }
37760  }
37761
37762  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
37763      composeBackboneElementElements(element);
37764      if (element.hasCodeElement()) {
37765        composeCode("code", element.getCodeElement());
37766      }
37767      if (element.hasSourceElement()) {
37768        composeString("source", element.getSourceElement());
37769      }
37770      if (element.hasScopeElement()) {
37771        composeString("scope", element.getScopeElement());
37772      }
37773  }
37774
37775  protected void composeImplementationGuideImplementationGuideManifestComponent(String name, ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
37776    if (element != null) {
37777      composeElementAttributes(element);
37778      xml.enter(FHIR_NS, name);
37779      composeImplementationGuideImplementationGuideManifestComponentElements(element);
37780      composeElementClose(element);
37781      xml.exit(FHIR_NS, name);
37782    }
37783  }
37784
37785  protected void composeImplementationGuideImplementationGuideManifestComponentElements(ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
37786      composeBackboneElementElements(element);
37787      if (element.hasRenderingElement()) {
37788        composeUrl("rendering", element.getRenderingElement());
37789      }
37790      if (element.hasResource()) { 
37791        for (ImplementationGuide.ManifestResourceComponent e : element.getResource()) 
37792          composeImplementationGuideManifestResourceComponent("resource", e);
37793      }
37794      if (element.hasPage()) { 
37795        for (ImplementationGuide.ManifestPageComponent e : element.getPage()) 
37796          composeImplementationGuideManifestPageComponent("page", e);
37797      }
37798      if (element.hasImage()) { 
37799        for (StringType e : element.getImage()) 
37800          composeString("image", e);
37801      }
37802      if (element.hasOther()) { 
37803        for (StringType e : element.getOther()) 
37804          composeString("other", e);
37805      }
37806  }
37807
37808  protected void composeImplementationGuideManifestResourceComponent(String name, ImplementationGuide.ManifestResourceComponent element) throws IOException {
37809    if (element != null) {
37810      composeElementAttributes(element);
37811      xml.enter(FHIR_NS, name);
37812      composeImplementationGuideManifestResourceComponentElements(element);
37813      composeElementClose(element);
37814      xml.exit(FHIR_NS, name);
37815    }
37816  }
37817
37818  protected void composeImplementationGuideManifestResourceComponentElements(ImplementationGuide.ManifestResourceComponent element) throws IOException {
37819      composeBackboneElementElements(element);
37820      if (element.hasReference()) {
37821        composeReference("reference", element.getReference());
37822      }
37823      if (element.hasExample()) {
37824        composeType("example", element.getExample());
37825      }      if (element.hasRelativePathElement()) {
37826        composeUrl("relativePath", element.getRelativePathElement());
37827      }
37828  }
37829
37830  protected void composeImplementationGuideManifestPageComponent(String name, ImplementationGuide.ManifestPageComponent element) throws IOException {
37831    if (element != null) {
37832      composeElementAttributes(element);
37833      xml.enter(FHIR_NS, name);
37834      composeImplementationGuideManifestPageComponentElements(element);
37835      composeElementClose(element);
37836      xml.exit(FHIR_NS, name);
37837    }
37838  }
37839
37840  protected void composeImplementationGuideManifestPageComponentElements(ImplementationGuide.ManifestPageComponent element) throws IOException {
37841      composeBackboneElementElements(element);
37842      if (element.hasNameElement()) {
37843        composeString("name", element.getNameElement());
37844      }
37845      if (element.hasTitleElement()) {
37846        composeString("title", element.getTitleElement());
37847      }
37848      if (element.hasAnchor()) { 
37849        for (StringType e : element.getAnchor()) 
37850          composeString("anchor", e);
37851      }
37852  }
37853
37854  protected void composeInsurancePlan(String name, InsurancePlan element) throws IOException {
37855    if (element != null) {
37856      composeDomainResourceAttributes(element);
37857      xml.enter(FHIR_NS, name);
37858      composeInsurancePlanElements(element);
37859      composeElementClose(element);
37860      xml.exit(FHIR_NS, name);
37861    }
37862  }
37863
37864  protected void composeInsurancePlanElements(InsurancePlan element) throws IOException {
37865      composeDomainResourceElements(element);
37866      if (element.hasIdentifier()) { 
37867        for (Identifier e : element.getIdentifier()) 
37868          composeIdentifier("identifier", e);
37869      }
37870      if (element.hasStatusElement())
37871        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37872      if (element.hasType()) { 
37873        for (CodeableConcept e : element.getType()) 
37874          composeCodeableConcept("type", e);
37875      }
37876      if (element.hasNameElement()) {
37877        composeString("name", element.getNameElement());
37878      }
37879      if (element.hasAlias()) { 
37880        for (StringType e : element.getAlias()) 
37881          composeString("alias", e);
37882      }
37883      if (element.hasPeriod()) {
37884        composePeriod("period", element.getPeriod());
37885      }
37886      if (element.hasOwnedBy()) {
37887        composeReference("ownedBy", element.getOwnedBy());
37888      }
37889      if (element.hasAdministeredBy()) {
37890        composeReference("administeredBy", element.getAdministeredBy());
37891      }
37892      if (element.hasCoverageArea()) { 
37893        for (Reference e : element.getCoverageArea()) 
37894          composeReference("coverageArea", e);
37895      }
37896      if (element.hasContact()) { 
37897        for (InsurancePlan.InsurancePlanContactComponent e : element.getContact()) 
37898          composeInsurancePlanInsurancePlanContactComponent("contact", e);
37899      }
37900      if (element.hasEndpoint()) { 
37901        for (Reference e : element.getEndpoint()) 
37902          composeReference("endpoint", e);
37903      }
37904      if (element.hasNetwork()) { 
37905        for (Reference e : element.getNetwork()) 
37906          composeReference("network", e);
37907      }
37908      if (element.hasCoverage()) { 
37909        for (InsurancePlan.InsurancePlanCoverageComponent e : element.getCoverage()) 
37910          composeInsurancePlanInsurancePlanCoverageComponent("coverage", e);
37911      }
37912      if (element.hasPlan()) { 
37913        for (InsurancePlan.InsurancePlanPlanComponent e : element.getPlan()) 
37914          composeInsurancePlanInsurancePlanPlanComponent("plan", e);
37915      }
37916  }
37917
37918  protected void composeInsurancePlanInsurancePlanContactComponent(String name, InsurancePlan.InsurancePlanContactComponent element) throws IOException {
37919    if (element != null) {
37920      composeElementAttributes(element);
37921      xml.enter(FHIR_NS, name);
37922      composeInsurancePlanInsurancePlanContactComponentElements(element);
37923      composeElementClose(element);
37924      xml.exit(FHIR_NS, name);
37925    }
37926  }
37927
37928  protected void composeInsurancePlanInsurancePlanContactComponentElements(InsurancePlan.InsurancePlanContactComponent element) throws IOException {
37929      composeBackboneElementElements(element);
37930      if (element.hasPurpose()) {
37931        composeCodeableConcept("purpose", element.getPurpose());
37932      }
37933      if (element.hasName()) {
37934        composeHumanName("name", element.getName());
37935      }
37936      if (element.hasTelecom()) { 
37937        for (ContactPoint e : element.getTelecom()) 
37938          composeContactPoint("telecom", e);
37939      }
37940      if (element.hasAddress()) {
37941        composeAddress("address", element.getAddress());
37942      }
37943  }
37944
37945  protected void composeInsurancePlanInsurancePlanCoverageComponent(String name, InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
37946    if (element != null) {
37947      composeElementAttributes(element);
37948      xml.enter(FHIR_NS, name);
37949      composeInsurancePlanInsurancePlanCoverageComponentElements(element);
37950      composeElementClose(element);
37951      xml.exit(FHIR_NS, name);
37952    }
37953  }
37954
37955  protected void composeInsurancePlanInsurancePlanCoverageComponentElements(InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
37956      composeBackboneElementElements(element);
37957      if (element.hasType()) {
37958        composeCodeableConcept("type", element.getType());
37959      }
37960      if (element.hasNetwork()) { 
37961        for (Reference e : element.getNetwork()) 
37962          composeReference("network", e);
37963      }
37964      if (element.hasBenefit()) { 
37965        for (InsurancePlan.CoverageBenefitComponent e : element.getBenefit()) 
37966          composeInsurancePlanCoverageBenefitComponent("benefit", e);
37967      }
37968  }
37969
37970  protected void composeInsurancePlanCoverageBenefitComponent(String name, InsurancePlan.CoverageBenefitComponent element) throws IOException {
37971    if (element != null) {
37972      composeElementAttributes(element);
37973      xml.enter(FHIR_NS, name);
37974      composeInsurancePlanCoverageBenefitComponentElements(element);
37975      composeElementClose(element);
37976      xml.exit(FHIR_NS, name);
37977    }
37978  }
37979
37980  protected void composeInsurancePlanCoverageBenefitComponentElements(InsurancePlan.CoverageBenefitComponent element) throws IOException {
37981      composeBackboneElementElements(element);
37982      if (element.hasType()) {
37983        composeCodeableConcept("type", element.getType());
37984      }
37985      if (element.hasRequirementElement()) {
37986        composeString("requirement", element.getRequirementElement());
37987      }
37988      if (element.hasLimit()) { 
37989        for (InsurancePlan.CoverageBenefitLimitComponent e : element.getLimit()) 
37990          composeInsurancePlanCoverageBenefitLimitComponent("limit", e);
37991      }
37992  }
37993
37994  protected void composeInsurancePlanCoverageBenefitLimitComponent(String name, InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
37995    if (element != null) {
37996      composeElementAttributes(element);
37997      xml.enter(FHIR_NS, name);
37998      composeInsurancePlanCoverageBenefitLimitComponentElements(element);
37999      composeElementClose(element);
38000      xml.exit(FHIR_NS, name);
38001    }
38002  }
38003
38004  protected void composeInsurancePlanCoverageBenefitLimitComponentElements(InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
38005      composeBackboneElementElements(element);
38006      if (element.hasValue()) {
38007        composeQuantity("value", element.getValue());
38008      }
38009      if (element.hasCode()) {
38010        composeCodeableConcept("code", element.getCode());
38011      }
38012  }
38013
38014  protected void composeInsurancePlanInsurancePlanPlanComponent(String name, InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
38015    if (element != null) {
38016      composeElementAttributes(element);
38017      xml.enter(FHIR_NS, name);
38018      composeInsurancePlanInsurancePlanPlanComponentElements(element);
38019      composeElementClose(element);
38020      xml.exit(FHIR_NS, name);
38021    }
38022  }
38023
38024  protected void composeInsurancePlanInsurancePlanPlanComponentElements(InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
38025      composeBackboneElementElements(element);
38026      if (element.hasIdentifier()) { 
38027        for (Identifier e : element.getIdentifier()) 
38028          composeIdentifier("identifier", e);
38029      }
38030      if (element.hasType()) {
38031        composeCodeableConcept("type", element.getType());
38032      }
38033      if (element.hasCoverageArea()) { 
38034        for (Reference e : element.getCoverageArea()) 
38035          composeReference("coverageArea", e);
38036      }
38037      if (element.hasNetwork()) { 
38038        for (Reference e : element.getNetwork()) 
38039          composeReference("network", e);
38040      }
38041      if (element.hasGeneralCost()) { 
38042        for (InsurancePlan.InsurancePlanPlanGeneralCostComponent e : element.getGeneralCost()) 
38043          composeInsurancePlanInsurancePlanPlanGeneralCostComponent("generalCost", e);
38044      }
38045      if (element.hasSpecificCost()) { 
38046        for (InsurancePlan.InsurancePlanPlanSpecificCostComponent e : element.getSpecificCost()) 
38047          composeInsurancePlanInsurancePlanPlanSpecificCostComponent("specificCost", e);
38048      }
38049  }
38050
38051  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponent(String name, InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
38052    if (element != null) {
38053      composeElementAttributes(element);
38054      xml.enter(FHIR_NS, name);
38055      composeInsurancePlanInsurancePlanPlanGeneralCostComponentElements(element);
38056      composeElementClose(element);
38057      xml.exit(FHIR_NS, name);
38058    }
38059  }
38060
38061  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponentElements(InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
38062      composeBackboneElementElements(element);
38063      if (element.hasType()) {
38064        composeCodeableConcept("type", element.getType());
38065      }
38066      if (element.hasGroupSizeElement()) {
38067        composePositiveInt("groupSize", element.getGroupSizeElement());
38068      }
38069      if (element.hasCost()) {
38070        composeMoney("cost", element.getCost());
38071      }
38072      if (element.hasCommentElement()) {
38073        composeString("comment", element.getCommentElement());
38074      }
38075  }
38076
38077  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponent(String name, InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
38078    if (element != null) {
38079      composeElementAttributes(element);
38080      xml.enter(FHIR_NS, name);
38081      composeInsurancePlanInsurancePlanPlanSpecificCostComponentElements(element);
38082      composeElementClose(element);
38083      xml.exit(FHIR_NS, name);
38084    }
38085  }
38086
38087  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponentElements(InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
38088      composeBackboneElementElements(element);
38089      if (element.hasCategory()) {
38090        composeCodeableConcept("category", element.getCategory());
38091      }
38092      if (element.hasBenefit()) { 
38093        for (InsurancePlan.PlanBenefitComponent e : element.getBenefit()) 
38094          composeInsurancePlanPlanBenefitComponent("benefit", e);
38095      }
38096  }
38097
38098  protected void composeInsurancePlanPlanBenefitComponent(String name, InsurancePlan.PlanBenefitComponent element) throws IOException {
38099    if (element != null) {
38100      composeElementAttributes(element);
38101      xml.enter(FHIR_NS, name);
38102      composeInsurancePlanPlanBenefitComponentElements(element);
38103      composeElementClose(element);
38104      xml.exit(FHIR_NS, name);
38105    }
38106  }
38107
38108  protected void composeInsurancePlanPlanBenefitComponentElements(InsurancePlan.PlanBenefitComponent element) throws IOException {
38109      composeBackboneElementElements(element);
38110      if (element.hasType()) {
38111        composeCodeableConcept("type", element.getType());
38112      }
38113      if (element.hasCost()) { 
38114        for (InsurancePlan.PlanBenefitCostComponent e : element.getCost()) 
38115          composeInsurancePlanPlanBenefitCostComponent("cost", e);
38116      }
38117  }
38118
38119  protected void composeInsurancePlanPlanBenefitCostComponent(String name, InsurancePlan.PlanBenefitCostComponent element) throws IOException {
38120    if (element != null) {
38121      composeElementAttributes(element);
38122      xml.enter(FHIR_NS, name);
38123      composeInsurancePlanPlanBenefitCostComponentElements(element);
38124      composeElementClose(element);
38125      xml.exit(FHIR_NS, name);
38126    }
38127  }
38128
38129  protected void composeInsurancePlanPlanBenefitCostComponentElements(InsurancePlan.PlanBenefitCostComponent element) throws IOException {
38130      composeBackboneElementElements(element);
38131      if (element.hasType()) {
38132        composeCodeableConcept("type", element.getType());
38133      }
38134      if (element.hasApplicability()) {
38135        composeCodeableConcept("applicability", element.getApplicability());
38136      }
38137      if (element.hasQualifiers()) { 
38138        for (CodeableConcept e : element.getQualifiers()) 
38139          composeCodeableConcept("qualifiers", e);
38140      }
38141      if (element.hasValue()) {
38142        composeQuantity("value", element.getValue());
38143      }
38144  }
38145
38146  protected void composeInvoice(String name, Invoice element) throws IOException {
38147    if (element != null) {
38148      composeDomainResourceAttributes(element);
38149      xml.enter(FHIR_NS, name);
38150      composeInvoiceElements(element);
38151      composeElementClose(element);
38152      xml.exit(FHIR_NS, name);
38153    }
38154  }
38155
38156  protected void composeInvoiceElements(Invoice element) throws IOException {
38157      composeDomainResourceElements(element);
38158      if (element.hasIdentifier()) { 
38159        for (Identifier e : element.getIdentifier()) 
38160          composeIdentifier("identifier", e);
38161      }
38162      if (element.hasStatusElement())
38163        composeEnumeration("status", element.getStatusElement(), new Invoice.InvoiceStatusEnumFactory());
38164      if (element.hasCancelledReasonElement()) {
38165        composeString("cancelledReason", element.getCancelledReasonElement());
38166      }
38167      if (element.hasType()) {
38168        composeCodeableConcept("type", element.getType());
38169      }
38170      if (element.hasSubject()) {
38171        composeReference("subject", element.getSubject());
38172      }
38173      if (element.hasRecipient()) {
38174        composeReference("recipient", element.getRecipient());
38175      }
38176      if (element.hasDateElement()) {
38177        composeDateTime("date", element.getDateElement());
38178      }
38179      if (element.hasParticipant()) { 
38180        for (Invoice.InvoiceParticipantComponent e : element.getParticipant()) 
38181          composeInvoiceInvoiceParticipantComponent("participant", e);
38182      }
38183      if (element.hasIssuer()) {
38184        composeReference("issuer", element.getIssuer());
38185      }
38186      if (element.hasAccount()) {
38187        composeReference("account", element.getAccount());
38188      }
38189      if (element.hasLineItem()) { 
38190        for (Invoice.InvoiceLineItemComponent e : element.getLineItem()) 
38191          composeInvoiceInvoiceLineItemComponent("lineItem", e);
38192      }
38193      if (element.hasTotalPriceComponent()) { 
38194        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getTotalPriceComponent()) 
38195          composeInvoiceInvoiceLineItemPriceComponentComponent("totalPriceComponent", e);
38196      }
38197      if (element.hasTotalNet()) {
38198        composeMoney("totalNet", element.getTotalNet());
38199      }
38200      if (element.hasTotalGross()) {
38201        composeMoney("totalGross", element.getTotalGross());
38202      }
38203      if (element.hasPaymentTermsElement()) {
38204        composeMarkdown("paymentTerms", element.getPaymentTermsElement());
38205      }
38206      if (element.hasNote()) { 
38207        for (Annotation e : element.getNote()) 
38208          composeAnnotation("note", e);
38209      }
38210  }
38211
38212  protected void composeInvoiceInvoiceParticipantComponent(String name, Invoice.InvoiceParticipantComponent element) throws IOException {
38213    if (element != null) {
38214      composeElementAttributes(element);
38215      xml.enter(FHIR_NS, name);
38216      composeInvoiceInvoiceParticipantComponentElements(element);
38217      composeElementClose(element);
38218      xml.exit(FHIR_NS, name);
38219    }
38220  }
38221
38222  protected void composeInvoiceInvoiceParticipantComponentElements(Invoice.InvoiceParticipantComponent element) throws IOException {
38223      composeBackboneElementElements(element);
38224      if (element.hasRole()) {
38225        composeCodeableConcept("role", element.getRole());
38226      }
38227      if (element.hasActor()) {
38228        composeReference("actor", element.getActor());
38229      }
38230  }
38231
38232  protected void composeInvoiceInvoiceLineItemComponent(String name, Invoice.InvoiceLineItemComponent element) throws IOException {
38233    if (element != null) {
38234      composeElementAttributes(element);
38235      xml.enter(FHIR_NS, name);
38236      composeInvoiceInvoiceLineItemComponentElements(element);
38237      composeElementClose(element);
38238      xml.exit(FHIR_NS, name);
38239    }
38240  }
38241
38242  protected void composeInvoiceInvoiceLineItemComponentElements(Invoice.InvoiceLineItemComponent element) throws IOException {
38243      composeBackboneElementElements(element);
38244      if (element.hasSequenceElement()) {
38245        composePositiveInt("sequence", element.getSequenceElement());
38246      }
38247      if (element.hasChargeItem()) {
38248        composeType("chargeItem", element.getChargeItem());
38249      }      if (element.hasPriceComponent()) { 
38250        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getPriceComponent()) 
38251          composeInvoiceInvoiceLineItemPriceComponentComponent("priceComponent", e);
38252      }
38253  }
38254
38255  protected void composeInvoiceInvoiceLineItemPriceComponentComponent(String name, Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
38256    if (element != null) {
38257      composeElementAttributes(element);
38258      xml.enter(FHIR_NS, name);
38259      composeInvoiceInvoiceLineItemPriceComponentComponentElements(element);
38260      composeElementClose(element);
38261      xml.exit(FHIR_NS, name);
38262    }
38263  }
38264
38265  protected void composeInvoiceInvoiceLineItemPriceComponentComponentElements(Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
38266      composeBackboneElementElements(element);
38267      if (element.hasTypeElement())
38268        composeEnumeration("type", element.getTypeElement(), new Invoice.InvoicePriceComponentTypeEnumFactory());
38269      if (element.hasCode()) {
38270        composeCodeableConcept("code", element.getCode());
38271      }
38272      if (element.hasFactorElement()) {
38273        composeDecimal("factor", element.getFactorElement());
38274      }
38275      if (element.hasAmount()) {
38276        composeMoney("amount", element.getAmount());
38277      }
38278  }
38279
38280  protected void composeLibrary(String name, Library element) throws IOException {
38281    if (element != null) {
38282      composeDomainResourceAttributes(element);
38283      xml.enter(FHIR_NS, name);
38284      composeLibraryElements(element);
38285      composeElementClose(element);
38286      xml.exit(FHIR_NS, name);
38287    }
38288  }
38289
38290  protected void composeLibraryElements(Library element) throws IOException {
38291      composeDomainResourceElements(element);
38292      if (element.hasUrlElement()) {
38293        composeUri("url", element.getUrlElement());
38294      }
38295      if (element.hasIdentifier()) { 
38296        for (Identifier e : element.getIdentifier()) 
38297          composeIdentifier("identifier", e);
38298      }
38299      if (element.hasVersionElement()) {
38300        composeString("version", element.getVersionElement());
38301      }
38302      if (element.hasNameElement()) {
38303        composeString("name", element.getNameElement());
38304      }
38305      if (element.hasTitleElement()) {
38306        composeString("title", element.getTitleElement());
38307      }
38308      if (element.hasSubtitleElement()) {
38309        composeString("subtitle", element.getSubtitleElement());
38310      }
38311      if (element.hasStatusElement())
38312        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
38313      if (element.hasExperimentalElement()) {
38314        composeBoolean("experimental", element.getExperimentalElement());
38315      }
38316      if (element.hasType()) {
38317        composeCodeableConcept("type", element.getType());
38318      }
38319      if (element.hasSubject()) {
38320        composeType("subject", element.getSubject());
38321      }      if (element.hasDateElement()) {
38322        composeDateTime("date", element.getDateElement());
38323      }
38324      if (element.hasPublisherElement()) {
38325        composeString("publisher", element.getPublisherElement());
38326      }
38327      if (element.hasContact()) { 
38328        for (ContactDetail e : element.getContact()) 
38329          composeContactDetail("contact", e);
38330      }
38331      if (element.hasDescriptionElement()) {
38332        composeMarkdown("description", element.getDescriptionElement());
38333      }
38334      if (element.hasUseContext()) { 
38335        for (UsageContext e : element.getUseContext()) 
38336          composeUsageContext("useContext", e);
38337      }
38338      if (element.hasJurisdiction()) { 
38339        for (CodeableConcept e : element.getJurisdiction()) 
38340          composeCodeableConcept("jurisdiction", e);
38341      }
38342      if (element.hasPurposeElement()) {
38343        composeMarkdown("purpose", element.getPurposeElement());
38344      }
38345      if (element.hasUsageElement()) {
38346        composeString("usage", element.getUsageElement());
38347      }
38348      if (element.hasCopyrightElement()) {
38349        composeMarkdown("copyright", element.getCopyrightElement());
38350      }
38351      if (element.hasApprovalDateElement()) {
38352        composeDate("approvalDate", element.getApprovalDateElement());
38353      }
38354      if (element.hasLastReviewDateElement()) {
38355        composeDate("lastReviewDate", element.getLastReviewDateElement());
38356      }
38357      if (element.hasEffectivePeriod()) {
38358        composePeriod("effectivePeriod", element.getEffectivePeriod());
38359      }
38360      if (element.hasTopic()) { 
38361        for (CodeableConcept e : element.getTopic()) 
38362          composeCodeableConcept("topic", e);
38363      }
38364      if (element.hasAuthor()) { 
38365        for (ContactDetail e : element.getAuthor()) 
38366          composeContactDetail("author", e);
38367      }
38368      if (element.hasEditor()) { 
38369        for (ContactDetail e : element.getEditor()) 
38370          composeContactDetail("editor", e);
38371      }
38372      if (element.hasReviewer()) { 
38373        for (ContactDetail e : element.getReviewer()) 
38374          composeContactDetail("reviewer", e);
38375      }
38376      if (element.hasEndorser()) { 
38377        for (ContactDetail e : element.getEndorser()) 
38378          composeContactDetail("endorser", e);
38379      }
38380      if (element.hasRelatedArtifact()) { 
38381        for (RelatedArtifact e : element.getRelatedArtifact()) 
38382          composeRelatedArtifact("relatedArtifact", e);
38383      }
38384      if (element.hasParameter()) { 
38385        for (ParameterDefinition e : element.getParameter()) 
38386          composeParameterDefinition("parameter", e);
38387      }
38388      if (element.hasDataRequirement()) { 
38389        for (DataRequirement e : element.getDataRequirement()) 
38390          composeDataRequirement("dataRequirement", e);
38391      }
38392      if (element.hasContent()) { 
38393        for (Attachment e : element.getContent()) 
38394          composeAttachment("content", e);
38395      }
38396  }
38397
38398  protected void composeLinkage(String name, Linkage element) throws IOException {
38399    if (element != null) {
38400      composeDomainResourceAttributes(element);
38401      xml.enter(FHIR_NS, name);
38402      composeLinkageElements(element);
38403      composeElementClose(element);
38404      xml.exit(FHIR_NS, name);
38405    }
38406  }
38407
38408  protected void composeLinkageElements(Linkage element) throws IOException {
38409      composeDomainResourceElements(element);
38410      if (element.hasActiveElement()) {
38411        composeBoolean("active", element.getActiveElement());
38412      }
38413      if (element.hasAuthor()) {
38414        composeReference("author", element.getAuthor());
38415      }
38416      if (element.hasItem()) { 
38417        for (Linkage.LinkageItemComponent e : element.getItem()) 
38418          composeLinkageLinkageItemComponent("item", e);
38419      }
38420  }
38421
38422  protected void composeLinkageLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
38423    if (element != null) {
38424      composeElementAttributes(element);
38425      xml.enter(FHIR_NS, name);
38426      composeLinkageLinkageItemComponentElements(element);
38427      composeElementClose(element);
38428      xml.exit(FHIR_NS, name);
38429    }
38430  }
38431
38432  protected void composeLinkageLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
38433      composeBackboneElementElements(element);
38434      if (element.hasTypeElement())
38435        composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
38436      if (element.hasResource()) {
38437        composeReference("resource", element.getResource());
38438      }
38439  }
38440
38441  protected void composeListResource(String name, ListResource element) throws IOException {
38442    if (element != null) {
38443      composeDomainResourceAttributes(element);
38444      xml.enter(FHIR_NS, name);
38445      composeListResourceElements(element);
38446      composeElementClose(element);
38447      xml.exit(FHIR_NS, name);
38448    }
38449  }
38450
38451  protected void composeListResourceElements(ListResource element) throws IOException {
38452      composeDomainResourceElements(element);
38453      if (element.hasIdentifier()) { 
38454        for (Identifier e : element.getIdentifier()) 
38455          composeIdentifier("identifier", e);
38456      }
38457      if (element.hasStatusElement())
38458        composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
38459      if (element.hasModeElement())
38460        composeEnumeration("mode", element.getModeElement(), new ListResource.ListModeEnumFactory());
38461      if (element.hasTitleElement()) {
38462        composeString("title", element.getTitleElement());
38463      }
38464      if (element.hasCode()) {
38465        composeCodeableConcept("code", element.getCode());
38466      }
38467      if (element.hasSubject()) {
38468        composeReference("subject", element.getSubject());
38469      }
38470      if (element.hasEncounter()) {
38471        composeReference("encounter", element.getEncounter());
38472      }
38473      if (element.hasDateElement()) {
38474        composeDateTime("date", element.getDateElement());
38475      }
38476      if (element.hasSource()) {
38477        composeReference("source", element.getSource());
38478      }
38479      if (element.hasOrderedBy()) {
38480        composeCodeableConcept("orderedBy", element.getOrderedBy());
38481      }
38482      if (element.hasNote()) { 
38483        for (Annotation e : element.getNote()) 
38484          composeAnnotation("note", e);
38485      }
38486      if (element.hasEntry()) { 
38487        for (ListResource.ListEntryComponent e : element.getEntry()) 
38488          composeListResourceListEntryComponent("entry", e);
38489      }
38490      if (element.hasEmptyReason()) {
38491        composeCodeableConcept("emptyReason", element.getEmptyReason());
38492      }
38493  }
38494
38495  protected void composeListResourceListEntryComponent(String name, ListResource.ListEntryComponent element) throws IOException {
38496    if (element != null) {
38497      composeElementAttributes(element);
38498      xml.enter(FHIR_NS, name);
38499      composeListResourceListEntryComponentElements(element);
38500      composeElementClose(element);
38501      xml.exit(FHIR_NS, name);
38502    }
38503  }
38504
38505  protected void composeListResourceListEntryComponentElements(ListResource.ListEntryComponent element) throws IOException {
38506      composeBackboneElementElements(element);
38507      if (element.hasFlag()) {
38508        composeCodeableConcept("flag", element.getFlag());
38509      }
38510      if (element.hasDeletedElement()) {
38511        composeBoolean("deleted", element.getDeletedElement());
38512      }
38513      if (element.hasDateElement()) {
38514        composeDateTime("date", element.getDateElement());
38515      }
38516      if (element.hasItem()) {
38517        composeReference("item", element.getItem());
38518      }
38519  }
38520
38521  protected void composeLocation(String name, Location element) throws IOException {
38522    if (element != null) {
38523      composeDomainResourceAttributes(element);
38524      xml.enter(FHIR_NS, name);
38525      composeLocationElements(element);
38526      composeElementClose(element);
38527      xml.exit(FHIR_NS, name);
38528    }
38529  }
38530
38531  protected void composeLocationElements(Location element) throws IOException {
38532      composeDomainResourceElements(element);
38533      if (element.hasIdentifier()) { 
38534        for (Identifier e : element.getIdentifier()) 
38535          composeIdentifier("identifier", e);
38536      }
38537      if (element.hasStatusElement())
38538        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
38539      if (element.hasOperationalStatus()) {
38540        composeCoding("operationalStatus", element.getOperationalStatus());
38541      }
38542      if (element.hasNameElement()) {
38543        composeString("name", element.getNameElement());
38544      }
38545      if (element.hasAlias()) { 
38546        for (StringType e : element.getAlias()) 
38547          composeString("alias", e);
38548      }
38549      if (element.hasDescriptionElement()) {
38550        composeString("description", element.getDescriptionElement());
38551      }
38552      if (element.hasModeElement())
38553        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
38554      if (element.hasType()) { 
38555        for (CodeableConcept e : element.getType()) 
38556          composeCodeableConcept("type", e);
38557      }
38558      if (element.hasTelecom()) { 
38559        for (ContactPoint e : element.getTelecom()) 
38560          composeContactPoint("telecom", e);
38561      }
38562      if (element.hasAddress()) {
38563        composeAddress("address", element.getAddress());
38564      }
38565      if (element.hasPhysicalType()) {
38566        composeCodeableConcept("physicalType", element.getPhysicalType());
38567      }
38568      if (element.hasPosition()) {
38569        composeLocationLocationPositionComponent("position", element.getPosition());
38570      }
38571      if (element.hasManagingOrganization()) {
38572        composeReference("managingOrganization", element.getManagingOrganization());
38573      }
38574      if (element.hasPartOf()) {
38575        composeReference("partOf", element.getPartOf());
38576      }
38577      if (element.hasHoursOfOperation()) { 
38578        for (Location.LocationHoursOfOperationComponent e : element.getHoursOfOperation()) 
38579          composeLocationLocationHoursOfOperationComponent("hoursOfOperation", e);
38580      }
38581      if (element.hasAvailabilityExceptionsElement()) {
38582        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
38583      }
38584      if (element.hasEndpoint()) { 
38585        for (Reference e : element.getEndpoint()) 
38586          composeReference("endpoint", e);
38587      }
38588  }
38589
38590  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
38591    if (element != null) {
38592      composeElementAttributes(element);
38593      xml.enter(FHIR_NS, name);
38594      composeLocationLocationPositionComponentElements(element);
38595      composeElementClose(element);
38596      xml.exit(FHIR_NS, name);
38597    }
38598  }
38599
38600  protected void composeLocationLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
38601      composeBackboneElementElements(element);
38602      if (element.hasLongitudeElement()) {
38603        composeDecimal("longitude", element.getLongitudeElement());
38604      }
38605      if (element.hasLatitudeElement()) {
38606        composeDecimal("latitude", element.getLatitudeElement());
38607      }
38608      if (element.hasAltitudeElement()) {
38609        composeDecimal("altitude", element.getAltitudeElement());
38610      }
38611  }
38612
38613  protected void composeLocationLocationHoursOfOperationComponent(String name, Location.LocationHoursOfOperationComponent element) throws IOException {
38614    if (element != null) {
38615      composeElementAttributes(element);
38616      xml.enter(FHIR_NS, name);
38617      composeLocationLocationHoursOfOperationComponentElements(element);
38618      composeElementClose(element);
38619      xml.exit(FHIR_NS, name);
38620    }
38621  }
38622
38623  protected void composeLocationLocationHoursOfOperationComponentElements(Location.LocationHoursOfOperationComponent element) throws IOException {
38624      composeBackboneElementElements(element);
38625        if (element.hasDaysOfWeek()) 
38626          for (Enumeration<Location.DaysOfWeek> e : element.getDaysOfWeek()) 
38627            composeEnumeration("daysOfWeek", e, new Location.DaysOfWeekEnumFactory());
38628      if (element.hasAllDayElement()) {
38629        composeBoolean("allDay", element.getAllDayElement());
38630      }
38631      if (element.hasOpeningTimeElement()) {
38632        composeTime("openingTime", element.getOpeningTimeElement());
38633      }
38634      if (element.hasClosingTimeElement()) {
38635        composeTime("closingTime", element.getClosingTimeElement());
38636      }
38637  }
38638
38639  protected void composeMeasure(String name, Measure element) throws IOException {
38640    if (element != null) {
38641      composeDomainResourceAttributes(element);
38642      xml.enter(FHIR_NS, name);
38643      composeMeasureElements(element);
38644      composeElementClose(element);
38645      xml.exit(FHIR_NS, name);
38646    }
38647  }
38648
38649  protected void composeMeasureElements(Measure element) throws IOException {
38650      composeDomainResourceElements(element);
38651      if (element.hasUrlElement()) {
38652        composeUri("url", element.getUrlElement());
38653      }
38654      if (element.hasIdentifier()) { 
38655        for (Identifier e : element.getIdentifier()) 
38656          composeIdentifier("identifier", e);
38657      }
38658      if (element.hasVersionElement()) {
38659        composeString("version", element.getVersionElement());
38660      }
38661      if (element.hasNameElement()) {
38662        composeString("name", element.getNameElement());
38663      }
38664      if (element.hasTitleElement()) {
38665        composeString("title", element.getTitleElement());
38666      }
38667      if (element.hasSubtitleElement()) {
38668        composeString("subtitle", element.getSubtitleElement());
38669      }
38670      if (element.hasStatusElement())
38671        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
38672      if (element.hasExperimentalElement()) {
38673        composeBoolean("experimental", element.getExperimentalElement());
38674      }
38675      if (element.hasSubject()) {
38676        composeType("subject", element.getSubject());
38677      }      if (element.hasDateElement()) {
38678        composeDateTime("date", element.getDateElement());
38679      }
38680      if (element.hasPublisherElement()) {
38681        composeString("publisher", element.getPublisherElement());
38682      }
38683      if (element.hasContact()) { 
38684        for (ContactDetail e : element.getContact()) 
38685          composeContactDetail("contact", e);
38686      }
38687      if (element.hasDescriptionElement()) {
38688        composeMarkdown("description", element.getDescriptionElement());
38689      }
38690      if (element.hasUseContext()) { 
38691        for (UsageContext e : element.getUseContext()) 
38692          composeUsageContext("useContext", e);
38693      }
38694      if (element.hasJurisdiction()) { 
38695        for (CodeableConcept e : element.getJurisdiction()) 
38696          composeCodeableConcept("jurisdiction", e);
38697      }
38698      if (element.hasPurposeElement()) {
38699        composeMarkdown("purpose", element.getPurposeElement());
38700      }
38701      if (element.hasUsageElement()) {
38702        composeString("usage", element.getUsageElement());
38703      }
38704      if (element.hasCopyrightElement()) {
38705        composeMarkdown("copyright", element.getCopyrightElement());
38706      }
38707      if (element.hasApprovalDateElement()) {
38708        composeDate("approvalDate", element.getApprovalDateElement());
38709      }
38710      if (element.hasLastReviewDateElement()) {
38711        composeDate("lastReviewDate", element.getLastReviewDateElement());
38712      }
38713      if (element.hasEffectivePeriod()) {
38714        composePeriod("effectivePeriod", element.getEffectivePeriod());
38715      }
38716      if (element.hasTopic()) { 
38717        for (CodeableConcept e : element.getTopic()) 
38718          composeCodeableConcept("topic", e);
38719      }
38720      if (element.hasAuthor()) { 
38721        for (ContactDetail e : element.getAuthor()) 
38722          composeContactDetail("author", e);
38723      }
38724      if (element.hasEditor()) { 
38725        for (ContactDetail e : element.getEditor()) 
38726          composeContactDetail("editor", e);
38727      }
38728      if (element.hasReviewer()) { 
38729        for (ContactDetail e : element.getReviewer()) 
38730          composeContactDetail("reviewer", e);
38731      }
38732      if (element.hasEndorser()) { 
38733        for (ContactDetail e : element.getEndorser()) 
38734          composeContactDetail("endorser", e);
38735      }
38736      if (element.hasRelatedArtifact()) { 
38737        for (RelatedArtifact e : element.getRelatedArtifact()) 
38738          composeRelatedArtifact("relatedArtifact", e);
38739      }
38740      if (element.hasLibrary()) { 
38741        for (CanonicalType e : element.getLibrary()) 
38742          composeCanonical("library", e);
38743      }
38744      if (element.hasDisclaimerElement()) {
38745        composeMarkdown("disclaimer", element.getDisclaimerElement());
38746      }
38747      if (element.hasScoring()) {
38748        composeCodeableConcept("scoring", element.getScoring());
38749      }
38750      if (element.hasCompositeScoring()) {
38751        composeCodeableConcept("compositeScoring", element.getCompositeScoring());
38752      }
38753      if (element.hasType()) { 
38754        for (CodeableConcept e : element.getType()) 
38755          composeCodeableConcept("type", e);
38756      }
38757      if (element.hasRiskAdjustmentElement()) {
38758        composeString("riskAdjustment", element.getRiskAdjustmentElement());
38759      }
38760      if (element.hasRateAggregationElement()) {
38761        composeString("rateAggregation", element.getRateAggregationElement());
38762      }
38763      if (element.hasRationaleElement()) {
38764        composeMarkdown("rationale", element.getRationaleElement());
38765      }
38766      if (element.hasClinicalRecommendationStatementElement()) {
38767        composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
38768      }
38769      if (element.hasImprovementNotation()) {
38770        composeCodeableConcept("improvementNotation", element.getImprovementNotation());
38771      }
38772      if (element.hasDefinition()) { 
38773        for (MarkdownType e : element.getDefinition()) 
38774          composeMarkdown("definition", e);
38775      }
38776      if (element.hasGuidanceElement()) {
38777        composeMarkdown("guidance", element.getGuidanceElement());
38778      }
38779      if (element.hasGroup()) { 
38780        for (Measure.MeasureGroupComponent e : element.getGroup()) 
38781          composeMeasureMeasureGroupComponent("group", e);
38782      }
38783      if (element.hasSupplementalData()) { 
38784        for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
38785          composeMeasureMeasureSupplementalDataComponent("supplementalData", e);
38786      }
38787  }
38788
38789  protected void composeMeasureMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
38790    if (element != null) {
38791      composeElementAttributes(element);
38792      xml.enter(FHIR_NS, name);
38793      composeMeasureMeasureGroupComponentElements(element);
38794      composeElementClose(element);
38795      xml.exit(FHIR_NS, name);
38796    }
38797  }
38798
38799  protected void composeMeasureMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
38800      composeBackboneElementElements(element);
38801      if (element.hasCode()) {
38802        composeCodeableConcept("code", element.getCode());
38803      }
38804      if (element.hasDescriptionElement()) {
38805        composeString("description", element.getDescriptionElement());
38806      }
38807      if (element.hasPopulation()) { 
38808        for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
38809          composeMeasureMeasureGroupPopulationComponent("population", e);
38810      }
38811      if (element.hasStratifier()) { 
38812        for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
38813          composeMeasureMeasureGroupStratifierComponent("stratifier", e);
38814      }
38815  }
38816
38817  protected void composeMeasureMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
38818    if (element != null) {
38819      composeElementAttributes(element);
38820      xml.enter(FHIR_NS, name);
38821      composeMeasureMeasureGroupPopulationComponentElements(element);
38822      composeElementClose(element);
38823      xml.exit(FHIR_NS, name);
38824    }
38825  }
38826
38827  protected void composeMeasureMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
38828      composeBackboneElementElements(element);
38829      if (element.hasCode()) {
38830        composeCodeableConcept("code", element.getCode());
38831      }
38832      if (element.hasDescriptionElement()) {
38833        composeString("description", element.getDescriptionElement());
38834      }
38835      if (element.hasCriteria()) {
38836        composeExpression("criteria", element.getCriteria());
38837      }
38838  }
38839
38840  protected void composeMeasureMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
38841    if (element != null) {
38842      composeElementAttributes(element);
38843      xml.enter(FHIR_NS, name);
38844      composeMeasureMeasureGroupStratifierComponentElements(element);
38845      composeElementClose(element);
38846      xml.exit(FHIR_NS, name);
38847    }
38848  }
38849
38850  protected void composeMeasureMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
38851      composeBackboneElementElements(element);
38852      if (element.hasCode()) {
38853        composeCodeableConcept("code", element.getCode());
38854      }
38855      if (element.hasDescriptionElement()) {
38856        composeString("description", element.getDescriptionElement());
38857      }
38858      if (element.hasCriteria()) {
38859        composeExpression("criteria", element.getCriteria());
38860      }
38861      if (element.hasComponent()) { 
38862        for (Measure.MeasureGroupStratifierComponentComponent e : element.getComponent()) 
38863          composeMeasureMeasureGroupStratifierComponentComponent("component", e);
38864      }
38865  }
38866
38867  protected void composeMeasureMeasureGroupStratifierComponentComponent(String name, Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
38868    if (element != null) {
38869      composeElementAttributes(element);
38870      xml.enter(FHIR_NS, name);
38871      composeMeasureMeasureGroupStratifierComponentComponentElements(element);
38872      composeElementClose(element);
38873      xml.exit(FHIR_NS, name);
38874    }
38875  }
38876
38877  protected void composeMeasureMeasureGroupStratifierComponentComponentElements(Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
38878      composeBackboneElementElements(element);
38879      if (element.hasCode()) {
38880        composeCodeableConcept("code", element.getCode());
38881      }
38882      if (element.hasDescriptionElement()) {
38883        composeString("description", element.getDescriptionElement());
38884      }
38885      if (element.hasCriteria()) {
38886        composeExpression("criteria", element.getCriteria());
38887      }
38888  }
38889
38890  protected void composeMeasureMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
38891    if (element != null) {
38892      composeElementAttributes(element);
38893      xml.enter(FHIR_NS, name);
38894      composeMeasureMeasureSupplementalDataComponentElements(element);
38895      composeElementClose(element);
38896      xml.exit(FHIR_NS, name);
38897    }
38898  }
38899
38900  protected void composeMeasureMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
38901      composeBackboneElementElements(element);
38902      if (element.hasCode()) {
38903        composeCodeableConcept("code", element.getCode());
38904      }
38905      if (element.hasUsage()) { 
38906        for (CodeableConcept e : element.getUsage()) 
38907          composeCodeableConcept("usage", e);
38908      }
38909      if (element.hasDescriptionElement()) {
38910        composeString("description", element.getDescriptionElement());
38911      }
38912      if (element.hasCriteria()) {
38913        composeExpression("criteria", element.getCriteria());
38914      }
38915  }
38916
38917  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
38918    if (element != null) {
38919      composeDomainResourceAttributes(element);
38920      xml.enter(FHIR_NS, name);
38921      composeMeasureReportElements(element);
38922      composeElementClose(element);
38923      xml.exit(FHIR_NS, name);
38924    }
38925  }
38926
38927  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
38928      composeDomainResourceElements(element);
38929      if (element.hasIdentifier()) { 
38930        for (Identifier e : element.getIdentifier()) 
38931          composeIdentifier("identifier", e);
38932      }
38933      if (element.hasStatusElement())
38934        composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
38935      if (element.hasTypeElement())
38936        composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
38937      if (element.hasMeasureElement()) {
38938        composeCanonical("measure", element.getMeasureElement());
38939      }
38940      if (element.hasSubject()) {
38941        composeReference("subject", element.getSubject());
38942      }
38943      if (element.hasDateElement()) {
38944        composeDateTime("date", element.getDateElement());
38945      }
38946      if (element.hasReporter()) {
38947        composeReference("reporter", element.getReporter());
38948      }
38949      if (element.hasPeriod()) {
38950        composePeriod("period", element.getPeriod());
38951      }
38952      if (element.hasImprovementNotation()) {
38953        composeCodeableConcept("improvementNotation", element.getImprovementNotation());
38954      }
38955      if (element.hasGroup()) { 
38956        for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
38957          composeMeasureReportMeasureReportGroupComponent("group", e);
38958      }
38959      if (element.hasEvaluatedResource()) { 
38960        for (Reference e : element.getEvaluatedResource()) 
38961          composeReference("evaluatedResource", e);
38962      }
38963  }
38964
38965  protected void composeMeasureReportMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
38966    if (element != null) {
38967      composeElementAttributes(element);
38968      xml.enter(FHIR_NS, name);
38969      composeMeasureReportMeasureReportGroupComponentElements(element);
38970      composeElementClose(element);
38971      xml.exit(FHIR_NS, name);
38972    }
38973  }
38974
38975  protected void composeMeasureReportMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
38976      composeBackboneElementElements(element);
38977      if (element.hasCode()) {
38978        composeCodeableConcept("code", element.getCode());
38979      }
38980      if (element.hasPopulation()) { 
38981        for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
38982          composeMeasureReportMeasureReportGroupPopulationComponent("population", e);
38983      }
38984      if (element.hasMeasureScore()) {
38985        composeQuantity("measureScore", element.getMeasureScore());
38986      }
38987      if (element.hasStratifier()) { 
38988        for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
38989          composeMeasureReportMeasureReportGroupStratifierComponent("stratifier", e);
38990      }
38991  }
38992
38993  protected void composeMeasureReportMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
38994    if (element != null) {
38995      composeElementAttributes(element);
38996      xml.enter(FHIR_NS, name);
38997      composeMeasureReportMeasureReportGroupPopulationComponentElements(element);
38998      composeElementClose(element);
38999      xml.exit(FHIR_NS, name);
39000    }
39001  }
39002
39003  protected void composeMeasureReportMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
39004      composeBackboneElementElements(element);
39005      if (element.hasCode()) {
39006        composeCodeableConcept("code", element.getCode());
39007      }
39008      if (element.hasCountElement()) {
39009        composeInteger("count", element.getCountElement());
39010      }
39011      if (element.hasSubjectResults()) {
39012        composeReference("subjectResults", element.getSubjectResults());
39013      }
39014  }
39015
39016  protected void composeMeasureReportMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
39017    if (element != null) {
39018      composeElementAttributes(element);
39019      xml.enter(FHIR_NS, name);
39020      composeMeasureReportMeasureReportGroupStratifierComponentElements(element);
39021      composeElementClose(element);
39022      xml.exit(FHIR_NS, name);
39023    }
39024  }
39025
39026  protected void composeMeasureReportMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
39027      composeBackboneElementElements(element);
39028      if (element.hasCode()) { 
39029        for (CodeableConcept e : element.getCode()) 
39030          composeCodeableConcept("code", e);
39031      }
39032      if (element.hasStratum()) { 
39033        for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
39034          composeMeasureReportStratifierGroupComponent("stratum", e);
39035      }
39036  }
39037
39038  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
39039    if (element != null) {
39040      composeElementAttributes(element);
39041      xml.enter(FHIR_NS, name);
39042      composeMeasureReportStratifierGroupComponentElements(element);
39043      composeElementClose(element);
39044      xml.exit(FHIR_NS, name);
39045    }
39046  }
39047
39048  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
39049      composeBackboneElementElements(element);
39050      if (element.hasValue()) {
39051        composeCodeableConcept("value", element.getValue());
39052      }
39053      if (element.hasComponent()) { 
39054        for (MeasureReport.StratifierGroupComponentComponent e : element.getComponent()) 
39055          composeMeasureReportStratifierGroupComponentComponent("component", e);
39056      }
39057      if (element.hasPopulation()) { 
39058        for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
39059          composeMeasureReportStratifierGroupPopulationComponent("population", e);
39060      }
39061      if (element.hasMeasureScore()) {
39062        composeQuantity("measureScore", element.getMeasureScore());
39063      }
39064  }
39065
39066  protected void composeMeasureReportStratifierGroupComponentComponent(String name, MeasureReport.StratifierGroupComponentComponent element) throws IOException {
39067    if (element != null) {
39068      composeElementAttributes(element);
39069      xml.enter(FHIR_NS, name);
39070      composeMeasureReportStratifierGroupComponentComponentElements(element);
39071      composeElementClose(element);
39072      xml.exit(FHIR_NS, name);
39073    }
39074  }
39075
39076  protected void composeMeasureReportStratifierGroupComponentComponentElements(MeasureReport.StratifierGroupComponentComponent element) throws IOException {
39077      composeBackboneElementElements(element);
39078      if (element.hasCode()) {
39079        composeCodeableConcept("code", element.getCode());
39080      }
39081      if (element.hasValue()) {
39082        composeCodeableConcept("value", element.getValue());
39083      }
39084  }
39085
39086  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
39087    if (element != null) {
39088      composeElementAttributes(element);
39089      xml.enter(FHIR_NS, name);
39090      composeMeasureReportStratifierGroupPopulationComponentElements(element);
39091      composeElementClose(element);
39092      xml.exit(FHIR_NS, name);
39093    }
39094  }
39095
39096  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
39097      composeBackboneElementElements(element);
39098      if (element.hasCode()) {
39099        composeCodeableConcept("code", element.getCode());
39100      }
39101      if (element.hasCountElement()) {
39102        composeInteger("count", element.getCountElement());
39103      }
39104      if (element.hasSubjectResults()) {
39105        composeReference("subjectResults", element.getSubjectResults());
39106      }
39107  }
39108
39109  protected void composeMedia(String name, Media element) throws IOException {
39110    if (element != null) {
39111      composeDomainResourceAttributes(element);
39112      xml.enter(FHIR_NS, name);
39113      composeMediaElements(element);
39114      composeElementClose(element);
39115      xml.exit(FHIR_NS, name);
39116    }
39117  }
39118
39119  protected void composeMediaElements(Media element) throws IOException {
39120      composeDomainResourceElements(element);
39121      if (element.hasIdentifier()) { 
39122        for (Identifier e : element.getIdentifier()) 
39123          composeIdentifier("identifier", e);
39124      }
39125      if (element.hasBasedOn()) { 
39126        for (Reference e : element.getBasedOn()) 
39127          composeReference("basedOn", e);
39128      }
39129      if (element.hasPartOf()) { 
39130        for (Reference e : element.getPartOf()) 
39131          composeReference("partOf", e);
39132      }
39133      if (element.hasStatusElement())
39134        composeEnumeration("status", element.getStatusElement(), new Media.MediaStatusEnumFactory());
39135      if (element.hasType()) {
39136        composeCodeableConcept("type", element.getType());
39137      }
39138      if (element.hasModality()) {
39139        composeCodeableConcept("modality", element.getModality());
39140      }
39141      if (element.hasView()) {
39142        composeCodeableConcept("view", element.getView());
39143      }
39144      if (element.hasSubject()) {
39145        composeReference("subject", element.getSubject());
39146      }
39147      if (element.hasEncounter()) {
39148        composeReference("encounter", element.getEncounter());
39149      }
39150      if (element.hasCreated()) {
39151        composeType("created", element.getCreated());
39152      }      if (element.hasIssuedElement()) {
39153        composeInstant("issued", element.getIssuedElement());
39154      }
39155      if (element.hasOperator()) {
39156        composeReference("operator", element.getOperator());
39157      }
39158      if (element.hasReasonCode()) { 
39159        for (CodeableConcept e : element.getReasonCode()) 
39160          composeCodeableConcept("reasonCode", e);
39161      }
39162      if (element.hasBodySite()) {
39163        composeCodeableConcept("bodySite", element.getBodySite());
39164      }
39165      if (element.hasDeviceNameElement()) {
39166        composeString("deviceName", element.getDeviceNameElement());
39167      }
39168      if (element.hasDevice()) {
39169        composeReference("device", element.getDevice());
39170      }
39171      if (element.hasHeightElement()) {
39172        composePositiveInt("height", element.getHeightElement());
39173      }
39174      if (element.hasWidthElement()) {
39175        composePositiveInt("width", element.getWidthElement());
39176      }
39177      if (element.hasFramesElement()) {
39178        composePositiveInt("frames", element.getFramesElement());
39179      }
39180      if (element.hasDurationElement()) {
39181        composeDecimal("duration", element.getDurationElement());
39182      }
39183      if (element.hasContent()) {
39184        composeAttachment("content", element.getContent());
39185      }
39186      if (element.hasNote()) { 
39187        for (Annotation e : element.getNote()) 
39188          composeAnnotation("note", e);
39189      }
39190  }
39191
39192  protected void composeMedication(String name, Medication element) throws IOException {
39193    if (element != null) {
39194      composeDomainResourceAttributes(element);
39195      xml.enter(FHIR_NS, name);
39196      composeMedicationElements(element);
39197      composeElementClose(element);
39198      xml.exit(FHIR_NS, name);
39199    }
39200  }
39201
39202  protected void composeMedicationElements(Medication element) throws IOException {
39203      composeDomainResourceElements(element);
39204      if (element.hasIdentifier()) { 
39205        for (Identifier e : element.getIdentifier()) 
39206          composeIdentifier("identifier", e);
39207      }
39208      if (element.hasCode()) {
39209        composeCodeableConcept("code", element.getCode());
39210      }
39211      if (element.hasStatusElement())
39212        composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusEnumFactory());
39213      if (element.hasManufacturer()) {
39214        composeReference("manufacturer", element.getManufacturer());
39215      }
39216      if (element.hasForm()) {
39217        composeCodeableConcept("form", element.getForm());
39218      }
39219      if (element.hasAmount()) {
39220        composeRatio("amount", element.getAmount());
39221      }
39222      if (element.hasIngredient()) { 
39223        for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
39224          composeMedicationMedicationIngredientComponent("ingredient", e);
39225      }
39226      if (element.hasBatch()) {
39227        composeMedicationMedicationBatchComponent("batch", element.getBatch());
39228      }
39229  }
39230
39231  protected void composeMedicationMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
39232    if (element != null) {
39233      composeElementAttributes(element);
39234      xml.enter(FHIR_NS, name);
39235      composeMedicationMedicationIngredientComponentElements(element);
39236      composeElementClose(element);
39237      xml.exit(FHIR_NS, name);
39238    }
39239  }
39240
39241  protected void composeMedicationMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
39242      composeBackboneElementElements(element);
39243      if (element.hasItem()) {
39244        composeType("item", element.getItem());
39245      }      if (element.hasIsActiveElement()) {
39246        composeBoolean("isActive", element.getIsActiveElement());
39247      }
39248      if (element.hasStrength()) {
39249        composeRatio("strength", element.getStrength());
39250      }
39251  }
39252
39253  protected void composeMedicationMedicationBatchComponent(String name, Medication.MedicationBatchComponent element) throws IOException {
39254    if (element != null) {
39255      composeElementAttributes(element);
39256      xml.enter(FHIR_NS, name);
39257      composeMedicationMedicationBatchComponentElements(element);
39258      composeElementClose(element);
39259      xml.exit(FHIR_NS, name);
39260    }
39261  }
39262
39263  protected void composeMedicationMedicationBatchComponentElements(Medication.MedicationBatchComponent element) throws IOException {
39264      composeBackboneElementElements(element);
39265      if (element.hasLotNumberElement()) {
39266        composeString("lotNumber", element.getLotNumberElement());
39267      }
39268      if (element.hasExpirationDateElement()) {
39269        composeDateTime("expirationDate", element.getExpirationDateElement());
39270      }
39271  }
39272
39273  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
39274    if (element != null) {
39275      composeDomainResourceAttributes(element);
39276      xml.enter(FHIR_NS, name);
39277      composeMedicationAdministrationElements(element);
39278      composeElementClose(element);
39279      xml.exit(FHIR_NS, name);
39280    }
39281  }
39282
39283  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
39284      composeDomainResourceElements(element);
39285      if (element.hasIdentifier()) { 
39286        for (Identifier e : element.getIdentifier()) 
39287          composeIdentifier("identifier", e);
39288      }
39289      if (element.hasInstantiates()) { 
39290        for (UriType e : element.getInstantiates()) 
39291          composeUri("instantiates", e);
39292      }
39293      if (element.hasPartOf()) { 
39294        for (Reference e : element.getPartOf()) 
39295          composeReference("partOf", e);
39296      }
39297      if (element.hasStatusElement())
39298        composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusEnumFactory());
39299      if (element.hasStatusReason()) { 
39300        for (CodeableConcept e : element.getStatusReason()) 
39301          composeCodeableConcept("statusReason", e);
39302      }
39303      if (element.hasCategory()) {
39304        composeCodeableConcept("category", element.getCategory());
39305      }
39306      if (element.hasMedication()) {
39307        composeType("medication", element.getMedication());
39308      }      if (element.hasSubject()) {
39309        composeReference("subject", element.getSubject());
39310      }
39311      if (element.hasContext()) {
39312        composeReference("context", element.getContext());
39313      }
39314      if (element.hasSupportingInformation()) { 
39315        for (Reference e : element.getSupportingInformation()) 
39316          composeReference("supportingInformation", e);
39317      }
39318      if (element.hasEffective()) {
39319        composeType("effective", element.getEffective());
39320      }      if (element.hasPerformer()) { 
39321        for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
39322          composeMedicationAdministrationMedicationAdministrationPerformerComponent("performer", e);
39323      }
39324      if (element.hasReasonCode()) { 
39325        for (CodeableConcept e : element.getReasonCode()) 
39326          composeCodeableConcept("reasonCode", e);
39327      }
39328      if (element.hasReasonReference()) { 
39329        for (Reference e : element.getReasonReference()) 
39330          composeReference("reasonReference", e);
39331      }
39332      if (element.hasRequest()) {
39333        composeReference("request", element.getRequest());
39334      }
39335      if (element.hasDevice()) { 
39336        for (Reference e : element.getDevice()) 
39337          composeReference("device", e);
39338      }
39339      if (element.hasNote()) { 
39340        for (Annotation e : element.getNote()) 
39341          composeAnnotation("note", e);
39342      }
39343      if (element.hasDosage()) {
39344        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
39345      }
39346      if (element.hasEventHistory()) { 
39347        for (Reference e : element.getEventHistory()) 
39348          composeReference("eventHistory", e);
39349      }
39350  }
39351
39352  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
39353    if (element != null) {
39354      composeElementAttributes(element);
39355      xml.enter(FHIR_NS, name);
39356      composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(element);
39357      composeElementClose(element);
39358      xml.exit(FHIR_NS, name);
39359    }
39360  }
39361
39362  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
39363      composeBackboneElementElements(element);
39364      if (element.hasFunction()) {
39365        composeCodeableConcept("function", element.getFunction());
39366      }
39367      if (element.hasActor()) {
39368        composeReference("actor", element.getActor());
39369      }
39370  }
39371
39372  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
39373    if (element != null) {
39374      composeElementAttributes(element);
39375      xml.enter(FHIR_NS, name);
39376      composeMedicationAdministrationMedicationAdministrationDosageComponentElements(element);
39377      composeElementClose(element);
39378      xml.exit(FHIR_NS, name);
39379    }
39380  }
39381
39382  protected void composeMedicationAdministrationMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
39383      composeBackboneElementElements(element);
39384      if (element.hasTextElement()) {
39385        composeString("text", element.getTextElement());
39386      }
39387      if (element.hasSite()) {
39388        composeCodeableConcept("site", element.getSite());
39389      }
39390      if (element.hasRoute()) {
39391        composeCodeableConcept("route", element.getRoute());
39392      }
39393      if (element.hasMethod()) {
39394        composeCodeableConcept("method", element.getMethod());
39395      }
39396      if (element.hasDose()) {
39397        composeQuantity("dose", element.getDose());
39398      }
39399      if (element.hasRate()) {
39400        composeType("rate", element.getRate());
39401      }  }
39402
39403  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
39404    if (element != null) {
39405      composeDomainResourceAttributes(element);
39406      xml.enter(FHIR_NS, name);
39407      composeMedicationDispenseElements(element);
39408      composeElementClose(element);
39409      xml.exit(FHIR_NS, name);
39410    }
39411  }
39412
39413  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
39414      composeDomainResourceElements(element);
39415      if (element.hasIdentifier()) { 
39416        for (Identifier e : element.getIdentifier()) 
39417          composeIdentifier("identifier", e);
39418      }
39419      if (element.hasPartOf()) { 
39420        for (Reference e : element.getPartOf()) 
39421          composeReference("partOf", e);
39422      }
39423      if (element.hasStatusElement())
39424        composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusEnumFactory());
39425      if (element.hasStatusReason()) {
39426        composeType("statusReason", element.getStatusReason());
39427      }      if (element.hasCategory()) {
39428        composeCodeableConcept("category", element.getCategory());
39429      }
39430      if (element.hasMedication()) {
39431        composeType("medication", element.getMedication());
39432      }      if (element.hasSubject()) {
39433        composeReference("subject", element.getSubject());
39434      }
39435      if (element.hasContext()) {
39436        composeReference("context", element.getContext());
39437      }
39438      if (element.hasSupportingInformation()) { 
39439        for (Reference e : element.getSupportingInformation()) 
39440          composeReference("supportingInformation", e);
39441      }
39442      if (element.hasPerformer()) { 
39443        for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
39444          composeMedicationDispenseMedicationDispensePerformerComponent("performer", e);
39445      }
39446      if (element.hasLocation()) {
39447        composeReference("location", element.getLocation());
39448      }
39449      if (element.hasAuthorizingPrescription()) { 
39450        for (Reference e : element.getAuthorizingPrescription()) 
39451          composeReference("authorizingPrescription", e);
39452      }
39453      if (element.hasType()) {
39454        composeCodeableConcept("type", element.getType());
39455      }
39456      if (element.hasQuantity()) {
39457        composeQuantity("quantity", element.getQuantity());
39458      }
39459      if (element.hasDaysSupply()) {
39460        composeQuantity("daysSupply", element.getDaysSupply());
39461      }
39462      if (element.hasWhenPreparedElement()) {
39463        composeDateTime("whenPrepared", element.getWhenPreparedElement());
39464      }
39465      if (element.hasWhenHandedOverElement()) {
39466        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
39467      }
39468      if (element.hasDestination()) {
39469        composeReference("destination", element.getDestination());
39470      }
39471      if (element.hasReceiver()) { 
39472        for (Reference e : element.getReceiver()) 
39473          composeReference("receiver", e);
39474      }
39475      if (element.hasNote()) { 
39476        for (Annotation e : element.getNote()) 
39477          composeAnnotation("note", e);
39478      }
39479      if (element.hasDosageInstruction()) { 
39480        for (Dosage e : element.getDosageInstruction()) 
39481          composeDosage("dosageInstruction", e);
39482      }
39483      if (element.hasSubstitution()) {
39484        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
39485      }
39486      if (element.hasDetectedIssue()) { 
39487        for (Reference e : element.getDetectedIssue()) 
39488          composeReference("detectedIssue", e);
39489      }
39490      if (element.hasEventHistory()) { 
39491        for (Reference e : element.getEventHistory()) 
39492          composeReference("eventHistory", e);
39493      }
39494  }
39495
39496  protected void composeMedicationDispenseMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
39497    if (element != null) {
39498      composeElementAttributes(element);
39499      xml.enter(FHIR_NS, name);
39500      composeMedicationDispenseMedicationDispensePerformerComponentElements(element);
39501      composeElementClose(element);
39502      xml.exit(FHIR_NS, name);
39503    }
39504  }
39505
39506  protected void composeMedicationDispenseMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
39507      composeBackboneElementElements(element);
39508      if (element.hasFunction()) {
39509        composeCodeableConcept("function", element.getFunction());
39510      }
39511      if (element.hasActor()) {
39512        composeReference("actor", element.getActor());
39513      }
39514  }
39515
39516  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
39517    if (element != null) {
39518      composeElementAttributes(element);
39519      xml.enter(FHIR_NS, name);
39520      composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(element);
39521      composeElementClose(element);
39522      xml.exit(FHIR_NS, name);
39523    }
39524  }
39525
39526  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
39527      composeBackboneElementElements(element);
39528      if (element.hasWasSubstitutedElement()) {
39529        composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
39530      }
39531      if (element.hasType()) {
39532        composeCodeableConcept("type", element.getType());
39533      }
39534      if (element.hasReason()) { 
39535        for (CodeableConcept e : element.getReason()) 
39536          composeCodeableConcept("reason", e);
39537      }
39538      if (element.hasResponsibleParty()) { 
39539        for (Reference e : element.getResponsibleParty()) 
39540          composeReference("responsibleParty", e);
39541      }
39542  }
39543
39544  protected void composeMedicationKnowledge(String name, MedicationKnowledge element) throws IOException {
39545    if (element != null) {
39546      composeDomainResourceAttributes(element);
39547      xml.enter(FHIR_NS, name);
39548      composeMedicationKnowledgeElements(element);
39549      composeElementClose(element);
39550      xml.exit(FHIR_NS, name);
39551    }
39552  }
39553
39554  protected void composeMedicationKnowledgeElements(MedicationKnowledge element) throws IOException {
39555      composeDomainResourceElements(element);
39556      if (element.hasCode()) {
39557        composeCodeableConcept("code", element.getCode());
39558      }
39559      if (element.hasStatusElement())
39560        composeEnumeration("status", element.getStatusElement(), new MedicationKnowledge.MedicationKnowledgeStatusEnumFactory());
39561      if (element.hasManufacturer()) {
39562        composeReference("manufacturer", element.getManufacturer());
39563      }
39564      if (element.hasDoseForm()) {
39565        composeCodeableConcept("doseForm", element.getDoseForm());
39566      }
39567      if (element.hasAmount()) {
39568        composeQuantity("amount", element.getAmount());
39569      }
39570      if (element.hasSynonym()) { 
39571        for (StringType e : element.getSynonym()) 
39572          composeString("synonym", e);
39573      }
39574      if (element.hasRelatedMedicationKnowledge()) { 
39575        for (MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent e : element.getRelatedMedicationKnowledge()) 
39576          composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent("relatedMedicationKnowledge", e);
39577      }
39578      if (element.hasAssociatedMedication()) { 
39579        for (Reference e : element.getAssociatedMedication()) 
39580          composeReference("associatedMedication", e);
39581      }
39582      if (element.hasProductType()) { 
39583        for (CodeableConcept e : element.getProductType()) 
39584          composeCodeableConcept("productType", e);
39585      }
39586      if (element.hasMonograph()) { 
39587        for (MedicationKnowledge.MedicationKnowledgeMonographComponent e : element.getMonograph()) 
39588          composeMedicationKnowledgeMedicationKnowledgeMonographComponent("monograph", e);
39589      }
39590      if (element.hasIngredient()) { 
39591        for (MedicationKnowledge.MedicationKnowledgeIngredientComponent e : element.getIngredient()) 
39592          composeMedicationKnowledgeMedicationKnowledgeIngredientComponent("ingredient", e);
39593      }
39594      if (element.hasPreparationInstructionElement()) {
39595        composeMarkdown("preparationInstruction", element.getPreparationInstructionElement());
39596      }
39597      if (element.hasIntendedRoute()) { 
39598        for (CodeableConcept e : element.getIntendedRoute()) 
39599          composeCodeableConcept("intendedRoute", e);
39600      }
39601      if (element.hasCost()) { 
39602        for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
39603          composeMedicationKnowledgeMedicationKnowledgeCostComponent("cost", e);
39604      }
39605      if (element.hasMonitoringProgram()) { 
39606        for (MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent e : element.getMonitoringProgram()) 
39607          composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent("monitoringProgram", e);
39608      }
39609      if (element.hasAdministrationGuidelines()) { 
39610        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent e : element.getAdministrationGuidelines()) 
39611          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent("administrationGuidelines", e);
39612      }
39613      if (element.hasMedicineClassification()) { 
39614        for (MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent e : element.getMedicineClassification()) 
39615          composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent("medicineClassification", e);
39616      }
39617      if (element.hasPackaging()) {
39618        composeMedicationKnowledgeMedicationKnowledgePackagingComponent("packaging", element.getPackaging());
39619      }
39620      if (element.hasDrugCharacteristic()) { 
39621        for (MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent e : element.getDrugCharacteristic()) 
39622          composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent("drugCharacteristic", e);
39623      }
39624      if (element.hasContraindication()) { 
39625        for (Reference e : element.getContraindication()) 
39626          composeReference("contraindication", e);
39627      }
39628      if (element.hasRegulatory()) { 
39629        for (MedicationKnowledge.MedicationKnowledgeRegulatoryComponent e : element.getRegulatory()) 
39630          composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent("regulatory", e);
39631      }
39632      if (element.hasKinetics()) { 
39633        for (MedicationKnowledge.MedicationKnowledgeKineticsComponent e : element.getKinetics()) 
39634          composeMedicationKnowledgeMedicationKnowledgeKineticsComponent("kinetics", e);
39635      }
39636  }
39637
39638  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(String name, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
39639    if (element != null) {
39640      composeElementAttributes(element);
39641      xml.enter(FHIR_NS, name);
39642      composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(element);
39643      composeElementClose(element);
39644      xml.exit(FHIR_NS, name);
39645    }
39646  }
39647
39648  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
39649      composeBackboneElementElements(element);
39650      if (element.hasType()) {
39651        composeCodeableConcept("type", element.getType());
39652      }
39653      if (element.hasReference()) { 
39654        for (Reference e : element.getReference()) 
39655          composeReference("reference", e);
39656      }
39657  }
39658
39659  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponent(String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
39660    if (element != null) {
39661      composeElementAttributes(element);
39662      xml.enter(FHIR_NS, name);
39663      composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(element);
39664      composeElementClose(element);
39665      xml.exit(FHIR_NS, name);
39666    }
39667  }
39668
39669  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
39670      composeBackboneElementElements(element);
39671      if (element.hasType()) {
39672        composeCodeableConcept("type", element.getType());
39673      }
39674      if (element.hasSource()) {
39675        composeReference("source", element.getSource());
39676      }
39677  }
39678
39679  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponent(String name, MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
39680    if (element != null) {
39681      composeElementAttributes(element);
39682      xml.enter(FHIR_NS, name);
39683      composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(element);
39684      composeElementClose(element);
39685      xml.exit(FHIR_NS, name);
39686    }
39687  }
39688
39689  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
39690      composeBackboneElementElements(element);
39691      if (element.hasItem()) {
39692        composeType("item", element.getItem());
39693      }      if (element.hasIsActiveElement()) {
39694        composeBoolean("isActive", element.getIsActiveElement());
39695      }
39696      if (element.hasStrength()) {
39697        composeRatio("strength", element.getStrength());
39698      }
39699  }
39700
39701  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponent(String name, MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
39702    if (element != null) {
39703      composeElementAttributes(element);
39704      xml.enter(FHIR_NS, name);
39705      composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(element);
39706      composeElementClose(element);
39707      xml.exit(FHIR_NS, name);
39708    }
39709  }
39710
39711  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
39712      composeBackboneElementElements(element);
39713      if (element.hasType()) {
39714        composeCodeableConcept("type", element.getType());
39715      }
39716      if (element.hasSourceElement()) {
39717        composeString("source", element.getSourceElement());
39718      }
39719      if (element.hasCost()) {
39720        composeMoney("cost", element.getCost());
39721      }
39722  }
39723
39724  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
39725    if (element != null) {
39726      composeElementAttributes(element);
39727      xml.enter(FHIR_NS, name);
39728      composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(element);
39729      composeElementClose(element);
39730      xml.exit(FHIR_NS, name);
39731    }
39732  }
39733
39734  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
39735      composeBackboneElementElements(element);
39736      if (element.hasType()) {
39737        composeCodeableConcept("type", element.getType());
39738      }
39739      if (element.hasNameElement()) {
39740        composeString("name", element.getNameElement());
39741      }
39742  }
39743
39744  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
39745    if (element != null) {
39746      composeElementAttributes(element);
39747      xml.enter(FHIR_NS, name);
39748      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(element);
39749      composeElementClose(element);
39750      xml.exit(FHIR_NS, name);
39751    }
39752  }
39753
39754  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
39755      composeBackboneElementElements(element);
39756      if (element.hasDosage()) { 
39757        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent e : element.getDosage()) 
39758          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent("dosage", e);
39759      }
39760      if (element.hasIndication()) {
39761        composeType("indication", element.getIndication());
39762      }      if (element.hasPatientCharacteristics()) { 
39763        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent e : element.getPatientCharacteristics()) 
39764          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent("patientCharacteristics", e);
39765      }
39766  }
39767
39768  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
39769    if (element != null) {
39770      composeElementAttributes(element);
39771      xml.enter(FHIR_NS, name);
39772      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(element);
39773      composeElementClose(element);
39774      xml.exit(FHIR_NS, name);
39775    }
39776  }
39777
39778  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
39779      composeBackboneElementElements(element);
39780      if (element.hasType()) {
39781        composeCodeableConcept("type", element.getType());
39782      }
39783      if (element.hasDosage()) { 
39784        for (Dosage e : element.getDosage()) 
39785          composeDosage("dosage", e);
39786      }
39787  }
39788
39789  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
39790    if (element != null) {
39791      composeElementAttributes(element);
39792      xml.enter(FHIR_NS, name);
39793      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(element);
39794      composeElementClose(element);
39795      xml.exit(FHIR_NS, name);
39796    }
39797  }
39798
39799  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
39800      composeBackboneElementElements(element);
39801      if (element.hasCharacteristic()) {
39802        composeType("characteristic", element.getCharacteristic());
39803      }      if (element.hasValue()) { 
39804        for (StringType e : element.getValue()) 
39805          composeString("value", e);
39806      }
39807  }
39808
39809  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
39810    if (element != null) {
39811      composeElementAttributes(element);
39812      xml.enter(FHIR_NS, name);
39813      composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(element);
39814      composeElementClose(element);
39815      xml.exit(FHIR_NS, name);
39816    }
39817  }
39818
39819  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
39820      composeBackboneElementElements(element);
39821      if (element.hasType()) {
39822        composeCodeableConcept("type", element.getType());
39823      }
39824      if (element.hasClassification()) { 
39825        for (CodeableConcept e : element.getClassification()) 
39826          composeCodeableConcept("classification", e);
39827      }
39828  }
39829
39830  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponent(String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
39831    if (element != null) {
39832      composeElementAttributes(element);
39833      xml.enter(FHIR_NS, name);
39834      composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(element);
39835      composeElementClose(element);
39836      xml.exit(FHIR_NS, name);
39837    }
39838  }
39839
39840  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
39841      composeBackboneElementElements(element);
39842      if (element.hasType()) {
39843        composeCodeableConcept("type", element.getType());
39844      }
39845      if (element.hasQuantity()) {
39846        composeQuantity("quantity", element.getQuantity());
39847      }
39848  }
39849
39850  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
39851    if (element != null) {
39852      composeElementAttributes(element);
39853      xml.enter(FHIR_NS, name);
39854      composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(element);
39855      composeElementClose(element);
39856      xml.exit(FHIR_NS, name);
39857    }
39858  }
39859
39860  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
39861      composeBackboneElementElements(element);
39862      if (element.hasType()) {
39863        composeCodeableConcept("type", element.getType());
39864      }
39865      if (element.hasValue()) {
39866        composeType("value", element.getValue());
39867      }  }
39868
39869  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
39870    if (element != null) {
39871      composeElementAttributes(element);
39872      xml.enter(FHIR_NS, name);
39873      composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponentElements(element);
39874      composeElementClose(element);
39875      xml.exit(FHIR_NS, name);
39876    }
39877  }
39878
39879  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
39880      composeBackboneElementElements(element);
39881      if (element.hasRegulatoryAuthority()) {
39882        composeReference("regulatoryAuthority", element.getRegulatoryAuthority());
39883      }
39884      if (element.hasSubstitution()) { 
39885        for (MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent e : element.getSubstitution()) 
39886          composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent("substitution", e);
39887      }
39888      if (element.hasSchedule()) { 
39889        for (MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent e : element.getSchedule()) 
39890          composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent("schedule", e);
39891      }
39892      if (element.hasMaxDispense()) {
39893        composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent("maxDispense", element.getMaxDispense());
39894      }
39895  }
39896
39897  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
39898    if (element != null) {
39899      composeElementAttributes(element);
39900      xml.enter(FHIR_NS, name);
39901      composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentElements(element);
39902      composeElementClose(element);
39903      xml.exit(FHIR_NS, name);
39904    }
39905  }
39906
39907  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
39908      composeBackboneElementElements(element);
39909      if (element.hasType()) {
39910        composeCodeableConcept("type", element.getType());
39911      }
39912      if (element.hasAllowedElement()) {
39913        composeBoolean("allowed", element.getAllowedElement());
39914      }
39915  }
39916
39917  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
39918    if (element != null) {
39919      composeElementAttributes(element);
39920      xml.enter(FHIR_NS, name);
39921      composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentElements(element);
39922      composeElementClose(element);
39923      xml.exit(FHIR_NS, name);
39924    }
39925  }
39926
39927  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
39928      composeBackboneElementElements(element);
39929      if (element.hasSchedule()) {
39930        composeCodeableConcept("schedule", element.getSchedule());
39931      }
39932  }
39933
39934  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
39935    if (element != null) {
39936      composeElementAttributes(element);
39937      xml.enter(FHIR_NS, name);
39938      composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(element);
39939      composeElementClose(element);
39940      xml.exit(FHIR_NS, name);
39941    }
39942  }
39943
39944  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
39945      composeBackboneElementElements(element);
39946      if (element.hasQuantity()) {
39947        composeQuantity("quantity", element.getQuantity());
39948      }
39949      if (element.hasPeriod()) {
39950        composeDuration("period", element.getPeriod());
39951      }
39952  }
39953
39954  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponent(String name, MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
39955    if (element != null) {
39956      composeElementAttributes(element);
39957      xml.enter(FHIR_NS, name);
39958      composeMedicationKnowledgeMedicationKnowledgeKineticsComponentElements(element);
39959      composeElementClose(element);
39960      xml.exit(FHIR_NS, name);
39961    }
39962  }
39963
39964  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponentElements(MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
39965      composeBackboneElementElements(element);
39966      if (element.hasAreaUnderCurve()) { 
39967        for (Quantity e : element.getAreaUnderCurve()) 
39968          composeQuantity("areaUnderCurve", e);
39969      }
39970      if (element.hasLethalDose50()) { 
39971        for (Quantity e : element.getLethalDose50()) 
39972          composeQuantity("lethalDose50", e);
39973      }
39974      if (element.hasHalfLifePeriod()) {
39975        composeDuration("halfLifePeriod", element.getHalfLifePeriod());
39976      }
39977  }
39978
39979  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
39980    if (element != null) {
39981      composeDomainResourceAttributes(element);
39982      xml.enter(FHIR_NS, name);
39983      composeMedicationRequestElements(element);
39984      composeElementClose(element);
39985      xml.exit(FHIR_NS, name);
39986    }
39987  }
39988
39989  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
39990      composeDomainResourceElements(element);
39991      if (element.hasIdentifier()) { 
39992        for (Identifier e : element.getIdentifier()) 
39993          composeIdentifier("identifier", e);
39994      }
39995      if (element.hasStatusElement())
39996        composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationRequestStatusEnumFactory());
39997      if (element.hasStatusReason()) {
39998        composeCodeableConcept("statusReason", element.getStatusReason());
39999      }
40000      if (element.hasIntentElement())
40001        composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
40002      if (element.hasCategory()) { 
40003        for (CodeableConcept e : element.getCategory()) 
40004          composeCodeableConcept("category", e);
40005      }
40006      if (element.hasPriorityElement())
40007        composeEnumeration("priority", element.getPriorityElement(), new MedicationRequest.MedicationRequestPriorityEnumFactory());
40008      if (element.hasDoNotPerformElement()) {
40009        composeBoolean("doNotPerform", element.getDoNotPerformElement());
40010      }
40011      if (element.hasReported()) {
40012        composeType("reported", element.getReported());
40013      }      if (element.hasMedication()) {
40014        composeType("medication", element.getMedication());
40015      }      if (element.hasSubject()) {
40016        composeReference("subject", element.getSubject());
40017      }
40018      if (element.hasEncounter()) {
40019        composeReference("encounter", element.getEncounter());
40020      }
40021      if (element.hasSupportingInformation()) { 
40022        for (Reference e : element.getSupportingInformation()) 
40023          composeReference("supportingInformation", e);
40024      }
40025      if (element.hasAuthoredOnElement()) {
40026        composeDateTime("authoredOn", element.getAuthoredOnElement());
40027      }
40028      if (element.hasRequester()) {
40029        composeReference("requester", element.getRequester());
40030      }
40031      if (element.hasPerformer()) {
40032        composeReference("performer", element.getPerformer());
40033      }
40034      if (element.hasPerformerType()) {
40035        composeCodeableConcept("performerType", element.getPerformerType());
40036      }
40037      if (element.hasRecorder()) {
40038        composeReference("recorder", element.getRecorder());
40039      }
40040      if (element.hasReasonCode()) { 
40041        for (CodeableConcept e : element.getReasonCode()) 
40042          composeCodeableConcept("reasonCode", e);
40043      }
40044      if (element.hasReasonReference()) { 
40045        for (Reference e : element.getReasonReference()) 
40046          composeReference("reasonReference", e);
40047      }
40048      if (element.hasInstantiatesCanonical()) { 
40049        for (CanonicalType e : element.getInstantiatesCanonical()) 
40050          composeCanonical("instantiatesCanonical", e);
40051      }
40052      if (element.hasInstantiatesUri()) { 
40053        for (UriType e : element.getInstantiatesUri()) 
40054          composeUri("instantiatesUri", e);
40055      }
40056      if (element.hasBasedOn()) { 
40057        for (Reference e : element.getBasedOn()) 
40058          composeReference("basedOn", e);
40059      }
40060      if (element.hasGroupIdentifier()) {
40061        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
40062      }
40063      if (element.hasCourseOfTherapyType()) {
40064        composeCodeableConcept("courseOfTherapyType", element.getCourseOfTherapyType());
40065      }
40066      if (element.hasInsurance()) { 
40067        for (Reference e : element.getInsurance()) 
40068          composeReference("insurance", e);
40069      }
40070      if (element.hasNote()) { 
40071        for (Annotation e : element.getNote()) 
40072          composeAnnotation("note", e);
40073      }
40074      if (element.hasDosageInstruction()) { 
40075        for (Dosage e : element.getDosageInstruction()) 
40076          composeDosage("dosageInstruction", e);
40077      }
40078      if (element.hasDispenseRequest()) {
40079        composeMedicationRequestMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
40080      }
40081      if (element.hasSubstitution()) {
40082        composeMedicationRequestMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
40083      }
40084      if (element.hasPriorPrescription()) {
40085        composeReference("priorPrescription", element.getPriorPrescription());
40086      }
40087      if (element.hasDetectedIssue()) { 
40088        for (Reference e : element.getDetectedIssue()) 
40089          composeReference("detectedIssue", e);
40090      }
40091      if (element.hasEventHistory()) { 
40092        for (Reference e : element.getEventHistory()) 
40093          composeReference("eventHistory", e);
40094      }
40095  }
40096
40097  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
40098    if (element != null) {
40099      composeElementAttributes(element);
40100      xml.enter(FHIR_NS, name);
40101      composeMedicationRequestMedicationRequestDispenseRequestComponentElements(element);
40102      composeElementClose(element);
40103      xml.exit(FHIR_NS, name);
40104    }
40105  }
40106
40107  protected void composeMedicationRequestMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
40108      composeBackboneElementElements(element);
40109      if (element.hasInitialFill()) {
40110        composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent("initialFill", element.getInitialFill());
40111      }
40112      if (element.hasDispenseInterval()) {
40113        composeDuration("dispenseInterval", element.getDispenseInterval());
40114      }
40115      if (element.hasValidityPeriod()) {
40116        composePeriod("validityPeriod", element.getValidityPeriod());
40117      }
40118      if (element.hasNumberOfRepeatsAllowedElement()) {
40119        composeUnsignedInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
40120      }
40121      if (element.hasQuantity()) {
40122        composeQuantity("quantity", element.getQuantity());
40123      }
40124      if (element.hasExpectedSupplyDuration()) {
40125        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
40126      }
40127      if (element.hasPerformer()) {
40128        composeReference("performer", element.getPerformer());
40129      }
40130  }
40131
40132  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(String name, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
40133    if (element != null) {
40134      composeElementAttributes(element);
40135      xml.enter(FHIR_NS, name);
40136      composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponentElements(element);
40137      composeElementClose(element);
40138      xml.exit(FHIR_NS, name);
40139    }
40140  }
40141
40142  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponentElements(MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
40143      composeBackboneElementElements(element);
40144      if (element.hasQuantity()) {
40145        composeQuantity("quantity", element.getQuantity());
40146      }
40147      if (element.hasDuration()) {
40148        composeDuration("duration", element.getDuration());
40149      }
40150  }
40151
40152  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
40153    if (element != null) {
40154      composeElementAttributes(element);
40155      xml.enter(FHIR_NS, name);
40156      composeMedicationRequestMedicationRequestSubstitutionComponentElements(element);
40157      composeElementClose(element);
40158      xml.exit(FHIR_NS, name);
40159    }
40160  }
40161
40162  protected void composeMedicationRequestMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
40163      composeBackboneElementElements(element);
40164      if (element.hasAllowed()) {
40165        composeType("allowed", element.getAllowed());
40166      }      if (element.hasReason()) {
40167        composeCodeableConcept("reason", element.getReason());
40168      }
40169  }
40170
40171  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
40172    if (element != null) {
40173      composeDomainResourceAttributes(element);
40174      xml.enter(FHIR_NS, name);
40175      composeMedicationStatementElements(element);
40176      composeElementClose(element);
40177      xml.exit(FHIR_NS, name);
40178    }
40179  }
40180
40181  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
40182      composeDomainResourceElements(element);
40183      if (element.hasIdentifier()) { 
40184        for (Identifier e : element.getIdentifier()) 
40185          composeIdentifier("identifier", e);
40186      }
40187      if (element.hasBasedOn()) { 
40188        for (Reference e : element.getBasedOn()) 
40189          composeReference("basedOn", e);
40190      }
40191      if (element.hasPartOf()) { 
40192        for (Reference e : element.getPartOf()) 
40193          composeReference("partOf", e);
40194      }
40195      if (element.hasStatusElement())
40196        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
40197      if (element.hasStatusReason()) { 
40198        for (CodeableConcept e : element.getStatusReason()) 
40199          composeCodeableConcept("statusReason", e);
40200      }
40201      if (element.hasCategory()) {
40202        composeCodeableConcept("category", element.getCategory());
40203      }
40204      if (element.hasMedication()) {
40205        composeType("medication", element.getMedication());
40206      }      if (element.hasSubject()) {
40207        composeReference("subject", element.getSubject());
40208      }
40209      if (element.hasContext()) {
40210        composeReference("context", element.getContext());
40211      }
40212      if (element.hasEffective()) {
40213        composeType("effective", element.getEffective());
40214      }      if (element.hasDateAssertedElement()) {
40215        composeDateTime("dateAsserted", element.getDateAssertedElement());
40216      }
40217      if (element.hasInformationSource()) {
40218        composeReference("informationSource", element.getInformationSource());
40219      }
40220      if (element.hasDerivedFrom()) { 
40221        for (Reference e : element.getDerivedFrom()) 
40222          composeReference("derivedFrom", e);
40223      }
40224      if (element.hasReasonCode()) { 
40225        for (CodeableConcept e : element.getReasonCode()) 
40226          composeCodeableConcept("reasonCode", e);
40227      }
40228      if (element.hasReasonReference()) { 
40229        for (Reference e : element.getReasonReference()) 
40230          composeReference("reasonReference", e);
40231      }
40232      if (element.hasNote()) { 
40233        for (Annotation e : element.getNote()) 
40234          composeAnnotation("note", e);
40235      }
40236      if (element.hasDosage()) { 
40237        for (Dosage e : element.getDosage()) 
40238          composeDosage("dosage", e);
40239      }
40240  }
40241
40242  protected void composeMedicinalProduct(String name, MedicinalProduct element) throws IOException {
40243    if (element != null) {
40244      composeDomainResourceAttributes(element);
40245      xml.enter(FHIR_NS, name);
40246      composeMedicinalProductElements(element);
40247      composeElementClose(element);
40248      xml.exit(FHIR_NS, name);
40249    }
40250  }
40251
40252  protected void composeMedicinalProductElements(MedicinalProduct element) throws IOException {
40253      composeDomainResourceElements(element);
40254      if (element.hasIdentifier()) { 
40255        for (Identifier e : element.getIdentifier()) 
40256          composeIdentifier("identifier", e);
40257      }
40258      if (element.hasType()) {
40259        composeCodeableConcept("type", element.getType());
40260      }
40261      if (element.hasDomain()) {
40262        composeCoding("domain", element.getDomain());
40263      }
40264      if (element.hasCombinedPharmaceuticalDoseForm()) {
40265        composeCodeableConcept("combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm());
40266      }
40267      if (element.hasLegalStatusOfSupply()) {
40268        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
40269      }
40270      if (element.hasAdditionalMonitoringIndicator()) {
40271        composeCodeableConcept("additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator());
40272      }
40273      if (element.hasSpecialMeasures()) { 
40274        for (StringType e : element.getSpecialMeasures()) 
40275          composeString("specialMeasures", e);
40276      }
40277      if (element.hasPaediatricUseIndicator()) {
40278        composeCodeableConcept("paediatricUseIndicator", element.getPaediatricUseIndicator());
40279      }
40280      if (element.hasProductClassification()) { 
40281        for (CodeableConcept e : element.getProductClassification()) 
40282          composeCodeableConcept("productClassification", e);
40283      }
40284      if (element.hasMarketingStatus()) { 
40285        for (MarketingStatus e : element.getMarketingStatus()) 
40286          composeMarketingStatus("marketingStatus", e);
40287      }
40288      if (element.hasPharmaceuticalProduct()) { 
40289        for (Reference e : element.getPharmaceuticalProduct()) 
40290          composeReference("pharmaceuticalProduct", e);
40291      }
40292      if (element.hasPackagedMedicinalProduct()) { 
40293        for (Reference e : element.getPackagedMedicinalProduct()) 
40294          composeReference("packagedMedicinalProduct", e);
40295      }
40296      if (element.hasAttachedDocument()) { 
40297        for (Reference e : element.getAttachedDocument()) 
40298          composeReference("attachedDocument", e);
40299      }
40300      if (element.hasMasterFile()) { 
40301        for (Reference e : element.getMasterFile()) 
40302          composeReference("masterFile", e);
40303      }
40304      if (element.hasContact()) { 
40305        for (Reference e : element.getContact()) 
40306          composeReference("contact", e);
40307      }
40308      if (element.hasClinicalTrial()) { 
40309        for (Reference e : element.getClinicalTrial()) 
40310          composeReference("clinicalTrial", e);
40311      }
40312      if (element.hasName()) { 
40313        for (MedicinalProduct.MedicinalProductNameComponent e : element.getName()) 
40314          composeMedicinalProductMedicinalProductNameComponent("name", e);
40315      }
40316      if (element.hasCrossReference()) { 
40317        for (Identifier e : element.getCrossReference()) 
40318          composeIdentifier("crossReference", e);
40319      }
40320      if (element.hasManufacturingBusinessOperation()) { 
40321        for (MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent e : element.getManufacturingBusinessOperation()) 
40322          composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent("manufacturingBusinessOperation", e);
40323      }
40324      if (element.hasSpecialDesignation()) { 
40325        for (MedicinalProduct.MedicinalProductSpecialDesignationComponent e : element.getSpecialDesignation()) 
40326          composeMedicinalProductMedicinalProductSpecialDesignationComponent("specialDesignation", e);
40327      }
40328  }
40329
40330  protected void composeMedicinalProductMedicinalProductNameComponent(String name, MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
40331    if (element != null) {
40332      composeElementAttributes(element);
40333      xml.enter(FHIR_NS, name);
40334      composeMedicinalProductMedicinalProductNameComponentElements(element);
40335      composeElementClose(element);
40336      xml.exit(FHIR_NS, name);
40337    }
40338  }
40339
40340  protected void composeMedicinalProductMedicinalProductNameComponentElements(MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
40341      composeBackboneElementElements(element);
40342      if (element.hasProductNameElement()) {
40343        composeString("productName", element.getProductNameElement());
40344      }
40345      if (element.hasNamePart()) { 
40346        for (MedicinalProduct.MedicinalProductNameNamePartComponent e : element.getNamePart()) 
40347          composeMedicinalProductMedicinalProductNameNamePartComponent("namePart", e);
40348      }
40349      if (element.hasCountryLanguage()) { 
40350        for (MedicinalProduct.MedicinalProductNameCountryLanguageComponent e : element.getCountryLanguage()) 
40351          composeMedicinalProductMedicinalProductNameCountryLanguageComponent("countryLanguage", e);
40352      }
40353  }
40354
40355  protected void composeMedicinalProductMedicinalProductNameNamePartComponent(String name, MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
40356    if (element != null) {
40357      composeElementAttributes(element);
40358      xml.enter(FHIR_NS, name);
40359      composeMedicinalProductMedicinalProductNameNamePartComponentElements(element);
40360      composeElementClose(element);
40361      xml.exit(FHIR_NS, name);
40362    }
40363  }
40364
40365  protected void composeMedicinalProductMedicinalProductNameNamePartComponentElements(MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
40366      composeBackboneElementElements(element);
40367      if (element.hasPartElement()) {
40368        composeString("part", element.getPartElement());
40369      }
40370      if (element.hasType()) {
40371        composeCoding("type", element.getType());
40372      }
40373  }
40374
40375  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponent(String name, MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
40376    if (element != null) {
40377      composeElementAttributes(element);
40378      xml.enter(FHIR_NS, name);
40379      composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(element);
40380      composeElementClose(element);
40381      xml.exit(FHIR_NS, name);
40382    }
40383  }
40384
40385  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
40386      composeBackboneElementElements(element);
40387      if (element.hasCountry()) {
40388        composeCodeableConcept("country", element.getCountry());
40389      }
40390      if (element.hasJurisdiction()) {
40391        composeCodeableConcept("jurisdiction", element.getJurisdiction());
40392      }
40393      if (element.hasLanguage()) {
40394        composeCodeableConcept("language", element.getLanguage());
40395      }
40396  }
40397
40398  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(String name, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
40399    if (element != null) {
40400      composeElementAttributes(element);
40401      xml.enter(FHIR_NS, name);
40402      composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(element);
40403      composeElementClose(element);
40404      xml.exit(FHIR_NS, name);
40405    }
40406  }
40407
40408  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
40409      composeBackboneElementElements(element);
40410      if (element.hasOperationType()) {
40411        composeCodeableConcept("operationType", element.getOperationType());
40412      }
40413      if (element.hasAuthorisationReferenceNumber()) {
40414        composeIdentifier("authorisationReferenceNumber", element.getAuthorisationReferenceNumber());
40415      }
40416      if (element.hasEffectiveDateElement()) {
40417        composeDateTime("effectiveDate", element.getEffectiveDateElement());
40418      }
40419      if (element.hasConfidentialityIndicator()) {
40420        composeCodeableConcept("confidentialityIndicator", element.getConfidentialityIndicator());
40421      }
40422      if (element.hasManufacturer()) { 
40423        for (Reference e : element.getManufacturer()) 
40424          composeReference("manufacturer", e);
40425      }
40426      if (element.hasRegulator()) {
40427        composeReference("regulator", element.getRegulator());
40428      }
40429  }
40430
40431  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponent(String name, MedicinalProduct.MedicinalProductSpecialDesignationComponent element) throws IOException {
40432    if (element != null) {
40433      composeElementAttributes(element);
40434      xml.enter(FHIR_NS, name);
40435      composeMedicinalProductMedicinalProductSpecialDesignationComponentElements(element);
40436      composeElementClose(element);
40437      xml.exit(FHIR_NS, name);
40438    }
40439  }
40440
40441  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponentElements(MedicinalProduct.MedicinalProductSpecialDesignationComponent element) throws IOException {
40442      composeBackboneElementElements(element);
40443      if (element.hasIdentifier()) { 
40444        for (Identifier e : element.getIdentifier()) 
40445          composeIdentifier("identifier", e);
40446      }
40447      if (element.hasType()) {
40448        composeCodeableConcept("type", element.getType());
40449      }
40450      if (element.hasIntendedUse()) {
40451        composeCodeableConcept("intendedUse", element.getIntendedUse());
40452      }
40453      if (element.hasIndication()) {
40454        composeType("indication", element.getIndication());
40455      }      if (element.hasStatus()) {
40456        composeCodeableConcept("status", element.getStatus());
40457      }
40458      if (element.hasDateElement()) {
40459        composeDateTime("date", element.getDateElement());
40460      }
40461      if (element.hasSpecies()) {
40462        composeCodeableConcept("species", element.getSpecies());
40463      }
40464  }
40465
40466  protected void composeMedicinalProductAuthorization(String name, MedicinalProductAuthorization element) throws IOException {
40467    if (element != null) {
40468      composeDomainResourceAttributes(element);
40469      xml.enter(FHIR_NS, name);
40470      composeMedicinalProductAuthorizationElements(element);
40471      composeElementClose(element);
40472      xml.exit(FHIR_NS, name);
40473    }
40474  }
40475
40476  protected void composeMedicinalProductAuthorizationElements(MedicinalProductAuthorization element) throws IOException {
40477      composeDomainResourceElements(element);
40478      if (element.hasIdentifier()) { 
40479        for (Identifier e : element.getIdentifier()) 
40480          composeIdentifier("identifier", e);
40481      }
40482      if (element.hasSubject()) {
40483        composeReference("subject", element.getSubject());
40484      }
40485      if (element.hasCountry()) { 
40486        for (CodeableConcept e : element.getCountry()) 
40487          composeCodeableConcept("country", e);
40488      }
40489      if (element.hasJurisdiction()) { 
40490        for (CodeableConcept e : element.getJurisdiction()) 
40491          composeCodeableConcept("jurisdiction", e);
40492      }
40493      if (element.hasStatus()) {
40494        composeCodeableConcept("status", element.getStatus());
40495      }
40496      if (element.hasStatusDateElement()) {
40497        composeDateTime("statusDate", element.getStatusDateElement());
40498      }
40499      if (element.hasRestoreDateElement()) {
40500        composeDateTime("restoreDate", element.getRestoreDateElement());
40501      }
40502      if (element.hasValidityPeriod()) {
40503        composePeriod("validityPeriod", element.getValidityPeriod());
40504      }
40505      if (element.hasDataExclusivityPeriod()) {
40506        composePeriod("dataExclusivityPeriod", element.getDataExclusivityPeriod());
40507      }
40508      if (element.hasDateOfFirstAuthorizationElement()) {
40509        composeDateTime("dateOfFirstAuthorization", element.getDateOfFirstAuthorizationElement());
40510      }
40511      if (element.hasInternationalBirthDateElement()) {
40512        composeDateTime("internationalBirthDate", element.getInternationalBirthDateElement());
40513      }
40514      if (element.hasLegalBasis()) {
40515        composeCodeableConcept("legalBasis", element.getLegalBasis());
40516      }
40517      if (element.hasJurisdictionalAuthorization()) { 
40518        for (MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent e : element.getJurisdictionalAuthorization()) 
40519          composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent("jurisdictionalAuthorization", e);
40520      }
40521      if (element.hasHolder()) {
40522        composeReference("holder", element.getHolder());
40523      }
40524      if (element.hasRegulator()) {
40525        composeReference("regulator", element.getRegulator());
40526      }
40527      if (element.hasProcedure()) {
40528        composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent("procedure", element.getProcedure());
40529      }
40530  }
40531
40532  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
40533    if (element != null) {
40534      composeElementAttributes(element);
40535      xml.enter(FHIR_NS, name);
40536      composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(element);
40537      composeElementClose(element);
40538      xml.exit(FHIR_NS, name);
40539    }
40540  }
40541
40542  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
40543      composeBackboneElementElements(element);
40544      if (element.hasIdentifier()) { 
40545        for (Identifier e : element.getIdentifier()) 
40546          composeIdentifier("identifier", e);
40547      }
40548      if (element.hasCountry()) {
40549        composeCodeableConcept("country", element.getCountry());
40550      }
40551      if (element.hasJurisdiction()) { 
40552        for (CodeableConcept e : element.getJurisdiction()) 
40553          composeCodeableConcept("jurisdiction", e);
40554      }
40555      if (element.hasLegalStatusOfSupply()) {
40556        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
40557      }
40558      if (element.hasValidityPeriod()) {
40559        composePeriod("validityPeriod", element.getValidityPeriod());
40560      }
40561  }
40562
40563  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
40564    if (element != null) {
40565      composeElementAttributes(element);
40566      xml.enter(FHIR_NS, name);
40567      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(element);
40568      composeElementClose(element);
40569      xml.exit(FHIR_NS, name);
40570    }
40571  }
40572
40573  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
40574      composeBackboneElementElements(element);
40575      if (element.hasIdentifier()) {
40576        composeIdentifier("identifier", element.getIdentifier());
40577      }
40578      if (element.hasType()) {
40579        composeCodeableConcept("type", element.getType());
40580      }
40581      if (element.hasDate()) {
40582        composeType("date", element.getDate());
40583      }      if (element.hasApplication()) { 
40584        for (MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent e : element.getApplication()) 
40585          composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent("application", e);
40586      }
40587  }
40588
40589  protected void composeMedicinalProductContraindication(String name, MedicinalProductContraindication element) throws IOException {
40590    if (element != null) {
40591      composeDomainResourceAttributes(element);
40592      xml.enter(FHIR_NS, name);
40593      composeMedicinalProductContraindicationElements(element);
40594      composeElementClose(element);
40595      xml.exit(FHIR_NS, name);
40596    }
40597  }
40598
40599  protected void composeMedicinalProductContraindicationElements(MedicinalProductContraindication element) throws IOException {
40600      composeDomainResourceElements(element);
40601      if (element.hasSubject()) { 
40602        for (Reference e : element.getSubject()) 
40603          composeReference("subject", e);
40604      }
40605      if (element.hasDisease()) {
40606        composeCodeableConcept("disease", element.getDisease());
40607      }
40608      if (element.hasDiseaseStatus()) {
40609        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
40610      }
40611      if (element.hasComorbidity()) { 
40612        for (CodeableConcept e : element.getComorbidity()) 
40613          composeCodeableConcept("comorbidity", e);
40614      }
40615      if (element.hasTherapeuticIndication()) { 
40616        for (Reference e : element.getTherapeuticIndication()) 
40617          composeReference("therapeuticIndication", e);
40618      }
40619      if (element.hasOtherTherapy()) { 
40620        for (MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
40621          composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent("otherTherapy", e);
40622      }
40623      if (element.hasPopulation()) { 
40624        for (Population e : element.getPopulation()) 
40625          composePopulation("population", e);
40626      }
40627  }
40628
40629  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(String name, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element) throws IOException {
40630    if (element != null) {
40631      composeElementAttributes(element);
40632      xml.enter(FHIR_NS, name);
40633      composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentElements(element);
40634      composeElementClose(element);
40635      xml.exit(FHIR_NS, name);
40636    }
40637  }
40638
40639  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentElements(MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element) throws IOException {
40640      composeBackboneElementElements(element);
40641      if (element.hasTherapyRelationshipType()) {
40642        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
40643      }
40644      if (element.hasMedication()) {
40645        composeType("medication", element.getMedication());
40646      }  }
40647
40648  protected void composeMedicinalProductIndication(String name, MedicinalProductIndication element) throws IOException {
40649    if (element != null) {
40650      composeDomainResourceAttributes(element);
40651      xml.enter(FHIR_NS, name);
40652      composeMedicinalProductIndicationElements(element);
40653      composeElementClose(element);
40654      xml.exit(FHIR_NS, name);
40655    }
40656  }
40657
40658  protected void composeMedicinalProductIndicationElements(MedicinalProductIndication element) throws IOException {
40659      composeDomainResourceElements(element);
40660      if (element.hasSubject()) { 
40661        for (Reference e : element.getSubject()) 
40662          composeReference("subject", e);
40663      }
40664      if (element.hasDiseaseSymptomProcedure()) {
40665        composeCodeableConcept("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
40666      }
40667      if (element.hasDiseaseStatus()) {
40668        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
40669      }
40670      if (element.hasComorbidity()) { 
40671        for (CodeableConcept e : element.getComorbidity()) 
40672          composeCodeableConcept("comorbidity", e);
40673      }
40674      if (element.hasIntendedEffect()) {
40675        composeCodeableConcept("intendedEffect", element.getIntendedEffect());
40676      }
40677      if (element.hasDuration()) {
40678        composeQuantity("duration", element.getDuration());
40679      }
40680      if (element.hasOtherTherapy()) { 
40681        for (MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent e : element.getOtherTherapy()) 
40682          composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent("otherTherapy", e);
40683      }
40684      if (element.hasUndesirableEffect()) { 
40685        for (Reference e : element.getUndesirableEffect()) 
40686          composeReference("undesirableEffect", e);
40687      }
40688      if (element.hasPopulation()) { 
40689        for (Population e : element.getPopulation()) 
40690          composePopulation("population", e);
40691      }
40692  }
40693
40694  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(String name, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element) throws IOException {
40695    if (element != null) {
40696      composeElementAttributes(element);
40697      xml.enter(FHIR_NS, name);
40698      composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentElements(element);
40699      composeElementClose(element);
40700      xml.exit(FHIR_NS, name);
40701    }
40702  }
40703
40704  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentElements(MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element) throws IOException {
40705      composeBackboneElementElements(element);
40706      if (element.hasTherapyRelationshipType()) {
40707        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
40708      }
40709      if (element.hasMedication()) {
40710        composeType("medication", element.getMedication());
40711      }  }
40712
40713  protected void composeMedicinalProductIngredient(String name, MedicinalProductIngredient element) throws IOException {
40714    if (element != null) {
40715      composeDomainResourceAttributes(element);
40716      xml.enter(FHIR_NS, name);
40717      composeMedicinalProductIngredientElements(element);
40718      composeElementClose(element);
40719      xml.exit(FHIR_NS, name);
40720    }
40721  }
40722
40723  protected void composeMedicinalProductIngredientElements(MedicinalProductIngredient element) throws IOException {
40724      composeDomainResourceElements(element);
40725      if (element.hasIdentifier()) {
40726        composeIdentifier("identifier", element.getIdentifier());
40727      }
40728      if (element.hasRole()) {
40729        composeCodeableConcept("role", element.getRole());
40730      }
40731      if (element.hasAllergenicIndicatorElement()) {
40732        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
40733      }
40734      if (element.hasManufacturer()) { 
40735        for (Reference e : element.getManufacturer()) 
40736          composeReference("manufacturer", e);
40737      }
40738      if (element.hasSpecifiedSubstance()) { 
40739        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent e : element.getSpecifiedSubstance()) 
40740          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent("specifiedSubstance", e);
40741      }
40742      if (element.hasSubstance()) {
40743        composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent("substance", element.getSubstance());
40744      }
40745  }
40746
40747  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
40748    if (element != null) {
40749      composeElementAttributes(element);
40750      xml.enter(FHIR_NS, name);
40751      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(element);
40752      composeElementClose(element);
40753      xml.exit(FHIR_NS, name);
40754    }
40755  }
40756
40757  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
40758      composeBackboneElementElements(element);
40759      if (element.hasCode()) {
40760        composeCodeableConcept("code", element.getCode());
40761      }
40762      if (element.hasGroup()) {
40763        composeCodeableConcept("group", element.getGroup());
40764      }
40765      if (element.hasConfidentiality()) {
40766        composeCodeableConcept("confidentiality", element.getConfidentiality());
40767      }
40768      if (element.hasStrength()) { 
40769        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
40770          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
40771      }
40772  }
40773
40774  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
40775    if (element != null) {
40776      composeElementAttributes(element);
40777      xml.enter(FHIR_NS, name);
40778      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(element);
40779      composeElementClose(element);
40780      xml.exit(FHIR_NS, name);
40781    }
40782  }
40783
40784  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
40785      composeBackboneElementElements(element);
40786      if (element.hasPresentation()) {
40787        composeRatio("presentation", element.getPresentation());
40788      }
40789      if (element.hasPresentationLowLimit()) {
40790        composeRatio("presentationLowLimit", element.getPresentationLowLimit());
40791      }
40792      if (element.hasConcentration()) {
40793        composeRatio("concentration", element.getConcentration());
40794      }
40795      if (element.hasConcentrationLowLimit()) {
40796        composeRatio("concentrationLowLimit", element.getConcentrationLowLimit());
40797      }
40798      if (element.hasMeasurementPointElement()) {
40799        composeString("measurementPoint", element.getMeasurementPointElement());
40800      }
40801      if (element.hasCountry()) { 
40802        for (CodeableConcept e : element.getCountry()) 
40803          composeCodeableConcept("country", e);
40804      }
40805      if (element.hasReferenceStrength()) { 
40806        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent e : element.getReferenceStrength()) 
40807          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent("referenceStrength", e);
40808      }
40809  }
40810
40811  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
40812    if (element != null) {
40813      composeElementAttributes(element);
40814      xml.enter(FHIR_NS, name);
40815      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(element);
40816      composeElementClose(element);
40817      xml.exit(FHIR_NS, name);
40818    }
40819  }
40820
40821  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
40822      composeBackboneElementElements(element);
40823      if (element.hasSubstance()) {
40824        composeCodeableConcept("substance", element.getSubstance());
40825      }
40826      if (element.hasStrength()) {
40827        composeRatio("strength", element.getStrength());
40828      }
40829      if (element.hasStrengthLowLimit()) {
40830        composeRatio("strengthLowLimit", element.getStrengthLowLimit());
40831      }
40832      if (element.hasMeasurementPointElement()) {
40833        composeString("measurementPoint", element.getMeasurementPointElement());
40834      }
40835      if (element.hasCountry()) { 
40836        for (CodeableConcept e : element.getCountry()) 
40837          composeCodeableConcept("country", e);
40838      }
40839  }
40840
40841  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
40842    if (element != null) {
40843      composeElementAttributes(element);
40844      xml.enter(FHIR_NS, name);
40845      composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(element);
40846      composeElementClose(element);
40847      xml.exit(FHIR_NS, name);
40848    }
40849  }
40850
40851  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
40852      composeBackboneElementElements(element);
40853      if (element.hasCode()) {
40854        composeCodeableConcept("code", element.getCode());
40855      }
40856      if (element.hasStrength()) { 
40857        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
40858          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
40859      }
40860  }
40861
40862  protected void composeMedicinalProductInteraction(String name, MedicinalProductInteraction element) throws IOException {
40863    if (element != null) {
40864      composeDomainResourceAttributes(element);
40865      xml.enter(FHIR_NS, name);
40866      composeMedicinalProductInteractionElements(element);
40867      composeElementClose(element);
40868      xml.exit(FHIR_NS, name);
40869    }
40870  }
40871
40872  protected void composeMedicinalProductInteractionElements(MedicinalProductInteraction element) throws IOException {
40873      composeDomainResourceElements(element);
40874      if (element.hasSubject()) { 
40875        for (Reference e : element.getSubject()) 
40876          composeReference("subject", e);
40877      }
40878      if (element.hasDescriptionElement()) {
40879        composeString("description", element.getDescriptionElement());
40880      }
40881      if (element.hasInteractant()) { 
40882        for (MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent e : element.getInteractant()) 
40883          composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponent("interactant", e);
40884      }
40885      if (element.hasType()) {
40886        composeCodeableConcept("type", element.getType());
40887      }
40888      if (element.hasEffect()) {
40889        composeCodeableConcept("effect", element.getEffect());
40890      }
40891      if (element.hasIncidence()) {
40892        composeCodeableConcept("incidence", element.getIncidence());
40893      }
40894      if (element.hasManagement()) {
40895        composeCodeableConcept("management", element.getManagement());
40896      }
40897  }
40898
40899  protected void composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(String name, MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent element) throws IOException {
40900    if (element != null) {
40901      composeElementAttributes(element);
40902      xml.enter(FHIR_NS, name);
40903      composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponentElements(element);
40904      composeElementClose(element);
40905      xml.exit(FHIR_NS, name);
40906    }
40907  }
40908
40909  protected void composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponentElements(MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent element) throws IOException {
40910      composeBackboneElementElements(element);
40911      if (element.hasItem()) {
40912        composeType("item", element.getItem());
40913      }  }
40914
40915  protected void composeMedicinalProductManufactured(String name, MedicinalProductManufactured element) throws IOException {
40916    if (element != null) {
40917      composeDomainResourceAttributes(element);
40918      xml.enter(FHIR_NS, name);
40919      composeMedicinalProductManufacturedElements(element);
40920      composeElementClose(element);
40921      xml.exit(FHIR_NS, name);
40922    }
40923  }
40924
40925  protected void composeMedicinalProductManufacturedElements(MedicinalProductManufactured element) throws IOException {
40926      composeDomainResourceElements(element);
40927      if (element.hasManufacturedDoseForm()) {
40928        composeCodeableConcept("manufacturedDoseForm", element.getManufacturedDoseForm());
40929      }
40930      if (element.hasUnitOfPresentation()) {
40931        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
40932      }
40933      if (element.hasQuantity()) {
40934        composeQuantity("quantity", element.getQuantity());
40935      }
40936      if (element.hasManufacturer()) { 
40937        for (Reference e : element.getManufacturer()) 
40938          composeReference("manufacturer", e);
40939      }
40940      if (element.hasIngredient()) { 
40941        for (Reference e : element.getIngredient()) 
40942          composeReference("ingredient", e);
40943      }
40944      if (element.hasPhysicalCharacteristics()) {
40945        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
40946      }
40947      if (element.hasOtherCharacteristics()) { 
40948        for (CodeableConcept e : element.getOtherCharacteristics()) 
40949          composeCodeableConcept("otherCharacteristics", e);
40950      }
40951  }
40952
40953  protected void composeMedicinalProductPackaged(String name, MedicinalProductPackaged element) throws IOException {
40954    if (element != null) {
40955      composeDomainResourceAttributes(element);
40956      xml.enter(FHIR_NS, name);
40957      composeMedicinalProductPackagedElements(element);
40958      composeElementClose(element);
40959      xml.exit(FHIR_NS, name);
40960    }
40961  }
40962
40963  protected void composeMedicinalProductPackagedElements(MedicinalProductPackaged element) throws IOException {
40964      composeDomainResourceElements(element);
40965      if (element.hasIdentifier()) { 
40966        for (Identifier e : element.getIdentifier()) 
40967          composeIdentifier("identifier", e);
40968      }
40969      if (element.hasSubject()) { 
40970        for (Reference e : element.getSubject()) 
40971          composeReference("subject", e);
40972      }
40973      if (element.hasDescriptionElement()) {
40974        composeString("description", element.getDescriptionElement());
40975      }
40976      if (element.hasLegalStatusOfSupply()) {
40977        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
40978      }
40979      if (element.hasMarketingStatus()) { 
40980        for (MarketingStatus e : element.getMarketingStatus()) 
40981          composeMarketingStatus("marketingStatus", e);
40982      }
40983      if (element.hasMarketingAuthorization()) {
40984        composeReference("marketingAuthorization", element.getMarketingAuthorization());
40985      }
40986      if (element.hasManufacturer()) { 
40987        for (Reference e : element.getManufacturer()) 
40988          composeReference("manufacturer", e);
40989      }
40990      if (element.hasBatchIdentifier()) { 
40991        for (MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent e : element.getBatchIdentifier()) 
40992          composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent("batchIdentifier", e);
40993      }
40994      if (element.hasPackageItem()) { 
40995        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
40996          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
40997      }
40998  }
40999
41000  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
41001    if (element != null) {
41002      composeElementAttributes(element);
41003      xml.enter(FHIR_NS, name);
41004      composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(element);
41005      composeElementClose(element);
41006      xml.exit(FHIR_NS, name);
41007    }
41008  }
41009
41010  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
41011      composeBackboneElementElements(element);
41012      if (element.hasOuterPackaging()) {
41013        composeIdentifier("outerPackaging", element.getOuterPackaging());
41014      }
41015      if (element.hasImmediatePackaging()) {
41016        composeIdentifier("immediatePackaging", element.getImmediatePackaging());
41017      }
41018  }
41019
41020  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
41021    if (element != null) {
41022      composeElementAttributes(element);
41023      xml.enter(FHIR_NS, name);
41024      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(element);
41025      composeElementClose(element);
41026      xml.exit(FHIR_NS, name);
41027    }
41028  }
41029
41030  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
41031      composeBackboneElementElements(element);
41032      if (element.hasIdentifier()) { 
41033        for (Identifier e : element.getIdentifier()) 
41034          composeIdentifier("identifier", e);
41035      }
41036      if (element.hasType()) {
41037        composeCodeableConcept("type", element.getType());
41038      }
41039      if (element.hasQuantity()) {
41040        composeQuantity("quantity", element.getQuantity());
41041      }
41042      if (element.hasMaterial()) { 
41043        for (CodeableConcept e : element.getMaterial()) 
41044          composeCodeableConcept("material", e);
41045      }
41046      if (element.hasAlternateMaterial()) { 
41047        for (CodeableConcept e : element.getAlternateMaterial()) 
41048          composeCodeableConcept("alternateMaterial", e);
41049      }
41050      if (element.hasDevice()) { 
41051        for (Reference e : element.getDevice()) 
41052          composeReference("device", e);
41053      }
41054      if (element.hasManufacturedItem()) { 
41055        for (Reference e : element.getManufacturedItem()) 
41056          composeReference("manufacturedItem", e);
41057      }
41058      if (element.hasPackageItem()) { 
41059        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
41060          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
41061      }
41062      if (element.hasPhysicalCharacteristics()) {
41063        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
41064      }
41065      if (element.hasOtherCharacteristics()) { 
41066        for (CodeableConcept e : element.getOtherCharacteristics()) 
41067          composeCodeableConcept("otherCharacteristics", e);
41068      }
41069      if (element.hasShelfLifeStorage()) { 
41070        for (ProductShelfLife e : element.getShelfLifeStorage()) 
41071          composeProductShelfLife("shelfLifeStorage", e);
41072      }
41073      if (element.hasManufacturer()) { 
41074        for (Reference e : element.getManufacturer()) 
41075          composeReference("manufacturer", e);
41076      }
41077  }
41078
41079  protected void composeMedicinalProductPharmaceutical(String name, MedicinalProductPharmaceutical element) throws IOException {
41080    if (element != null) {
41081      composeDomainResourceAttributes(element);
41082      xml.enter(FHIR_NS, name);
41083      composeMedicinalProductPharmaceuticalElements(element);
41084      composeElementClose(element);
41085      xml.exit(FHIR_NS, name);
41086    }
41087  }
41088
41089  protected void composeMedicinalProductPharmaceuticalElements(MedicinalProductPharmaceutical element) throws IOException {
41090      composeDomainResourceElements(element);
41091      if (element.hasIdentifier()) { 
41092        for (Identifier e : element.getIdentifier()) 
41093          composeIdentifier("identifier", e);
41094      }
41095      if (element.hasAdministrableDoseForm()) {
41096        composeCodeableConcept("administrableDoseForm", element.getAdministrableDoseForm());
41097      }
41098      if (element.hasUnitOfPresentation()) {
41099        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
41100      }
41101      if (element.hasIngredient()) { 
41102        for (Reference e : element.getIngredient()) 
41103          composeReference("ingredient", e);
41104      }
41105      if (element.hasDevice()) { 
41106        for (Reference e : element.getDevice()) 
41107          composeReference("device", e);
41108      }
41109      if (element.hasCharacteristics()) { 
41110        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent e : element.getCharacteristics()) 
41111          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent("characteristics", e);
41112      }
41113      if (element.hasRouteOfAdministration()) { 
41114        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent e : element.getRouteOfAdministration()) 
41115          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent("routeOfAdministration", e);
41116      }
41117  }
41118
41119  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
41120    if (element != null) {
41121      composeElementAttributes(element);
41122      xml.enter(FHIR_NS, name);
41123      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(element);
41124      composeElementClose(element);
41125      xml.exit(FHIR_NS, name);
41126    }
41127  }
41128
41129  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
41130      composeBackboneElementElements(element);
41131      if (element.hasCode()) {
41132        composeCodeableConcept("code", element.getCode());
41133      }
41134      if (element.hasStatus()) {
41135        composeCodeableConcept("status", element.getStatus());
41136      }
41137  }
41138
41139  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element) throws IOException {
41140    if (element != null) {
41141      composeElementAttributes(element);
41142      xml.enter(FHIR_NS, name);
41143      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentElements(element);
41144      composeElementClose(element);
41145      xml.exit(FHIR_NS, name);
41146    }
41147  }
41148
41149  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element) throws IOException {
41150      composeBackboneElementElements(element);
41151      if (element.hasCode()) {
41152        composeCodeableConcept("code", element.getCode());
41153      }
41154      if (element.hasFirstDose()) {
41155        composeQuantity("firstDose", element.getFirstDose());
41156      }
41157      if (element.hasMaxSingleDose()) {
41158        composeQuantity("maxSingleDose", element.getMaxSingleDose());
41159      }
41160      if (element.hasMaxDosePerDay()) {
41161        composeQuantity("maxDosePerDay", element.getMaxDosePerDay());
41162      }
41163      if (element.hasMaxDosePerTreatmentPeriod()) {
41164        composeRatio("maxDosePerTreatmentPeriod", element.getMaxDosePerTreatmentPeriod());
41165      }
41166      if (element.hasMaxTreatmentPeriod()) {
41167        composeDuration("maxTreatmentPeriod", element.getMaxTreatmentPeriod());
41168      }
41169      if (element.hasTargetSpecies()) { 
41170        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent e : element.getTargetSpecies()) 
41171          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent("targetSpecies", e);
41172      }
41173  }
41174
41175  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
41176    if (element != null) {
41177      composeElementAttributes(element);
41178      xml.enter(FHIR_NS, name);
41179      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentElements(element);
41180      composeElementClose(element);
41181      xml.exit(FHIR_NS, name);
41182    }
41183  }
41184
41185  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
41186      composeBackboneElementElements(element);
41187      if (element.hasCode()) {
41188        composeCodeableConcept("code", element.getCode());
41189      }
41190      if (element.hasWithdrawalPeriod()) { 
41191        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent e : element.getWithdrawalPeriod()) 
41192          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent("withdrawalPeriod", e);
41193      }
41194  }
41195
41196  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
41197    if (element != null) {
41198      composeElementAttributes(element);
41199      xml.enter(FHIR_NS, name);
41200      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(element);
41201      composeElementClose(element);
41202      xml.exit(FHIR_NS, name);
41203    }
41204  }
41205
41206  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
41207      composeBackboneElementElements(element);
41208      if (element.hasTissue()) {
41209        composeCodeableConcept("tissue", element.getTissue());
41210      }
41211      if (element.hasValue()) {
41212        composeQuantity("value", element.getValue());
41213      }
41214      if (element.hasSupportingInformationElement()) {
41215        composeString("supportingInformation", element.getSupportingInformationElement());
41216      }
41217  }
41218
41219  protected void composeMedicinalProductUndesirableEffect(String name, MedicinalProductUndesirableEffect element) throws IOException {
41220    if (element != null) {
41221      composeDomainResourceAttributes(element);
41222      xml.enter(FHIR_NS, name);
41223      composeMedicinalProductUndesirableEffectElements(element);
41224      composeElementClose(element);
41225      xml.exit(FHIR_NS, name);
41226    }
41227  }
41228
41229  protected void composeMedicinalProductUndesirableEffectElements(MedicinalProductUndesirableEffect element) throws IOException {
41230      composeDomainResourceElements(element);
41231      if (element.hasSubject()) { 
41232        for (Reference e : element.getSubject()) 
41233          composeReference("subject", e);
41234      }
41235      if (element.hasSymptomConditionEffect()) {
41236        composeCodeableConcept("symptomConditionEffect", element.getSymptomConditionEffect());
41237      }
41238      if (element.hasClassification()) {
41239        composeCodeableConcept("classification", element.getClassification());
41240      }
41241      if (element.hasFrequencyOfOccurrence()) {
41242        composeCodeableConcept("frequencyOfOccurrence", element.getFrequencyOfOccurrence());
41243      }
41244      if (element.hasPopulation()) { 
41245        for (Population e : element.getPopulation()) 
41246          composePopulation("population", e);
41247      }
41248  }
41249
41250  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
41251    if (element != null) {
41252      composeDomainResourceAttributes(element);
41253      xml.enter(FHIR_NS, name);
41254      composeMessageDefinitionElements(element);
41255      composeElementClose(element);
41256      xml.exit(FHIR_NS, name);
41257    }
41258  }
41259
41260  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
41261      composeDomainResourceElements(element);
41262      if (element.hasUrlElement()) {
41263        composeUri("url", element.getUrlElement());
41264      }
41265      if (element.hasIdentifier()) { 
41266        for (Identifier e : element.getIdentifier()) 
41267          composeIdentifier("identifier", e);
41268      }
41269      if (element.hasVersionElement()) {
41270        composeString("version", element.getVersionElement());
41271      }
41272      if (element.hasNameElement()) {
41273        composeString("name", element.getNameElement());
41274      }
41275      if (element.hasTitleElement()) {
41276        composeString("title", element.getTitleElement());
41277      }
41278      if (element.hasReplaces()) { 
41279        for (CanonicalType e : element.getReplaces()) 
41280          composeCanonical("replaces", e);
41281      }
41282      if (element.hasStatusElement())
41283        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41284      if (element.hasExperimentalElement()) {
41285        composeBoolean("experimental", element.getExperimentalElement());
41286      }
41287      if (element.hasDateElement()) {
41288        composeDateTime("date", element.getDateElement());
41289      }
41290      if (element.hasPublisherElement()) {
41291        composeString("publisher", element.getPublisherElement());
41292      }
41293      if (element.hasContact()) { 
41294        for (ContactDetail e : element.getContact()) 
41295          composeContactDetail("contact", e);
41296      }
41297      if (element.hasDescriptionElement()) {
41298        composeMarkdown("description", element.getDescriptionElement());
41299      }
41300      if (element.hasUseContext()) { 
41301        for (UsageContext e : element.getUseContext()) 
41302          composeUsageContext("useContext", e);
41303      }
41304      if (element.hasJurisdiction()) { 
41305        for (CodeableConcept e : element.getJurisdiction()) 
41306          composeCodeableConcept("jurisdiction", e);
41307      }
41308      if (element.hasPurposeElement()) {
41309        composeMarkdown("purpose", element.getPurposeElement());
41310      }
41311      if (element.hasCopyrightElement()) {
41312        composeMarkdown("copyright", element.getCopyrightElement());
41313      }
41314      if (element.hasBaseElement()) {
41315        composeCanonical("base", element.getBaseElement());
41316      }
41317      if (element.hasParent()) { 
41318        for (CanonicalType e : element.getParent()) 
41319          composeCanonical("parent", e);
41320      }
41321      if (element.hasEvent()) {
41322        composeType("event", element.getEvent());
41323      }      if (element.hasCategoryElement())
41324        composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
41325      if (element.hasFocus()) { 
41326        for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
41327          composeMessageDefinitionMessageDefinitionFocusComponent("focus", e);
41328      }
41329      if (element.hasResponseRequiredElement())
41330        composeEnumeration("responseRequired", element.getResponseRequiredElement(), new MessageDefinition.MessageheaderResponseRequestEnumFactory());
41331      if (element.hasAllowedResponse()) { 
41332        for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
41333          composeMessageDefinitionMessageDefinitionAllowedResponseComponent("allowedResponse", e);
41334      }
41335      if (element.hasGraph()) { 
41336        for (CanonicalType e : element.getGraph()) 
41337          composeCanonical("graph", e);
41338      }
41339  }
41340
41341  protected void composeMessageDefinitionMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
41342    if (element != null) {
41343      composeElementAttributes(element);
41344      xml.enter(FHIR_NS, name);
41345      composeMessageDefinitionMessageDefinitionFocusComponentElements(element);
41346      composeElementClose(element);
41347      xml.exit(FHIR_NS, name);
41348    }
41349  }
41350
41351  protected void composeMessageDefinitionMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
41352      composeBackboneElementElements(element);
41353      if (element.hasCodeElement()) {
41354        composeCode("code", element.getCodeElement());
41355      }
41356      if (element.hasProfileElement()) {
41357        composeCanonical("profile", element.getProfileElement());
41358      }
41359      if (element.hasMinElement()) {
41360        composeUnsignedInt("min", element.getMinElement());
41361      }
41362      if (element.hasMaxElement()) {
41363        composeString("max", element.getMaxElement());
41364      }
41365  }
41366
41367  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
41368    if (element != null) {
41369      composeElementAttributes(element);
41370      xml.enter(FHIR_NS, name);
41371      composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(element);
41372      composeElementClose(element);
41373      xml.exit(FHIR_NS, name);
41374    }
41375  }
41376
41377  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
41378      composeBackboneElementElements(element);
41379      if (element.hasMessageElement()) {
41380        composeCanonical("message", element.getMessageElement());
41381      }
41382      if (element.hasSituationElement()) {
41383        composeMarkdown("situation", element.getSituationElement());
41384      }
41385  }
41386
41387  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
41388    if (element != null) {
41389      composeDomainResourceAttributes(element);
41390      xml.enter(FHIR_NS, name);
41391      composeMessageHeaderElements(element);
41392      composeElementClose(element);
41393      xml.exit(FHIR_NS, name);
41394    }
41395  }
41396
41397  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
41398      composeDomainResourceElements(element);
41399      if (element.hasEvent()) {
41400        composeType("event", element.getEvent());
41401      }      if (element.hasDestination()) { 
41402        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
41403          composeMessageHeaderMessageDestinationComponent("destination", e);
41404      }
41405      if (element.hasSender()) {
41406        composeReference("sender", element.getSender());
41407      }
41408      if (element.hasEnterer()) {
41409        composeReference("enterer", element.getEnterer());
41410      }
41411      if (element.hasAuthor()) {
41412        composeReference("author", element.getAuthor());
41413      }
41414      if (element.hasSource()) {
41415        composeMessageHeaderMessageSourceComponent("source", element.getSource());
41416      }
41417      if (element.hasResponsible()) {
41418        composeReference("responsible", element.getResponsible());
41419      }
41420      if (element.hasReason()) {
41421        composeCodeableConcept("reason", element.getReason());
41422      }
41423      if (element.hasResponse()) {
41424        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
41425      }
41426      if (element.hasFocus()) { 
41427        for (Reference e : element.getFocus()) 
41428          composeReference("focus", e);
41429      }
41430      if (element.hasDefinitionElement()) {
41431        composeCanonical("definition", element.getDefinitionElement());
41432      }
41433  }
41434
41435  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
41436    if (element != null) {
41437      composeElementAttributes(element);
41438      xml.enter(FHIR_NS, name);
41439      composeMessageHeaderMessageDestinationComponentElements(element);
41440      composeElementClose(element);
41441      xml.exit(FHIR_NS, name);
41442    }
41443  }
41444
41445  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
41446      composeBackboneElementElements(element);
41447      if (element.hasNameElement()) {
41448        composeString("name", element.getNameElement());
41449      }
41450      if (element.hasTarget()) {
41451        composeReference("target", element.getTarget());
41452      }
41453      if (element.hasEndpointElement()) {
41454        composeUrl("endpoint", element.getEndpointElement());
41455      }
41456      if (element.hasReceiver()) {
41457        composeReference("receiver", element.getReceiver());
41458      }
41459  }
41460
41461  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
41462    if (element != null) {
41463      composeElementAttributes(element);
41464      xml.enter(FHIR_NS, name);
41465      composeMessageHeaderMessageSourceComponentElements(element);
41466      composeElementClose(element);
41467      xml.exit(FHIR_NS, name);
41468    }
41469  }
41470
41471  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
41472      composeBackboneElementElements(element);
41473      if (element.hasNameElement()) {
41474        composeString("name", element.getNameElement());
41475      }
41476      if (element.hasSoftwareElement()) {
41477        composeString("software", element.getSoftwareElement());
41478      }
41479      if (element.hasVersionElement()) {
41480        composeString("version", element.getVersionElement());
41481      }
41482      if (element.hasContact()) {
41483        composeContactPoint("contact", element.getContact());
41484      }
41485      if (element.hasEndpointElement()) {
41486        composeUrl("endpoint", element.getEndpointElement());
41487      }
41488  }
41489
41490  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
41491    if (element != null) {
41492      composeElementAttributes(element);
41493      xml.enter(FHIR_NS, name);
41494      composeMessageHeaderMessageHeaderResponseComponentElements(element);
41495      composeElementClose(element);
41496      xml.exit(FHIR_NS, name);
41497    }
41498  }
41499
41500  protected void composeMessageHeaderMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
41501      composeBackboneElementElements(element);
41502      if (element.hasIdentifierElement()) {
41503        composeId("identifier", element.getIdentifierElement());
41504      }
41505      if (element.hasCodeElement())
41506        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
41507      if (element.hasDetails()) {
41508        composeReference("details", element.getDetails());
41509      }
41510  }
41511
41512  protected void composeMolecularSequence(String name, MolecularSequence element) throws IOException {
41513    if (element != null) {
41514      composeDomainResourceAttributes(element);
41515      xml.enter(FHIR_NS, name);
41516      composeMolecularSequenceElements(element);
41517      composeElementClose(element);
41518      xml.exit(FHIR_NS, name);
41519    }
41520  }
41521
41522  protected void composeMolecularSequenceElements(MolecularSequence element) throws IOException {
41523      composeDomainResourceElements(element);
41524      if (element.hasIdentifier()) { 
41525        for (Identifier e : element.getIdentifier()) 
41526          composeIdentifier("identifier", e);
41527      }
41528      if (element.hasTypeElement())
41529        composeEnumeration("type", element.getTypeElement(), new MolecularSequence.SequenceTypeEnumFactory());
41530      if (element.hasCoordinateSystemElement()) {
41531        composeInteger("coordinateSystem", element.getCoordinateSystemElement());
41532      }
41533      if (element.hasPatient()) {
41534        composeReference("patient", element.getPatient());
41535      }
41536      if (element.hasSpecimen()) {
41537        composeReference("specimen", element.getSpecimen());
41538      }
41539      if (element.hasDevice()) {
41540        composeReference("device", element.getDevice());
41541      }
41542      if (element.hasPerformer()) {
41543        composeReference("performer", element.getPerformer());
41544      }
41545      if (element.hasQuantity()) {
41546        composeQuantity("quantity", element.getQuantity());
41547      }
41548      if (element.hasReferenceSeq()) {
41549        composeMolecularSequenceMolecularSequenceReferenceSeqComponent("referenceSeq", element.getReferenceSeq());
41550      }
41551      if (element.hasVariant()) { 
41552        for (MolecularSequence.MolecularSequenceVariantComponent e : element.getVariant()) 
41553          composeMolecularSequenceMolecularSequenceVariantComponent("variant", e);
41554      }
41555      if (element.hasObservedSeqElement()) {
41556        composeString("observedSeq", element.getObservedSeqElement());
41557      }
41558      if (element.hasQuality()) { 
41559        for (MolecularSequence.MolecularSequenceQualityComponent e : element.getQuality()) 
41560          composeMolecularSequenceMolecularSequenceQualityComponent("quality", e);
41561      }
41562      if (element.hasReadCoverageElement()) {
41563        composeInteger("readCoverage", element.getReadCoverageElement());
41564      }
41565      if (element.hasRepository()) { 
41566        for (MolecularSequence.MolecularSequenceRepositoryComponent e : element.getRepository()) 
41567          composeMolecularSequenceMolecularSequenceRepositoryComponent("repository", e);
41568      }
41569      if (element.hasPointer()) { 
41570        for (Reference e : element.getPointer()) 
41571          composeReference("pointer", e);
41572      }
41573      if (element.hasStructureVariant()) { 
41574        for (MolecularSequence.MolecularSequenceStructureVariantComponent e : element.getStructureVariant()) 
41575          composeMolecularSequenceMolecularSequenceStructureVariantComponent("structureVariant", e);
41576      }
41577  }
41578
41579  protected void composeMolecularSequenceMolecularSequenceReferenceSeqComponent(String name, MolecularSequence.MolecularSequenceReferenceSeqComponent element) throws IOException {
41580    if (element != null) {
41581      composeElementAttributes(element);
41582      xml.enter(FHIR_NS, name);
41583      composeMolecularSequenceMolecularSequenceReferenceSeqComponentElements(element);
41584      composeElementClose(element);
41585      xml.exit(FHIR_NS, name);
41586    }
41587  }
41588
41589  protected void composeMolecularSequenceMolecularSequenceReferenceSeqComponentElements(MolecularSequence.MolecularSequenceReferenceSeqComponent element) throws IOException {
41590      composeBackboneElementElements(element);
41591      if (element.hasChromosome()) {
41592        composeCodeableConcept("chromosome", element.getChromosome());
41593      }
41594      if (element.hasGenomeBuildElement()) {
41595        composeString("genomeBuild", element.getGenomeBuildElement());
41596      }
41597      if (element.hasOrientationElement())
41598        composeEnumeration("orientation", element.getOrientationElement(), new MolecularSequence.OrientationTypeEnumFactory());
41599      if (element.hasReferenceSeqId()) {
41600        composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
41601      }
41602      if (element.hasReferenceSeqPointer()) {
41603        composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
41604      }
41605      if (element.hasReferenceSeqStringElement()) {
41606        composeString("referenceSeqString", element.getReferenceSeqStringElement());
41607      }
41608      if (element.hasStrandElement())
41609        composeEnumeration("strand", element.getStrandElement(), new MolecularSequence.StrandTypeEnumFactory());
41610      if (element.hasWindowStartElement()) {
41611        composeInteger("windowStart", element.getWindowStartElement());
41612      }
41613      if (element.hasWindowEndElement()) {
41614        composeInteger("windowEnd", element.getWindowEndElement());
41615      }
41616  }
41617
41618  protected void composeMolecularSequenceMolecularSequenceVariantComponent(String name, MolecularSequence.MolecularSequenceVariantComponent element) throws IOException {
41619    if (element != null) {
41620      composeElementAttributes(element);
41621      xml.enter(FHIR_NS, name);
41622      composeMolecularSequenceMolecularSequenceVariantComponentElements(element);
41623      composeElementClose(element);
41624      xml.exit(FHIR_NS, name);
41625    }
41626  }
41627
41628  protected void composeMolecularSequenceMolecularSequenceVariantComponentElements(MolecularSequence.MolecularSequenceVariantComponent element) throws IOException {
41629      composeBackboneElementElements(element);
41630      if (element.hasStartElement()) {
41631        composeInteger("start", element.getStartElement());
41632      }
41633      if (element.hasEndElement()) {
41634        composeInteger("end", element.getEndElement());
41635      }
41636      if (element.hasObservedAlleleElement()) {
41637        composeString("observedAllele", element.getObservedAlleleElement());
41638      }
41639      if (element.hasReferenceAlleleElement()) {
41640        composeString("referenceAllele", element.getReferenceAlleleElement());
41641      }
41642      if (element.hasCigarElement()) {
41643        composeString("cigar", element.getCigarElement());
41644      }
41645      if (element.hasVariantPointer()) {
41646        composeReference("variantPointer", element.getVariantPointer());
41647      }
41648  }
41649
41650  protected void composeMolecularSequenceMolecularSequenceQualityComponent(String name, MolecularSequence.MolecularSequenceQualityComponent element) throws IOException {
41651    if (element != null) {
41652      composeElementAttributes(element);
41653      xml.enter(FHIR_NS, name);
41654      composeMolecularSequenceMolecularSequenceQualityComponentElements(element);
41655      composeElementClose(element);
41656      xml.exit(FHIR_NS, name);
41657    }
41658  }
41659
41660  protected void composeMolecularSequenceMolecularSequenceQualityComponentElements(MolecularSequence.MolecularSequenceQualityComponent element) throws IOException {
41661      composeBackboneElementElements(element);
41662      if (element.hasTypeElement())
41663        composeEnumeration("type", element.getTypeElement(), new MolecularSequence.QualityTypeEnumFactory());
41664      if (element.hasStandardSequence()) {
41665        composeCodeableConcept("standardSequence", element.getStandardSequence());
41666      }
41667      if (element.hasStartElement()) {
41668        composeInteger("start", element.getStartElement());
41669      }
41670      if (element.hasEndElement()) {
41671        composeInteger("end", element.getEndElement());
41672      }
41673      if (element.hasScore()) {
41674        composeQuantity("score", element.getScore());
41675      }
41676      if (element.hasMethod()) {
41677        composeCodeableConcept("method", element.getMethod());
41678      }
41679      if (element.hasTruthTPElement()) {
41680        composeDecimal("truthTP", element.getTruthTPElement());
41681      }
41682      if (element.hasQueryTPElement()) {
41683        composeDecimal("queryTP", element.getQueryTPElement());
41684      }
41685      if (element.hasTruthFNElement()) {
41686        composeDecimal("truthFN", element.getTruthFNElement());
41687      }
41688      if (element.hasQueryFPElement()) {
41689        composeDecimal("queryFP", element.getQueryFPElement());
41690      }
41691      if (element.hasGtFPElement()) {
41692        composeDecimal("gtFP", element.getGtFPElement());
41693      }
41694      if (element.hasPrecisionElement()) {
41695        composeDecimal("precision", element.getPrecisionElement());
41696      }
41697      if (element.hasRecallElement()) {
41698        composeDecimal("recall", element.getRecallElement());
41699      }
41700      if (element.hasFScoreElement()) {
41701        composeDecimal("fScore", element.getFScoreElement());
41702      }
41703      if (element.hasRoc()) {
41704        composeMolecularSequenceMolecularSequenceQualityRocComponent("roc", element.getRoc());
41705      }
41706  }
41707
41708  protected void composeMolecularSequenceMolecularSequenceQualityRocComponent(String name, MolecularSequence.MolecularSequenceQualityRocComponent element) throws IOException {
41709    if (element != null) {
41710      composeElementAttributes(element);
41711      xml.enter(FHIR_NS, name);
41712      composeMolecularSequenceMolecularSequenceQualityRocComponentElements(element);
41713      composeElementClose(element);
41714      xml.exit(FHIR_NS, name);
41715    }
41716  }
41717
41718  protected void composeMolecularSequenceMolecularSequenceQualityRocComponentElements(MolecularSequence.MolecularSequenceQualityRocComponent element) throws IOException {
41719      composeBackboneElementElements(element);
41720      if (element.hasScore()) { 
41721        for (IntegerType e : element.getScore()) 
41722          composeInteger("score", e);
41723      }
41724      if (element.hasNumTP()) { 
41725        for (IntegerType e : element.getNumTP()) 
41726          composeInteger("numTP", e);
41727      }
41728      if (element.hasNumFP()) { 
41729        for (IntegerType e : element.getNumFP()) 
41730          composeInteger("numFP", e);
41731      }
41732      if (element.hasNumFN()) { 
41733        for (IntegerType e : element.getNumFN()) 
41734          composeInteger("numFN", e);
41735      }
41736      if (element.hasPrecision()) { 
41737        for (DecimalType e : element.getPrecision()) 
41738          composeDecimal("precision", e);
41739      }
41740      if (element.hasSensitivity()) { 
41741        for (DecimalType e : element.getSensitivity()) 
41742          composeDecimal("sensitivity", e);
41743      }
41744      if (element.hasFMeasure()) { 
41745        for (DecimalType e : element.getFMeasure()) 
41746          composeDecimal("fMeasure", e);
41747      }
41748  }
41749
41750  protected void composeMolecularSequenceMolecularSequenceRepositoryComponent(String name, MolecularSequence.MolecularSequenceRepositoryComponent element) throws IOException {
41751    if (element != null) {
41752      composeElementAttributes(element);
41753      xml.enter(FHIR_NS, name);
41754      composeMolecularSequenceMolecularSequenceRepositoryComponentElements(element);
41755      composeElementClose(element);
41756      xml.exit(FHIR_NS, name);
41757    }
41758  }
41759
41760  protected void composeMolecularSequenceMolecularSequenceRepositoryComponentElements(MolecularSequence.MolecularSequenceRepositoryComponent element) throws IOException {
41761      composeBackboneElementElements(element);
41762      if (element.hasTypeElement())
41763        composeEnumeration("type", element.getTypeElement(), new MolecularSequence.RepositoryTypeEnumFactory());
41764      if (element.hasUrlElement()) {
41765        composeUri("url", element.getUrlElement());
41766      }
41767      if (element.hasNameElement()) {
41768        composeString("name", element.getNameElement());
41769      }
41770      if (element.hasDatasetIdElement()) {
41771        composeString("datasetId", element.getDatasetIdElement());
41772      }
41773      if (element.hasVariantsetIdElement()) {
41774        composeString("variantsetId", element.getVariantsetIdElement());
41775      }
41776      if (element.hasReadsetIdElement()) {
41777        composeString("readsetId", element.getReadsetIdElement());
41778      }
41779  }
41780
41781  protected void composeMolecularSequenceMolecularSequenceStructureVariantComponent(String name, MolecularSequence.MolecularSequenceStructureVariantComponent element) throws IOException {
41782    if (element != null) {
41783      composeElementAttributes(element);
41784      xml.enter(FHIR_NS, name);
41785      composeMolecularSequenceMolecularSequenceStructureVariantComponentElements(element);
41786      composeElementClose(element);
41787      xml.exit(FHIR_NS, name);
41788    }
41789  }
41790
41791  protected void composeMolecularSequenceMolecularSequenceStructureVariantComponentElements(MolecularSequence.MolecularSequenceStructureVariantComponent element) throws IOException {
41792      composeBackboneElementElements(element);
41793      if (element.hasVariantType()) {
41794        composeCodeableConcept("variantType", element.getVariantType());
41795      }
41796      if (element.hasExactElement()) {
41797        composeBoolean("exact", element.getExactElement());
41798      }
41799      if (element.hasLengthElement()) {
41800        composeInteger("length", element.getLengthElement());
41801      }
41802      if (element.hasOuter()) {
41803        composeMolecularSequenceMolecularSequenceStructureVariantOuterComponent("outer", element.getOuter());
41804      }
41805      if (element.hasInner()) {
41806        composeMolecularSequenceMolecularSequenceStructureVariantInnerComponent("inner", element.getInner());
41807      }
41808  }
41809
41810  protected void composeMolecularSequenceMolecularSequenceStructureVariantOuterComponent(String name, MolecularSequence.MolecularSequenceStructureVariantOuterComponent element) throws IOException {
41811    if (element != null) {
41812      composeElementAttributes(element);
41813      xml.enter(FHIR_NS, name);
41814      composeMolecularSequenceMolecularSequenceStructureVariantOuterComponentElements(element);
41815      composeElementClose(element);
41816      xml.exit(FHIR_NS, name);
41817    }
41818  }
41819
41820  protected void composeMolecularSequenceMolecularSequenceStructureVariantOuterComponentElements(MolecularSequence.MolecularSequenceStructureVariantOuterComponent element) throws IOException {
41821      composeBackboneElementElements(element);
41822      if (element.hasStartElement()) {
41823        composeInteger("start", element.getStartElement());
41824      }
41825      if (element.hasEndElement()) {
41826        composeInteger("end", element.getEndElement());
41827      }
41828  }
41829
41830  protected void composeMolecularSequenceMolecularSequenceStructureVariantInnerComponent(String name, MolecularSequence.MolecularSequenceStructureVariantInnerComponent element) throws IOException {
41831    if (element != null) {
41832      composeElementAttributes(element);
41833      xml.enter(FHIR_NS, name);
41834      composeMolecularSequenceMolecularSequenceStructureVariantInnerComponentElements(element);
41835      composeElementClose(element);
41836      xml.exit(FHIR_NS, name);
41837    }
41838  }
41839
41840  protected void composeMolecularSequenceMolecularSequenceStructureVariantInnerComponentElements(MolecularSequence.MolecularSequenceStructureVariantInnerComponent element) throws IOException {
41841      composeBackboneElementElements(element);
41842      if (element.hasStartElement()) {
41843        composeInteger("start", element.getStartElement());
41844      }
41845      if (element.hasEndElement()) {
41846        composeInteger("end", element.getEndElement());
41847      }
41848  }
41849
41850  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
41851    if (element != null) {
41852      composeDomainResourceAttributes(element);
41853      xml.enter(FHIR_NS, name);
41854      composeNamingSystemElements(element);
41855      composeElementClose(element);
41856      xml.exit(FHIR_NS, name);
41857    }
41858  }
41859
41860  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
41861      composeDomainResourceElements(element);
41862      if (element.hasNameElement()) {
41863        composeString("name", element.getNameElement());
41864      }
41865      if (element.hasStatusElement())
41866        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41867      if (element.hasKindElement())
41868        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
41869      if (element.hasDateElement()) {
41870        composeDateTime("date", element.getDateElement());
41871      }
41872      if (element.hasPublisherElement()) {
41873        composeString("publisher", element.getPublisherElement());
41874      }
41875      if (element.hasContact()) { 
41876        for (ContactDetail e : element.getContact()) 
41877          composeContactDetail("contact", e);
41878      }
41879      if (element.hasResponsibleElement()) {
41880        composeString("responsible", element.getResponsibleElement());
41881      }
41882      if (element.hasType()) {
41883        composeCodeableConcept("type", element.getType());
41884      }
41885      if (element.hasDescriptionElement()) {
41886        composeMarkdown("description", element.getDescriptionElement());
41887      }
41888      if (element.hasUseContext()) { 
41889        for (UsageContext e : element.getUseContext()) 
41890          composeUsageContext("useContext", e);
41891      }
41892      if (element.hasJurisdiction()) { 
41893        for (CodeableConcept e : element.getJurisdiction()) 
41894          composeCodeableConcept("jurisdiction", e);
41895      }
41896      if (element.hasUsageElement()) {
41897        composeString("usage", element.getUsageElement());
41898      }
41899      if (element.hasUniqueId()) { 
41900        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
41901          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
41902      }
41903  }
41904
41905  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
41906    if (element != null) {
41907      composeElementAttributes(element);
41908      xml.enter(FHIR_NS, name);
41909      composeNamingSystemNamingSystemUniqueIdComponentElements(element);
41910      composeElementClose(element);
41911      xml.exit(FHIR_NS, name);
41912    }
41913  }
41914
41915  protected void composeNamingSystemNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
41916      composeBackboneElementElements(element);
41917      if (element.hasTypeElement())
41918        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
41919      if (element.hasValueElement()) {
41920        composeString("value", element.getValueElement());
41921      }
41922      if (element.hasPreferredElement()) {
41923        composeBoolean("preferred", element.getPreferredElement());
41924      }
41925      if (element.hasCommentElement()) {
41926        composeString("comment", element.getCommentElement());
41927      }
41928      if (element.hasPeriod()) {
41929        composePeriod("period", element.getPeriod());
41930      }
41931  }
41932
41933  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
41934    if (element != null) {
41935      composeDomainResourceAttributes(element);
41936      xml.enter(FHIR_NS, name);
41937      composeNutritionOrderElements(element);
41938      composeElementClose(element);
41939      xml.exit(FHIR_NS, name);
41940    }
41941  }
41942
41943  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
41944      composeDomainResourceElements(element);
41945      if (element.hasIdentifier()) { 
41946        for (Identifier e : element.getIdentifier()) 
41947          composeIdentifier("identifier", e);
41948      }
41949      if (element.hasInstantiatesCanonical()) { 
41950        for (CanonicalType e : element.getInstantiatesCanonical()) 
41951          composeCanonical("instantiatesCanonical", e);
41952      }
41953      if (element.hasInstantiatesUri()) { 
41954        for (UriType e : element.getInstantiatesUri()) 
41955          composeUri("instantiatesUri", e);
41956      }
41957      if (element.hasInstantiates()) { 
41958        for (UriType e : element.getInstantiates()) 
41959          composeUri("instantiates", e);
41960      }
41961      if (element.hasStatusElement())
41962        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
41963      if (element.hasIntentElement())
41964        composeEnumeration("intent", element.getIntentElement(), new NutritionOrder.NutritiionOrderIntentEnumFactory());
41965      if (element.hasPatient()) {
41966        composeReference("patient", element.getPatient());
41967      }
41968      if (element.hasEncounter()) {
41969        composeReference("encounter", element.getEncounter());
41970      }
41971      if (element.hasDateTimeElement()) {
41972        composeDateTime("dateTime", element.getDateTimeElement());
41973      }
41974      if (element.hasOrderer()) {
41975        composeReference("orderer", element.getOrderer());
41976      }
41977      if (element.hasAllergyIntolerance()) { 
41978        for (Reference e : element.getAllergyIntolerance()) 
41979          composeReference("allergyIntolerance", e);
41980      }
41981      if (element.hasFoodPreferenceModifier()) { 
41982        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
41983          composeCodeableConcept("foodPreferenceModifier", e);
41984      }
41985      if (element.hasExcludeFoodModifier()) { 
41986        for (CodeableConcept e : element.getExcludeFoodModifier()) 
41987          composeCodeableConcept("excludeFoodModifier", e);
41988      }
41989      if (element.hasOralDiet()) {
41990        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
41991      }
41992      if (element.hasSupplement()) { 
41993        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
41994          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
41995      }
41996      if (element.hasEnteralFormula()) {
41997        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
41998      }
41999      if (element.hasNote()) { 
42000        for (Annotation e : element.getNote()) 
42001          composeAnnotation("note", e);
42002      }
42003  }
42004
42005  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
42006    if (element != null) {
42007      composeElementAttributes(element);
42008      xml.enter(FHIR_NS, name);
42009      composeNutritionOrderNutritionOrderOralDietComponentElements(element);
42010      composeElementClose(element);
42011      xml.exit(FHIR_NS, name);
42012    }
42013  }
42014
42015  protected void composeNutritionOrderNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
42016      composeBackboneElementElements(element);
42017      if (element.hasType()) { 
42018        for (CodeableConcept e : element.getType()) 
42019          composeCodeableConcept("type", e);
42020      }
42021      if (element.hasSchedule()) { 
42022        for (Timing e : element.getSchedule()) 
42023          composeTiming("schedule", e);
42024      }
42025      if (element.hasNutrient()) { 
42026        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
42027          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
42028      }
42029      if (element.hasTexture()) { 
42030        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
42031          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
42032      }
42033      if (element.hasFluidConsistencyType()) { 
42034        for (CodeableConcept e : element.getFluidConsistencyType()) 
42035          composeCodeableConcept("fluidConsistencyType", e);
42036      }
42037      if (element.hasInstructionElement()) {
42038        composeString("instruction", element.getInstructionElement());
42039      }
42040  }
42041
42042  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
42043    if (element != null) {
42044      composeElementAttributes(element);
42045      xml.enter(FHIR_NS, name);
42046      composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(element);
42047      composeElementClose(element);
42048      xml.exit(FHIR_NS, name);
42049    }
42050  }
42051
42052  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
42053      composeBackboneElementElements(element);
42054      if (element.hasModifier()) {
42055        composeCodeableConcept("modifier", element.getModifier());
42056      }
42057      if (element.hasAmount()) {
42058        composeQuantity("amount", element.getAmount());
42059      }
42060  }
42061
42062  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
42063    if (element != null) {
42064      composeElementAttributes(element);
42065      xml.enter(FHIR_NS, name);
42066      composeNutritionOrderNutritionOrderOralDietTextureComponentElements(element);
42067      composeElementClose(element);
42068      xml.exit(FHIR_NS, name);
42069    }
42070  }
42071
42072  protected void composeNutritionOrderNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
42073      composeBackboneElementElements(element);
42074      if (element.hasModifier()) {
42075        composeCodeableConcept("modifier", element.getModifier());
42076      }
42077      if (element.hasFoodType()) {
42078        composeCodeableConcept("foodType", element.getFoodType());
42079      }
42080  }
42081
42082  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
42083    if (element != null) {
42084      composeElementAttributes(element);
42085      xml.enter(FHIR_NS, name);
42086      composeNutritionOrderNutritionOrderSupplementComponentElements(element);
42087      composeElementClose(element);
42088      xml.exit(FHIR_NS, name);
42089    }
42090  }
42091
42092  protected void composeNutritionOrderNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
42093      composeBackboneElementElements(element);
42094      if (element.hasType()) {
42095        composeCodeableConcept("type", element.getType());
42096      }
42097      if (element.hasProductNameElement()) {
42098        composeString("productName", element.getProductNameElement());
42099      }
42100      if (element.hasSchedule()) { 
42101        for (Timing e : element.getSchedule()) 
42102          composeTiming("schedule", e);
42103      }
42104      if (element.hasQuantity()) {
42105        composeQuantity("quantity", element.getQuantity());
42106      }
42107      if (element.hasInstructionElement()) {
42108        composeString("instruction", element.getInstructionElement());
42109      }
42110  }
42111
42112  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
42113    if (element != null) {
42114      composeElementAttributes(element);
42115      xml.enter(FHIR_NS, name);
42116      composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(element);
42117      composeElementClose(element);
42118      xml.exit(FHIR_NS, name);
42119    }
42120  }
42121
42122  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
42123      composeBackboneElementElements(element);
42124      if (element.hasBaseFormulaType()) {
42125        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
42126      }
42127      if (element.hasBaseFormulaProductNameElement()) {
42128        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
42129      }
42130      if (element.hasAdditiveType()) {
42131        composeCodeableConcept("additiveType", element.getAdditiveType());
42132      }
42133      if (element.hasAdditiveProductNameElement()) {
42134        composeString("additiveProductName", element.getAdditiveProductNameElement());
42135      }
42136      if (element.hasCaloricDensity()) {
42137        composeQuantity("caloricDensity", element.getCaloricDensity());
42138      }
42139      if (element.hasRouteofAdministration()) {
42140        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
42141      }
42142      if (element.hasAdministration()) { 
42143        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
42144          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
42145      }
42146      if (element.hasMaxVolumeToDeliver()) {
42147        composeQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
42148      }
42149      if (element.hasAdministrationInstructionElement()) {
42150        composeString("administrationInstruction", element.getAdministrationInstructionElement());
42151      }
42152  }
42153
42154  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
42155    if (element != null) {
42156      composeElementAttributes(element);
42157      xml.enter(FHIR_NS, name);
42158      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(element);
42159      composeElementClose(element);
42160      xml.exit(FHIR_NS, name);
42161    }
42162  }
42163
42164  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
42165      composeBackboneElementElements(element);
42166      if (element.hasSchedule()) {
42167        composeTiming("schedule", element.getSchedule());
42168      }
42169      if (element.hasQuantity()) {
42170        composeQuantity("quantity", element.getQuantity());
42171      }
42172      if (element.hasRate()) {
42173        composeType("rate", element.getRate());
42174      }  }
42175
42176  protected void composeObservation(String name, Observation element) throws IOException {
42177    if (element != null) {
42178      composeDomainResourceAttributes(element);
42179      xml.enter(FHIR_NS, name);
42180      composeObservationElements(element);
42181      composeElementClose(element);
42182      xml.exit(FHIR_NS, name);
42183    }
42184  }
42185
42186  protected void composeObservationElements(Observation element) throws IOException {
42187      composeDomainResourceElements(element);
42188      if (element.hasIdentifier()) { 
42189        for (Identifier e : element.getIdentifier()) 
42190          composeIdentifier("identifier", e);
42191      }
42192      if (element.hasBasedOn()) { 
42193        for (Reference e : element.getBasedOn()) 
42194          composeReference("basedOn", e);
42195      }
42196      if (element.hasPartOf()) { 
42197        for (Reference e : element.getPartOf()) 
42198          composeReference("partOf", e);
42199      }
42200      if (element.hasStatusElement())
42201        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
42202      if (element.hasCategory()) { 
42203        for (CodeableConcept e : element.getCategory()) 
42204          composeCodeableConcept("category", e);
42205      }
42206      if (element.hasCode()) {
42207        composeCodeableConcept("code", element.getCode());
42208      }
42209      if (element.hasSubject()) {
42210        composeReference("subject", element.getSubject());
42211      }
42212      if (element.hasFocus()) { 
42213        for (Reference e : element.getFocus()) 
42214          composeReference("focus", e);
42215      }
42216      if (element.hasEncounter()) {
42217        composeReference("encounter", element.getEncounter());
42218      }
42219      if (element.hasEffective()) {
42220        composeType("effective", element.getEffective());
42221      }      if (element.hasIssuedElement()) {
42222        composeInstant("issued", element.getIssuedElement());
42223      }
42224      if (element.hasPerformer()) { 
42225        for (Reference e : element.getPerformer()) 
42226          composeReference("performer", e);
42227      }
42228      if (element.hasValue()) {
42229        composeType("value", element.getValue());
42230      }      if (element.hasDataAbsentReason()) {
42231        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
42232      }
42233      if (element.hasInterpretation()) { 
42234        for (CodeableConcept e : element.getInterpretation()) 
42235          composeCodeableConcept("interpretation", e);
42236      }
42237      if (element.hasNote()) { 
42238        for (Annotation e : element.getNote()) 
42239          composeAnnotation("note", e);
42240      }
42241      if (element.hasBodySite()) {
42242        composeCodeableConcept("bodySite", element.getBodySite());
42243      }
42244      if (element.hasMethod()) {
42245        composeCodeableConcept("method", element.getMethod());
42246      }
42247      if (element.hasSpecimen()) {
42248        composeReference("specimen", element.getSpecimen());
42249      }
42250      if (element.hasDevice()) {
42251        composeReference("device", element.getDevice());
42252      }
42253      if (element.hasReferenceRange()) { 
42254        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
42255          composeObservationObservationReferenceRangeComponent("referenceRange", e);
42256      }
42257      if (element.hasHasMember()) { 
42258        for (Reference e : element.getHasMember()) 
42259          composeReference("hasMember", e);
42260      }
42261      if (element.hasDerivedFrom()) { 
42262        for (Reference e : element.getDerivedFrom()) 
42263          composeReference("derivedFrom", e);
42264      }
42265      if (element.hasComponent()) { 
42266        for (Observation.ObservationComponentComponent e : element.getComponent()) 
42267          composeObservationObservationComponentComponent("component", e);
42268      }
42269  }
42270
42271  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
42272    if (element != null) {
42273      composeElementAttributes(element);
42274      xml.enter(FHIR_NS, name);
42275      composeObservationObservationReferenceRangeComponentElements(element);
42276      composeElementClose(element);
42277      xml.exit(FHIR_NS, name);
42278    }
42279  }
42280
42281  protected void composeObservationObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
42282      composeBackboneElementElements(element);
42283      if (element.hasLow()) {
42284        composeQuantity("low", element.getLow());
42285      }
42286      if (element.hasHigh()) {
42287        composeQuantity("high", element.getHigh());
42288      }
42289      if (element.hasType()) {
42290        composeCodeableConcept("type", element.getType());
42291      }
42292      if (element.hasAppliesTo()) { 
42293        for (CodeableConcept e : element.getAppliesTo()) 
42294          composeCodeableConcept("appliesTo", e);
42295      }
42296      if (element.hasAge()) {
42297        composeRange("age", element.getAge());
42298      }
42299      if (element.hasTextElement()) {
42300        composeString("text", element.getTextElement());
42301      }
42302  }
42303
42304  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
42305    if (element != null) {
42306      composeElementAttributes(element);
42307      xml.enter(FHIR_NS, name);
42308      composeObservationObservationComponentComponentElements(element);
42309      composeElementClose(element);
42310      xml.exit(FHIR_NS, name);
42311    }
42312  }
42313
42314  protected void composeObservationObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
42315      composeBackboneElementElements(element);
42316      if (element.hasCode()) {
42317        composeCodeableConcept("code", element.getCode());
42318      }
42319      if (element.hasValue()) {
42320        composeType("value", element.getValue());
42321      }      if (element.hasDataAbsentReason()) {
42322        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
42323      }
42324      if (element.hasInterpretation()) { 
42325        for (CodeableConcept e : element.getInterpretation()) 
42326          composeCodeableConcept("interpretation", e);
42327      }
42328      if (element.hasReferenceRange()) { 
42329        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
42330          composeObservationObservationReferenceRangeComponent("referenceRange", e);
42331      }
42332  }
42333
42334  protected void composeObservationDefinition(String name, ObservationDefinition element) throws IOException {
42335    if (element != null) {
42336      composeDomainResourceAttributes(element);
42337      xml.enter(FHIR_NS, name);
42338      composeObservationDefinitionElements(element);
42339      composeElementClose(element);
42340      xml.exit(FHIR_NS, name);
42341    }
42342  }
42343
42344  protected void composeObservationDefinitionElements(ObservationDefinition element) throws IOException {
42345      composeDomainResourceElements(element);
42346      if (element.hasCategory()) { 
42347        for (CodeableConcept e : element.getCategory()) 
42348          composeCodeableConcept("category", e);
42349      }
42350      if (element.hasCode()) {
42351        composeCodeableConcept("code", element.getCode());
42352      }
42353      if (element.hasIdentifier()) { 
42354        for (Identifier e : element.getIdentifier()) 
42355          composeIdentifier("identifier", e);
42356      }
42357        if (element.hasPermittedDataType()) 
42358          for (Enumeration<ObservationDefinition.ObservationDataType> e : element.getPermittedDataType()) 
42359            composeEnumeration("permittedDataType", e, new ObservationDefinition.ObservationDataTypeEnumFactory());
42360      if (element.hasMultipleResultsAllowedElement()) {
42361        composeBoolean("multipleResultsAllowed", element.getMultipleResultsAllowedElement());
42362      }
42363      if (element.hasMethod()) {
42364        composeCodeableConcept("method", element.getMethod());
42365      }
42366      if (element.hasPreferredReportNameElement()) {
42367        composeString("preferredReportName", element.getPreferredReportNameElement());
42368      }
42369      if (element.hasQuantitativeDetails()) {
42370        composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent("quantitativeDetails", element.getQuantitativeDetails());
42371      }
42372      if (element.hasQualifiedInterval()) { 
42373        for (ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent e : element.getQualifiedInterval()) 
42374          composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent("qualifiedInterval", e);
42375      }
42376      if (element.hasValidCodedValueSet()) {
42377        composeReference("validCodedValueSet", element.getValidCodedValueSet());
42378      }
42379      if (element.hasNormalCodedValueSet()) {
42380        composeReference("normalCodedValueSet", element.getNormalCodedValueSet());
42381      }
42382      if (element.hasAbnormalCodedValueSet()) {
42383        composeReference("abnormalCodedValueSet", element.getAbnormalCodedValueSet());
42384      }
42385      if (element.hasCriticalCodedValueSet()) {
42386        composeReference("criticalCodedValueSet", element.getCriticalCodedValueSet());
42387      }
42388  }
42389
42390  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(String name, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
42391    if (element != null) {
42392      composeElementAttributes(element);
42393      xml.enter(FHIR_NS, name);
42394      composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(element);
42395      composeElementClose(element);
42396      xml.exit(FHIR_NS, name);
42397    }
42398  }
42399
42400  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
42401      composeBackboneElementElements(element);
42402      if (element.hasCustomaryUnit()) {
42403        composeCodeableConcept("customaryUnit", element.getCustomaryUnit());
42404      }
42405      if (element.hasUnit()) {
42406        composeCodeableConcept("unit", element.getUnit());
42407      }
42408      if (element.hasConversionFactorElement()) {
42409        composeDecimal("conversionFactor", element.getConversionFactorElement());
42410      }
42411      if (element.hasDecimalPrecisionElement()) {
42412        composeInteger("decimalPrecision", element.getDecimalPrecisionElement());
42413      }
42414  }
42415
42416  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(String name, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
42417    if (element != null) {
42418      composeElementAttributes(element);
42419      xml.enter(FHIR_NS, name);
42420      composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(element);
42421      composeElementClose(element);
42422      xml.exit(FHIR_NS, name);
42423    }
42424  }
42425
42426  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
42427      composeBackboneElementElements(element);
42428      if (element.hasCategoryElement())
42429        composeEnumeration("category", element.getCategoryElement(), new ObservationDefinition.ObservationRangeCategoryEnumFactory());
42430      if (element.hasRange()) {
42431        composeRange("range", element.getRange());
42432      }
42433      if (element.hasContext()) {
42434        composeCodeableConcept("context", element.getContext());
42435      }
42436      if (element.hasAppliesTo()) { 
42437        for (CodeableConcept e : element.getAppliesTo()) 
42438          composeCodeableConcept("appliesTo", e);
42439      }
42440      if (element.hasGenderElement())
42441        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42442      if (element.hasAge()) {
42443        composeRange("age", element.getAge());
42444      }
42445      if (element.hasGestationalAge()) {
42446        composeRange("gestationalAge", element.getGestationalAge());
42447      }
42448      if (element.hasConditionElement()) {
42449        composeString("condition", element.getConditionElement());
42450      }
42451  }
42452
42453  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
42454    if (element != null) {
42455      composeDomainResourceAttributes(element);
42456      xml.enter(FHIR_NS, name);
42457      composeOperationDefinitionElements(element);
42458      composeElementClose(element);
42459      xml.exit(FHIR_NS, name);
42460    }
42461  }
42462
42463  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
42464      composeDomainResourceElements(element);
42465      if (element.hasUrlElement()) {
42466        composeUri("url", element.getUrlElement());
42467      }
42468      if (element.hasVersionElement()) {
42469        composeString("version", element.getVersionElement());
42470      }
42471      if (element.hasNameElement()) {
42472        composeString("name", element.getNameElement());
42473      }
42474      if (element.hasTitleElement()) {
42475        composeString("title", element.getTitleElement());
42476      }
42477      if (element.hasStatusElement())
42478        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
42479      if (element.hasKindElement())
42480        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
42481      if (element.hasExperimentalElement()) {
42482        composeBoolean("experimental", element.getExperimentalElement());
42483      }
42484      if (element.hasDateElement()) {
42485        composeDateTime("date", element.getDateElement());
42486      }
42487      if (element.hasPublisherElement()) {
42488        composeString("publisher", element.getPublisherElement());
42489      }
42490      if (element.hasContact()) { 
42491        for (ContactDetail e : element.getContact()) 
42492          composeContactDetail("contact", e);
42493      }
42494      if (element.hasDescriptionElement()) {
42495        composeMarkdown("description", element.getDescriptionElement());
42496      }
42497      if (element.hasUseContext()) { 
42498        for (UsageContext e : element.getUseContext()) 
42499          composeUsageContext("useContext", e);
42500      }
42501      if (element.hasJurisdiction()) { 
42502        for (CodeableConcept e : element.getJurisdiction()) 
42503          composeCodeableConcept("jurisdiction", e);
42504      }
42505      if (element.hasPurposeElement()) {
42506        composeMarkdown("purpose", element.getPurposeElement());
42507      }
42508      if (element.hasAffectsStateElement()) {
42509        composeBoolean("affectsState", element.getAffectsStateElement());
42510      }
42511      if (element.hasCodeElement()) {
42512        composeCode("code", element.getCodeElement());
42513      }
42514      if (element.hasCommentElement()) {
42515        composeMarkdown("comment", element.getCommentElement());
42516      }
42517      if (element.hasBaseElement()) {
42518        composeCanonical("base", element.getBaseElement());
42519      }
42520      if (element.hasResource()) { 
42521        for (CodeType e : element.getResource()) 
42522          composeCode("resource", e);
42523      }
42524      if (element.hasSystemElement()) {
42525        composeBoolean("system", element.getSystemElement());
42526      }
42527      if (element.hasTypeElement()) {
42528        composeBoolean("type", element.getTypeElement());
42529      }
42530      if (element.hasInstanceElement()) {
42531        composeBoolean("instance", element.getInstanceElement());
42532      }
42533      if (element.hasInputProfileElement()) {
42534        composeCanonical("inputProfile", element.getInputProfileElement());
42535      }
42536      if (element.hasOutputProfileElement()) {
42537        composeCanonical("outputProfile", element.getOutputProfileElement());
42538      }
42539      if (element.hasParameter()) { 
42540        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
42541          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
42542      }
42543      if (element.hasOverload()) { 
42544        for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
42545          composeOperationDefinitionOperationDefinitionOverloadComponent("overload", e);
42546      }
42547  }
42548
42549  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
42550    if (element != null) {
42551      composeElementAttributes(element);
42552      xml.enter(FHIR_NS, name);
42553      composeOperationDefinitionOperationDefinitionParameterComponentElements(element);
42554      composeElementClose(element);
42555      xml.exit(FHIR_NS, name);
42556    }
42557  }
42558
42559  protected void composeOperationDefinitionOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
42560      composeBackboneElementElements(element);
42561      if (element.hasNameElement()) {
42562        composeCode("name", element.getNameElement());
42563      }
42564      if (element.hasUseElement())
42565        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
42566      if (element.hasMinElement()) {
42567        composeInteger("min", element.getMinElement());
42568      }
42569      if (element.hasMaxElement()) {
42570        composeString("max", element.getMaxElement());
42571      }
42572      if (element.hasDocumentationElement()) {
42573        composeString("documentation", element.getDocumentationElement());
42574      }
42575      if (element.hasTypeElement()) {
42576        composeCode("type", element.getTypeElement());
42577      }
42578      if (element.hasTargetProfile()) { 
42579        for (CanonicalType e : element.getTargetProfile()) 
42580          composeCanonical("targetProfile", e);
42581      }
42582      if (element.hasSearchTypeElement())
42583        composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
42584      if (element.hasBinding()) {
42585        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
42586      }
42587      if (element.hasReferencedFrom()) { 
42588        for (OperationDefinition.OperationDefinitionParameterReferencedFromComponent e : element.getReferencedFrom()) 
42589          composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent("referencedFrom", e);
42590      }
42591      if (element.hasPart()) { 
42592        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
42593          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
42594      }
42595  }
42596
42597  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
42598    if (element != null) {
42599      composeElementAttributes(element);
42600      xml.enter(FHIR_NS, name);
42601      composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(element);
42602      composeElementClose(element);
42603      xml.exit(FHIR_NS, name);
42604    }
42605  }
42606
42607  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
42608      composeBackboneElementElements(element);
42609      if (element.hasStrengthElement())
42610        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
42611      if (element.hasValueSetElement()) {
42612        composeCanonical("valueSet", element.getValueSetElement());
42613      }
42614  }
42615
42616  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent(String name, OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
42617    if (element != null) {
42618      composeElementAttributes(element);
42619      xml.enter(FHIR_NS, name);
42620      composeOperationDefinitionOperationDefinitionParameterReferencedFromComponentElements(element);
42621      composeElementClose(element);
42622      xml.exit(FHIR_NS, name);
42623    }
42624  }
42625
42626  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponentElements(OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
42627      composeBackboneElementElements(element);
42628      if (element.hasSourceElement()) {
42629        composeString("source", element.getSourceElement());
42630      }
42631      if (element.hasSourceIdElement()) {
42632        composeString("sourceId", element.getSourceIdElement());
42633      }
42634  }
42635
42636  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
42637    if (element != null) {
42638      composeElementAttributes(element);
42639      xml.enter(FHIR_NS, name);
42640      composeOperationDefinitionOperationDefinitionOverloadComponentElements(element);
42641      composeElementClose(element);
42642      xml.exit(FHIR_NS, name);
42643    }
42644  }
42645
42646  protected void composeOperationDefinitionOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
42647      composeBackboneElementElements(element);
42648      if (element.hasParameterName()) { 
42649        for (StringType e : element.getParameterName()) 
42650          composeString("parameterName", e);
42651      }
42652      if (element.hasCommentElement()) {
42653        composeString("comment", element.getCommentElement());
42654      }
42655  }
42656
42657  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
42658    if (element != null) {
42659      composeDomainResourceAttributes(element);
42660      xml.enter(FHIR_NS, name);
42661      composeOperationOutcomeElements(element);
42662      composeElementClose(element);
42663      xml.exit(FHIR_NS, name);
42664    }
42665  }
42666
42667  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
42668      composeDomainResourceElements(element);
42669      if (element.hasIssue()) { 
42670        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
42671          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
42672      }
42673  }
42674
42675  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
42676    if (element != null) {
42677      composeElementAttributes(element);
42678      xml.enter(FHIR_NS, name);
42679      composeOperationOutcomeOperationOutcomeIssueComponentElements(element);
42680      composeElementClose(element);
42681      xml.exit(FHIR_NS, name);
42682    }
42683  }
42684
42685  protected void composeOperationOutcomeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
42686      composeBackboneElementElements(element);
42687      if (element.hasSeverityElement())
42688        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
42689      if (element.hasCodeElement())
42690        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
42691      if (element.hasDetails()) {
42692        composeCodeableConcept("details", element.getDetails());
42693      }
42694      if (element.hasDiagnosticsElement()) {
42695        composeString("diagnostics", element.getDiagnosticsElement());
42696      }
42697      if (element.hasLocation()) { 
42698        for (StringType e : element.getLocation()) 
42699          composeString("location", e);
42700      }
42701      if (element.hasExpression()) { 
42702        for (StringType e : element.getExpression()) 
42703          composeString("expression", e);
42704      }
42705  }
42706
42707  protected void composeOrganization(String name, Organization element) throws IOException {
42708    if (element != null) {
42709      composeDomainResourceAttributes(element);
42710      xml.enter(FHIR_NS, name);
42711      composeOrganizationElements(element);
42712      composeElementClose(element);
42713      xml.exit(FHIR_NS, name);
42714    }
42715  }
42716
42717  protected void composeOrganizationElements(Organization element) throws IOException {
42718      composeDomainResourceElements(element);
42719      if (element.hasIdentifier()) { 
42720        for (Identifier e : element.getIdentifier()) 
42721          composeIdentifier("identifier", e);
42722      }
42723      if (element.hasActiveElement()) {
42724        composeBoolean("active", element.getActiveElement());
42725      }
42726      if (element.hasType()) { 
42727        for (CodeableConcept e : element.getType()) 
42728          composeCodeableConcept("type", e);
42729      }
42730      if (element.hasNameElement()) {
42731        composeString("name", element.getNameElement());
42732      }
42733      if (element.hasAlias()) { 
42734        for (StringType e : element.getAlias()) 
42735          composeString("alias", e);
42736      }
42737      if (element.hasTelecom()) { 
42738        for (ContactPoint e : element.getTelecom()) 
42739          composeContactPoint("telecom", e);
42740      }
42741      if (element.hasAddress()) { 
42742        for (Address e : element.getAddress()) 
42743          composeAddress("address", e);
42744      }
42745      if (element.hasPartOf()) {
42746        composeReference("partOf", element.getPartOf());
42747      }
42748      if (element.hasContact()) { 
42749        for (Organization.OrganizationContactComponent e : element.getContact()) 
42750          composeOrganizationOrganizationContactComponent("contact", e);
42751      }
42752      if (element.hasEndpoint()) { 
42753        for (Reference e : element.getEndpoint()) 
42754          composeReference("endpoint", e);
42755      }
42756  }
42757
42758  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
42759    if (element != null) {
42760      composeElementAttributes(element);
42761      xml.enter(FHIR_NS, name);
42762      composeOrganizationOrganizationContactComponentElements(element);
42763      composeElementClose(element);
42764      xml.exit(FHIR_NS, name);
42765    }
42766  }
42767
42768  protected void composeOrganizationOrganizationContactComponentElements(Organization.OrganizationContactComponent element) throws IOException {
42769      composeBackboneElementElements(element);
42770      if (element.hasPurpose()) {
42771        composeCodeableConcept("purpose", element.getPurpose());
42772      }
42773      if (element.hasName()) {
42774        composeHumanName("name", element.getName());
42775      }
42776      if (element.hasTelecom()) { 
42777        for (ContactPoint e : element.getTelecom()) 
42778          composeContactPoint("telecom", e);
42779      }
42780      if (element.hasAddress()) {
42781        composeAddress("address", element.getAddress());
42782      }
42783  }
42784
42785  protected void composeOrganizationAffiliation(String name, OrganizationAffiliation element) throws IOException {
42786    if (element != null) {
42787      composeDomainResourceAttributes(element);
42788      xml.enter(FHIR_NS, name);
42789      composeOrganizationAffiliationElements(element);
42790      composeElementClose(element);
42791      xml.exit(FHIR_NS, name);
42792    }
42793  }
42794
42795  protected void composeOrganizationAffiliationElements(OrganizationAffiliation element) throws IOException {
42796      composeDomainResourceElements(element);
42797      if (element.hasIdentifier()) { 
42798        for (Identifier e : element.getIdentifier()) 
42799          composeIdentifier("identifier", e);
42800      }
42801      if (element.hasActiveElement()) {
42802        composeBoolean("active", element.getActiveElement());
42803      }
42804      if (element.hasPeriod()) {
42805        composePeriod("period", element.getPeriod());
42806      }
42807      if (element.hasOrganization()) {
42808        composeReference("organization", element.getOrganization());
42809      }
42810      if (element.hasParticipatingOrganization()) {
42811        composeReference("participatingOrganization", element.getParticipatingOrganization());
42812      }
42813      if (element.hasNetwork()) { 
42814        for (Reference e : element.getNetwork()) 
42815          composeReference("network", e);
42816      }
42817      if (element.hasCode()) { 
42818        for (CodeableConcept e : element.getCode()) 
42819          composeCodeableConcept("code", e);
42820      }
42821      if (element.hasSpecialty()) { 
42822        for (CodeableConcept e : element.getSpecialty()) 
42823          composeCodeableConcept("specialty", e);
42824      }
42825      if (element.hasLocation()) { 
42826        for (Reference e : element.getLocation()) 
42827          composeReference("location", e);
42828      }
42829      if (element.hasHealthcareService()) { 
42830        for (Reference e : element.getHealthcareService()) 
42831          composeReference("healthcareService", e);
42832      }
42833      if (element.hasTelecom()) { 
42834        for (ContactPoint e : element.getTelecom()) 
42835          composeContactPoint("telecom", e);
42836      }
42837      if (element.hasEndpoint()) { 
42838        for (Reference e : element.getEndpoint()) 
42839          composeReference("endpoint", e);
42840      }
42841  }
42842
42843  protected void composePatient(String name, Patient element) throws IOException {
42844    if (element != null) {
42845      composeDomainResourceAttributes(element);
42846      xml.enter(FHIR_NS, name);
42847      composePatientElements(element);
42848      composeElementClose(element);
42849      xml.exit(FHIR_NS, name);
42850    }
42851  }
42852
42853  protected void composePatientElements(Patient element) throws IOException {
42854      composeDomainResourceElements(element);
42855      if (element.hasIdentifier()) { 
42856        for (Identifier e : element.getIdentifier()) 
42857          composeIdentifier("identifier", e);
42858      }
42859      if (element.hasActiveElement()) {
42860        composeBoolean("active", element.getActiveElement());
42861      }
42862      if (element.hasName()) { 
42863        for (HumanName e : element.getName()) 
42864          composeHumanName("name", e);
42865      }
42866      if (element.hasTelecom()) { 
42867        for (ContactPoint e : element.getTelecom()) 
42868          composeContactPoint("telecom", e);
42869      }
42870      if (element.hasGenderElement())
42871        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42872      if (element.hasBirthDateElement()) {
42873        composeDate("birthDate", element.getBirthDateElement());
42874      }
42875      if (element.hasDeceased()) {
42876        composeType("deceased", element.getDeceased());
42877      }      if (element.hasAddress()) { 
42878        for (Address e : element.getAddress()) 
42879          composeAddress("address", e);
42880      }
42881      if (element.hasMaritalStatus()) {
42882        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
42883      }
42884      if (element.hasMultipleBirth()) {
42885        composeType("multipleBirth", element.getMultipleBirth());
42886      }      if (element.hasPhoto()) { 
42887        for (Attachment e : element.getPhoto()) 
42888          composeAttachment("photo", e);
42889      }
42890      if (element.hasContact()) { 
42891        for (Patient.ContactComponent e : element.getContact()) 
42892          composePatientContactComponent("contact", e);
42893      }
42894      if (element.hasCommunication()) { 
42895        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
42896          composePatientPatientCommunicationComponent("communication", e);
42897      }
42898      if (element.hasGeneralPractitioner()) { 
42899        for (Reference e : element.getGeneralPractitioner()) 
42900          composeReference("generalPractitioner", e);
42901      }
42902      if (element.hasManagingOrganization()) {
42903        composeReference("managingOrganization", element.getManagingOrganization());
42904      }
42905      if (element.hasLink()) { 
42906        for (Patient.PatientLinkComponent e : element.getLink()) 
42907          composePatientPatientLinkComponent("link", e);
42908      }
42909  }
42910
42911  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
42912    if (element != null) {
42913      composeElementAttributes(element);
42914      xml.enter(FHIR_NS, name);
42915      composePatientContactComponentElements(element);
42916      composeElementClose(element);
42917      xml.exit(FHIR_NS, name);
42918    }
42919  }
42920
42921  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
42922      composeBackboneElementElements(element);
42923      if (element.hasRelationship()) { 
42924        for (CodeableConcept e : element.getRelationship()) 
42925          composeCodeableConcept("relationship", e);
42926      }
42927      if (element.hasName()) {
42928        composeHumanName("name", element.getName());
42929      }
42930      if (element.hasTelecom()) { 
42931        for (ContactPoint e : element.getTelecom()) 
42932          composeContactPoint("telecom", e);
42933      }
42934      if (element.hasAddress()) {
42935        composeAddress("address", element.getAddress());
42936      }
42937      if (element.hasGenderElement())
42938        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42939      if (element.hasOrganization()) {
42940        composeReference("organization", element.getOrganization());
42941      }
42942      if (element.hasPeriod()) {
42943        composePeriod("period", element.getPeriod());
42944      }
42945  }
42946
42947  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
42948    if (element != null) {
42949      composeElementAttributes(element);
42950      xml.enter(FHIR_NS, name);
42951      composePatientPatientCommunicationComponentElements(element);
42952      composeElementClose(element);
42953      xml.exit(FHIR_NS, name);
42954    }
42955  }
42956
42957  protected void composePatientPatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
42958      composeBackboneElementElements(element);
42959      if (element.hasLanguage()) {
42960        composeCodeableConcept("language", element.getLanguage());
42961      }
42962      if (element.hasPreferredElement()) {
42963        composeBoolean("preferred", element.getPreferredElement());
42964      }
42965  }
42966
42967  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
42968    if (element != null) {
42969      composeElementAttributes(element);
42970      xml.enter(FHIR_NS, name);
42971      composePatientPatientLinkComponentElements(element);
42972      composeElementClose(element);
42973      xml.exit(FHIR_NS, name);
42974    }
42975  }
42976
42977  protected void composePatientPatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
42978      composeBackboneElementElements(element);
42979      if (element.hasOther()) {
42980        composeReference("other", element.getOther());
42981      }
42982      if (element.hasTypeElement())
42983        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
42984  }
42985
42986  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
42987    if (element != null) {
42988      composeDomainResourceAttributes(element);
42989      xml.enter(FHIR_NS, name);
42990      composePaymentNoticeElements(element);
42991      composeElementClose(element);
42992      xml.exit(FHIR_NS, name);
42993    }
42994  }
42995
42996  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
42997      composeDomainResourceElements(element);
42998      if (element.hasIdentifier()) { 
42999        for (Identifier e : element.getIdentifier()) 
43000          composeIdentifier("identifier", e);
43001      }
43002      if (element.hasStatusElement())
43003        composeEnumeration("status", element.getStatusElement(), new PaymentNotice.PaymentNoticeStatusEnumFactory());
43004      if (element.hasRequest()) {
43005        composeReference("request", element.getRequest());
43006      }
43007      if (element.hasResponse()) {
43008        composeReference("response", element.getResponse());
43009      }
43010      if (element.hasCreatedElement()) {
43011        composeDateTime("created", element.getCreatedElement());
43012      }
43013      if (element.hasProvider()) {
43014        composeReference("provider", element.getProvider());
43015      }
43016      if (element.hasPayment()) {
43017        composeReference("payment", element.getPayment());
43018      }
43019      if (element.hasPaymentDateElement()) {
43020        composeDate("paymentDate", element.getPaymentDateElement());
43021      }
43022      if (element.hasPayee()) {
43023        composeReference("payee", element.getPayee());
43024      }
43025      if (element.hasRecipient()) {
43026        composeReference("recipient", element.getRecipient());
43027      }
43028      if (element.hasAmount()) {
43029        composeMoney("amount", element.getAmount());
43030      }
43031      if (element.hasPaymentStatus()) {
43032        composeCodeableConcept("paymentStatus", element.getPaymentStatus());
43033      }
43034  }
43035
43036  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
43037    if (element != null) {
43038      composeDomainResourceAttributes(element);
43039      xml.enter(FHIR_NS, name);
43040      composePaymentReconciliationElements(element);
43041      composeElementClose(element);
43042      xml.exit(FHIR_NS, name);
43043    }
43044  }
43045
43046  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
43047      composeDomainResourceElements(element);
43048      if (element.hasIdentifier()) { 
43049        for (Identifier e : element.getIdentifier()) 
43050          composeIdentifier("identifier", e);
43051      }
43052      if (element.hasStatusElement())
43053        composeEnumeration("status", element.getStatusElement(), new PaymentReconciliation.PaymentReconciliationStatusEnumFactory());
43054      if (element.hasPeriod()) {
43055        composePeriod("period", element.getPeriod());
43056      }
43057      if (element.hasCreatedElement()) {
43058        composeDateTime("created", element.getCreatedElement());
43059      }
43060      if (element.hasPaymentIssuer()) {
43061        composeReference("paymentIssuer", element.getPaymentIssuer());
43062      }
43063      if (element.hasRequest()) {
43064        composeReference("request", element.getRequest());
43065      }
43066      if (element.hasRequestor()) {
43067        composeReference("requestor", element.getRequestor());
43068      }
43069      if (element.hasOutcomeElement())
43070        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
43071      if (element.hasDispositionElement()) {
43072        composeString("disposition", element.getDispositionElement());
43073      }
43074      if (element.hasPaymentDateElement()) {
43075        composeDate("paymentDate", element.getPaymentDateElement());
43076      }
43077      if (element.hasPaymentAmount()) {
43078        composeMoney("paymentAmount", element.getPaymentAmount());
43079      }
43080      if (element.hasPaymentIdentifier()) {
43081        composeIdentifier("paymentIdentifier", element.getPaymentIdentifier());
43082      }
43083      if (element.hasDetail()) { 
43084        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
43085          composePaymentReconciliationDetailsComponent("detail", e);
43086      }
43087      if (element.hasFormCode()) {
43088        composeCodeableConcept("formCode", element.getFormCode());
43089      }
43090      if (element.hasProcessNote()) { 
43091        for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
43092          composePaymentReconciliationNotesComponent("processNote", e);
43093      }
43094  }
43095
43096  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
43097    if (element != null) {
43098      composeElementAttributes(element);
43099      xml.enter(FHIR_NS, name);
43100      composePaymentReconciliationDetailsComponentElements(element);
43101      composeElementClose(element);
43102      xml.exit(FHIR_NS, name);
43103    }
43104  }
43105
43106  protected void composePaymentReconciliationDetailsComponentElements(PaymentReconciliation.DetailsComponent element) throws IOException {
43107      composeBackboneElementElements(element);
43108      if (element.hasIdentifier()) {
43109        composeIdentifier("identifier", element.getIdentifier());
43110      }
43111      if (element.hasPredecessor()) {
43112        composeIdentifier("predecessor", element.getPredecessor());
43113      }
43114      if (element.hasType()) {
43115        composeCodeableConcept("type", element.getType());
43116      }
43117      if (element.hasRequest()) {
43118        composeReference("request", element.getRequest());
43119      }
43120      if (element.hasSubmitter()) {
43121        composeReference("submitter", element.getSubmitter());
43122      }
43123      if (element.hasResponse()) {
43124        composeReference("response", element.getResponse());
43125      }
43126      if (element.hasDateElement()) {
43127        composeDate("date", element.getDateElement());
43128      }
43129      if (element.hasResponsible()) {
43130        composeReference("responsible", element.getResponsible());
43131      }
43132      if (element.hasPayee()) {
43133        composeReference("payee", element.getPayee());
43134      }
43135      if (element.hasAmount()) {
43136        composeMoney("amount", element.getAmount());
43137      }
43138  }
43139
43140  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
43141    if (element != null) {
43142      composeElementAttributes(element);
43143      xml.enter(FHIR_NS, name);
43144      composePaymentReconciliationNotesComponentElements(element);
43145      composeElementClose(element);
43146      xml.exit(FHIR_NS, name);
43147    }
43148  }
43149
43150  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
43151      composeBackboneElementElements(element);
43152      if (element.hasTypeElement())
43153        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
43154      if (element.hasTextElement()) {
43155        composeString("text", element.getTextElement());
43156      }
43157  }
43158
43159  protected void composePerson(String name, Person element) throws IOException {
43160    if (element != null) {
43161      composeDomainResourceAttributes(element);
43162      xml.enter(FHIR_NS, name);
43163      composePersonElements(element);
43164      composeElementClose(element);
43165      xml.exit(FHIR_NS, name);
43166    }
43167  }
43168
43169  protected void composePersonElements(Person element) throws IOException {
43170      composeDomainResourceElements(element);
43171      if (element.hasIdentifier()) { 
43172        for (Identifier e : element.getIdentifier()) 
43173          composeIdentifier("identifier", e);
43174      }
43175      if (element.hasName()) { 
43176        for (HumanName e : element.getName()) 
43177          composeHumanName("name", e);
43178      }
43179      if (element.hasTelecom()) { 
43180        for (ContactPoint e : element.getTelecom()) 
43181          composeContactPoint("telecom", e);
43182      }
43183      if (element.hasGenderElement())
43184        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
43185      if (element.hasBirthDateElement()) {
43186        composeDate("birthDate", element.getBirthDateElement());
43187      }
43188      if (element.hasAddress()) { 
43189        for (Address e : element.getAddress()) 
43190          composeAddress("address", e);
43191      }
43192      if (element.hasPhoto()) {
43193        composeAttachment("photo", element.getPhoto());
43194      }
43195      if (element.hasManagingOrganization()) {
43196        composeReference("managingOrganization", element.getManagingOrganization());
43197      }
43198      if (element.hasActiveElement()) {
43199        composeBoolean("active", element.getActiveElement());
43200      }
43201      if (element.hasLink()) { 
43202        for (Person.PersonLinkComponent e : element.getLink()) 
43203          composePersonPersonLinkComponent("link", e);
43204      }
43205  }
43206
43207  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
43208    if (element != null) {
43209      composeElementAttributes(element);
43210      xml.enter(FHIR_NS, name);
43211      composePersonPersonLinkComponentElements(element);
43212      composeElementClose(element);
43213      xml.exit(FHIR_NS, name);
43214    }
43215  }
43216
43217  protected void composePersonPersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
43218      composeBackboneElementElements(element);
43219      if (element.hasTarget()) {
43220        composeReference("target", element.getTarget());
43221      }
43222      if (element.hasAssuranceElement())
43223        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
43224  }
43225
43226  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
43227    if (element != null) {
43228      composeDomainResourceAttributes(element);
43229      xml.enter(FHIR_NS, name);
43230      composePlanDefinitionElements(element);
43231      composeElementClose(element);
43232      xml.exit(FHIR_NS, name);
43233    }
43234  }
43235
43236  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
43237      composeDomainResourceElements(element);
43238      if (element.hasUrlElement()) {
43239        composeUri("url", element.getUrlElement());
43240      }
43241      if (element.hasIdentifier()) { 
43242        for (Identifier e : element.getIdentifier()) 
43243          composeIdentifier("identifier", e);
43244      }
43245      if (element.hasVersionElement()) {
43246        composeString("version", element.getVersionElement());
43247      }
43248      if (element.hasNameElement()) {
43249        composeString("name", element.getNameElement());
43250      }
43251      if (element.hasTitleElement()) {
43252        composeString("title", element.getTitleElement());
43253      }
43254      if (element.hasSubtitleElement()) {
43255        composeString("subtitle", element.getSubtitleElement());
43256      }
43257      if (element.hasType()) {
43258        composeCodeableConcept("type", element.getType());
43259      }
43260      if (element.hasStatusElement())
43261        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
43262      if (element.hasExperimentalElement()) {
43263        composeBoolean("experimental", element.getExperimentalElement());
43264      }
43265      if (element.hasSubject()) {
43266        composeType("subject", element.getSubject());
43267      }      if (element.hasDateElement()) {
43268        composeDateTime("date", element.getDateElement());
43269      }
43270      if (element.hasPublisherElement()) {
43271        composeString("publisher", element.getPublisherElement());
43272      }
43273      if (element.hasContact()) { 
43274        for (ContactDetail e : element.getContact()) 
43275          composeContactDetail("contact", e);
43276      }
43277      if (element.hasDescriptionElement()) {
43278        composeMarkdown("description", element.getDescriptionElement());
43279      }
43280      if (element.hasUseContext()) { 
43281        for (UsageContext e : element.getUseContext()) 
43282          composeUsageContext("useContext", e);
43283      }
43284      if (element.hasJurisdiction()) { 
43285        for (CodeableConcept e : element.getJurisdiction()) 
43286          composeCodeableConcept("jurisdiction", e);
43287      }
43288      if (element.hasPurposeElement()) {
43289        composeMarkdown("purpose", element.getPurposeElement());
43290      }
43291      if (element.hasUsageElement()) {
43292        composeString("usage", element.getUsageElement());
43293      }
43294      if (element.hasCopyrightElement()) {
43295        composeMarkdown("copyright", element.getCopyrightElement());
43296      }
43297      if (element.hasApprovalDateElement()) {
43298        composeDate("approvalDate", element.getApprovalDateElement());
43299      }
43300      if (element.hasLastReviewDateElement()) {
43301        composeDate("lastReviewDate", element.getLastReviewDateElement());
43302      }
43303      if (element.hasEffectivePeriod()) {
43304        composePeriod("effectivePeriod", element.getEffectivePeriod());
43305      }
43306      if (element.hasTopic()) { 
43307        for (CodeableConcept e : element.getTopic()) 
43308          composeCodeableConcept("topic", e);
43309      }
43310      if (element.hasAuthor()) { 
43311        for (ContactDetail e : element.getAuthor()) 
43312          composeContactDetail("author", e);
43313      }
43314      if (element.hasEditor()) { 
43315        for (ContactDetail e : element.getEditor()) 
43316          composeContactDetail("editor", e);
43317      }
43318      if (element.hasReviewer()) { 
43319        for (ContactDetail e : element.getReviewer()) 
43320          composeContactDetail("reviewer", e);
43321      }
43322      if (element.hasEndorser()) { 
43323        for (ContactDetail e : element.getEndorser()) 
43324          composeContactDetail("endorser", e);
43325      }
43326      if (element.hasRelatedArtifact()) { 
43327        for (RelatedArtifact e : element.getRelatedArtifact()) 
43328          composeRelatedArtifact("relatedArtifact", e);
43329      }
43330      if (element.hasLibrary()) { 
43331        for (CanonicalType e : element.getLibrary()) 
43332          composeCanonical("library", e);
43333      }
43334      if (element.hasGoal()) { 
43335        for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
43336          composePlanDefinitionPlanDefinitionGoalComponent("goal", e);
43337      }
43338      if (element.hasAction()) { 
43339        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
43340          composePlanDefinitionPlanDefinitionActionComponent("action", e);
43341      }
43342  }
43343
43344  protected void composePlanDefinitionPlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
43345    if (element != null) {
43346      composeElementAttributes(element);
43347      xml.enter(FHIR_NS, name);
43348      composePlanDefinitionPlanDefinitionGoalComponentElements(element);
43349      composeElementClose(element);
43350      xml.exit(FHIR_NS, name);
43351    }
43352  }
43353
43354  protected void composePlanDefinitionPlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
43355      composeBackboneElementElements(element);
43356      if (element.hasCategory()) {
43357        composeCodeableConcept("category", element.getCategory());
43358      }
43359      if (element.hasDescription()) {
43360        composeCodeableConcept("description", element.getDescription());
43361      }
43362      if (element.hasPriority()) {
43363        composeCodeableConcept("priority", element.getPriority());
43364      }
43365      if (element.hasStart()) {
43366        composeCodeableConcept("start", element.getStart());
43367      }
43368      if (element.hasAddresses()) { 
43369        for (CodeableConcept e : element.getAddresses()) 
43370          composeCodeableConcept("addresses", e);
43371      }
43372      if (element.hasDocumentation()) { 
43373        for (RelatedArtifact e : element.getDocumentation()) 
43374          composeRelatedArtifact("documentation", e);
43375      }
43376      if (element.hasTarget()) { 
43377        for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
43378          composePlanDefinitionPlanDefinitionGoalTargetComponent("target", e);
43379      }
43380  }
43381
43382  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
43383    if (element != null) {
43384      composeElementAttributes(element);
43385      xml.enter(FHIR_NS, name);
43386      composePlanDefinitionPlanDefinitionGoalTargetComponentElements(element);
43387      composeElementClose(element);
43388      xml.exit(FHIR_NS, name);
43389    }
43390  }
43391
43392  protected void composePlanDefinitionPlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
43393      composeBackboneElementElements(element);
43394      if (element.hasMeasure()) {
43395        composeCodeableConcept("measure", element.getMeasure());
43396      }
43397      if (element.hasDetail()) {
43398        composeType("detail", element.getDetail());
43399      }      if (element.hasDue()) {
43400        composeDuration("due", element.getDue());
43401      }
43402  }
43403
43404  protected void composePlanDefinitionPlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
43405    if (element != null) {
43406      composeElementAttributes(element);
43407      xml.enter(FHIR_NS, name);
43408      composePlanDefinitionPlanDefinitionActionComponentElements(element);
43409      composeElementClose(element);
43410      xml.exit(FHIR_NS, name);
43411    }
43412  }
43413
43414  protected void composePlanDefinitionPlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
43415      composeBackboneElementElements(element);
43416      if (element.hasPrefixElement()) {
43417        composeString("prefix", element.getPrefixElement());
43418      }
43419      if (element.hasTitleElement()) {
43420        composeString("title", element.getTitleElement());
43421      }
43422      if (element.hasDescriptionElement()) {
43423        composeString("description", element.getDescriptionElement());
43424      }
43425      if (element.hasTextEquivalentElement()) {
43426        composeString("textEquivalent", element.getTextEquivalentElement());
43427      }
43428      if (element.hasPriorityElement())
43429        composeEnumeration("priority", element.getPriorityElement(), new PlanDefinition.RequestPriorityEnumFactory());
43430      if (element.hasCode()) { 
43431        for (CodeableConcept e : element.getCode()) 
43432          composeCodeableConcept("code", e);
43433      }
43434      if (element.hasReason()) { 
43435        for (CodeableConcept e : element.getReason()) 
43436          composeCodeableConcept("reason", e);
43437      }
43438      if (element.hasDocumentation()) { 
43439        for (RelatedArtifact e : element.getDocumentation()) 
43440          composeRelatedArtifact("documentation", e);
43441      }
43442      if (element.hasGoalId()) { 
43443        for (IdType e : element.getGoalId()) 
43444          composeId("goalId", e);
43445      }
43446      if (element.hasSubject()) {
43447        composeType("subject", element.getSubject());
43448      }      if (element.hasTrigger()) { 
43449        for (TriggerDefinition e : element.getTrigger()) 
43450          composeTriggerDefinition("trigger", e);
43451      }
43452      if (element.hasCondition()) { 
43453        for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
43454          composePlanDefinitionPlanDefinitionActionConditionComponent("condition", e);
43455      }
43456      if (element.hasInput()) { 
43457        for (DataRequirement e : element.getInput()) 
43458          composeDataRequirement("input", e);
43459      }
43460      if (element.hasOutput()) { 
43461        for (DataRequirement e : element.getOutput()) 
43462          composeDataRequirement("output", e);
43463      }
43464      if (element.hasRelatedAction()) { 
43465        for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
43466          composePlanDefinitionPlanDefinitionActionRelatedActionComponent("relatedAction", e);
43467      }
43468      if (element.hasTiming()) {
43469        composeType("timing", element.getTiming());
43470      }      if (element.hasParticipant()) { 
43471        for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
43472          composePlanDefinitionPlanDefinitionActionParticipantComponent("participant", e);
43473      }
43474      if (element.hasType()) {
43475        composeCodeableConcept("type", element.getType());
43476      }
43477      if (element.hasGroupingBehaviorElement())
43478        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new PlanDefinition.ActionGroupingBehaviorEnumFactory());
43479      if (element.hasSelectionBehaviorElement())
43480        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new PlanDefinition.ActionSelectionBehaviorEnumFactory());
43481      if (element.hasRequiredBehaviorElement())
43482        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new PlanDefinition.ActionRequiredBehaviorEnumFactory());
43483      if (element.hasPrecheckBehaviorElement())
43484        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new PlanDefinition.ActionPrecheckBehaviorEnumFactory());
43485      if (element.hasCardinalityBehaviorElement())
43486        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new PlanDefinition.ActionCardinalityBehaviorEnumFactory());
43487      if (element.hasDefinition()) {
43488        composeType("definition", element.getDefinition());
43489      }      if (element.hasTransformElement()) {
43490        composeCanonical("transform", element.getTransformElement());
43491      }
43492      if (element.hasDynamicValue()) { 
43493        for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
43494          composePlanDefinitionPlanDefinitionActionDynamicValueComponent("dynamicValue", e);
43495      }
43496      if (element.hasAction()) { 
43497        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
43498          composePlanDefinitionPlanDefinitionActionComponent("action", e);
43499      }
43500  }
43501
43502  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
43503    if (element != null) {
43504      composeElementAttributes(element);
43505      xml.enter(FHIR_NS, name);
43506      composePlanDefinitionPlanDefinitionActionConditionComponentElements(element);
43507      composeElementClose(element);
43508      xml.exit(FHIR_NS, name);
43509    }
43510  }
43511
43512  protected void composePlanDefinitionPlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
43513      composeBackboneElementElements(element);
43514      if (element.hasKindElement())
43515        composeEnumeration("kind", element.getKindElement(), new PlanDefinition.ActionConditionKindEnumFactory());
43516      if (element.hasExpression()) {
43517        composeExpression("expression", element.getExpression());
43518      }
43519  }
43520
43521  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
43522    if (element != null) {
43523      composeElementAttributes(element);
43524      xml.enter(FHIR_NS, name);
43525      composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(element);
43526      composeElementClose(element);
43527      xml.exit(FHIR_NS, name);
43528    }
43529  }
43530
43531  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
43532      composeBackboneElementElements(element);
43533      if (element.hasActionIdElement()) {
43534        composeId("actionId", element.getActionIdElement());
43535      }
43536      if (element.hasRelationshipElement())
43537        composeEnumeration("relationship", element.getRelationshipElement(), new PlanDefinition.ActionRelationshipTypeEnumFactory());
43538      if (element.hasOffset()) {
43539        composeType("offset", element.getOffset());
43540      }  }
43541
43542  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
43543    if (element != null) {
43544      composeElementAttributes(element);
43545      xml.enter(FHIR_NS, name);
43546      composePlanDefinitionPlanDefinitionActionParticipantComponentElements(element);
43547      composeElementClose(element);
43548      xml.exit(FHIR_NS, name);
43549    }
43550  }
43551
43552  protected void composePlanDefinitionPlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
43553      composeBackboneElementElements(element);
43554      if (element.hasTypeElement())
43555        composeEnumeration("type", element.getTypeElement(), new PlanDefinition.ActionParticipantTypeEnumFactory());
43556      if (element.hasRole()) {
43557        composeCodeableConcept("role", element.getRole());
43558      }
43559  }
43560
43561  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
43562    if (element != null) {
43563      composeElementAttributes(element);
43564      xml.enter(FHIR_NS, name);
43565      composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(element);
43566      composeElementClose(element);
43567      xml.exit(FHIR_NS, name);
43568    }
43569  }
43570
43571  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
43572      composeBackboneElementElements(element);
43573      if (element.hasPathElement()) {
43574        composeString("path", element.getPathElement());
43575      }
43576      if (element.hasExpression()) {
43577        composeExpression("expression", element.getExpression());
43578      }
43579  }
43580
43581  protected void composePractitioner(String name, Practitioner element) throws IOException {
43582    if (element != null) {
43583      composeDomainResourceAttributes(element);
43584      xml.enter(FHIR_NS, name);
43585      composePractitionerElements(element);
43586      composeElementClose(element);
43587      xml.exit(FHIR_NS, name);
43588    }
43589  }
43590
43591  protected void composePractitionerElements(Practitioner element) throws IOException {
43592      composeDomainResourceElements(element);
43593      if (element.hasIdentifier()) { 
43594        for (Identifier e : element.getIdentifier()) 
43595          composeIdentifier("identifier", e);
43596      }
43597      if (element.hasActiveElement()) {
43598        composeBoolean("active", element.getActiveElement());
43599      }
43600      if (element.hasName()) { 
43601        for (HumanName e : element.getName()) 
43602          composeHumanName("name", e);
43603      }
43604      if (element.hasTelecom()) { 
43605        for (ContactPoint e : element.getTelecom()) 
43606          composeContactPoint("telecom", e);
43607      }
43608      if (element.hasAddress()) { 
43609        for (Address e : element.getAddress()) 
43610          composeAddress("address", e);
43611      }
43612      if (element.hasGenderElement())
43613        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
43614      if (element.hasBirthDateElement()) {
43615        composeDate("birthDate", element.getBirthDateElement());
43616      }
43617      if (element.hasPhoto()) { 
43618        for (Attachment e : element.getPhoto()) 
43619          composeAttachment("photo", e);
43620      }
43621      if (element.hasQualification()) { 
43622        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
43623          composePractitionerPractitionerQualificationComponent("qualification", e);
43624      }
43625      if (element.hasCommunication()) { 
43626        for (CodeableConcept e : element.getCommunication()) 
43627          composeCodeableConcept("communication", e);
43628      }
43629  }
43630
43631  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
43632    if (element != null) {
43633      composeElementAttributes(element);
43634      xml.enter(FHIR_NS, name);
43635      composePractitionerPractitionerQualificationComponentElements(element);
43636      composeElementClose(element);
43637      xml.exit(FHIR_NS, name);
43638    }
43639  }
43640
43641  protected void composePractitionerPractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
43642      composeBackboneElementElements(element);
43643      if (element.hasIdentifier()) { 
43644        for (Identifier e : element.getIdentifier()) 
43645          composeIdentifier("identifier", e);
43646      }
43647      if (element.hasCode()) {
43648        composeCodeableConcept("code", element.getCode());
43649      }
43650      if (element.hasPeriod()) {
43651        composePeriod("period", element.getPeriod());
43652      }
43653      if (element.hasIssuer()) {
43654        composeReference("issuer", element.getIssuer());
43655      }
43656  }
43657
43658  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
43659    if (element != null) {
43660      composeDomainResourceAttributes(element);
43661      xml.enter(FHIR_NS, name);
43662      composePractitionerRoleElements(element);
43663      composeElementClose(element);
43664      xml.exit(FHIR_NS, name);
43665    }
43666  }
43667
43668  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
43669      composeDomainResourceElements(element);
43670      if (element.hasIdentifier()) { 
43671        for (Identifier e : element.getIdentifier()) 
43672          composeIdentifier("identifier", e);
43673      }
43674      if (element.hasActiveElement()) {
43675        composeBoolean("active", element.getActiveElement());
43676      }
43677      if (element.hasPeriod()) {
43678        composePeriod("period", element.getPeriod());
43679      }
43680      if (element.hasPractitioner()) {
43681        composeReference("practitioner", element.getPractitioner());
43682      }
43683      if (element.hasOrganization()) {
43684        composeReference("organization", element.getOrganization());
43685      }
43686      if (element.hasCode()) { 
43687        for (CodeableConcept e : element.getCode()) 
43688          composeCodeableConcept("code", e);
43689      }
43690      if (element.hasSpecialty()) { 
43691        for (CodeableConcept e : element.getSpecialty()) 
43692          composeCodeableConcept("specialty", e);
43693      }
43694      if (element.hasLocation()) { 
43695        for (Reference e : element.getLocation()) 
43696          composeReference("location", e);
43697      }
43698      if (element.hasHealthcareService()) { 
43699        for (Reference e : element.getHealthcareService()) 
43700          composeReference("healthcareService", e);
43701      }
43702      if (element.hasTelecom()) { 
43703        for (ContactPoint e : element.getTelecom()) 
43704          composeContactPoint("telecom", e);
43705      }
43706      if (element.hasAvailableTime()) { 
43707        for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
43708          composePractitionerRolePractitionerRoleAvailableTimeComponent("availableTime", e);
43709      }
43710      if (element.hasNotAvailable()) { 
43711        for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
43712          composePractitionerRolePractitionerRoleNotAvailableComponent("notAvailable", e);
43713      }
43714      if (element.hasAvailabilityExceptionsElement()) {
43715        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
43716      }
43717      if (element.hasEndpoint()) { 
43718        for (Reference e : element.getEndpoint()) 
43719          composeReference("endpoint", e);
43720      }
43721  }
43722
43723  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
43724    if (element != null) {
43725      composeElementAttributes(element);
43726      xml.enter(FHIR_NS, name);
43727      composePractitionerRolePractitionerRoleAvailableTimeComponentElements(element);
43728      composeElementClose(element);
43729      xml.exit(FHIR_NS, name);
43730    }
43731  }
43732
43733  protected void composePractitionerRolePractitionerRoleAvailableTimeComponentElements(PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
43734      composeBackboneElementElements(element);
43735        if (element.hasDaysOfWeek()) 
43736          for (Enumeration<PractitionerRole.DaysOfWeek> e : element.getDaysOfWeek()) 
43737            composeEnumeration("daysOfWeek", e, new PractitionerRole.DaysOfWeekEnumFactory());
43738      if (element.hasAllDayElement()) {
43739        composeBoolean("allDay", element.getAllDayElement());
43740      }
43741      if (element.hasAvailableStartTimeElement()) {
43742        composeTime("availableStartTime", element.getAvailableStartTimeElement());
43743      }
43744      if (element.hasAvailableEndTimeElement()) {
43745        composeTime("availableEndTime", element.getAvailableEndTimeElement());
43746      }
43747  }
43748
43749  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
43750    if (element != null) {
43751      composeElementAttributes(element);
43752      xml.enter(FHIR_NS, name);
43753      composePractitionerRolePractitionerRoleNotAvailableComponentElements(element);
43754      composeElementClose(element);
43755      xml.exit(FHIR_NS, name);
43756    }
43757  }
43758
43759  protected void composePractitionerRolePractitionerRoleNotAvailableComponentElements(PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
43760      composeBackboneElementElements(element);
43761      if (element.hasDescriptionElement()) {
43762        composeString("description", element.getDescriptionElement());
43763      }
43764      if (element.hasDuring()) {
43765        composePeriod("during", element.getDuring());
43766      }
43767  }
43768
43769  protected void composeProcedure(String name, Procedure element) throws IOException {
43770    if (element != null) {
43771      composeDomainResourceAttributes(element);
43772      xml.enter(FHIR_NS, name);
43773      composeProcedureElements(element);
43774      composeElementClose(element);
43775      xml.exit(FHIR_NS, name);
43776    }
43777  }
43778
43779  protected void composeProcedureElements(Procedure element) throws IOException {
43780      composeDomainResourceElements(element);
43781      if (element.hasIdentifier()) { 
43782        for (Identifier e : element.getIdentifier()) 
43783          composeIdentifier("identifier", e);
43784      }
43785      if (element.hasInstantiatesCanonical()) { 
43786        for (CanonicalType e : element.getInstantiatesCanonical()) 
43787          composeCanonical("instantiatesCanonical", e);
43788      }
43789      if (element.hasInstantiatesUri()) { 
43790        for (UriType e : element.getInstantiatesUri()) 
43791          composeUri("instantiatesUri", e);
43792      }
43793      if (element.hasBasedOn()) { 
43794        for (Reference e : element.getBasedOn()) 
43795          composeReference("basedOn", e);
43796      }
43797      if (element.hasPartOf()) { 
43798        for (Reference e : element.getPartOf()) 
43799          composeReference("partOf", e);
43800      }
43801      if (element.hasStatusElement())
43802        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
43803      if (element.hasStatusReason()) {
43804        composeCodeableConcept("statusReason", element.getStatusReason());
43805      }
43806      if (element.hasCategory()) {
43807        composeCodeableConcept("category", element.getCategory());
43808      }
43809      if (element.hasCode()) {
43810        composeCodeableConcept("code", element.getCode());
43811      }
43812      if (element.hasSubject()) {
43813        composeReference("subject", element.getSubject());
43814      }
43815      if (element.hasEncounter()) {
43816        composeReference("encounter", element.getEncounter());
43817      }
43818      if (element.hasPerformed()) {
43819        composeType("performed", element.getPerformed());
43820      }      if (element.hasRecorder()) {
43821        composeReference("recorder", element.getRecorder());
43822      }
43823      if (element.hasAsserter()) {
43824        composeReference("asserter", element.getAsserter());
43825      }
43826      if (element.hasPerformer()) { 
43827        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
43828          composeProcedureProcedurePerformerComponent("performer", e);
43829      }
43830      if (element.hasLocation()) {
43831        composeReference("location", element.getLocation());
43832      }
43833      if (element.hasReasonCode()) { 
43834        for (CodeableConcept e : element.getReasonCode()) 
43835          composeCodeableConcept("reasonCode", e);
43836      }
43837      if (element.hasReasonReference()) { 
43838        for (Reference e : element.getReasonReference()) 
43839          composeReference("reasonReference", e);
43840      }
43841      if (element.hasBodySite()) { 
43842        for (CodeableConcept e : element.getBodySite()) 
43843          composeCodeableConcept("bodySite", e);
43844      }
43845      if (element.hasOutcome()) {
43846        composeCodeableConcept("outcome", element.getOutcome());
43847      }
43848      if (element.hasReport()) { 
43849        for (Reference e : element.getReport()) 
43850          composeReference("report", e);
43851      }
43852      if (element.hasComplication()) { 
43853        for (CodeableConcept e : element.getComplication()) 
43854          composeCodeableConcept("complication", e);
43855      }
43856      if (element.hasComplicationDetail()) { 
43857        for (Reference e : element.getComplicationDetail()) 
43858          composeReference("complicationDetail", e);
43859      }
43860      if (element.hasFollowUp()) { 
43861        for (CodeableConcept e : element.getFollowUp()) 
43862          composeCodeableConcept("followUp", e);
43863      }
43864      if (element.hasNote()) { 
43865        for (Annotation e : element.getNote()) 
43866          composeAnnotation("note", e);
43867      }
43868      if (element.hasFocalDevice()) { 
43869        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
43870          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
43871      }
43872      if (element.hasUsedReference()) { 
43873        for (Reference e : element.getUsedReference()) 
43874          composeReference("usedReference", e);
43875      }
43876      if (element.hasUsedCode()) { 
43877        for (CodeableConcept e : element.getUsedCode()) 
43878          composeCodeableConcept("usedCode", e);
43879      }
43880  }
43881
43882  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
43883    if (element != null) {
43884      composeElementAttributes(element);
43885      xml.enter(FHIR_NS, name);
43886      composeProcedureProcedurePerformerComponentElements(element);
43887      composeElementClose(element);
43888      xml.exit(FHIR_NS, name);
43889    }
43890  }
43891
43892  protected void composeProcedureProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
43893      composeBackboneElementElements(element);
43894      if (element.hasFunction()) {
43895        composeCodeableConcept("function", element.getFunction());
43896      }
43897      if (element.hasActor()) {
43898        composeReference("actor", element.getActor());
43899      }
43900      if (element.hasOnBehalfOf()) {
43901        composeReference("onBehalfOf", element.getOnBehalfOf());
43902      }
43903  }
43904
43905  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
43906    if (element != null) {
43907      composeElementAttributes(element);
43908      xml.enter(FHIR_NS, name);
43909      composeProcedureProcedureFocalDeviceComponentElements(element);
43910      composeElementClose(element);
43911      xml.exit(FHIR_NS, name);
43912    }
43913  }
43914
43915  protected void composeProcedureProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
43916      composeBackboneElementElements(element);
43917      if (element.hasAction()) {
43918        composeCodeableConcept("action", element.getAction());
43919      }
43920      if (element.hasManipulated()) {
43921        composeReference("manipulated", element.getManipulated());
43922      }
43923  }
43924
43925  protected void composeProvenance(String name, Provenance element) throws IOException {
43926    if (element != null) {
43927      composeDomainResourceAttributes(element);
43928      xml.enter(FHIR_NS, name);
43929      composeProvenanceElements(element);
43930      composeElementClose(element);
43931      xml.exit(FHIR_NS, name);
43932    }
43933  }
43934
43935  protected void composeProvenanceElements(Provenance element) throws IOException {
43936      composeDomainResourceElements(element);
43937      if (element.hasTarget()) { 
43938        for (Reference e : element.getTarget()) 
43939          composeReference("target", e);
43940      }
43941      if (element.hasOccurred()) {
43942        composeType("occurred", element.getOccurred());
43943      }      if (element.hasRecordedElement()) {
43944        composeInstant("recorded", element.getRecordedElement());
43945      }
43946      if (element.hasPolicy()) { 
43947        for (UriType e : element.getPolicy()) 
43948          composeUri("policy", e);
43949      }
43950      if (element.hasLocation()) {
43951        composeReference("location", element.getLocation());
43952      }
43953      if (element.hasReason()) { 
43954        for (CodeableConcept e : element.getReason()) 
43955          composeCodeableConcept("reason", e);
43956      }
43957      if (element.hasActivity()) {
43958        composeCodeableConcept("activity", element.getActivity());
43959      }
43960      if (element.hasAgent()) { 
43961        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
43962          composeProvenanceProvenanceAgentComponent("agent", e);
43963      }
43964      if (element.hasEntity()) { 
43965        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
43966          composeProvenanceProvenanceEntityComponent("entity", e);
43967      }
43968      if (element.hasSignature()) { 
43969        for (Signature e : element.getSignature()) 
43970          composeSignature("signature", e);
43971      }
43972  }
43973
43974  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
43975    if (element != null) {
43976      composeElementAttributes(element);
43977      xml.enter(FHIR_NS, name);
43978      composeProvenanceProvenanceAgentComponentElements(element);
43979      composeElementClose(element);
43980      xml.exit(FHIR_NS, name);
43981    }
43982  }
43983
43984  protected void composeProvenanceProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
43985      composeBackboneElementElements(element);
43986      if (element.hasType()) {
43987        composeCodeableConcept("type", element.getType());
43988      }
43989      if (element.hasRole()) { 
43990        for (CodeableConcept e : element.getRole()) 
43991          composeCodeableConcept("role", e);
43992      }
43993      if (element.hasWho()) {
43994        composeReference("who", element.getWho());
43995      }
43996      if (element.hasOnBehalfOf()) {
43997        composeReference("onBehalfOf", element.getOnBehalfOf());
43998      }
43999  }
44000
44001  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
44002    if (element != null) {
44003      composeElementAttributes(element);
44004      xml.enter(FHIR_NS, name);
44005      composeProvenanceProvenanceEntityComponentElements(element);
44006      composeElementClose(element);
44007      xml.exit(FHIR_NS, name);
44008    }
44009  }
44010
44011  protected void composeProvenanceProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
44012      composeBackboneElementElements(element);
44013      if (element.hasRoleElement())
44014        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
44015      if (element.hasWhat()) {
44016        composeReference("what", element.getWhat());
44017      }
44018      if (element.hasAgent()) { 
44019        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
44020          composeProvenanceProvenanceAgentComponent("agent", e);
44021      }
44022  }
44023
44024  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
44025    if (element != null) {
44026      composeDomainResourceAttributes(element);
44027      xml.enter(FHIR_NS, name);
44028      composeQuestionnaireElements(element);
44029      composeElementClose(element);
44030      xml.exit(FHIR_NS, name);
44031    }
44032  }
44033
44034  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
44035      composeDomainResourceElements(element);
44036      if (element.hasUrlElement()) {
44037        composeUri("url", element.getUrlElement());
44038      }
44039      if (element.hasIdentifier()) { 
44040        for (Identifier e : element.getIdentifier()) 
44041          composeIdentifier("identifier", e);
44042      }
44043      if (element.hasVersionElement()) {
44044        composeString("version", element.getVersionElement());
44045      }
44046      if (element.hasNameElement()) {
44047        composeString("name", element.getNameElement());
44048      }
44049      if (element.hasTitleElement()) {
44050        composeString("title", element.getTitleElement());
44051      }
44052      if (element.hasDerivedFrom()) { 
44053        for (CanonicalType e : element.getDerivedFrom()) 
44054          composeCanonical("derivedFrom", e);
44055      }
44056      if (element.hasStatusElement())
44057        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44058      if (element.hasExperimentalElement()) {
44059        composeBoolean("experimental", element.getExperimentalElement());
44060      }
44061      if (element.hasSubjectType()) { 
44062        for (CodeType e : element.getSubjectType()) 
44063          composeCode("subjectType", e);
44064      }
44065      if (element.hasDateElement()) {
44066        composeDateTime("date", element.getDateElement());
44067      }
44068      if (element.hasPublisherElement()) {
44069        composeString("publisher", element.getPublisherElement());
44070      }
44071      if (element.hasContact()) { 
44072        for (ContactDetail e : element.getContact()) 
44073          composeContactDetail("contact", e);
44074      }
44075      if (element.hasDescriptionElement()) {
44076        composeMarkdown("description", element.getDescriptionElement());
44077      }
44078      if (element.hasUseContext()) { 
44079        for (UsageContext e : element.getUseContext()) 
44080          composeUsageContext("useContext", e);
44081      }
44082      if (element.hasJurisdiction()) { 
44083        for (CodeableConcept e : element.getJurisdiction()) 
44084          composeCodeableConcept("jurisdiction", e);
44085      }
44086      if (element.hasPurposeElement()) {
44087        composeMarkdown("purpose", element.getPurposeElement());
44088      }
44089      if (element.hasCopyrightElement()) {
44090        composeMarkdown("copyright", element.getCopyrightElement());
44091      }
44092      if (element.hasApprovalDateElement()) {
44093        composeDate("approvalDate", element.getApprovalDateElement());
44094      }
44095      if (element.hasLastReviewDateElement()) {
44096        composeDate("lastReviewDate", element.getLastReviewDateElement());
44097      }
44098      if (element.hasEffectivePeriod()) {
44099        composePeriod("effectivePeriod", element.getEffectivePeriod());
44100      }
44101      if (element.hasCode()) { 
44102        for (Coding e : element.getCode()) 
44103          composeCoding("code", e);
44104      }
44105      if (element.hasItem()) { 
44106        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
44107          composeQuestionnaireQuestionnaireItemComponent("item", e);
44108      }
44109  }
44110
44111  protected void composeQuestionnaireQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
44112    if (element != null) {
44113      composeElementAttributes(element);
44114      xml.enter(FHIR_NS, name);
44115      composeQuestionnaireQuestionnaireItemComponentElements(element);
44116      composeElementClose(element);
44117      xml.exit(FHIR_NS, name);
44118    }
44119  }
44120
44121  protected void composeQuestionnaireQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
44122      composeBackboneElementElements(element);
44123      if (element.hasLinkIdElement()) {
44124        composeString("linkId", element.getLinkIdElement());
44125      }
44126      if (element.hasDefinitionElement()) {
44127        composeUri("definition", element.getDefinitionElement());
44128      }
44129      if (element.hasCode()) { 
44130        for (Coding e : element.getCode()) 
44131          composeCoding("code", e);
44132      }
44133      if (element.hasPrefixElement()) {
44134        composeString("prefix", element.getPrefixElement());
44135      }
44136      if (element.hasTextElement()) {
44137        composeString("text", element.getTextElement());
44138      }
44139      if (element.hasTypeElement())
44140        composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
44141      if (element.hasEnableWhen()) { 
44142        for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
44143          composeQuestionnaireQuestionnaireItemEnableWhenComponent("enableWhen", e);
44144      }
44145      if (element.hasEnableBehaviorElement())
44146        composeEnumeration("enableBehavior", element.getEnableBehaviorElement(), new Questionnaire.EnableWhenBehaviorEnumFactory());
44147      if (element.hasRequiredElement()) {
44148        composeBoolean("required", element.getRequiredElement());
44149      }
44150      if (element.hasRepeatsElement()) {
44151        composeBoolean("repeats", element.getRepeatsElement());
44152      }
44153      if (element.hasReadOnlyElement()) {
44154        composeBoolean("readOnly", element.getReadOnlyElement());
44155      }
44156      if (element.hasMaxLengthElement()) {
44157        composeInteger("maxLength", element.getMaxLengthElement());
44158      }
44159      if (element.hasAnswerValueSetElement()) {
44160        composeCanonical("answerValueSet", element.getAnswerValueSetElement());
44161      }
44162      if (element.hasAnswerOption()) { 
44163        for (Questionnaire.QuestionnaireItemAnswerOptionComponent e : element.getAnswerOption()) 
44164          composeQuestionnaireQuestionnaireItemAnswerOptionComponent("answerOption", e);
44165      }
44166      if (element.hasInitial()) { 
44167        for (Questionnaire.QuestionnaireItemInitialComponent e : element.getInitial()) 
44168          composeQuestionnaireQuestionnaireItemInitialComponent("initial", e);
44169      }
44170      if (element.hasItem()) { 
44171        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
44172          composeQuestionnaireQuestionnaireItemComponent("item", e);
44173      }
44174  }
44175
44176  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
44177    if (element != null) {
44178      composeElementAttributes(element);
44179      xml.enter(FHIR_NS, name);
44180      composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(element);
44181      composeElementClose(element);
44182      xml.exit(FHIR_NS, name);
44183    }
44184  }
44185
44186  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
44187      composeBackboneElementElements(element);
44188      if (element.hasQuestionElement()) {
44189        composeString("question", element.getQuestionElement());
44190      }
44191      if (element.hasOperatorElement())
44192        composeEnumeration("operator", element.getOperatorElement(), new Questionnaire.QuestionnaireItemOperatorEnumFactory());
44193      if (element.hasAnswer()) {
44194        composeType("answer", element.getAnswer());
44195      }  }
44196
44197  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponent(String name, Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
44198    if (element != null) {
44199      composeElementAttributes(element);
44200      xml.enter(FHIR_NS, name);
44201      composeQuestionnaireQuestionnaireItemAnswerOptionComponentElements(element);
44202      composeElementClose(element);
44203      xml.exit(FHIR_NS, name);
44204    }
44205  }
44206
44207  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponentElements(Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
44208      composeBackboneElementElements(element);
44209      if (element.hasValue()) {
44210        composeType("value", element.getValue());
44211      }      if (element.hasInitialSelectedElement()) {
44212        composeBoolean("initialSelected", element.getInitialSelectedElement());
44213      }
44214  }
44215
44216  protected void composeQuestionnaireQuestionnaireItemInitialComponent(String name, Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
44217    if (element != null) {
44218      composeElementAttributes(element);
44219      xml.enter(FHIR_NS, name);
44220      composeQuestionnaireQuestionnaireItemInitialComponentElements(element);
44221      composeElementClose(element);
44222      xml.exit(FHIR_NS, name);
44223    }
44224  }
44225
44226  protected void composeQuestionnaireQuestionnaireItemInitialComponentElements(Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
44227      composeBackboneElementElements(element);
44228      if (element.hasValue()) {
44229        composeType("value", element.getValue());
44230      }  }
44231
44232  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
44233    if (element != null) {
44234      composeDomainResourceAttributes(element);
44235      xml.enter(FHIR_NS, name);
44236      composeQuestionnaireResponseElements(element);
44237      composeElementClose(element);
44238      xml.exit(FHIR_NS, name);
44239    }
44240  }
44241
44242  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
44243      composeDomainResourceElements(element);
44244      if (element.hasIdentifier()) {
44245        composeIdentifier("identifier", element.getIdentifier());
44246      }
44247      if (element.hasBasedOn()) { 
44248        for (Reference e : element.getBasedOn()) 
44249          composeReference("basedOn", e);
44250      }
44251      if (element.hasPartOf()) { 
44252        for (Reference e : element.getPartOf()) 
44253          composeReference("partOf", e);
44254      }
44255      if (element.hasQuestionnaireElement()) {
44256        composeCanonical("questionnaire", element.getQuestionnaireElement());
44257      }
44258      if (element.hasStatusElement())
44259        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
44260      if (element.hasSubject()) {
44261        composeReference("subject", element.getSubject());
44262      }
44263      if (element.hasEncounter()) {
44264        composeReference("encounter", element.getEncounter());
44265      }
44266      if (element.hasAuthoredElement()) {
44267        composeDateTime("authored", element.getAuthoredElement());
44268      }
44269      if (element.hasAuthor()) {
44270        composeReference("author", element.getAuthor());
44271      }
44272      if (element.hasSource()) {
44273        composeReference("source", element.getSource());
44274      }
44275      if (element.hasItem()) { 
44276        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
44277          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
44278      }
44279  }
44280
44281  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
44282    if (element != null) {
44283      composeElementAttributes(element);
44284      xml.enter(FHIR_NS, name);
44285      composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(element);
44286      composeElementClose(element);
44287      xml.exit(FHIR_NS, name);
44288    }
44289  }
44290
44291  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
44292      composeBackboneElementElements(element);
44293      if (element.hasLinkIdElement()) {
44294        composeString("linkId", element.getLinkIdElement());
44295      }
44296      if (element.hasDefinitionElement()) {
44297        composeUri("definition", element.getDefinitionElement());
44298      }
44299      if (element.hasTextElement()) {
44300        composeString("text", element.getTextElement());
44301      }
44302      if (element.hasAnswer()) { 
44303        for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
44304          composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent("answer", e);
44305      }
44306      if (element.hasItem()) { 
44307        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
44308          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
44309      }
44310  }
44311
44312  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
44313    if (element != null) {
44314      composeElementAttributes(element);
44315      xml.enter(FHIR_NS, name);
44316      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(element);
44317      composeElementClose(element);
44318      xml.exit(FHIR_NS, name);
44319    }
44320  }
44321
44322  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
44323      composeBackboneElementElements(element);
44324      if (element.hasValue()) {
44325        composeType("value", element.getValue());
44326      }      if (element.hasItem()) { 
44327        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
44328          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
44329      }
44330  }
44331
44332  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
44333    if (element != null) {
44334      composeDomainResourceAttributes(element);
44335      xml.enter(FHIR_NS, name);
44336      composeRelatedPersonElements(element);
44337      composeElementClose(element);
44338      xml.exit(FHIR_NS, name);
44339    }
44340  }
44341
44342  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
44343      composeDomainResourceElements(element);
44344      if (element.hasIdentifier()) { 
44345        for (Identifier e : element.getIdentifier()) 
44346          composeIdentifier("identifier", e);
44347      }
44348      if (element.hasActiveElement()) {
44349        composeBoolean("active", element.getActiveElement());
44350      }
44351      if (element.hasPatient()) {
44352        composeReference("patient", element.getPatient());
44353      }
44354      if (element.hasRelationship()) { 
44355        for (CodeableConcept e : element.getRelationship()) 
44356          composeCodeableConcept("relationship", e);
44357      }
44358      if (element.hasName()) { 
44359        for (HumanName e : element.getName()) 
44360          composeHumanName("name", e);
44361      }
44362      if (element.hasTelecom()) { 
44363        for (ContactPoint e : element.getTelecom()) 
44364          composeContactPoint("telecom", e);
44365      }
44366      if (element.hasGenderElement())
44367        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
44368      if (element.hasBirthDateElement()) {
44369        composeDate("birthDate", element.getBirthDateElement());
44370      }
44371      if (element.hasAddress()) { 
44372        for (Address e : element.getAddress()) 
44373          composeAddress("address", e);
44374      }
44375      if (element.hasPhoto()) { 
44376        for (Attachment e : element.getPhoto()) 
44377          composeAttachment("photo", e);
44378      }
44379      if (element.hasPeriod()) {
44380        composePeriod("period", element.getPeriod());
44381      }
44382      if (element.hasCommunication()) { 
44383        for (RelatedPerson.RelatedPersonCommunicationComponent e : element.getCommunication()) 
44384          composeRelatedPersonRelatedPersonCommunicationComponent("communication", e);
44385      }
44386  }
44387
44388  protected void composeRelatedPersonRelatedPersonCommunicationComponent(String name, RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
44389    if (element != null) {
44390      composeElementAttributes(element);
44391      xml.enter(FHIR_NS, name);
44392      composeRelatedPersonRelatedPersonCommunicationComponentElements(element);
44393      composeElementClose(element);
44394      xml.exit(FHIR_NS, name);
44395    }
44396  }
44397
44398  protected void composeRelatedPersonRelatedPersonCommunicationComponentElements(RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
44399      composeBackboneElementElements(element);
44400      if (element.hasLanguage()) {
44401        composeCodeableConcept("language", element.getLanguage());
44402      }
44403      if (element.hasPreferredElement()) {
44404        composeBoolean("preferred", element.getPreferredElement());
44405      }
44406  }
44407
44408  protected void composeRequestGroup(String name, RequestGroup element) throws IOException {
44409    if (element != null) {
44410      composeDomainResourceAttributes(element);
44411      xml.enter(FHIR_NS, name);
44412      composeRequestGroupElements(element);
44413      composeElementClose(element);
44414      xml.exit(FHIR_NS, name);
44415    }
44416  }
44417
44418  protected void composeRequestGroupElements(RequestGroup element) throws IOException {
44419      composeDomainResourceElements(element);
44420      if (element.hasIdentifier()) { 
44421        for (Identifier e : element.getIdentifier()) 
44422          composeIdentifier("identifier", e);
44423      }
44424      if (element.hasInstantiatesCanonical()) { 
44425        for (CanonicalType e : element.getInstantiatesCanonical()) 
44426          composeCanonical("instantiatesCanonical", e);
44427      }
44428      if (element.hasInstantiatesUri()) { 
44429        for (UriType e : element.getInstantiatesUri()) 
44430          composeUri("instantiatesUri", e);
44431      }
44432      if (element.hasBasedOn()) { 
44433        for (Reference e : element.getBasedOn()) 
44434          composeReference("basedOn", e);
44435      }
44436      if (element.hasReplaces()) { 
44437        for (Reference e : element.getReplaces()) 
44438          composeReference("replaces", e);
44439      }
44440      if (element.hasGroupIdentifier()) {
44441        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
44442      }
44443      if (element.hasStatusElement())
44444        composeEnumeration("status", element.getStatusElement(), new RequestGroup.RequestStatusEnumFactory());
44445      if (element.hasIntentElement())
44446        composeEnumeration("intent", element.getIntentElement(), new RequestGroup.RequestIntentEnumFactory());
44447      if (element.hasPriorityElement())
44448        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
44449      if (element.hasCode()) {
44450        composeCodeableConcept("code", element.getCode());
44451      }
44452      if (element.hasSubject()) {
44453        composeReference("subject", element.getSubject());
44454      }
44455      if (element.hasEncounter()) {
44456        composeReference("encounter", element.getEncounter());
44457      }
44458      if (element.hasAuthoredOnElement()) {
44459        composeDateTime("authoredOn", element.getAuthoredOnElement());
44460      }
44461      if (element.hasAuthor()) {
44462        composeReference("author", element.getAuthor());
44463      }
44464      if (element.hasReasonCode()) { 
44465        for (CodeableConcept e : element.getReasonCode()) 
44466          composeCodeableConcept("reasonCode", e);
44467      }
44468      if (element.hasReasonReference()) { 
44469        for (Reference e : element.getReasonReference()) 
44470          composeReference("reasonReference", e);
44471      }
44472      if (element.hasNote()) { 
44473        for (Annotation e : element.getNote()) 
44474          composeAnnotation("note", e);
44475      }
44476      if (element.hasAction()) { 
44477        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
44478          composeRequestGroupRequestGroupActionComponent("action", e);
44479      }
44480  }
44481
44482  protected void composeRequestGroupRequestGroupActionComponent(String name, RequestGroup.RequestGroupActionComponent element) throws IOException {
44483    if (element != null) {
44484      composeElementAttributes(element);
44485      xml.enter(FHIR_NS, name);
44486      composeRequestGroupRequestGroupActionComponentElements(element);
44487      composeElementClose(element);
44488      xml.exit(FHIR_NS, name);
44489    }
44490  }
44491
44492  protected void composeRequestGroupRequestGroupActionComponentElements(RequestGroup.RequestGroupActionComponent element) throws IOException {
44493      composeBackboneElementElements(element);
44494      if (element.hasPrefixElement()) {
44495        composeString("prefix", element.getPrefixElement());
44496      }
44497      if (element.hasTitleElement()) {
44498        composeString("title", element.getTitleElement());
44499      }
44500      if (element.hasDescriptionElement()) {
44501        composeString("description", element.getDescriptionElement());
44502      }
44503      if (element.hasTextEquivalentElement()) {
44504        composeString("textEquivalent", element.getTextEquivalentElement());
44505      }
44506      if (element.hasPriorityElement())
44507        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
44508      if (element.hasCode()) { 
44509        for (CodeableConcept e : element.getCode()) 
44510          composeCodeableConcept("code", e);
44511      }
44512      if (element.hasDocumentation()) { 
44513        for (RelatedArtifact e : element.getDocumentation()) 
44514          composeRelatedArtifact("documentation", e);
44515      }
44516      if (element.hasCondition()) { 
44517        for (RequestGroup.RequestGroupActionConditionComponent e : element.getCondition()) 
44518          composeRequestGroupRequestGroupActionConditionComponent("condition", e);
44519      }
44520      if (element.hasRelatedAction()) { 
44521        for (RequestGroup.RequestGroupActionRelatedActionComponent e : element.getRelatedAction()) 
44522          composeRequestGroupRequestGroupActionRelatedActionComponent("relatedAction", e);
44523      }
44524      if (element.hasTiming()) {
44525        composeType("timing", element.getTiming());
44526      }      if (element.hasParticipant()) { 
44527        for (Reference e : element.getParticipant()) 
44528          composeReference("participant", e);
44529      }
44530      if (element.hasType()) {
44531        composeCodeableConcept("type", element.getType());
44532      }
44533      if (element.hasGroupingBehaviorElement())
44534        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new RequestGroup.ActionGroupingBehaviorEnumFactory());
44535      if (element.hasSelectionBehaviorElement())
44536        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new RequestGroup.ActionSelectionBehaviorEnumFactory());
44537      if (element.hasRequiredBehaviorElement())
44538        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new RequestGroup.ActionRequiredBehaviorEnumFactory());
44539      if (element.hasPrecheckBehaviorElement())
44540        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new RequestGroup.ActionPrecheckBehaviorEnumFactory());
44541      if (element.hasCardinalityBehaviorElement())
44542        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new RequestGroup.ActionCardinalityBehaviorEnumFactory());
44543      if (element.hasResource()) {
44544        composeReference("resource", element.getResource());
44545      }
44546      if (element.hasAction()) { 
44547        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
44548          composeRequestGroupRequestGroupActionComponent("action", e);
44549      }
44550  }
44551
44552  protected void composeRequestGroupRequestGroupActionConditionComponent(String name, RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
44553    if (element != null) {
44554      composeElementAttributes(element);
44555      xml.enter(FHIR_NS, name);
44556      composeRequestGroupRequestGroupActionConditionComponentElements(element);
44557      composeElementClose(element);
44558      xml.exit(FHIR_NS, name);
44559    }
44560  }
44561
44562  protected void composeRequestGroupRequestGroupActionConditionComponentElements(RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
44563      composeBackboneElementElements(element);
44564      if (element.hasKindElement())
44565        composeEnumeration("kind", element.getKindElement(), new RequestGroup.ActionConditionKindEnumFactory());
44566      if (element.hasExpression()) {
44567        composeExpression("expression", element.getExpression());
44568      }
44569  }
44570
44571  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(String name, RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
44572    if (element != null) {
44573      composeElementAttributes(element);
44574      xml.enter(FHIR_NS, name);
44575      composeRequestGroupRequestGroupActionRelatedActionComponentElements(element);
44576      composeElementClose(element);
44577      xml.exit(FHIR_NS, name);
44578    }
44579  }
44580
44581  protected void composeRequestGroupRequestGroupActionRelatedActionComponentElements(RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
44582      composeBackboneElementElements(element);
44583      if (element.hasActionIdElement()) {
44584        composeId("actionId", element.getActionIdElement());
44585      }
44586      if (element.hasRelationshipElement())
44587        composeEnumeration("relationship", element.getRelationshipElement(), new RequestGroup.ActionRelationshipTypeEnumFactory());
44588      if (element.hasOffset()) {
44589        composeType("offset", element.getOffset());
44590      }  }
44591
44592  protected void composeResearchDefinition(String name, ResearchDefinition element) throws IOException {
44593    if (element != null) {
44594      composeDomainResourceAttributes(element);
44595      xml.enter(FHIR_NS, name);
44596      composeResearchDefinitionElements(element);
44597      composeElementClose(element);
44598      xml.exit(FHIR_NS, name);
44599    }
44600  }
44601
44602  protected void composeResearchDefinitionElements(ResearchDefinition element) throws IOException {
44603      composeDomainResourceElements(element);
44604      if (element.hasUrlElement()) {
44605        composeUri("url", element.getUrlElement());
44606      }
44607      if (element.hasIdentifier()) { 
44608        for (Identifier e : element.getIdentifier()) 
44609          composeIdentifier("identifier", e);
44610      }
44611      if (element.hasVersionElement()) {
44612        composeString("version", element.getVersionElement());
44613      }
44614      if (element.hasNameElement()) {
44615        composeString("name", element.getNameElement());
44616      }
44617      if (element.hasTitleElement()) {
44618        composeString("title", element.getTitleElement());
44619      }
44620      if (element.hasShortTitleElement()) {
44621        composeString("shortTitle", element.getShortTitleElement());
44622      }
44623      if (element.hasSubtitleElement()) {
44624        composeString("subtitle", element.getSubtitleElement());
44625      }
44626      if (element.hasStatusElement())
44627        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44628      if (element.hasExperimentalElement()) {
44629        composeBoolean("experimental", element.getExperimentalElement());
44630      }
44631      if (element.hasSubject()) {
44632        composeType("subject", element.getSubject());
44633      }      if (element.hasDateElement()) {
44634        composeDateTime("date", element.getDateElement());
44635      }
44636      if (element.hasPublisherElement()) {
44637        composeString("publisher", element.getPublisherElement());
44638      }
44639      if (element.hasContact()) { 
44640        for (ContactDetail e : element.getContact()) 
44641          composeContactDetail("contact", e);
44642      }
44643      if (element.hasDescriptionElement()) {
44644        composeMarkdown("description", element.getDescriptionElement());
44645      }
44646      if (element.hasComment()) { 
44647        for (StringType e : element.getComment()) 
44648          composeString("comment", e);
44649      }
44650      if (element.hasUseContext()) { 
44651        for (UsageContext e : element.getUseContext()) 
44652          composeUsageContext("useContext", e);
44653      }
44654      if (element.hasJurisdiction()) { 
44655        for (CodeableConcept e : element.getJurisdiction()) 
44656          composeCodeableConcept("jurisdiction", e);
44657      }
44658      if (element.hasPurposeElement()) {
44659        composeMarkdown("purpose", element.getPurposeElement());
44660      }
44661      if (element.hasUsageElement()) {
44662        composeString("usage", element.getUsageElement());
44663      }
44664      if (element.hasCopyrightElement()) {
44665        composeMarkdown("copyright", element.getCopyrightElement());
44666      }
44667      if (element.hasApprovalDateElement()) {
44668        composeDate("approvalDate", element.getApprovalDateElement());
44669      }
44670      if (element.hasLastReviewDateElement()) {
44671        composeDate("lastReviewDate", element.getLastReviewDateElement());
44672      }
44673      if (element.hasEffectivePeriod()) {
44674        composePeriod("effectivePeriod", element.getEffectivePeriod());
44675      }
44676      if (element.hasTopic()) { 
44677        for (CodeableConcept e : element.getTopic()) 
44678          composeCodeableConcept("topic", e);
44679      }
44680      if (element.hasAuthor()) { 
44681        for (ContactDetail e : element.getAuthor()) 
44682          composeContactDetail("author", e);
44683      }
44684      if (element.hasEditor()) { 
44685        for (ContactDetail e : element.getEditor()) 
44686          composeContactDetail("editor", e);
44687      }
44688      if (element.hasReviewer()) { 
44689        for (ContactDetail e : element.getReviewer()) 
44690          composeContactDetail("reviewer", e);
44691      }
44692      if (element.hasEndorser()) { 
44693        for (ContactDetail e : element.getEndorser()) 
44694          composeContactDetail("endorser", e);
44695      }
44696      if (element.hasRelatedArtifact()) { 
44697        for (RelatedArtifact e : element.getRelatedArtifact()) 
44698          composeRelatedArtifact("relatedArtifact", e);
44699      }
44700      if (element.hasLibrary()) { 
44701        for (CanonicalType e : element.getLibrary()) 
44702          composeCanonical("library", e);
44703      }
44704      if (element.hasPopulation()) {
44705        composeReference("population", element.getPopulation());
44706      }
44707      if (element.hasExposure()) {
44708        composeReference("exposure", element.getExposure());
44709      }
44710      if (element.hasExposureAlternative()) {
44711        composeReference("exposureAlternative", element.getExposureAlternative());
44712      }
44713      if (element.hasOutcome()) {
44714        composeReference("outcome", element.getOutcome());
44715      }
44716  }
44717
44718  protected void composeResearchElementDefinition(String name, ResearchElementDefinition element) throws IOException {
44719    if (element != null) {
44720      composeDomainResourceAttributes(element);
44721      xml.enter(FHIR_NS, name);
44722      composeResearchElementDefinitionElements(element);
44723      composeElementClose(element);
44724      xml.exit(FHIR_NS, name);
44725    }
44726  }
44727
44728  protected void composeResearchElementDefinitionElements(ResearchElementDefinition element) throws IOException {
44729      composeDomainResourceElements(element);
44730      if (element.hasUrlElement()) {
44731        composeUri("url", element.getUrlElement());
44732      }
44733      if (element.hasIdentifier()) { 
44734        for (Identifier e : element.getIdentifier()) 
44735          composeIdentifier("identifier", e);
44736      }
44737      if (element.hasVersionElement()) {
44738        composeString("version", element.getVersionElement());
44739      }
44740      if (element.hasNameElement()) {
44741        composeString("name", element.getNameElement());
44742      }
44743      if (element.hasTitleElement()) {
44744        composeString("title", element.getTitleElement());
44745      }
44746      if (element.hasShortTitleElement()) {
44747        composeString("shortTitle", element.getShortTitleElement());
44748      }
44749      if (element.hasSubtitleElement()) {
44750        composeString("subtitle", element.getSubtitleElement());
44751      }
44752      if (element.hasStatusElement())
44753        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44754      if (element.hasExperimentalElement()) {
44755        composeBoolean("experimental", element.getExperimentalElement());
44756      }
44757      if (element.hasSubject()) {
44758        composeType("subject", element.getSubject());
44759      }      if (element.hasDateElement()) {
44760        composeDateTime("date", element.getDateElement());
44761      }
44762      if (element.hasPublisherElement()) {
44763        composeString("publisher", element.getPublisherElement());
44764      }
44765      if (element.hasContact()) { 
44766        for (ContactDetail e : element.getContact()) 
44767          composeContactDetail("contact", e);
44768      }
44769      if (element.hasDescriptionElement()) {
44770        composeMarkdown("description", element.getDescriptionElement());
44771      }
44772      if (element.hasComment()) { 
44773        for (StringType e : element.getComment()) 
44774          composeString("comment", e);
44775      }
44776      if (element.hasUseContext()) { 
44777        for (UsageContext e : element.getUseContext()) 
44778          composeUsageContext("useContext", e);
44779      }
44780      if (element.hasJurisdiction()) { 
44781        for (CodeableConcept e : element.getJurisdiction()) 
44782          composeCodeableConcept("jurisdiction", e);
44783      }
44784      if (element.hasPurposeElement()) {
44785        composeMarkdown("purpose", element.getPurposeElement());
44786      }
44787      if (element.hasUsageElement()) {
44788        composeString("usage", element.getUsageElement());
44789      }
44790      if (element.hasCopyrightElement()) {
44791        composeMarkdown("copyright", element.getCopyrightElement());
44792      }
44793      if (element.hasApprovalDateElement()) {
44794        composeDate("approvalDate", element.getApprovalDateElement());
44795      }
44796      if (element.hasLastReviewDateElement()) {
44797        composeDate("lastReviewDate", element.getLastReviewDateElement());
44798      }
44799      if (element.hasEffectivePeriod()) {
44800        composePeriod("effectivePeriod", element.getEffectivePeriod());
44801      }
44802      if (element.hasTopic()) { 
44803        for (CodeableConcept e : element.getTopic()) 
44804          composeCodeableConcept("topic", e);
44805      }
44806      if (element.hasAuthor()) { 
44807        for (ContactDetail e : element.getAuthor()) 
44808          composeContactDetail("author", e);
44809      }
44810      if (element.hasEditor()) { 
44811        for (ContactDetail e : element.getEditor()) 
44812          composeContactDetail("editor", e);
44813      }
44814      if (element.hasReviewer()) { 
44815        for (ContactDetail e : element.getReviewer()) 
44816          composeContactDetail("reviewer", e);
44817      }
44818      if (element.hasEndorser()) { 
44819        for (ContactDetail e : element.getEndorser()) 
44820          composeContactDetail("endorser", e);
44821      }
44822      if (element.hasRelatedArtifact()) { 
44823        for (RelatedArtifact e : element.getRelatedArtifact()) 
44824          composeRelatedArtifact("relatedArtifact", e);
44825      }
44826      if (element.hasLibrary()) { 
44827        for (CanonicalType e : element.getLibrary()) 
44828          composeCanonical("library", e);
44829      }
44830      if (element.hasTypeElement())
44831        composeEnumeration("type", element.getTypeElement(), new ResearchElementDefinition.ResearchElementTypeEnumFactory());
44832      if (element.hasVariableTypeElement())
44833        composeEnumeration("variableType", element.getVariableTypeElement(), new ResearchElementDefinition.VariableTypeEnumFactory());
44834      if (element.hasCharacteristic()) { 
44835        for (ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent e : element.getCharacteristic()) 
44836          composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponent("characteristic", e);
44837      }
44838  }
44839
44840  protected void composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(String name, ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent element) throws IOException {
44841    if (element != null) {
44842      composeElementAttributes(element);
44843      xml.enter(FHIR_NS, name);
44844      composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponentElements(element);
44845      composeElementClose(element);
44846      xml.exit(FHIR_NS, name);
44847    }
44848  }
44849
44850  protected void composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponentElements(ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent element) throws IOException {
44851      composeBackboneElementElements(element);
44852      if (element.hasDefinition()) {
44853        composeType("definition", element.getDefinition());
44854      }      if (element.hasUsageContext()) { 
44855        for (UsageContext e : element.getUsageContext()) 
44856          composeUsageContext("usageContext", e);
44857      }
44858      if (element.hasExcludeElement()) {
44859        composeBoolean("exclude", element.getExcludeElement());
44860      }
44861      if (element.hasUnitOfMeasure()) {
44862        composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
44863      }
44864      if (element.hasStudyEffectiveDescriptionElement()) {
44865        composeString("studyEffectiveDescription", element.getStudyEffectiveDescriptionElement());
44866      }
44867      if (element.hasStudyEffective()) {
44868        composeType("studyEffective", element.getStudyEffective());
44869      }      if (element.hasStudyEffectiveTimeFromStart()) {
44870        composeDuration("studyEffectiveTimeFromStart", element.getStudyEffectiveTimeFromStart());
44871      }
44872      if (element.hasStudyEffectiveGroupMeasureElement())
44873        composeEnumeration("studyEffectiveGroupMeasure", element.getStudyEffectiveGroupMeasureElement(), new ResearchElementDefinition.GroupMeasureEnumFactory());
44874      if (element.hasParticipantEffectiveDescriptionElement()) {
44875        composeString("participantEffectiveDescription", element.getParticipantEffectiveDescriptionElement());
44876      }
44877      if (element.hasParticipantEffective()) {
44878        composeType("participantEffective", element.getParticipantEffective());
44879      }      if (element.hasParticipantEffectiveTimeFromStart()) {
44880        composeDuration("participantEffectiveTimeFromStart", element.getParticipantEffectiveTimeFromStart());
44881      }
44882      if (element.hasParticipantEffectiveGroupMeasureElement())
44883        composeEnumeration("participantEffectiveGroupMeasure", element.getParticipantEffectiveGroupMeasureElement(), new ResearchElementDefinition.GroupMeasureEnumFactory());
44884  }
44885
44886  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
44887    if (element != null) {
44888      composeDomainResourceAttributes(element);
44889      xml.enter(FHIR_NS, name);
44890      composeResearchStudyElements(element);
44891      composeElementClose(element);
44892      xml.exit(FHIR_NS, name);
44893    }
44894  }
44895
44896  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
44897      composeDomainResourceElements(element);
44898      if (element.hasIdentifier()) { 
44899        for (Identifier e : element.getIdentifier()) 
44900          composeIdentifier("identifier", e);
44901      }
44902      if (element.hasTitleElement()) {
44903        composeString("title", element.getTitleElement());
44904      }
44905      if (element.hasProtocol()) { 
44906        for (Reference e : element.getProtocol()) 
44907          composeReference("protocol", e);
44908      }
44909      if (element.hasPartOf()) { 
44910        for (Reference e : element.getPartOf()) 
44911          composeReference("partOf", e);
44912      }
44913      if (element.hasStatusElement())
44914        composeEnumeration("status", element.getStatusElement(), new ResearchStudy.ResearchStudyStatusEnumFactory());
44915      if (element.hasPrimaryPurposeType()) {
44916        composeCodeableConcept("primaryPurposeType", element.getPrimaryPurposeType());
44917      }
44918      if (element.hasPhase()) {
44919        composeCodeableConcept("phase", element.getPhase());
44920      }
44921      if (element.hasCategory()) { 
44922        for (CodeableConcept e : element.getCategory()) 
44923          composeCodeableConcept("category", e);
44924      }
44925      if (element.hasFocus()) { 
44926        for (CodeableConcept e : element.getFocus()) 
44927          composeCodeableConcept("focus", e);
44928      }
44929      if (element.hasCondition()) { 
44930        for (CodeableConcept e : element.getCondition()) 
44931          composeCodeableConcept("condition", e);
44932      }
44933      if (element.hasContact()) { 
44934        for (ContactDetail e : element.getContact()) 
44935          composeContactDetail("contact", e);
44936      }
44937      if (element.hasRelatedArtifact()) { 
44938        for (RelatedArtifact e : element.getRelatedArtifact()) 
44939          composeRelatedArtifact("relatedArtifact", e);
44940      }
44941      if (element.hasKeyword()) { 
44942        for (CodeableConcept e : element.getKeyword()) 
44943          composeCodeableConcept("keyword", e);
44944      }
44945      if (element.hasLocation()) { 
44946        for (CodeableConcept e : element.getLocation()) 
44947          composeCodeableConcept("location", e);
44948      }
44949      if (element.hasDescriptionElement()) {
44950        composeMarkdown("description", element.getDescriptionElement());
44951      }
44952      if (element.hasEnrollment()) { 
44953        for (Reference e : element.getEnrollment()) 
44954          composeReference("enrollment", e);
44955      }
44956      if (element.hasPeriod()) {
44957        composePeriod("period", element.getPeriod());
44958      }
44959      if (element.hasSponsor()) {
44960        composeReference("sponsor", element.getSponsor());
44961      }
44962      if (element.hasPrincipalInvestigator()) {
44963        composeReference("principalInvestigator", element.getPrincipalInvestigator());
44964      }
44965      if (element.hasSite()) { 
44966        for (Reference e : element.getSite()) 
44967          composeReference("site", e);
44968      }
44969      if (element.hasReasonStopped()) {
44970        composeCodeableConcept("reasonStopped", element.getReasonStopped());
44971      }
44972      if (element.hasNote()) { 
44973        for (Annotation e : element.getNote()) 
44974          composeAnnotation("note", e);
44975      }
44976      if (element.hasArm()) { 
44977        for (ResearchStudy.ResearchStudyArmComponent e : element.getArm()) 
44978          composeResearchStudyResearchStudyArmComponent("arm", e);
44979      }
44980      if (element.hasObjective()) { 
44981        for (ResearchStudy.ResearchStudyObjectiveComponent e : element.getObjective()) 
44982          composeResearchStudyResearchStudyObjectiveComponent("objective", e);
44983      }
44984  }
44985
44986  protected void composeResearchStudyResearchStudyArmComponent(String name, ResearchStudy.ResearchStudyArmComponent element) throws IOException {
44987    if (element != null) {
44988      composeElementAttributes(element);
44989      xml.enter(FHIR_NS, name);
44990      composeResearchStudyResearchStudyArmComponentElements(element);
44991      composeElementClose(element);
44992      xml.exit(FHIR_NS, name);
44993    }
44994  }
44995
44996  protected void composeResearchStudyResearchStudyArmComponentElements(ResearchStudy.ResearchStudyArmComponent element) throws IOException {
44997      composeBackboneElementElements(element);
44998      if (element.hasNameElement()) {
44999        composeString("name", element.getNameElement());
45000      }
45001      if (element.hasType()) {
45002        composeCodeableConcept("type", element.getType());
45003      }
45004      if (element.hasDescriptionElement()) {
45005        composeString("description", element.getDescriptionElement());
45006      }
45007  }
45008
45009  protected void composeResearchStudyResearchStudyObjectiveComponent(String name, ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
45010    if (element != null) {
45011      composeElementAttributes(element);
45012      xml.enter(FHIR_NS, name);
45013      composeResearchStudyResearchStudyObjectiveComponentElements(element);
45014      composeElementClose(element);
45015      xml.exit(FHIR_NS, name);
45016    }
45017  }
45018
45019  protected void composeResearchStudyResearchStudyObjectiveComponentElements(ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
45020      composeBackboneElementElements(element);
45021      if (element.hasNameElement()) {
45022        composeString("name", element.getNameElement());
45023      }
45024      if (element.hasType()) {
45025        composeCodeableConcept("type", element.getType());
45026      }
45027  }
45028
45029  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
45030    if (element != null) {
45031      composeDomainResourceAttributes(element);
45032      xml.enter(FHIR_NS, name);
45033      composeResearchSubjectElements(element);
45034      composeElementClose(element);
45035      xml.exit(FHIR_NS, name);
45036    }
45037  }
45038
45039  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
45040      composeDomainResourceElements(element);
45041      if (element.hasIdentifier()) { 
45042        for (Identifier e : element.getIdentifier()) 
45043          composeIdentifier("identifier", e);
45044      }
45045      if (element.hasStatusElement())
45046        composeEnumeration("status", element.getStatusElement(), new ResearchSubject.ResearchSubjectStatusEnumFactory());
45047      if (element.hasPeriod()) {
45048        composePeriod("period", element.getPeriod());
45049      }
45050      if (element.hasStudy()) {
45051        composeReference("study", element.getStudy());
45052      }
45053      if (element.hasIndividual()) {
45054        composeReference("individual", element.getIndividual());
45055      }
45056      if (element.hasAssignedArmElement()) {
45057        composeString("assignedArm", element.getAssignedArmElement());
45058      }
45059      if (element.hasActualArmElement()) {
45060        composeString("actualArm", element.getActualArmElement());
45061      }
45062      if (element.hasConsent()) {
45063        composeReference("consent", element.getConsent());
45064      }
45065  }
45066
45067  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
45068    if (element != null) {
45069      composeDomainResourceAttributes(element);
45070      xml.enter(FHIR_NS, name);
45071      composeRiskAssessmentElements(element);
45072      composeElementClose(element);
45073      xml.exit(FHIR_NS, name);
45074    }
45075  }
45076
45077  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
45078      composeDomainResourceElements(element);
45079      if (element.hasIdentifier()) { 
45080        for (Identifier e : element.getIdentifier()) 
45081          composeIdentifier("identifier", e);
45082      }
45083      if (element.hasBasedOn()) {
45084        composeReference("basedOn", element.getBasedOn());
45085      }
45086      if (element.hasParent()) {
45087        composeReference("parent", element.getParent());
45088      }
45089      if (element.hasStatusElement())
45090        composeEnumeration("status", element.getStatusElement(), new RiskAssessment.RiskAssessmentStatusEnumFactory());
45091      if (element.hasMethod()) {
45092        composeCodeableConcept("method", element.getMethod());
45093      }
45094      if (element.hasCode()) {
45095        composeCodeableConcept("code", element.getCode());
45096      }
45097      if (element.hasSubject()) {
45098        composeReference("subject", element.getSubject());
45099      }
45100      if (element.hasEncounter()) {
45101        composeReference("encounter", element.getEncounter());
45102      }
45103      if (element.hasOccurrence()) {
45104        composeType("occurrence", element.getOccurrence());
45105      }      if (element.hasCondition()) {
45106        composeReference("condition", element.getCondition());
45107      }
45108      if (element.hasPerformer()) {
45109        composeReference("performer", element.getPerformer());
45110      }
45111      if (element.hasReasonCode()) { 
45112        for (CodeableConcept e : element.getReasonCode()) 
45113          composeCodeableConcept("reasonCode", e);
45114      }
45115      if (element.hasReasonReference()) { 
45116        for (Reference e : element.getReasonReference()) 
45117          composeReference("reasonReference", e);
45118      }
45119      if (element.hasBasis()) { 
45120        for (Reference e : element.getBasis()) 
45121          composeReference("basis", e);
45122      }
45123      if (element.hasPrediction()) { 
45124        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
45125          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
45126      }
45127      if (element.hasMitigationElement()) {
45128        composeString("mitigation", element.getMitigationElement());
45129      }
45130      if (element.hasNote()) { 
45131        for (Annotation e : element.getNote()) 
45132          composeAnnotation("note", e);
45133      }
45134  }
45135
45136  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
45137    if (element != null) {
45138      composeElementAttributes(element);
45139      xml.enter(FHIR_NS, name);
45140      composeRiskAssessmentRiskAssessmentPredictionComponentElements(element);
45141      composeElementClose(element);
45142      xml.exit(FHIR_NS, name);
45143    }
45144  }
45145
45146  protected void composeRiskAssessmentRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
45147      composeBackboneElementElements(element);
45148      if (element.hasOutcome()) {
45149        composeCodeableConcept("outcome", element.getOutcome());
45150      }
45151      if (element.hasProbability()) {
45152        composeType("probability", element.getProbability());
45153      }      if (element.hasQualitativeRisk()) {
45154        composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
45155      }
45156      if (element.hasRelativeRiskElement()) {
45157        composeDecimal("relativeRisk", element.getRelativeRiskElement());
45158      }
45159      if (element.hasWhen()) {
45160        composeType("when", element.getWhen());
45161      }      if (element.hasRationaleElement()) {
45162        composeString("rationale", element.getRationaleElement());
45163      }
45164  }
45165
45166  protected void composeRiskEvidenceSynthesis(String name, RiskEvidenceSynthesis element) throws IOException {
45167    if (element != null) {
45168      composeDomainResourceAttributes(element);
45169      xml.enter(FHIR_NS, name);
45170      composeRiskEvidenceSynthesisElements(element);
45171      composeElementClose(element);
45172      xml.exit(FHIR_NS, name);
45173    }
45174  }
45175
45176  protected void composeRiskEvidenceSynthesisElements(RiskEvidenceSynthesis element) throws IOException {
45177      composeDomainResourceElements(element);
45178      if (element.hasUrlElement()) {
45179        composeUri("url", element.getUrlElement());
45180      }
45181      if (element.hasIdentifier()) { 
45182        for (Identifier e : element.getIdentifier()) 
45183          composeIdentifier("identifier", e);
45184      }
45185      if (element.hasVersionElement()) {
45186        composeString("version", element.getVersionElement());
45187      }
45188      if (element.hasNameElement()) {
45189        composeString("name", element.getNameElement());
45190      }
45191      if (element.hasTitleElement()) {
45192        composeString("title", element.getTitleElement());
45193      }
45194      if (element.hasStatusElement())
45195        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45196      if (element.hasDateElement()) {
45197        composeDateTime("date", element.getDateElement());
45198      }
45199      if (element.hasPublisherElement()) {
45200        composeString("publisher", element.getPublisherElement());
45201      }
45202      if (element.hasContact()) { 
45203        for (ContactDetail e : element.getContact()) 
45204          composeContactDetail("contact", e);
45205      }
45206      if (element.hasDescriptionElement()) {
45207        composeMarkdown("description", element.getDescriptionElement());
45208      }
45209      if (element.hasNote()) { 
45210        for (Annotation e : element.getNote()) 
45211          composeAnnotation("note", e);
45212      }
45213      if (element.hasUseContext()) { 
45214        for (UsageContext e : element.getUseContext()) 
45215          composeUsageContext("useContext", e);
45216      }
45217      if (element.hasJurisdiction()) { 
45218        for (CodeableConcept e : element.getJurisdiction()) 
45219          composeCodeableConcept("jurisdiction", e);
45220      }
45221      if (element.hasCopyrightElement()) {
45222        composeMarkdown("copyright", element.getCopyrightElement());
45223      }
45224      if (element.hasApprovalDateElement()) {
45225        composeDate("approvalDate", element.getApprovalDateElement());
45226      }
45227      if (element.hasLastReviewDateElement()) {
45228        composeDate("lastReviewDate", element.getLastReviewDateElement());
45229      }
45230      if (element.hasEffectivePeriod()) {
45231        composePeriod("effectivePeriod", element.getEffectivePeriod());
45232      }
45233      if (element.hasTopic()) { 
45234        for (CodeableConcept e : element.getTopic()) 
45235          composeCodeableConcept("topic", e);
45236      }
45237      if (element.hasAuthor()) { 
45238        for (ContactDetail e : element.getAuthor()) 
45239          composeContactDetail("author", e);
45240      }
45241      if (element.hasEditor()) { 
45242        for (ContactDetail e : element.getEditor()) 
45243          composeContactDetail("editor", e);
45244      }
45245      if (element.hasReviewer()) { 
45246        for (ContactDetail e : element.getReviewer()) 
45247          composeContactDetail("reviewer", e);
45248      }
45249      if (element.hasEndorser()) { 
45250        for (ContactDetail e : element.getEndorser()) 
45251          composeContactDetail("endorser", e);
45252      }
45253      if (element.hasRelatedArtifact()) { 
45254        for (RelatedArtifact e : element.getRelatedArtifact()) 
45255          composeRelatedArtifact("relatedArtifact", e);
45256      }
45257      if (element.hasSynthesisType()) {
45258        composeCodeableConcept("synthesisType", element.getSynthesisType());
45259      }
45260      if (element.hasStudyType()) {
45261        composeCodeableConcept("studyType", element.getStudyType());
45262      }
45263      if (element.hasPopulation()) {
45264        composeReference("population", element.getPopulation());
45265      }
45266      if (element.hasExposure()) {
45267        composeReference("exposure", element.getExposure());
45268      }
45269      if (element.hasOutcome()) {
45270        composeReference("outcome", element.getOutcome());
45271      }
45272      if (element.hasSampleSize()) {
45273        composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent("sampleSize", element.getSampleSize());
45274      }
45275      if (element.hasRiskEstimate()) {
45276        composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent("riskEstimate", element.getRiskEstimate());
45277      }
45278      if (element.hasCertainty()) { 
45279        for (RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent e : element.getCertainty()) 
45280          composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent("certainty", e);
45281      }
45282  }
45283
45284  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent element) throws IOException {
45285    if (element != null) {
45286      composeElementAttributes(element);
45287      xml.enter(FHIR_NS, name);
45288      composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentElements(element);
45289      composeElementClose(element);
45290      xml.exit(FHIR_NS, name);
45291    }
45292  }
45293
45294  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent element) throws IOException {
45295      composeBackboneElementElements(element);
45296      if (element.hasDescriptionElement()) {
45297        composeString("description", element.getDescriptionElement());
45298      }
45299      if (element.hasNumberOfStudiesElement()) {
45300        composeInteger("numberOfStudies", element.getNumberOfStudiesElement());
45301      }
45302      if (element.hasNumberOfParticipantsElement()) {
45303        composeInteger("numberOfParticipants", element.getNumberOfParticipantsElement());
45304      }
45305  }
45306
45307  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent element) throws IOException {
45308    if (element != null) {
45309      composeElementAttributes(element);
45310      xml.enter(FHIR_NS, name);
45311      composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentElements(element);
45312      composeElementClose(element);
45313      xml.exit(FHIR_NS, name);
45314    }
45315  }
45316
45317  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent element) throws IOException {
45318      composeBackboneElementElements(element);
45319      if (element.hasDescriptionElement()) {
45320        composeString("description", element.getDescriptionElement());
45321      }
45322      if (element.hasType()) {
45323        composeCodeableConcept("type", element.getType());
45324      }
45325      if (element.hasValueElement()) {
45326        composeDecimal("value", element.getValueElement());
45327      }
45328      if (element.hasUnitOfMeasure()) {
45329        composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
45330      }
45331      if (element.hasDenominatorCountElement()) {
45332        composeInteger("denominatorCount", element.getDenominatorCountElement());
45333      }
45334      if (element.hasNumeratorCountElement()) {
45335        composeInteger("numeratorCount", element.getNumeratorCountElement());
45336      }
45337      if (element.hasPrecisionEstimate()) { 
45338        for (RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent e : element.getPrecisionEstimate()) 
45339          composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent("precisionEstimate", e);
45340      }
45341  }
45342
45343  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent element) throws IOException {
45344    if (element != null) {
45345      composeElementAttributes(element);
45346      xml.enter(FHIR_NS, name);
45347      composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentElements(element);
45348      composeElementClose(element);
45349      xml.exit(FHIR_NS, name);
45350    }
45351  }
45352
45353  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent element) throws IOException {
45354      composeBackboneElementElements(element);
45355      if (element.hasType()) {
45356        composeCodeableConcept("type", element.getType());
45357      }
45358      if (element.hasLevelElement()) {
45359        composeDecimal("level", element.getLevelElement());
45360      }
45361      if (element.hasFromElement()) {
45362        composeDecimal("from", element.getFromElement());
45363      }
45364      if (element.hasToElement()) {
45365        composeDecimal("to", element.getToElement());
45366      }
45367  }
45368
45369  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent element) throws IOException {
45370    if (element != null) {
45371      composeElementAttributes(element);
45372      xml.enter(FHIR_NS, name);
45373      composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentElements(element);
45374      composeElementClose(element);
45375      xml.exit(FHIR_NS, name);
45376    }
45377  }
45378
45379  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent element) throws IOException {
45380      composeBackboneElementElements(element);
45381      if (element.hasRating()) { 
45382        for (CodeableConcept e : element.getRating()) 
45383          composeCodeableConcept("rating", e);
45384      }
45385      if (element.hasNote()) { 
45386        for (Annotation e : element.getNote()) 
45387          composeAnnotation("note", e);
45388      }
45389      if (element.hasCertaintySubcomponent()) { 
45390        for (RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent e : element.getCertaintySubcomponent()) 
45391          composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent("certaintySubcomponent", e);
45392      }
45393  }
45394
45395  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
45396    if (element != null) {
45397      composeElementAttributes(element);
45398      xml.enter(FHIR_NS, name);
45399      composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(element);
45400      composeElementClose(element);
45401      xml.exit(FHIR_NS, name);
45402    }
45403  }
45404
45405  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
45406      composeBackboneElementElements(element);
45407      if (element.hasType()) {
45408        composeCodeableConcept("type", element.getType());
45409      }
45410      if (element.hasRating()) { 
45411        for (CodeableConcept e : element.getRating()) 
45412          composeCodeableConcept("rating", e);
45413      }
45414      if (element.hasNote()) { 
45415        for (Annotation e : element.getNote()) 
45416          composeAnnotation("note", e);
45417      }
45418  }
45419
45420  protected void composeSchedule(String name, Schedule element) throws IOException {
45421    if (element != null) {
45422      composeDomainResourceAttributes(element);
45423      xml.enter(FHIR_NS, name);
45424      composeScheduleElements(element);
45425      composeElementClose(element);
45426      xml.exit(FHIR_NS, name);
45427    }
45428  }
45429
45430  protected void composeScheduleElements(Schedule element) throws IOException {
45431      composeDomainResourceElements(element);
45432      if (element.hasIdentifier()) { 
45433        for (Identifier e : element.getIdentifier()) 
45434          composeIdentifier("identifier", e);
45435      }
45436      if (element.hasActiveElement()) {
45437        composeBoolean("active", element.getActiveElement());
45438      }
45439      if (element.hasServiceCategory()) { 
45440        for (CodeableConcept e : element.getServiceCategory()) 
45441          composeCodeableConcept("serviceCategory", e);
45442      }
45443      if (element.hasServiceType()) { 
45444        for (CodeableConcept e : element.getServiceType()) 
45445          composeCodeableConcept("serviceType", e);
45446      }
45447      if (element.hasSpecialty()) { 
45448        for (CodeableConcept e : element.getSpecialty()) 
45449          composeCodeableConcept("specialty", e);
45450      }
45451      if (element.hasActor()) { 
45452        for (Reference e : element.getActor()) 
45453          composeReference("actor", e);
45454      }
45455      if (element.hasPlanningHorizon()) {
45456        composePeriod("planningHorizon", element.getPlanningHorizon());
45457      }
45458      if (element.hasCommentElement()) {
45459        composeString("comment", element.getCommentElement());
45460      }
45461  }
45462
45463  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
45464    if (element != null) {
45465      composeDomainResourceAttributes(element);
45466      xml.enter(FHIR_NS, name);
45467      composeSearchParameterElements(element);
45468      composeElementClose(element);
45469      xml.exit(FHIR_NS, name);
45470    }
45471  }
45472
45473  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
45474      composeDomainResourceElements(element);
45475      if (element.hasUrlElement()) {
45476        composeUri("url", element.getUrlElement());
45477      }
45478      if (element.hasVersionElement()) {
45479        composeString("version", element.getVersionElement());
45480      }
45481      if (element.hasNameElement()) {
45482        composeString("name", element.getNameElement());
45483      }
45484      if (element.hasDerivedFromElement()) {
45485        composeCanonical("derivedFrom", element.getDerivedFromElement());
45486      }
45487      if (element.hasStatusElement())
45488        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45489      if (element.hasExperimentalElement()) {
45490        composeBoolean("experimental", element.getExperimentalElement());
45491      }
45492      if (element.hasDateElement()) {
45493        composeDateTime("date", element.getDateElement());
45494      }
45495      if (element.hasPublisherElement()) {
45496        composeString("publisher", element.getPublisherElement());
45497      }
45498      if (element.hasContact()) { 
45499        for (ContactDetail e : element.getContact()) 
45500          composeContactDetail("contact", e);
45501      }
45502      if (element.hasDescriptionElement()) {
45503        composeMarkdown("description", element.getDescriptionElement());
45504      }
45505      if (element.hasUseContext()) { 
45506        for (UsageContext e : element.getUseContext()) 
45507          composeUsageContext("useContext", e);
45508      }
45509      if (element.hasJurisdiction()) { 
45510        for (CodeableConcept e : element.getJurisdiction()) 
45511          composeCodeableConcept("jurisdiction", e);
45512      }
45513      if (element.hasPurposeElement()) {
45514        composeMarkdown("purpose", element.getPurposeElement());
45515      }
45516      if (element.hasCodeElement()) {
45517        composeCode("code", element.getCodeElement());
45518      }
45519      if (element.hasBase()) { 
45520        for (CodeType e : element.getBase()) 
45521          composeCode("base", e);
45522      }
45523      if (element.hasTypeElement())
45524        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
45525      if (element.hasExpressionElement()) {
45526        composeString("expression", element.getExpressionElement());
45527      }
45528      if (element.hasXpathElement()) {
45529        composeString("xpath", element.getXpathElement());
45530      }
45531      if (element.hasXpathUsageElement())
45532        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
45533      if (element.hasTarget()) { 
45534        for (CodeType e : element.getTarget()) 
45535          composeCode("target", e);
45536      }
45537      if (element.hasMultipleOrElement()) {
45538        composeBoolean("multipleOr", element.getMultipleOrElement());
45539      }
45540      if (element.hasMultipleAndElement()) {
45541        composeBoolean("multipleAnd", element.getMultipleAndElement());
45542      }
45543        if (element.hasComparator()) 
45544          for (Enumeration<SearchParameter.SearchComparator> e : element.getComparator()) 
45545            composeEnumeration("comparator", e, new SearchParameter.SearchComparatorEnumFactory());
45546        if (element.hasModifier()) 
45547          for (Enumeration<SearchParameter.SearchModifierCode> e : element.getModifier()) 
45548            composeEnumeration("modifier", e, new SearchParameter.SearchModifierCodeEnumFactory());
45549      if (element.hasChain()) { 
45550        for (StringType e : element.getChain()) 
45551          composeString("chain", e);
45552      }
45553      if (element.hasComponent()) { 
45554        for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
45555          composeSearchParameterSearchParameterComponentComponent("component", e);
45556      }
45557  }
45558
45559  protected void composeSearchParameterSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
45560    if (element != null) {
45561      composeElementAttributes(element);
45562      xml.enter(FHIR_NS, name);
45563      composeSearchParameterSearchParameterComponentComponentElements(element);
45564      composeElementClose(element);
45565      xml.exit(FHIR_NS, name);
45566    }
45567  }
45568
45569  protected void composeSearchParameterSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
45570      composeBackboneElementElements(element);
45571      if (element.hasDefinitionElement()) {
45572        composeCanonical("definition", element.getDefinitionElement());
45573      }
45574      if (element.hasExpressionElement()) {
45575        composeString("expression", element.getExpressionElement());
45576      }
45577  }
45578
45579  protected void composeServiceRequest(String name, ServiceRequest element) throws IOException {
45580    if (element != null) {
45581      composeDomainResourceAttributes(element);
45582      xml.enter(FHIR_NS, name);
45583      composeServiceRequestElements(element);
45584      composeElementClose(element);
45585      xml.exit(FHIR_NS, name);
45586    }
45587  }
45588
45589  protected void composeServiceRequestElements(ServiceRequest element) throws IOException {
45590      composeDomainResourceElements(element);
45591      if (element.hasIdentifier()) { 
45592        for (Identifier e : element.getIdentifier()) 
45593          composeIdentifier("identifier", e);
45594      }
45595      if (element.hasInstantiatesCanonical()) { 
45596        for (CanonicalType e : element.getInstantiatesCanonical()) 
45597          composeCanonical("instantiatesCanonical", e);
45598      }
45599      if (element.hasInstantiatesUri()) { 
45600        for (UriType e : element.getInstantiatesUri()) 
45601          composeUri("instantiatesUri", e);
45602      }
45603      if (element.hasBasedOn()) { 
45604        for (Reference e : element.getBasedOn()) 
45605          composeReference("basedOn", e);
45606      }
45607      if (element.hasReplaces()) { 
45608        for (Reference e : element.getReplaces()) 
45609          composeReference("replaces", e);
45610      }
45611      if (element.hasRequisition()) {
45612        composeIdentifier("requisition", element.getRequisition());
45613      }
45614      if (element.hasStatusElement())
45615        composeEnumeration("status", element.getStatusElement(), new ServiceRequest.ServiceRequestStatusEnumFactory());
45616      if (element.hasIntentElement())
45617        composeEnumeration("intent", element.getIntentElement(), new ServiceRequest.ServiceRequestIntentEnumFactory());
45618      if (element.hasCategory()) { 
45619        for (CodeableConcept e : element.getCategory()) 
45620          composeCodeableConcept("category", e);
45621      }
45622      if (element.hasPriorityElement())
45623        composeEnumeration("priority", element.getPriorityElement(), new ServiceRequest.ServiceRequestPriorityEnumFactory());
45624      if (element.hasDoNotPerformElement()) {
45625        composeBoolean("doNotPerform", element.getDoNotPerformElement());
45626      }
45627      if (element.hasCode()) {
45628        composeCodeableConcept("code", element.getCode());
45629      }
45630      if (element.hasOrderDetail()) { 
45631        for (CodeableConcept e : element.getOrderDetail()) 
45632          composeCodeableConcept("orderDetail", e);
45633      }
45634      if (element.hasQuantity()) {
45635        composeType("quantity", element.getQuantity());
45636      }      if (element.hasSubject()) {
45637        composeReference("subject", element.getSubject());
45638      }
45639      if (element.hasEncounter()) {
45640        composeReference("encounter", element.getEncounter());
45641      }
45642      if (element.hasOccurrence()) {
45643        composeType("occurrence", element.getOccurrence());
45644      }      if (element.hasAsNeeded()) {
45645        composeType("asNeeded", element.getAsNeeded());
45646      }      if (element.hasAuthoredOnElement()) {
45647        composeDateTime("authoredOn", element.getAuthoredOnElement());
45648      }
45649      if (element.hasRequester()) {
45650        composeReference("requester", element.getRequester());
45651      }
45652      if (element.hasPerformerType()) {
45653        composeCodeableConcept("performerType", element.getPerformerType());
45654      }
45655      if (element.hasPerformer()) { 
45656        for (Reference e : element.getPerformer()) 
45657          composeReference("performer", e);
45658      }
45659      if (element.hasLocationCode()) { 
45660        for (CodeableConcept e : element.getLocationCode()) 
45661          composeCodeableConcept("locationCode", e);
45662      }
45663      if (element.hasLocationReference()) { 
45664        for (Reference e : element.getLocationReference()) 
45665          composeReference("locationReference", e);
45666      }
45667      if (element.hasReasonCode()) { 
45668        for (CodeableConcept e : element.getReasonCode()) 
45669          composeCodeableConcept("reasonCode", e);
45670      }
45671      if (element.hasReasonReference()) { 
45672        for (Reference e : element.getReasonReference()) 
45673          composeReference("reasonReference", e);
45674      }
45675      if (element.hasInsurance()) { 
45676        for (Reference e : element.getInsurance()) 
45677          composeReference("insurance", e);
45678      }
45679      if (element.hasSupportingInfo()) { 
45680        for (Reference e : element.getSupportingInfo()) 
45681          composeReference("supportingInfo", e);
45682      }
45683      if (element.hasSpecimen()) { 
45684        for (Reference e : element.getSpecimen()) 
45685          composeReference("specimen", e);
45686      }
45687      if (element.hasBodySite()) { 
45688        for (CodeableConcept e : element.getBodySite()) 
45689          composeCodeableConcept("bodySite", e);
45690      }
45691      if (element.hasNote()) { 
45692        for (Annotation e : element.getNote()) 
45693          composeAnnotation("note", e);
45694      }
45695      if (element.hasPatientInstructionElement()) {
45696        composeString("patientInstruction", element.getPatientInstructionElement());
45697      }
45698      if (element.hasRelevantHistory()) { 
45699        for (Reference e : element.getRelevantHistory()) 
45700          composeReference("relevantHistory", e);
45701      }
45702  }
45703
45704  protected void composeSlot(String name, Slot element) throws IOException {
45705    if (element != null) {
45706      composeDomainResourceAttributes(element);
45707      xml.enter(FHIR_NS, name);
45708      composeSlotElements(element);
45709      composeElementClose(element);
45710      xml.exit(FHIR_NS, name);
45711    }
45712  }
45713
45714  protected void composeSlotElements(Slot element) throws IOException {
45715      composeDomainResourceElements(element);
45716      if (element.hasIdentifier()) { 
45717        for (Identifier e : element.getIdentifier()) 
45718          composeIdentifier("identifier", e);
45719      }
45720      if (element.hasServiceCategory()) { 
45721        for (CodeableConcept e : element.getServiceCategory()) 
45722          composeCodeableConcept("serviceCategory", e);
45723      }
45724      if (element.hasServiceType()) { 
45725        for (CodeableConcept e : element.getServiceType()) 
45726          composeCodeableConcept("serviceType", e);
45727      }
45728      if (element.hasSpecialty()) { 
45729        for (CodeableConcept e : element.getSpecialty()) 
45730          composeCodeableConcept("specialty", e);
45731      }
45732      if (element.hasAppointmentType()) {
45733        composeCodeableConcept("appointmentType", element.getAppointmentType());
45734      }
45735      if (element.hasSchedule()) {
45736        composeReference("schedule", element.getSchedule());
45737      }
45738      if (element.hasStatusElement())
45739        composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
45740      if (element.hasStartElement()) {
45741        composeInstant("start", element.getStartElement());
45742      }
45743      if (element.hasEndElement()) {
45744        composeInstant("end", element.getEndElement());
45745      }
45746      if (element.hasOverbookedElement()) {
45747        composeBoolean("overbooked", element.getOverbookedElement());
45748      }
45749      if (element.hasCommentElement()) {
45750        composeString("comment", element.getCommentElement());
45751      }
45752  }
45753
45754  protected void composeSpecimen(String name, Specimen element) throws IOException {
45755    if (element != null) {
45756      composeDomainResourceAttributes(element);
45757      xml.enter(FHIR_NS, name);
45758      composeSpecimenElements(element);
45759      composeElementClose(element);
45760      xml.exit(FHIR_NS, name);
45761    }
45762  }
45763
45764  protected void composeSpecimenElements(Specimen element) throws IOException {
45765      composeDomainResourceElements(element);
45766      if (element.hasIdentifier()) { 
45767        for (Identifier e : element.getIdentifier()) 
45768          composeIdentifier("identifier", e);
45769      }
45770      if (element.hasAccessionIdentifier()) {
45771        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
45772      }
45773      if (element.hasStatusElement())
45774        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
45775      if (element.hasType()) {
45776        composeCodeableConcept("type", element.getType());
45777      }
45778      if (element.hasSubject()) {
45779        composeReference("subject", element.getSubject());
45780      }
45781      if (element.hasReceivedTimeElement()) {
45782        composeDateTime("receivedTime", element.getReceivedTimeElement());
45783      }
45784      if (element.hasParent()) { 
45785        for (Reference e : element.getParent()) 
45786          composeReference("parent", e);
45787      }
45788      if (element.hasRequest()) { 
45789        for (Reference e : element.getRequest()) 
45790          composeReference("request", e);
45791      }
45792      if (element.hasCollection()) {
45793        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
45794      }
45795      if (element.hasProcessing()) { 
45796        for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
45797          composeSpecimenSpecimenProcessingComponent("processing", e);
45798      }
45799      if (element.hasContainer()) { 
45800        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
45801          composeSpecimenSpecimenContainerComponent("container", e);
45802      }
45803      if (element.hasCondition()) { 
45804        for (CodeableConcept e : element.getCondition()) 
45805          composeCodeableConcept("condition", e);
45806      }
45807      if (element.hasNote()) { 
45808        for (Annotation e : element.getNote()) 
45809          composeAnnotation("note", e);
45810      }
45811  }
45812
45813  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
45814    if (element != null) {
45815      composeElementAttributes(element);
45816      xml.enter(FHIR_NS, name);
45817      composeSpecimenSpecimenCollectionComponentElements(element);
45818      composeElementClose(element);
45819      xml.exit(FHIR_NS, name);
45820    }
45821  }
45822
45823  protected void composeSpecimenSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
45824      composeBackboneElementElements(element);
45825      if (element.hasCollector()) {
45826        composeReference("collector", element.getCollector());
45827      }
45828      if (element.hasCollected()) {
45829        composeType("collected", element.getCollected());
45830      }      if (element.hasDuration()) {
45831        composeDuration("duration", element.getDuration());
45832      }
45833      if (element.hasQuantity()) {
45834        composeQuantity("quantity", element.getQuantity());
45835      }
45836      if (element.hasMethod()) {
45837        composeCodeableConcept("method", element.getMethod());
45838      }
45839      if (element.hasBodySite()) {
45840        composeCodeableConcept("bodySite", element.getBodySite());
45841      }
45842      if (element.hasFastingStatus()) {
45843        composeType("fastingStatus", element.getFastingStatus());
45844      }  }
45845
45846  protected void composeSpecimenSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
45847    if (element != null) {
45848      composeElementAttributes(element);
45849      xml.enter(FHIR_NS, name);
45850      composeSpecimenSpecimenProcessingComponentElements(element);
45851      composeElementClose(element);
45852      xml.exit(FHIR_NS, name);
45853    }
45854  }
45855
45856  protected void composeSpecimenSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
45857      composeBackboneElementElements(element);
45858      if (element.hasDescriptionElement()) {
45859        composeString("description", element.getDescriptionElement());
45860      }
45861      if (element.hasProcedure()) {
45862        composeCodeableConcept("procedure", element.getProcedure());
45863      }
45864      if (element.hasAdditive()) { 
45865        for (Reference e : element.getAdditive()) 
45866          composeReference("additive", e);
45867      }
45868      if (element.hasTime()) {
45869        composeType("time", element.getTime());
45870      }  }
45871
45872  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
45873    if (element != null) {
45874      composeElementAttributes(element);
45875      xml.enter(FHIR_NS, name);
45876      composeSpecimenSpecimenContainerComponentElements(element);
45877      composeElementClose(element);
45878      xml.exit(FHIR_NS, name);
45879    }
45880  }
45881
45882  protected void composeSpecimenSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
45883      composeBackboneElementElements(element);
45884      if (element.hasIdentifier()) { 
45885        for (Identifier e : element.getIdentifier()) 
45886          composeIdentifier("identifier", e);
45887      }
45888      if (element.hasDescriptionElement()) {
45889        composeString("description", element.getDescriptionElement());
45890      }
45891      if (element.hasType()) {
45892        composeCodeableConcept("type", element.getType());
45893      }
45894      if (element.hasCapacity()) {
45895        composeQuantity("capacity", element.getCapacity());
45896      }
45897      if (element.hasSpecimenQuantity()) {
45898        composeQuantity("specimenQuantity", element.getSpecimenQuantity());
45899      }
45900      if (element.hasAdditive()) {
45901        composeType("additive", element.getAdditive());
45902      }  }
45903
45904  protected void composeSpecimenDefinition(String name, SpecimenDefinition element) throws IOException {
45905    if (element != null) {
45906      composeDomainResourceAttributes(element);
45907      xml.enter(FHIR_NS, name);
45908      composeSpecimenDefinitionElements(element);
45909      composeElementClose(element);
45910      xml.exit(FHIR_NS, name);
45911    }
45912  }
45913
45914  protected void composeSpecimenDefinitionElements(SpecimenDefinition element) throws IOException {
45915      composeDomainResourceElements(element);
45916      if (element.hasIdentifier()) {
45917        composeIdentifier("identifier", element.getIdentifier());
45918      }
45919      if (element.hasTypeCollected()) {
45920        composeCodeableConcept("typeCollected", element.getTypeCollected());
45921      }
45922      if (element.hasPatientPreparation()) { 
45923        for (CodeableConcept e : element.getPatientPreparation()) 
45924          composeCodeableConcept("patientPreparation", e);
45925      }
45926      if (element.hasTimeAspectElement()) {
45927        composeString("timeAspect", element.getTimeAspectElement());
45928      }
45929      if (element.hasCollection()) { 
45930        for (CodeableConcept e : element.getCollection()) 
45931          composeCodeableConcept("collection", e);
45932      }
45933      if (element.hasTypeTested()) { 
45934        for (SpecimenDefinition.SpecimenDefinitionTypeTestedComponent e : element.getTypeTested()) 
45935          composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent("typeTested", e);
45936      }
45937  }
45938
45939  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
45940    if (element != null) {
45941      composeElementAttributes(element);
45942      xml.enter(FHIR_NS, name);
45943      composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponentElements(element);
45944      composeElementClose(element);
45945      xml.exit(FHIR_NS, name);
45946    }
45947  }
45948
45949  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
45950      composeBackboneElementElements(element);
45951      if (element.hasIsDerivedElement()) {
45952        composeBoolean("isDerived", element.getIsDerivedElement());
45953      }
45954      if (element.hasType()) {
45955        composeCodeableConcept("type", element.getType());
45956      }
45957      if (element.hasPreferenceElement())
45958        composeEnumeration("preference", element.getPreferenceElement(), new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
45959      if (element.hasContainer()) {
45960        composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent("container", element.getContainer());
45961      }
45962      if (element.hasRequirementElement()) {
45963        composeString("requirement", element.getRequirementElement());
45964      }
45965      if (element.hasRetentionTime()) {
45966        composeDuration("retentionTime", element.getRetentionTime());
45967      }
45968      if (element.hasRejectionCriterion()) { 
45969        for (CodeableConcept e : element.getRejectionCriterion()) 
45970          composeCodeableConcept("rejectionCriterion", e);
45971      }
45972      if (element.hasHandling()) { 
45973        for (SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent e : element.getHandling()) 
45974          composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent("handling", e);
45975      }
45976  }
45977
45978  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
45979    if (element != null) {
45980      composeElementAttributes(element);
45981      xml.enter(FHIR_NS, name);
45982      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentElements(element);
45983      composeElementClose(element);
45984      xml.exit(FHIR_NS, name);
45985    }
45986  }
45987
45988  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
45989      composeBackboneElementElements(element);
45990      if (element.hasMaterial()) {
45991        composeCodeableConcept("material", element.getMaterial());
45992      }
45993      if (element.hasType()) {
45994        composeCodeableConcept("type", element.getType());
45995      }
45996      if (element.hasCap()) {
45997        composeCodeableConcept("cap", element.getCap());
45998      }
45999      if (element.hasDescriptionElement()) {
46000        composeString("description", element.getDescriptionElement());
46001      }
46002      if (element.hasCapacity()) {
46003        composeQuantity("capacity", element.getCapacity());
46004      }
46005      if (element.hasMinimumVolume()) {
46006        composeType("minimumVolume", element.getMinimumVolume());
46007      }      if (element.hasAdditive()) { 
46008        for (SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent e : element.getAdditive()) 
46009          composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent("additive", e);
46010      }
46011      if (element.hasPreparationElement()) {
46012        composeString("preparation", element.getPreparationElement());
46013      }
46014  }
46015
46016  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
46017    if (element != null) {
46018      composeElementAttributes(element);
46019      xml.enter(FHIR_NS, name);
46020      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(element);
46021      composeElementClose(element);
46022      xml.exit(FHIR_NS, name);
46023    }
46024  }
46025
46026  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
46027      composeBackboneElementElements(element);
46028      if (element.hasAdditive()) {
46029        composeType("additive", element.getAdditive());
46030      }  }
46031
46032  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
46033    if (element != null) {
46034      composeElementAttributes(element);
46035      xml.enter(FHIR_NS, name);
46036      composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentElements(element);
46037      composeElementClose(element);
46038      xml.exit(FHIR_NS, name);
46039    }
46040  }
46041
46042  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
46043      composeBackboneElementElements(element);
46044      if (element.hasTemperatureQualifier()) {
46045        composeCodeableConcept("temperatureQualifier", element.getTemperatureQualifier());
46046      }
46047      if (element.hasTemperatureRange()) {
46048        composeRange("temperatureRange", element.getTemperatureRange());
46049      }
46050      if (element.hasMaxDuration()) {
46051        composeDuration("maxDuration", element.getMaxDuration());
46052      }
46053      if (element.hasInstructionElement()) {
46054        composeString("instruction", element.getInstructionElement());
46055      }
46056  }
46057
46058  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
46059    if (element != null) {
46060      composeDomainResourceAttributes(element);
46061      xml.enter(FHIR_NS, name);
46062      composeStructureDefinitionElements(element);
46063      composeElementClose(element);
46064      xml.exit(FHIR_NS, name);
46065    }
46066  }
46067
46068  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
46069      composeDomainResourceElements(element);
46070      if (element.hasUrlElement()) {
46071        composeUri("url", element.getUrlElement());
46072      }
46073      if (element.hasIdentifier()) { 
46074        for (Identifier e : element.getIdentifier()) 
46075          composeIdentifier("identifier", e);
46076      }
46077      if (element.hasVersionElement()) {
46078        composeString("version", element.getVersionElement());
46079      }
46080      if (element.hasNameElement()) {
46081        composeString("name", element.getNameElement());
46082      }
46083      if (element.hasTitleElement()) {
46084        composeString("title", element.getTitleElement());
46085      }
46086      if (element.hasStatusElement())
46087        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46088      if (element.hasExperimentalElement()) {
46089        composeBoolean("experimental", element.getExperimentalElement());
46090      }
46091      if (element.hasDateElement()) {
46092        composeDateTime("date", element.getDateElement());
46093      }
46094      if (element.hasPublisherElement()) {
46095        composeString("publisher", element.getPublisherElement());
46096      }
46097      if (element.hasContact()) { 
46098        for (ContactDetail e : element.getContact()) 
46099          composeContactDetail("contact", e);
46100      }
46101      if (element.hasDescriptionElement()) {
46102        composeMarkdown("description", element.getDescriptionElement());
46103      }
46104      if (element.hasUseContext()) { 
46105        for (UsageContext e : element.getUseContext()) 
46106          composeUsageContext("useContext", e);
46107      }
46108      if (element.hasJurisdiction()) { 
46109        for (CodeableConcept e : element.getJurisdiction()) 
46110          composeCodeableConcept("jurisdiction", e);
46111      }
46112      if (element.hasPurposeElement()) {
46113        composeMarkdown("purpose", element.getPurposeElement());
46114      }
46115      if (element.hasCopyrightElement()) {
46116        composeMarkdown("copyright", element.getCopyrightElement());
46117      }
46118      if (element.hasKeyword()) { 
46119        for (Coding e : element.getKeyword()) 
46120          composeCoding("keyword", e);
46121      }
46122      if (element.hasFhirVersionElement())
46123        composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
46124      if (element.hasMapping()) { 
46125        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
46126          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
46127      }
46128      if (element.hasKindElement())
46129        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
46130      if (element.hasAbstractElement()) {
46131        composeBoolean("abstract", element.getAbstractElement());
46132      }
46133      if (element.hasContext()) { 
46134        for (StructureDefinition.StructureDefinitionContextComponent e : element.getContext()) 
46135          composeStructureDefinitionStructureDefinitionContextComponent("context", e);
46136      }
46137      if (element.hasContextInvariant()) { 
46138        for (StringType e : element.getContextInvariant()) 
46139          composeString("contextInvariant", e);
46140      }
46141      if (element.hasTypeElement()) {
46142        composeUri("type", element.getTypeElement());
46143      }
46144      if (element.hasBaseDefinitionElement()) {
46145        composeCanonical("baseDefinition", element.getBaseDefinitionElement());
46146      }
46147      if (element.hasDerivationElement())
46148        composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
46149      if (element.hasSnapshot()) {
46150        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
46151      }
46152      if (element.hasDifferential()) {
46153        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
46154      }
46155  }
46156
46157  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
46158    if (element != null) {
46159      composeElementAttributes(element);
46160      xml.enter(FHIR_NS, name);
46161      composeStructureDefinitionStructureDefinitionMappingComponentElements(element);
46162      composeElementClose(element);
46163      xml.exit(FHIR_NS, name);
46164    }
46165  }
46166
46167  protected void composeStructureDefinitionStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
46168      composeBackboneElementElements(element);
46169      if (element.hasIdentityElement()) {
46170        composeId("identity", element.getIdentityElement());
46171      }
46172      if (element.hasUriElement()) {
46173        composeUri("uri", element.getUriElement());
46174      }
46175      if (element.hasNameElement()) {
46176        composeString("name", element.getNameElement());
46177      }
46178      if (element.hasCommentElement()) {
46179        composeString("comment", element.getCommentElement());
46180      }
46181  }
46182
46183  protected void composeStructureDefinitionStructureDefinitionContextComponent(String name, StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
46184    if (element != null) {
46185      composeElementAttributes(element);
46186      xml.enter(FHIR_NS, name);
46187      composeStructureDefinitionStructureDefinitionContextComponentElements(element);
46188      composeElementClose(element);
46189      xml.exit(FHIR_NS, name);
46190    }
46191  }
46192
46193  protected void composeStructureDefinitionStructureDefinitionContextComponentElements(StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
46194      composeBackboneElementElements(element);
46195      if (element.hasTypeElement())
46196        composeEnumeration("type", element.getTypeElement(), new StructureDefinition.ExtensionContextTypeEnumFactory());
46197      if (element.hasExpressionElement()) {
46198        composeString("expression", element.getExpressionElement());
46199      }
46200  }
46201
46202  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
46203    if (element != null) {
46204      composeElementAttributes(element);
46205      xml.enter(FHIR_NS, name);
46206      composeStructureDefinitionStructureDefinitionSnapshotComponentElements(element);
46207      composeElementClose(element);
46208      xml.exit(FHIR_NS, name);
46209    }
46210  }
46211
46212  protected void composeStructureDefinitionStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
46213      composeBackboneElementElements(element);
46214      if (element.hasElement()) { 
46215        for (ElementDefinition e : element.getElement()) 
46216          composeElementDefinition("element", e);
46217      }
46218  }
46219
46220  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
46221    if (element != null) {
46222      composeElementAttributes(element);
46223      xml.enter(FHIR_NS, name);
46224      composeStructureDefinitionStructureDefinitionDifferentialComponentElements(element);
46225      composeElementClose(element);
46226      xml.exit(FHIR_NS, name);
46227    }
46228  }
46229
46230  protected void composeStructureDefinitionStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
46231      composeBackboneElementElements(element);
46232      if (element.hasElement()) { 
46233        for (ElementDefinition e : element.getElement()) 
46234          composeElementDefinition("element", e);
46235      }
46236  }
46237
46238  protected void composeStructureMap(String name, StructureMap element) throws IOException {
46239    if (element != null) {
46240      composeDomainResourceAttributes(element);
46241      xml.enter(FHIR_NS, name);
46242      composeStructureMapElements(element);
46243      composeElementClose(element);
46244      xml.exit(FHIR_NS, name);
46245    }
46246  }
46247
46248  protected void composeStructureMapElements(StructureMap element) throws IOException {
46249      composeDomainResourceElements(element);
46250      if (element.hasUrlElement()) {
46251        composeUri("url", element.getUrlElement());
46252      }
46253      if (element.hasIdentifier()) { 
46254        for (Identifier e : element.getIdentifier()) 
46255          composeIdentifier("identifier", e);
46256      }
46257      if (element.hasVersionElement()) {
46258        composeString("version", element.getVersionElement());
46259      }
46260      if (element.hasNameElement()) {
46261        composeString("name", element.getNameElement());
46262      }
46263      if (element.hasTitleElement()) {
46264        composeString("title", element.getTitleElement());
46265      }
46266      if (element.hasStatusElement())
46267        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46268      if (element.hasExperimentalElement()) {
46269        composeBoolean("experimental", element.getExperimentalElement());
46270      }
46271      if (element.hasDateElement()) {
46272        composeDateTime("date", element.getDateElement());
46273      }
46274      if (element.hasPublisherElement()) {
46275        composeString("publisher", element.getPublisherElement());
46276      }
46277      if (element.hasContact()) { 
46278        for (ContactDetail e : element.getContact()) 
46279          composeContactDetail("contact", e);
46280      }
46281      if (element.hasDescriptionElement()) {
46282        composeMarkdown("description", element.getDescriptionElement());
46283      }
46284      if (element.hasUseContext()) { 
46285        for (UsageContext e : element.getUseContext()) 
46286          composeUsageContext("useContext", e);
46287      }
46288      if (element.hasJurisdiction()) { 
46289        for (CodeableConcept e : element.getJurisdiction()) 
46290          composeCodeableConcept("jurisdiction", e);
46291      }
46292      if (element.hasPurposeElement()) {
46293        composeMarkdown("purpose", element.getPurposeElement());
46294      }
46295      if (element.hasCopyrightElement()) {
46296        composeMarkdown("copyright", element.getCopyrightElement());
46297      }
46298      if (element.hasStructure()) { 
46299        for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
46300          composeStructureMapStructureMapStructureComponent("structure", e);
46301      }
46302      if (element.hasImport()) { 
46303        for (CanonicalType e : element.getImport()) 
46304          composeCanonical("import", e);
46305      }
46306      if (element.hasGroup()) { 
46307        for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
46308          composeStructureMapStructureMapGroupComponent("group", e);
46309      }
46310  }
46311
46312  protected void composeStructureMapStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
46313    if (element != null) {
46314      composeElementAttributes(element);
46315      xml.enter(FHIR_NS, name);
46316      composeStructureMapStructureMapStructureComponentElements(element);
46317      composeElementClose(element);
46318      xml.exit(FHIR_NS, name);
46319    }
46320  }
46321
46322  protected void composeStructureMapStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
46323      composeBackboneElementElements(element);
46324      if (element.hasUrlElement()) {
46325        composeCanonical("url", element.getUrlElement());
46326      }
46327      if (element.hasModeElement())
46328        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
46329      if (element.hasAliasElement()) {
46330        composeString("alias", element.getAliasElement());
46331      }
46332      if (element.hasDocumentationElement()) {
46333        composeString("documentation", element.getDocumentationElement());
46334      }
46335  }
46336
46337  protected void composeStructureMapStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
46338    if (element != null) {
46339      composeElementAttributes(element);
46340      xml.enter(FHIR_NS, name);
46341      composeStructureMapStructureMapGroupComponentElements(element);
46342      composeElementClose(element);
46343      xml.exit(FHIR_NS, name);
46344    }
46345  }
46346
46347  protected void composeStructureMapStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
46348      composeBackboneElementElements(element);
46349      if (element.hasNameElement()) {
46350        composeId("name", element.getNameElement());
46351      }
46352      if (element.hasExtendsElement()) {
46353        composeId("extends", element.getExtendsElement());
46354      }
46355      if (element.hasTypeModeElement())
46356        composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
46357      if (element.hasDocumentationElement()) {
46358        composeString("documentation", element.getDocumentationElement());
46359      }
46360      if (element.hasInput()) { 
46361        for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
46362          composeStructureMapStructureMapGroupInputComponent("input", e);
46363      }
46364      if (element.hasRule()) { 
46365        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
46366          composeStructureMapStructureMapGroupRuleComponent("rule", e);
46367      }
46368  }
46369
46370  protected void composeStructureMapStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
46371    if (element != null) {
46372      composeElementAttributes(element);
46373      xml.enter(FHIR_NS, name);
46374      composeStructureMapStructureMapGroupInputComponentElements(element);
46375      composeElementClose(element);
46376      xml.exit(FHIR_NS, name);
46377    }
46378  }
46379
46380  protected void composeStructureMapStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
46381      composeBackboneElementElements(element);
46382      if (element.hasNameElement()) {
46383        composeId("name", element.getNameElement());
46384      }
46385      if (element.hasTypeElement()) {
46386        composeString("type", element.getTypeElement());
46387      }
46388      if (element.hasModeElement())
46389        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
46390      if (element.hasDocumentationElement()) {
46391        composeString("documentation", element.getDocumentationElement());
46392      }
46393  }
46394
46395  protected void composeStructureMapStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
46396    if (element != null) {
46397      composeElementAttributes(element);
46398      xml.enter(FHIR_NS, name);
46399      composeStructureMapStructureMapGroupRuleComponentElements(element);
46400      composeElementClose(element);
46401      xml.exit(FHIR_NS, name);
46402    }
46403  }
46404
46405  protected void composeStructureMapStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
46406      composeBackboneElementElements(element);
46407      if (element.hasNameElement()) {
46408        composeId("name", element.getNameElement());
46409      }
46410      if (element.hasSource()) { 
46411        for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
46412          composeStructureMapStructureMapGroupRuleSourceComponent("source", e);
46413      }
46414      if (element.hasTarget()) { 
46415        for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
46416          composeStructureMapStructureMapGroupRuleTargetComponent("target", e);
46417      }
46418      if (element.hasRule()) { 
46419        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
46420          composeStructureMapStructureMapGroupRuleComponent("rule", e);
46421      }
46422      if (element.hasDependent()) { 
46423        for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
46424          composeStructureMapStructureMapGroupRuleDependentComponent("dependent", e);
46425      }
46426      if (element.hasDocumentationElement()) {
46427        composeString("documentation", element.getDocumentationElement());
46428      }
46429  }
46430
46431  protected void composeStructureMapStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
46432    if (element != null) {
46433      composeElementAttributes(element);
46434      xml.enter(FHIR_NS, name);
46435      composeStructureMapStructureMapGroupRuleSourceComponentElements(element);
46436      composeElementClose(element);
46437      xml.exit(FHIR_NS, name);
46438    }
46439  }
46440
46441  protected void composeStructureMapStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
46442      composeBackboneElementElements(element);
46443      if (element.hasContextElement()) {
46444        composeId("context", element.getContextElement());
46445      }
46446      if (element.hasMinElement()) {
46447        composeInteger("min", element.getMinElement());
46448      }
46449      if (element.hasMaxElement()) {
46450        composeString("max", element.getMaxElement());
46451      }
46452      if (element.hasTypeElement()) {
46453        composeString("type", element.getTypeElement());
46454      }
46455      if (element.hasDefaultValue()) {
46456        composeType("defaultValue", element.getDefaultValue());
46457      }      if (element.hasElementElement()) {
46458        composeString("element", element.getElementElement());
46459      }
46460      if (element.hasListModeElement())
46461        composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
46462      if (element.hasVariableElement()) {
46463        composeId("variable", element.getVariableElement());
46464      }
46465      if (element.hasConditionElement()) {
46466        composeString("condition", element.getConditionElement());
46467      }
46468      if (element.hasCheckElement()) {
46469        composeString("check", element.getCheckElement());
46470      }
46471      if (element.hasLogMessageElement()) {
46472        composeString("logMessage", element.getLogMessageElement());
46473      }
46474  }
46475
46476  protected void composeStructureMapStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
46477    if (element != null) {
46478      composeElementAttributes(element);
46479      xml.enter(FHIR_NS, name);
46480      composeStructureMapStructureMapGroupRuleTargetComponentElements(element);
46481      composeElementClose(element);
46482      xml.exit(FHIR_NS, name);
46483    }
46484  }
46485
46486  protected void composeStructureMapStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
46487      composeBackboneElementElements(element);
46488      if (element.hasContextElement()) {
46489        composeId("context", element.getContextElement());
46490      }
46491      if (element.hasContextTypeElement())
46492        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
46493      if (element.hasElementElement()) {
46494        composeString("element", element.getElementElement());
46495      }
46496      if (element.hasVariableElement()) {
46497        composeId("variable", element.getVariableElement());
46498      }
46499        if (element.hasListMode()) 
46500          for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
46501            composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
46502      if (element.hasListRuleIdElement()) {
46503        composeId("listRuleId", element.getListRuleIdElement());
46504      }
46505      if (element.hasTransformElement())
46506        composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
46507      if (element.hasParameter()) { 
46508        for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
46509          composeStructureMapStructureMapGroupRuleTargetParameterComponent("parameter", e);
46510      }
46511  }
46512
46513  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
46514    if (element != null) {
46515      composeElementAttributes(element);
46516      xml.enter(FHIR_NS, name);
46517      composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(element);
46518      composeElementClose(element);
46519      xml.exit(FHIR_NS, name);
46520    }
46521  }
46522
46523  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
46524      composeBackboneElementElements(element);
46525      if (element.hasValue()) {
46526        composeType("value", element.getValue());
46527      }  }
46528
46529  protected void composeStructureMapStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
46530    if (element != null) {
46531      composeElementAttributes(element);
46532      xml.enter(FHIR_NS, name);
46533      composeStructureMapStructureMapGroupRuleDependentComponentElements(element);
46534      composeElementClose(element);
46535      xml.exit(FHIR_NS, name);
46536    }
46537  }
46538
46539  protected void composeStructureMapStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
46540      composeBackboneElementElements(element);
46541      if (element.hasNameElement()) {
46542        composeId("name", element.getNameElement());
46543      }
46544      if (element.hasVariable()) { 
46545        for (StringType e : element.getVariable()) 
46546          composeString("variable", e);
46547      }
46548  }
46549
46550  protected void composeSubscription(String name, Subscription element) throws IOException {
46551    if (element != null) {
46552      composeDomainResourceAttributes(element);
46553      xml.enter(FHIR_NS, name);
46554      composeSubscriptionElements(element);
46555      composeElementClose(element);
46556      xml.exit(FHIR_NS, name);
46557    }
46558  }
46559
46560  protected void composeSubscriptionElements(Subscription element) throws IOException {
46561      composeDomainResourceElements(element);
46562      if (element.hasStatusElement())
46563        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
46564      if (element.hasContact()) { 
46565        for (ContactPoint e : element.getContact()) 
46566          composeContactPoint("contact", e);
46567      }
46568      if (element.hasEndElement()) {
46569        composeInstant("end", element.getEndElement());
46570      }
46571      if (element.hasReasonElement()) {
46572        composeString("reason", element.getReasonElement());
46573      }
46574      if (element.hasCriteriaElement()) {
46575        composeString("criteria", element.getCriteriaElement());
46576      }
46577      if (element.hasErrorElement()) {
46578        composeString("error", element.getErrorElement());
46579      }
46580      if (element.hasChannel()) {
46581        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
46582      }
46583  }
46584
46585  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
46586    if (element != null) {
46587      composeElementAttributes(element);
46588      xml.enter(FHIR_NS, name);
46589      composeSubscriptionSubscriptionChannelComponentElements(element);
46590      composeElementClose(element);
46591      xml.exit(FHIR_NS, name);
46592    }
46593  }
46594
46595  protected void composeSubscriptionSubscriptionChannelComponentElements(Subscription.SubscriptionChannelComponent element) throws IOException {
46596      composeBackboneElementElements(element);
46597      if (element.hasTypeElement())
46598        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
46599      if (element.hasEndpointElement()) {
46600        composeUrl("endpoint", element.getEndpointElement());
46601      }
46602      if (element.hasPayloadElement()) {
46603        composeCode("payload", element.getPayloadElement());
46604      }
46605      if (element.hasHeader()) { 
46606        for (StringType e : element.getHeader()) 
46607          composeString("header", e);
46608      }
46609  }
46610
46611  protected void composeSubstance(String name, Substance element) throws IOException {
46612    if (element != null) {
46613      composeDomainResourceAttributes(element);
46614      xml.enter(FHIR_NS, name);
46615      composeSubstanceElements(element);
46616      composeElementClose(element);
46617      xml.exit(FHIR_NS, name);
46618    }
46619  }
46620
46621  protected void composeSubstanceElements(Substance element) throws IOException {
46622      composeDomainResourceElements(element);
46623      if (element.hasIdentifier()) { 
46624        for (Identifier e : element.getIdentifier()) 
46625          composeIdentifier("identifier", e);
46626      }
46627      if (element.hasStatusElement())
46628        composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
46629      if (element.hasCategory()) { 
46630        for (CodeableConcept e : element.getCategory()) 
46631          composeCodeableConcept("category", e);
46632      }
46633      if (element.hasCode()) {
46634        composeCodeableConcept("code", element.getCode());
46635      }
46636      if (element.hasDescriptionElement()) {
46637        composeString("description", element.getDescriptionElement());
46638      }
46639      if (element.hasInstance()) { 
46640        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
46641          composeSubstanceSubstanceInstanceComponent("instance", e);
46642      }
46643      if (element.hasIngredient()) { 
46644        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
46645          composeSubstanceSubstanceIngredientComponent("ingredient", e);
46646      }
46647  }
46648
46649  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
46650    if (element != null) {
46651      composeElementAttributes(element);
46652      xml.enter(FHIR_NS, name);
46653      composeSubstanceSubstanceInstanceComponentElements(element);
46654      composeElementClose(element);
46655      xml.exit(FHIR_NS, name);
46656    }
46657  }
46658
46659  protected void composeSubstanceSubstanceInstanceComponentElements(Substance.SubstanceInstanceComponent element) throws IOException {
46660      composeBackboneElementElements(element);
46661      if (element.hasIdentifier()) {
46662        composeIdentifier("identifier", element.getIdentifier());
46663      }
46664      if (element.hasExpiryElement()) {
46665        composeDateTime("expiry", element.getExpiryElement());
46666      }
46667      if (element.hasQuantity()) {
46668        composeQuantity("quantity", element.getQuantity());
46669      }
46670  }
46671
46672  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
46673    if (element != null) {
46674      composeElementAttributes(element);
46675      xml.enter(FHIR_NS, name);
46676      composeSubstanceSubstanceIngredientComponentElements(element);
46677      composeElementClose(element);
46678      xml.exit(FHIR_NS, name);
46679    }
46680  }
46681
46682  protected void composeSubstanceSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
46683      composeBackboneElementElements(element);
46684      if (element.hasQuantity()) {
46685        composeRatio("quantity", element.getQuantity());
46686      }
46687      if (element.hasSubstance()) {
46688        composeType("substance", element.getSubstance());
46689      }  }
46690
46691  protected void composeSubstanceNucleicAcid(String name, SubstanceNucleicAcid element) throws IOException {
46692    if (element != null) {
46693      composeDomainResourceAttributes(element);
46694      xml.enter(FHIR_NS, name);
46695      composeSubstanceNucleicAcidElements(element);
46696      composeElementClose(element);
46697      xml.exit(FHIR_NS, name);
46698    }
46699  }
46700
46701  protected void composeSubstanceNucleicAcidElements(SubstanceNucleicAcid element) throws IOException {
46702      composeDomainResourceElements(element);
46703      if (element.hasSequenceType()) {
46704        composeCodeableConcept("sequenceType", element.getSequenceType());
46705      }
46706      if (element.hasNumberOfSubunitsElement()) {
46707        composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
46708      }
46709      if (element.hasAreaOfHybridisationElement()) {
46710        composeString("areaOfHybridisation", element.getAreaOfHybridisationElement());
46711      }
46712      if (element.hasOligoNucleotideType()) {
46713        composeCodeableConcept("oligoNucleotideType", element.getOligoNucleotideType());
46714      }
46715      if (element.hasSubunit()) { 
46716        for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent e : element.getSubunit()) 
46717          composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent("subunit", e);
46718      }
46719  }
46720
46721  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
46722    if (element != null) {
46723      composeElementAttributes(element);
46724      xml.enter(FHIR_NS, name);
46725      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentElements(element);
46726      composeElementClose(element);
46727      xml.exit(FHIR_NS, name);
46728    }
46729  }
46730
46731  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
46732      composeBackboneElementElements(element);
46733      if (element.hasSubunitElement()) {
46734        composeInteger("subunit", element.getSubunitElement());
46735      }
46736      if (element.hasSequenceElement()) {
46737        composeString("sequence", element.getSequenceElement());
46738      }
46739      if (element.hasLengthElement()) {
46740        composeInteger("length", element.getLengthElement());
46741      }
46742      if (element.hasSequenceAttachment()) {
46743        composeAttachment("sequenceAttachment", element.getSequenceAttachment());
46744      }
46745      if (element.hasFivePrime()) {
46746        composeCodeableConcept("fivePrime", element.getFivePrime());
46747      }
46748      if (element.hasThreePrime()) {
46749        composeCodeableConcept("threePrime", element.getThreePrime());
46750      }
46751      if (element.hasLinkage()) { 
46752        for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent e : element.getLinkage()) 
46753          composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent("linkage", e);
46754      }
46755      if (element.hasSugar()) { 
46756        for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent e : element.getSugar()) 
46757          composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent("sugar", e);
46758      }
46759  }
46760
46761  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
46762    if (element != null) {
46763      composeElementAttributes(element);
46764      xml.enter(FHIR_NS, name);
46765      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentElements(element);
46766      composeElementClose(element);
46767      xml.exit(FHIR_NS, name);
46768    }
46769  }
46770
46771  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
46772      composeBackboneElementElements(element);
46773      if (element.hasConnectivityElement()) {
46774        composeString("connectivity", element.getConnectivityElement());
46775      }
46776      if (element.hasIdentifier()) {
46777        composeIdentifier("identifier", element.getIdentifier());
46778      }
46779      if (element.hasNameElement()) {
46780        composeString("name", element.getNameElement());
46781      }
46782      if (element.hasResidueSiteElement()) {
46783        composeString("residueSite", element.getResidueSiteElement());
46784      }
46785  }
46786
46787  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
46788    if (element != null) {
46789      composeElementAttributes(element);
46790      xml.enter(FHIR_NS, name);
46791      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentElements(element);
46792      composeElementClose(element);
46793      xml.exit(FHIR_NS, name);
46794    }
46795  }
46796
46797  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
46798      composeBackboneElementElements(element);
46799      if (element.hasIdentifier()) {
46800        composeIdentifier("identifier", element.getIdentifier());
46801      }
46802      if (element.hasNameElement()) {
46803        composeString("name", element.getNameElement());
46804      }
46805      if (element.hasResidueSiteElement()) {
46806        composeString("residueSite", element.getResidueSiteElement());
46807      }
46808  }
46809
46810  protected void composeSubstancePolymer(String name, SubstancePolymer element) throws IOException {
46811    if (element != null) {
46812      composeDomainResourceAttributes(element);
46813      xml.enter(FHIR_NS, name);
46814      composeSubstancePolymerElements(element);
46815      composeElementClose(element);
46816      xml.exit(FHIR_NS, name);
46817    }
46818  }
46819
46820  protected void composeSubstancePolymerElements(SubstancePolymer element) throws IOException {
46821      composeDomainResourceElements(element);
46822      if (element.hasClass_()) {
46823        composeCodeableConcept("class", element.getClass_());
46824      }
46825      if (element.hasGeometry()) {
46826        composeCodeableConcept("geometry", element.getGeometry());
46827      }
46828      if (element.hasCopolymerConnectivity()) { 
46829        for (CodeableConcept e : element.getCopolymerConnectivity()) 
46830          composeCodeableConcept("copolymerConnectivity", e);
46831      }
46832      if (element.hasModification()) { 
46833        for (StringType e : element.getModification()) 
46834          composeString("modification", e);
46835      }
46836      if (element.hasMonomerSet()) { 
46837        for (SubstancePolymer.SubstancePolymerMonomerSetComponent e : element.getMonomerSet()) 
46838          composeSubstancePolymerSubstancePolymerMonomerSetComponent("monomerSet", e);
46839      }
46840      if (element.hasRepeat()) { 
46841        for (SubstancePolymer.SubstancePolymerRepeatComponent e : element.getRepeat()) 
46842          composeSubstancePolymerSubstancePolymerRepeatComponent("repeat", e);
46843      }
46844  }
46845
46846  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
46847    if (element != null) {
46848      composeElementAttributes(element);
46849      xml.enter(FHIR_NS, name);
46850      composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(element);
46851      composeElementClose(element);
46852      xml.exit(FHIR_NS, name);
46853    }
46854  }
46855
46856  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
46857      composeBackboneElementElements(element);
46858      if (element.hasRatioType()) {
46859        composeCodeableConcept("ratioType", element.getRatioType());
46860      }
46861      if (element.hasStartingMaterial()) { 
46862        for (SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent e : element.getStartingMaterial()) 
46863          composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent("startingMaterial", e);
46864      }
46865  }
46866
46867  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
46868    if (element != null) {
46869      composeElementAttributes(element);
46870      xml.enter(FHIR_NS, name);
46871      composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(element);
46872      composeElementClose(element);
46873      xml.exit(FHIR_NS, name);
46874    }
46875  }
46876
46877  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
46878      composeBackboneElementElements(element);
46879      if (element.hasMaterial()) {
46880        composeCodeableConcept("material", element.getMaterial());
46881      }
46882      if (element.hasType()) {
46883        composeCodeableConcept("type", element.getType());
46884      }
46885      if (element.hasIsDefiningElement()) {
46886        composeBoolean("isDefining", element.getIsDefiningElement());
46887      }
46888      if (element.hasAmount()) {
46889        composeSubstanceAmount("amount", element.getAmount());
46890      }
46891  }
46892
46893  protected void composeSubstancePolymerSubstancePolymerRepeatComponent(String name, SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
46894    if (element != null) {
46895      composeElementAttributes(element);
46896      xml.enter(FHIR_NS, name);
46897      composeSubstancePolymerSubstancePolymerRepeatComponentElements(element);
46898      composeElementClose(element);
46899      xml.exit(FHIR_NS, name);
46900    }
46901  }
46902
46903  protected void composeSubstancePolymerSubstancePolymerRepeatComponentElements(SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
46904      composeBackboneElementElements(element);
46905      if (element.hasNumberOfUnitsElement()) {
46906        composeInteger("numberOfUnits", element.getNumberOfUnitsElement());
46907      }
46908      if (element.hasAverageMolecularFormulaElement()) {
46909        composeString("averageMolecularFormula", element.getAverageMolecularFormulaElement());
46910      }
46911      if (element.hasRepeatUnitAmountType()) {
46912        composeCodeableConcept("repeatUnitAmountType", element.getRepeatUnitAmountType());
46913      }
46914      if (element.hasRepeatUnit()) { 
46915        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent e : element.getRepeatUnit()) 
46916          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent("repeatUnit", e);
46917      }
46918  }
46919
46920  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
46921    if (element != null) {
46922      composeElementAttributes(element);
46923      xml.enter(FHIR_NS, name);
46924      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(element);
46925      composeElementClose(element);
46926      xml.exit(FHIR_NS, name);
46927    }
46928  }
46929
46930  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
46931      composeBackboneElementElements(element);
46932      if (element.hasOrientationOfPolymerisation()) {
46933        composeCodeableConcept("orientationOfPolymerisation", element.getOrientationOfPolymerisation());
46934      }
46935      if (element.hasRepeatUnitElement()) {
46936        composeString("repeatUnit", element.getRepeatUnitElement());
46937      }
46938      if (element.hasAmount()) {
46939        composeSubstanceAmount("amount", element.getAmount());
46940      }
46941      if (element.hasDegreeOfPolymerisation()) { 
46942        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent e : element.getDegreeOfPolymerisation()) 
46943          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent("degreeOfPolymerisation", e);
46944      }
46945      if (element.hasStructuralRepresentation()) { 
46946        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent e : element.getStructuralRepresentation()) 
46947          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent("structuralRepresentation", e);
46948      }
46949  }
46950
46951  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
46952    if (element != null) {
46953      composeElementAttributes(element);
46954      xml.enter(FHIR_NS, name);
46955      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(element);
46956      composeElementClose(element);
46957      xml.exit(FHIR_NS, name);
46958    }
46959  }
46960
46961  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
46962      composeBackboneElementElements(element);
46963      if (element.hasDegree()) {
46964        composeCodeableConcept("degree", element.getDegree());
46965      }
46966      if (element.hasAmount()) {
46967        composeSubstanceAmount("amount", element.getAmount());
46968      }
46969  }
46970
46971  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
46972    if (element != null) {
46973      composeElementAttributes(element);
46974      xml.enter(FHIR_NS, name);
46975      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(element);
46976      composeElementClose(element);
46977      xml.exit(FHIR_NS, name);
46978    }
46979  }
46980
46981  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
46982      composeBackboneElementElements(element);
46983      if (element.hasType()) {
46984        composeCodeableConcept("type", element.getType());
46985      }
46986      if (element.hasRepresentationElement()) {
46987        composeString("representation", element.getRepresentationElement());
46988      }
46989      if (element.hasAttachment()) {
46990        composeAttachment("attachment", element.getAttachment());
46991      }
46992  }
46993
46994  protected void composeSubstanceProtein(String name, SubstanceProtein element) throws IOException {
46995    if (element != null) {
46996      composeDomainResourceAttributes(element);
46997      xml.enter(FHIR_NS, name);
46998      composeSubstanceProteinElements(element);
46999      composeElementClose(element);
47000      xml.exit(FHIR_NS, name);
47001    }
47002  }
47003
47004  protected void composeSubstanceProteinElements(SubstanceProtein element) throws IOException {
47005      composeDomainResourceElements(element);
47006      if (element.hasSequenceType()) {
47007        composeCodeableConcept("sequenceType", element.getSequenceType());
47008      }
47009      if (element.hasNumberOfSubunitsElement()) {
47010        composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
47011      }
47012      if (element.hasDisulfideLinkage()) { 
47013        for (StringType e : element.getDisulfideLinkage()) 
47014          composeString("disulfideLinkage", e);
47015      }
47016      if (element.hasSubunit()) { 
47017        for (SubstanceProtein.SubstanceProteinSubunitComponent e : element.getSubunit()) 
47018          composeSubstanceProteinSubstanceProteinSubunitComponent("subunit", e);
47019      }
47020  }
47021
47022  protected void composeSubstanceProteinSubstanceProteinSubunitComponent(String name, SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
47023    if (element != null) {
47024      composeElementAttributes(element);
47025      xml.enter(FHIR_NS, name);
47026      composeSubstanceProteinSubstanceProteinSubunitComponentElements(element);
47027      composeElementClose(element);
47028      xml.exit(FHIR_NS, name);
47029    }
47030  }
47031
47032  protected void composeSubstanceProteinSubstanceProteinSubunitComponentElements(SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
47033      composeBackboneElementElements(element);
47034      if (element.hasSubunitElement()) {
47035        composeInteger("subunit", element.getSubunitElement());
47036      }
47037      if (element.hasSequenceElement()) {
47038        composeString("sequence", element.getSequenceElement());
47039      }
47040      if (element.hasLengthElement()) {
47041        composeInteger("length", element.getLengthElement());
47042      }
47043      if (element.hasSequenceAttachment()) {
47044        composeAttachment("sequenceAttachment", element.getSequenceAttachment());
47045      }
47046      if (element.hasNTerminalModificationId()) {
47047        composeIdentifier("nTerminalModificationId", element.getNTerminalModificationId());
47048      }
47049      if (element.hasNTerminalModificationElement()) {
47050        composeString("nTerminalModification", element.getNTerminalModificationElement());
47051      }
47052      if (element.hasCTerminalModificationId()) {
47053        composeIdentifier("cTerminalModificationId", element.getCTerminalModificationId());
47054      }
47055      if (element.hasCTerminalModificationElement()) {
47056        composeString("cTerminalModification", element.getCTerminalModificationElement());
47057      }
47058  }
47059
47060  protected void composeSubstanceReferenceInformation(String name, SubstanceReferenceInformation element) throws IOException {
47061    if (element != null) {
47062      composeDomainResourceAttributes(element);
47063      xml.enter(FHIR_NS, name);
47064      composeSubstanceReferenceInformationElements(element);
47065      composeElementClose(element);
47066      xml.exit(FHIR_NS, name);
47067    }
47068  }
47069
47070  protected void composeSubstanceReferenceInformationElements(SubstanceReferenceInformation element) throws IOException {
47071      composeDomainResourceElements(element);
47072      if (element.hasCommentElement()) {
47073        composeString("comment", element.getCommentElement());
47074      }
47075      if (element.hasGene()) { 
47076        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent e : element.getGene()) 
47077          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent("gene", e);
47078      }
47079      if (element.hasGeneElement()) { 
47080        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent e : element.getGeneElement()) 
47081          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent("geneElement", e);
47082      }
47083      if (element.hasClassification()) { 
47084        for (SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent e : element.getClassification()) 
47085          composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent("classification", e);
47086      }
47087      if (element.hasTarget()) { 
47088        for (SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent e : element.getTarget()) 
47089          composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent("target", e);
47090      }
47091  }
47092
47093  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
47094    if (element != null) {
47095      composeElementAttributes(element);
47096      xml.enter(FHIR_NS, name);
47097      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(element);
47098      composeElementClose(element);
47099      xml.exit(FHIR_NS, name);
47100    }
47101  }
47102
47103  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
47104      composeBackboneElementElements(element);
47105      if (element.hasGeneSequenceOrigin()) {
47106        composeCodeableConcept("geneSequenceOrigin", element.getGeneSequenceOrigin());
47107      }
47108      if (element.hasGene()) {
47109        composeCodeableConcept("gene", element.getGene());
47110      }
47111      if (element.hasSource()) { 
47112        for (Reference e : element.getSource()) 
47113          composeReference("source", e);
47114      }
47115  }
47116
47117  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
47118    if (element != null) {
47119      composeElementAttributes(element);
47120      xml.enter(FHIR_NS, name);
47121      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(element);
47122      composeElementClose(element);
47123      xml.exit(FHIR_NS, name);
47124    }
47125  }
47126
47127  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
47128      composeBackboneElementElements(element);
47129      if (element.hasType()) {
47130        composeCodeableConcept("type", element.getType());
47131      }
47132      if (element.hasElement()) {
47133        composeIdentifier("element", element.getElement());
47134      }
47135      if (element.hasSource()) { 
47136        for (Reference e : element.getSource()) 
47137          composeReference("source", e);
47138      }
47139  }
47140
47141  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
47142    if (element != null) {
47143      composeElementAttributes(element);
47144      xml.enter(FHIR_NS, name);
47145      composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(element);
47146      composeElementClose(element);
47147      xml.exit(FHIR_NS, name);
47148    }
47149  }
47150
47151  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
47152      composeBackboneElementElements(element);
47153      if (element.hasDomain()) {
47154        composeCodeableConcept("domain", element.getDomain());
47155      }
47156      if (element.hasClassification()) {
47157        composeCodeableConcept("classification", element.getClassification());
47158      }
47159      if (element.hasSubtype()) { 
47160        for (CodeableConcept e : element.getSubtype()) 
47161          composeCodeableConcept("subtype", e);
47162      }
47163      if (element.hasSource()) { 
47164        for (Reference e : element.getSource()) 
47165          composeReference("source", e);
47166      }
47167  }
47168
47169  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
47170    if (element != null) {
47171      composeElementAttributes(element);
47172      xml.enter(FHIR_NS, name);
47173      composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(element);
47174      composeElementClose(element);
47175      xml.exit(FHIR_NS, name);
47176    }
47177  }
47178
47179  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
47180      composeBackboneElementElements(element);
47181      if (element.hasTarget()) {
47182        composeIdentifier("target", element.getTarget());
47183      }
47184      if (element.hasType()) {
47185        composeCodeableConcept("type", element.getType());
47186      }
47187      if (element.hasInteraction()) {
47188        composeCodeableConcept("interaction", element.getInteraction());
47189      }
47190      if (element.hasOrganism()) {
47191        composeCodeableConcept("organism", element.getOrganism());
47192      }
47193      if (element.hasOrganismType()) {
47194        composeCodeableConcept("organismType", element.getOrganismType());
47195      }
47196      if (element.hasAmount()) {
47197        composeType("amount", element.getAmount());
47198      }      if (element.hasAmountType()) {
47199        composeCodeableConcept("amountType", element.getAmountType());
47200      }
47201      if (element.hasSource()) { 
47202        for (Reference e : element.getSource()) 
47203          composeReference("source", e);
47204      }
47205  }
47206
47207  protected void composeSubstanceSourceMaterial(String name, SubstanceSourceMaterial element) throws IOException {
47208    if (element != null) {
47209      composeDomainResourceAttributes(element);
47210      xml.enter(FHIR_NS, name);
47211      composeSubstanceSourceMaterialElements(element);
47212      composeElementClose(element);
47213      xml.exit(FHIR_NS, name);
47214    }
47215  }
47216
47217  protected void composeSubstanceSourceMaterialElements(SubstanceSourceMaterial element) throws IOException {
47218      composeDomainResourceElements(element);
47219      if (element.hasSourceMaterialClass()) {
47220        composeCodeableConcept("sourceMaterialClass", element.getSourceMaterialClass());
47221      }
47222      if (element.hasSourceMaterialType()) {
47223        composeCodeableConcept("sourceMaterialType", element.getSourceMaterialType());
47224      }
47225      if (element.hasSourceMaterialState()) {
47226        composeCodeableConcept("sourceMaterialState", element.getSourceMaterialState());
47227      }
47228      if (element.hasOrganismId()) {
47229        composeIdentifier("organismId", element.getOrganismId());
47230      }
47231      if (element.hasOrganismNameElement()) {
47232        composeString("organismName", element.getOrganismNameElement());
47233      }
47234      if (element.hasParentSubstanceId()) { 
47235        for (Identifier e : element.getParentSubstanceId()) 
47236          composeIdentifier("parentSubstanceId", e);
47237      }
47238      if (element.hasParentSubstanceName()) { 
47239        for (StringType e : element.getParentSubstanceName()) 
47240          composeString("parentSubstanceName", e);
47241      }
47242      if (element.hasCountryOfOrigin()) { 
47243        for (CodeableConcept e : element.getCountryOfOrigin()) 
47244          composeCodeableConcept("countryOfOrigin", e);
47245      }
47246      if (element.hasGeographicalLocation()) { 
47247        for (StringType e : element.getGeographicalLocation()) 
47248          composeString("geographicalLocation", e);
47249      }
47250      if (element.hasDevelopmentStage()) {
47251        composeCodeableConcept("developmentStage", element.getDevelopmentStage());
47252      }
47253      if (element.hasFractionDescription()) { 
47254        for (SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent e : element.getFractionDescription()) 
47255          composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent("fractionDescription", e);
47256      }
47257      if (element.hasOrganism()) {
47258        composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent("organism", element.getOrganism());
47259      }
47260      if (element.hasPartDescription()) { 
47261        for (SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent e : element.getPartDescription()) 
47262          composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent("partDescription", e);
47263      }
47264  }
47265
47266  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
47267    if (element != null) {
47268      composeElementAttributes(element);
47269      xml.enter(FHIR_NS, name);
47270      composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentElements(element);
47271      composeElementClose(element);
47272      xml.exit(FHIR_NS, name);
47273    }
47274  }
47275
47276  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
47277      composeBackboneElementElements(element);
47278      if (element.hasFractionElement()) {
47279        composeString("fraction", element.getFractionElement());
47280      }
47281      if (element.hasMaterialType()) {
47282        composeCodeableConcept("materialType", element.getMaterialType());
47283      }
47284  }
47285
47286  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
47287    if (element != null) {
47288      composeElementAttributes(element);
47289      xml.enter(FHIR_NS, name);
47290      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentElements(element);
47291      composeElementClose(element);
47292      xml.exit(FHIR_NS, name);
47293    }
47294  }
47295
47296  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
47297      composeBackboneElementElements(element);
47298      if (element.hasFamily()) {
47299        composeCodeableConcept("family", element.getFamily());
47300      }
47301      if (element.hasGenus()) {
47302        composeCodeableConcept("genus", element.getGenus());
47303      }
47304      if (element.hasSpecies()) {
47305        composeCodeableConcept("species", element.getSpecies());
47306      }
47307      if (element.hasIntraspecificType()) {
47308        composeCodeableConcept("intraspecificType", element.getIntraspecificType());
47309      }
47310      if (element.hasIntraspecificDescriptionElement()) {
47311        composeString("intraspecificDescription", element.getIntraspecificDescriptionElement());
47312      }
47313      if (element.hasAuthor()) { 
47314        for (SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent e : element.getAuthor()) 
47315          composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent("author", e);
47316      }
47317      if (element.hasHybrid()) {
47318        composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent("hybrid", element.getHybrid());
47319      }
47320      if (element.hasOrganismGeneral()) {
47321        composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent("organismGeneral", element.getOrganismGeneral());
47322      }
47323  }
47324
47325  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
47326    if (element != null) {
47327      composeElementAttributes(element);
47328      xml.enter(FHIR_NS, name);
47329      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentElements(element);
47330      composeElementClose(element);
47331      xml.exit(FHIR_NS, name);
47332    }
47333  }
47334
47335  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
47336      composeBackboneElementElements(element);
47337      if (element.hasAuthorType()) {
47338        composeCodeableConcept("authorType", element.getAuthorType());
47339      }
47340      if (element.hasAuthorDescriptionElement()) {
47341        composeString("authorDescription", element.getAuthorDescriptionElement());
47342      }
47343  }
47344
47345  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
47346    if (element != null) {
47347      composeElementAttributes(element);
47348      xml.enter(FHIR_NS, name);
47349      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentElements(element);
47350      composeElementClose(element);
47351      xml.exit(FHIR_NS, name);
47352    }
47353  }
47354
47355  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
47356      composeBackboneElementElements(element);
47357      if (element.hasMaternalOrganismIdElement()) {
47358        composeString("maternalOrganismId", element.getMaternalOrganismIdElement());
47359      }
47360      if (element.hasMaternalOrganismNameElement()) {
47361        composeString("maternalOrganismName", element.getMaternalOrganismNameElement());
47362      }
47363      if (element.hasPaternalOrganismIdElement()) {
47364        composeString("paternalOrganismId", element.getPaternalOrganismIdElement());
47365      }
47366      if (element.hasPaternalOrganismNameElement()) {
47367        composeString("paternalOrganismName", element.getPaternalOrganismNameElement());
47368      }
47369      if (element.hasHybridType()) {
47370        composeCodeableConcept("hybridType", element.getHybridType());
47371      }
47372  }
47373
47374  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
47375    if (element != null) {
47376      composeElementAttributes(element);
47377      xml.enter(FHIR_NS, name);
47378      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(element);
47379      composeElementClose(element);
47380      xml.exit(FHIR_NS, name);
47381    }
47382  }
47383
47384  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
47385      composeBackboneElementElements(element);
47386      if (element.hasKingdom()) {
47387        composeCodeableConcept("kingdom", element.getKingdom());
47388      }
47389      if (element.hasPhylum()) {
47390        composeCodeableConcept("phylum", element.getPhylum());
47391      }
47392      if (element.hasClass_()) {
47393        composeCodeableConcept("class", element.getClass_());
47394      }
47395      if (element.hasOrder()) {
47396        composeCodeableConcept("order", element.getOrder());
47397      }
47398  }
47399
47400  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
47401    if (element != null) {
47402      composeElementAttributes(element);
47403      xml.enter(FHIR_NS, name);
47404      composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentElements(element);
47405      composeElementClose(element);
47406      xml.exit(FHIR_NS, name);
47407    }
47408  }
47409
47410  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
47411      composeBackboneElementElements(element);
47412      if (element.hasPart()) {
47413        composeCodeableConcept("part", element.getPart());
47414      }
47415      if (element.hasPartLocation()) {
47416        composeCodeableConcept("partLocation", element.getPartLocation());
47417      }
47418  }
47419
47420  protected void composeSubstanceSpecification(String name, SubstanceSpecification element) throws IOException {
47421    if (element != null) {
47422      composeDomainResourceAttributes(element);
47423      xml.enter(FHIR_NS, name);
47424      composeSubstanceSpecificationElements(element);
47425      composeElementClose(element);
47426      xml.exit(FHIR_NS, name);
47427    }
47428  }
47429
47430  protected void composeSubstanceSpecificationElements(SubstanceSpecification element) throws IOException {
47431      composeDomainResourceElements(element);
47432      if (element.hasIdentifier()) {
47433        composeIdentifier("identifier", element.getIdentifier());
47434      }
47435      if (element.hasType()) {
47436        composeCodeableConcept("type", element.getType());
47437      }
47438      if (element.hasStatus()) {
47439        composeCodeableConcept("status", element.getStatus());
47440      }
47441      if (element.hasDomain()) {
47442        composeCodeableConcept("domain", element.getDomain());
47443      }
47444      if (element.hasDescriptionElement()) {
47445        composeString("description", element.getDescriptionElement());
47446      }
47447      if (element.hasSource()) { 
47448        for (Reference e : element.getSource()) 
47449          composeReference("source", e);
47450      }
47451      if (element.hasCommentElement()) {
47452        composeString("comment", element.getCommentElement());
47453      }
47454      if (element.hasMoiety()) { 
47455        for (SubstanceSpecification.SubstanceSpecificationMoietyComponent e : element.getMoiety()) 
47456          composeSubstanceSpecificationSubstanceSpecificationMoietyComponent("moiety", e);
47457      }
47458      if (element.hasProperty()) { 
47459        for (SubstanceSpecification.SubstanceSpecificationPropertyComponent e : element.getProperty()) 
47460          composeSubstanceSpecificationSubstanceSpecificationPropertyComponent("property", e);
47461      }
47462      if (element.hasReferenceInformation()) {
47463        composeReference("referenceInformation", element.getReferenceInformation());
47464      }
47465      if (element.hasStructure()) {
47466        composeSubstanceSpecificationSubstanceSpecificationStructureComponent("structure", element.getStructure());
47467      }
47468      if (element.hasCode()) { 
47469        for (SubstanceSpecification.SubstanceSpecificationCodeComponent e : element.getCode()) 
47470          composeSubstanceSpecificationSubstanceSpecificationCodeComponent("code", e);
47471      }
47472      if (element.hasName()) { 
47473        for (SubstanceSpecification.SubstanceSpecificationNameComponent e : element.getName()) 
47474          composeSubstanceSpecificationSubstanceSpecificationNameComponent("name", e);
47475      }
47476      if (element.hasMolecularWeight()) { 
47477        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent e : element.getMolecularWeight()) 
47478          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", e);
47479      }
47480      if (element.hasRelationship()) { 
47481        for (SubstanceSpecification.SubstanceSpecificationRelationshipComponent e : element.getRelationship()) 
47482          composeSubstanceSpecificationSubstanceSpecificationRelationshipComponent("relationship", e);
47483      }
47484      if (element.hasNucleicAcid()) {
47485        composeReference("nucleicAcid", element.getNucleicAcid());
47486      }
47487      if (element.hasPolymer()) {
47488        composeReference("polymer", element.getPolymer());
47489      }
47490      if (element.hasProtein()) {
47491        composeReference("protein", element.getProtein());
47492      }
47493      if (element.hasSourceMaterial()) {
47494        composeReference("sourceMaterial", element.getSourceMaterial());
47495      }
47496  }
47497
47498  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(String name, SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
47499    if (element != null) {
47500      composeElementAttributes(element);
47501      xml.enter(FHIR_NS, name);
47502      composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(element);
47503      composeElementClose(element);
47504      xml.exit(FHIR_NS, name);
47505    }
47506  }
47507
47508  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
47509      composeBackboneElementElements(element);
47510      if (element.hasRole()) {
47511        composeCodeableConcept("role", element.getRole());
47512      }
47513      if (element.hasIdentifier()) {
47514        composeIdentifier("identifier", element.getIdentifier());
47515      }
47516      if (element.hasNameElement()) {
47517        composeString("name", element.getNameElement());
47518      }
47519      if (element.hasStereochemistry()) {
47520        composeCodeableConcept("stereochemistry", element.getStereochemistry());
47521      }
47522      if (element.hasOpticalActivity()) {
47523        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
47524      }
47525      if (element.hasMolecularFormulaElement()) {
47526        composeString("molecularFormula", element.getMolecularFormulaElement());
47527      }
47528      if (element.hasAmount()) {
47529        composeType("amount", element.getAmount());
47530      }  }
47531
47532  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(String name, SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
47533    if (element != null) {
47534      composeElementAttributes(element);
47535      xml.enter(FHIR_NS, name);
47536      composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(element);
47537      composeElementClose(element);
47538      xml.exit(FHIR_NS, name);
47539    }
47540  }
47541
47542  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
47543      composeBackboneElementElements(element);
47544      if (element.hasCategory()) {
47545        composeCodeableConcept("category", element.getCategory());
47546      }
47547      if (element.hasCode()) {
47548        composeCodeableConcept("code", element.getCode());
47549      }
47550      if (element.hasParametersElement()) {
47551        composeString("parameters", element.getParametersElement());
47552      }
47553      if (element.hasDefiningSubstance()) {
47554        composeType("definingSubstance", element.getDefiningSubstance());
47555      }      if (element.hasAmount()) {
47556        composeType("amount", element.getAmount());
47557      }  }
47558
47559  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
47560    if (element != null) {
47561      composeElementAttributes(element);
47562      xml.enter(FHIR_NS, name);
47563      composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(element);
47564      composeElementClose(element);
47565      xml.exit(FHIR_NS, name);
47566    }
47567  }
47568
47569  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
47570      composeBackboneElementElements(element);
47571      if (element.hasStereochemistry()) {
47572        composeCodeableConcept("stereochemistry", element.getStereochemistry());
47573      }
47574      if (element.hasOpticalActivity()) {
47575        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
47576      }
47577      if (element.hasMolecularFormulaElement()) {
47578        composeString("molecularFormula", element.getMolecularFormulaElement());
47579      }
47580      if (element.hasMolecularFormulaByMoietyElement()) {
47581        composeString("molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement());
47582      }
47583      if (element.hasIsotope()) { 
47584        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent e : element.getIsotope()) 
47585          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent("isotope", e);
47586      }
47587      if (element.hasMolecularWeight()) {
47588        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
47589      }
47590      if (element.hasSource()) { 
47591        for (Reference e : element.getSource()) 
47592          composeReference("source", e);
47593      }
47594      if (element.hasRepresentation()) { 
47595        for (SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent e : element.getRepresentation()) 
47596          composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent("representation", e);
47597      }
47598  }
47599
47600  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
47601    if (element != null) {
47602      composeElementAttributes(element);
47603      xml.enter(FHIR_NS, name);
47604      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(element);
47605      composeElementClose(element);
47606      xml.exit(FHIR_NS, name);
47607    }
47608  }
47609
47610  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
47611      composeBackboneElementElements(element);
47612      if (element.hasIdentifier()) {
47613        composeIdentifier("identifier", element.getIdentifier());
47614      }
47615      if (element.hasName()) {
47616        composeCodeableConcept("name", element.getName());
47617      }
47618      if (element.hasSubstitution()) {
47619        composeCodeableConcept("substitution", element.getSubstitution());
47620      }
47621      if (element.hasHalfLife()) {
47622        composeQuantity("halfLife", element.getHalfLife());
47623      }
47624      if (element.hasMolecularWeight()) {
47625        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
47626      }
47627  }
47628
47629  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
47630    if (element != null) {
47631      composeElementAttributes(element);
47632      xml.enter(FHIR_NS, name);
47633      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(element);
47634      composeElementClose(element);
47635      xml.exit(FHIR_NS, name);
47636    }
47637  }
47638
47639  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
47640      composeBackboneElementElements(element);
47641      if (element.hasMethod()) {
47642        composeCodeableConcept("method", element.getMethod());
47643      }
47644      if (element.hasType()) {
47645        composeCodeableConcept("type", element.getType());
47646      }
47647      if (element.hasAmount()) {
47648        composeQuantity("amount", element.getAmount());
47649      }
47650  }
47651
47652  protected void composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent element) throws IOException {
47653    if (element != null) {
47654      composeElementAttributes(element);
47655      xml.enter(FHIR_NS, name);
47656      composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentElements(element);
47657      composeElementClose(element);
47658      xml.exit(FHIR_NS, name);
47659    }
47660  }
47661
47662  protected void composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentElements(SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent element) throws IOException {
47663      composeBackboneElementElements(element);
47664      if (element.hasType()) {
47665        composeCodeableConcept("type", element.getType());
47666      }
47667      if (element.hasRepresentationElement()) {
47668        composeString("representation", element.getRepresentationElement());
47669      }
47670      if (element.hasAttachment()) {
47671        composeAttachment("attachment", element.getAttachment());
47672      }
47673  }
47674
47675  protected void composeSubstanceSpecificationSubstanceSpecificationCodeComponent(String name, SubstanceSpecification.SubstanceSpecificationCodeComponent element) throws IOException {
47676    if (element != null) {
47677      composeElementAttributes(element);
47678      xml.enter(FHIR_NS, name);
47679      composeSubstanceSpecificationSubstanceSpecificationCodeComponentElements(element);
47680      composeElementClose(element);
47681      xml.exit(FHIR_NS, name);
47682    }
47683  }
47684
47685  protected void composeSubstanceSpecificationSubstanceSpecificationCodeComponentElements(SubstanceSpecification.SubstanceSpecificationCodeComponent element) throws IOException {
47686      composeBackboneElementElements(element);
47687      if (element.hasCode()) {
47688        composeCodeableConcept("code", element.getCode());
47689      }
47690      if (element.hasStatus()) {
47691        composeCodeableConcept("status", element.getStatus());
47692      }
47693      if (element.hasStatusDateElement()) {
47694        composeDateTime("statusDate", element.getStatusDateElement());
47695      }
47696      if (element.hasCommentElement()) {
47697        composeString("comment", element.getCommentElement());
47698      }
47699      if (element.hasSource()) { 
47700        for (Reference e : element.getSource()) 
47701          composeReference("source", e);
47702      }
47703  }
47704
47705  protected void composeSubstanceSpecificationSubstanceSpecificationNameComponent(String name, SubstanceSpecification.SubstanceSpecificationNameComponent element) throws IOException {
47706    if (element != null) {
47707      composeElementAttributes(element);
47708      xml.enter(FHIR_NS, name);
47709      composeSubstanceSpecificationSubstanceSpecificationNameComponentElements(element);
47710      composeElementClose(element);
47711      xml.exit(FHIR_NS, name);
47712    }
47713  }
47714
47715  protected void composeSubstanceSpecificationSubstanceSpecificationNameComponentElements(SubstanceSpecification.SubstanceSpecificationNameComponent element) throws IOException {
47716      composeBackboneElementElements(element);
47717      if (element.hasNameElement()) {
47718        composeString("name", element.getNameElement());
47719      }
47720      if (element.hasType()) {
47721        composeCodeableConcept("type", element.getType());
47722      }
47723      if (element.hasStatus()) {
47724        composeCodeableConcept("status", element.getStatus());
47725      }
47726      if (element.hasPreferredElement()) {
47727        composeBoolean("preferred", element.getPreferredElement());
47728      }
47729      if (element.hasLanguage()) { 
47730        for (CodeableConcept e : element.getLanguage()) 
47731          composeCodeableConcept("language", e);
47732      }
47733      if (element.hasDomain()) { 
47734        for (CodeableConcept e : element.getDomain()) 
47735          composeCodeableConcept("domain", e);
47736      }
47737      if (element.hasJurisdiction()) { 
47738        for (CodeableConcept e : element.getJurisdiction()) 
47739          composeCodeableConcept("jurisdiction", e);
47740      }
47741      if (element.hasSynonym()) { 
47742        for (SubstanceSpecification.SubstanceSpecificationNameComponent e : element.getSynonym()) 
47743          composeSubstanceSpecificationSubstanceSpecificationNameComponent("synonym", e);
47744      }
47745      if (element.hasTranslation()) { 
47746        for (SubstanceSpecification.SubstanceSpecificationNameComponent e : element.getTranslation()) 
47747          composeSubstanceSpecificationSubstanceSpecificationNameComponent("translation", e);
47748      }
47749      if (element.hasOfficial()) { 
47750        for (SubstanceSpecification.SubstanceSpecificationNameOfficialComponent e : element.getOfficial()) 
47751          composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponent("official", e);
47752      }
47753      if (element.hasSource()) { 
47754        for (Reference e : element.getSource()) 
47755          composeReference("source", e);
47756      }
47757  }
47758
47759  protected void composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(String name, SubstanceSpecification.SubstanceSpecificationNameOfficialComponent element) throws IOException {
47760    if (element != null) {
47761      composeElementAttributes(element);
47762      xml.enter(FHIR_NS, name);
47763      composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponentElements(element);
47764      composeElementClose(element);
47765      xml.exit(FHIR_NS, name);
47766    }
47767  }
47768
47769  protected void composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponentElements(SubstanceSpecification.SubstanceSpecificationNameOfficialComponent element) throws IOException {
47770      composeBackboneElementElements(element);
47771      if (element.hasAuthority()) {
47772        composeCodeableConcept("authority", element.getAuthority());
47773      }
47774      if (element.hasStatus()) {
47775        composeCodeableConcept("status", element.getStatus());
47776      }
47777      if (element.hasDateElement()) {
47778        composeDateTime("date", element.getDateElement());
47779      }
47780  }
47781
47782  protected void composeSubstanceSpecificationSubstanceSpecificationRelationshipComponent(String name, SubstanceSpecification.SubstanceSpecificationRelationshipComponent element) throws IOException {
47783    if (element != null) {
47784      composeElementAttributes(element);
47785      xml.enter(FHIR_NS, name);
47786      composeSubstanceSpecificationSubstanceSpecificationRelationshipComponentElements(element);
47787      composeElementClose(element);
47788      xml.exit(FHIR_NS, name);
47789    }
47790  }
47791
47792  protected void composeSubstanceSpecificationSubstanceSpecificationRelationshipComponentElements(SubstanceSpecification.SubstanceSpecificationRelationshipComponent element) throws IOException {
47793      composeBackboneElementElements(element);
47794      if (element.hasSubstance()) {
47795        composeType("substance", element.getSubstance());
47796      }      if (element.hasRelationship()) {
47797        composeCodeableConcept("relationship", element.getRelationship());
47798      }
47799      if (element.hasIsDefiningElement()) {
47800        composeBoolean("isDefining", element.getIsDefiningElement());
47801      }
47802      if (element.hasAmount()) {
47803        composeType("amount", element.getAmount());
47804      }      if (element.hasAmountRatioLowLimit()) {
47805        composeRatio("amountRatioLowLimit", element.getAmountRatioLowLimit());
47806      }
47807      if (element.hasAmountType()) {
47808        composeCodeableConcept("amountType", element.getAmountType());
47809      }
47810      if (element.hasSource()) { 
47811        for (Reference e : element.getSource()) 
47812          composeReference("source", e);
47813      }
47814  }
47815
47816  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
47817    if (element != null) {
47818      composeDomainResourceAttributes(element);
47819      xml.enter(FHIR_NS, name);
47820      composeSupplyDeliveryElements(element);
47821      composeElementClose(element);
47822      xml.exit(FHIR_NS, name);
47823    }
47824  }
47825
47826  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
47827      composeDomainResourceElements(element);
47828      if (element.hasIdentifier()) { 
47829        for (Identifier e : element.getIdentifier()) 
47830          composeIdentifier("identifier", e);
47831      }
47832      if (element.hasBasedOn()) { 
47833        for (Reference e : element.getBasedOn()) 
47834          composeReference("basedOn", e);
47835      }
47836      if (element.hasPartOf()) { 
47837        for (Reference e : element.getPartOf()) 
47838          composeReference("partOf", e);
47839      }
47840      if (element.hasStatusElement())
47841        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
47842      if (element.hasPatient()) {
47843        composeReference("patient", element.getPatient());
47844      }
47845      if (element.hasType()) {
47846        composeCodeableConcept("type", element.getType());
47847      }
47848      if (element.hasSuppliedItem()) {
47849        composeSupplyDeliverySupplyDeliverySuppliedItemComponent("suppliedItem", element.getSuppliedItem());
47850      }
47851      if (element.hasOccurrence()) {
47852        composeType("occurrence", element.getOccurrence());
47853      }      if (element.hasSupplier()) {
47854        composeReference("supplier", element.getSupplier());
47855      }
47856      if (element.hasDestination()) {
47857        composeReference("destination", element.getDestination());
47858      }
47859      if (element.hasReceiver()) { 
47860        for (Reference e : element.getReceiver()) 
47861          composeReference("receiver", e);
47862      }
47863  }
47864
47865  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
47866    if (element != null) {
47867      composeElementAttributes(element);
47868      xml.enter(FHIR_NS, name);
47869      composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(element);
47870      composeElementClose(element);
47871      xml.exit(FHIR_NS, name);
47872    }
47873  }
47874
47875  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
47876      composeBackboneElementElements(element);
47877      if (element.hasQuantity()) {
47878        composeQuantity("quantity", element.getQuantity());
47879      }
47880      if (element.hasItem()) {
47881        composeType("item", element.getItem());
47882      }  }
47883
47884  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
47885    if (element != null) {
47886      composeDomainResourceAttributes(element);
47887      xml.enter(FHIR_NS, name);
47888      composeSupplyRequestElements(element);
47889      composeElementClose(element);
47890      xml.exit(FHIR_NS, name);
47891    }
47892  }
47893
47894  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
47895      composeDomainResourceElements(element);
47896      if (element.hasIdentifier()) { 
47897        for (Identifier e : element.getIdentifier()) 
47898          composeIdentifier("identifier", e);
47899      }
47900      if (element.hasStatusElement())
47901        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
47902      if (element.hasCategory()) {
47903        composeCodeableConcept("category", element.getCategory());
47904      }
47905      if (element.hasPriorityElement())
47906        composeEnumeration("priority", element.getPriorityElement(), new SupplyRequest.RequestPriorityEnumFactory());
47907      if (element.hasItem()) {
47908        composeType("item", element.getItem());
47909      }      if (element.hasQuantity()) {
47910        composeQuantity("quantity", element.getQuantity());
47911      }
47912      if (element.hasParameter()) { 
47913        for (SupplyRequest.SupplyRequestParameterComponent e : element.getParameter()) 
47914          composeSupplyRequestSupplyRequestParameterComponent("parameter", e);
47915      }
47916      if (element.hasOccurrence()) {
47917        composeType("occurrence", element.getOccurrence());
47918      }      if (element.hasAuthoredOnElement()) {
47919        composeDateTime("authoredOn", element.getAuthoredOnElement());
47920      }
47921      if (element.hasRequester()) {
47922        composeReference("requester", element.getRequester());
47923      }
47924      if (element.hasSupplier()) { 
47925        for (Reference e : element.getSupplier()) 
47926          composeReference("supplier", e);
47927      }
47928      if (element.hasReasonCode()) { 
47929        for (CodeableConcept e : element.getReasonCode()) 
47930          composeCodeableConcept("reasonCode", e);
47931      }
47932      if (element.hasReasonReference()) { 
47933        for (Reference e : element.getReasonReference()) 
47934          composeReference("reasonReference", e);
47935      }
47936      if (element.hasDeliverFrom()) {
47937        composeReference("deliverFrom", element.getDeliverFrom());
47938      }
47939      if (element.hasDeliverTo()) {
47940        composeReference("deliverTo", element.getDeliverTo());
47941      }
47942  }
47943
47944  protected void composeSupplyRequestSupplyRequestParameterComponent(String name, SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
47945    if (element != null) {
47946      composeElementAttributes(element);
47947      xml.enter(FHIR_NS, name);
47948      composeSupplyRequestSupplyRequestParameterComponentElements(element);
47949      composeElementClose(element);
47950      xml.exit(FHIR_NS, name);
47951    }
47952  }
47953
47954  protected void composeSupplyRequestSupplyRequestParameterComponentElements(SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
47955      composeBackboneElementElements(element);
47956      if (element.hasCode()) {
47957        composeCodeableConcept("code", element.getCode());
47958      }
47959      if (element.hasValue()) {
47960        composeType("value", element.getValue());
47961      }  }
47962
47963  protected void composeTask(String name, Task element) throws IOException {
47964    if (element != null) {
47965      composeDomainResourceAttributes(element);
47966      xml.enter(FHIR_NS, name);
47967      composeTaskElements(element);
47968      composeElementClose(element);
47969      xml.exit(FHIR_NS, name);
47970    }
47971  }
47972
47973  protected void composeTaskElements(Task element) throws IOException {
47974      composeDomainResourceElements(element);
47975      if (element.hasIdentifier()) { 
47976        for (Identifier e : element.getIdentifier()) 
47977          composeIdentifier("identifier", e);
47978      }
47979      if (element.hasInstantiatesCanonicalElement()) {
47980        composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
47981      }
47982      if (element.hasInstantiatesUriElement()) {
47983        composeUri("instantiatesUri", element.getInstantiatesUriElement());
47984      }
47985      if (element.hasBasedOn()) { 
47986        for (Reference e : element.getBasedOn()) 
47987          composeReference("basedOn", e);
47988      }
47989      if (element.hasGroupIdentifier()) {
47990        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
47991      }
47992      if (element.hasPartOf()) { 
47993        for (Reference e : element.getPartOf()) 
47994          composeReference("partOf", e);
47995      }
47996      if (element.hasStatusElement())
47997        composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
47998      if (element.hasStatusReason()) {
47999        composeCodeableConcept("statusReason", element.getStatusReason());
48000      }
48001      if (element.hasBusinessStatus()) {
48002        composeCodeableConcept("businessStatus", element.getBusinessStatus());
48003      }
48004      if (element.hasIntentElement())
48005        composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
48006      if (element.hasPriorityElement())
48007        composeEnumeration("priority", element.getPriorityElement(), new Task.TaskPriorityEnumFactory());
48008      if (element.hasCode()) {
48009        composeCodeableConcept("code", element.getCode());
48010      }
48011      if (element.hasDescriptionElement()) {
48012        composeString("description", element.getDescriptionElement());
48013      }
48014      if (element.hasFocus()) {
48015        composeReference("focus", element.getFocus());
48016      }
48017      if (element.hasFor()) {
48018        composeReference("for", element.getFor());
48019      }
48020      if (element.hasEncounter()) {
48021        composeReference("encounter", element.getEncounter());
48022      }
48023      if (element.hasExecutionPeriod()) {
48024        composePeriod("executionPeriod", element.getExecutionPeriod());
48025      }
48026      if (element.hasAuthoredOnElement()) {
48027        composeDateTime("authoredOn", element.getAuthoredOnElement());
48028      }
48029      if (element.hasLastModifiedElement()) {
48030        composeDateTime("lastModified", element.getLastModifiedElement());
48031      }
48032      if (element.hasRequester()) {
48033        composeReference("requester", element.getRequester());
48034      }
48035      if (element.hasPerformerType()) { 
48036        for (CodeableConcept e : element.getPerformerType()) 
48037          composeCodeableConcept("performerType", e);
48038      }
48039      if (element.hasOwner()) {
48040        composeReference("owner", element.getOwner());
48041      }
48042      if (element.hasLocation()) {
48043        composeReference("location", element.getLocation());
48044      }
48045      if (element.hasReasonCode()) {
48046        composeCodeableConcept("reasonCode", element.getReasonCode());
48047      }
48048      if (element.hasReasonReference()) {
48049        composeReference("reasonReference", element.getReasonReference());
48050      }
48051      if (element.hasInsurance()) { 
48052        for (Reference e : element.getInsurance()) 
48053          composeReference("insurance", e);
48054      }
48055      if (element.hasNote()) { 
48056        for (Annotation e : element.getNote()) 
48057          composeAnnotation("note", e);
48058      }
48059      if (element.hasRelevantHistory()) { 
48060        for (Reference e : element.getRelevantHistory()) 
48061          composeReference("relevantHistory", e);
48062      }
48063      if (element.hasRestriction()) {
48064        composeTaskTaskRestrictionComponent("restriction", element.getRestriction());
48065      }
48066      if (element.hasInput()) { 
48067        for (Task.ParameterComponent e : element.getInput()) 
48068          composeTaskParameterComponent("input", e);
48069      }
48070      if (element.hasOutput()) { 
48071        for (Task.TaskOutputComponent e : element.getOutput()) 
48072          composeTaskTaskOutputComponent("output", e);
48073      }
48074  }
48075
48076  protected void composeTaskTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
48077    if (element != null) {
48078      composeElementAttributes(element);
48079      xml.enter(FHIR_NS, name);
48080      composeTaskTaskRestrictionComponentElements(element);
48081      composeElementClose(element);
48082      xml.exit(FHIR_NS, name);
48083    }
48084  }
48085
48086  protected void composeTaskTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
48087      composeBackboneElementElements(element);
48088      if (element.hasRepetitionsElement()) {
48089        composePositiveInt("repetitions", element.getRepetitionsElement());
48090      }
48091      if (element.hasPeriod()) {
48092        composePeriod("period", element.getPeriod());
48093      }
48094      if (element.hasRecipient()) { 
48095        for (Reference e : element.getRecipient()) 
48096          composeReference("recipient", e);
48097      }
48098  }
48099
48100  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
48101    if (element != null) {
48102      composeElementAttributes(element);
48103      xml.enter(FHIR_NS, name);
48104      composeTaskParameterComponentElements(element);
48105      composeElementClose(element);
48106      xml.exit(FHIR_NS, name);
48107    }
48108  }
48109
48110  protected void composeTaskParameterComponentElements(Task.ParameterComponent element) throws IOException {
48111      composeBackboneElementElements(element);
48112      if (element.hasType()) {
48113        composeCodeableConcept("type", element.getType());
48114      }
48115      if (element.hasValue()) {
48116        composeType("value", element.getValue());
48117      }  }
48118
48119  protected void composeTaskTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
48120    if (element != null) {
48121      composeElementAttributes(element);
48122      xml.enter(FHIR_NS, name);
48123      composeTaskTaskOutputComponentElements(element);
48124      composeElementClose(element);
48125      xml.exit(FHIR_NS, name);
48126    }
48127  }
48128
48129  protected void composeTaskTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
48130      composeBackboneElementElements(element);
48131      if (element.hasType()) {
48132        composeCodeableConcept("type", element.getType());
48133      }
48134      if (element.hasValue()) {
48135        composeType("value", element.getValue());
48136      }  }
48137
48138  protected void composeTerminologyCapabilities(String name, TerminologyCapabilities element) throws IOException {
48139    if (element != null) {
48140      composeDomainResourceAttributes(element);
48141      xml.enter(FHIR_NS, name);
48142      composeTerminologyCapabilitiesElements(element);
48143      composeElementClose(element);
48144      xml.exit(FHIR_NS, name);
48145    }
48146  }
48147
48148  protected void composeTerminologyCapabilitiesElements(TerminologyCapabilities element) throws IOException {
48149      composeDomainResourceElements(element);
48150      if (element.hasUrlElement()) {
48151        composeUri("url", element.getUrlElement());
48152      }
48153      if (element.hasVersionElement()) {
48154        composeString("version", element.getVersionElement());
48155      }
48156      if (element.hasNameElement()) {
48157        composeString("name", element.getNameElement());
48158      }
48159      if (element.hasTitleElement()) {
48160        composeString("title", element.getTitleElement());
48161      }
48162      if (element.hasStatusElement())
48163        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48164      if (element.hasExperimentalElement()) {
48165        composeBoolean("experimental", element.getExperimentalElement());
48166      }
48167      if (element.hasDateElement()) {
48168        composeDateTime("date", element.getDateElement());
48169      }
48170      if (element.hasPublisherElement()) {
48171        composeString("publisher", element.getPublisherElement());
48172      }
48173      if (element.hasContact()) { 
48174        for (ContactDetail e : element.getContact()) 
48175          composeContactDetail("contact", e);
48176      }
48177      if (element.hasDescriptionElement()) {
48178        composeMarkdown("description", element.getDescriptionElement());
48179      }
48180      if (element.hasUseContext()) { 
48181        for (UsageContext e : element.getUseContext()) 
48182          composeUsageContext("useContext", e);
48183      }
48184      if (element.hasJurisdiction()) { 
48185        for (CodeableConcept e : element.getJurisdiction()) 
48186          composeCodeableConcept("jurisdiction", e);
48187      }
48188      if (element.hasPurposeElement()) {
48189        composeMarkdown("purpose", element.getPurposeElement());
48190      }
48191      if (element.hasCopyrightElement()) {
48192        composeMarkdown("copyright", element.getCopyrightElement());
48193      }
48194      if (element.hasKindElement())
48195        composeEnumeration("kind", element.getKindElement(), new TerminologyCapabilities.CapabilityStatementKindEnumFactory());
48196      if (element.hasSoftware()) {
48197        composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent("software", element.getSoftware());
48198      }
48199      if (element.hasImplementation()) {
48200        composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent("implementation", element.getImplementation());
48201      }
48202      if (element.hasLockedDateElement()) {
48203        composeBoolean("lockedDate", element.getLockedDateElement());
48204      }
48205      if (element.hasCodeSystem()) { 
48206        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent e : element.getCodeSystem()) 
48207          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent("codeSystem", e);
48208      }
48209      if (element.hasExpansion()) {
48210        composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent("expansion", element.getExpansion());
48211      }
48212      if (element.hasCodeSearchElement())
48213        composeEnumeration("codeSearch", element.getCodeSearchElement(), new TerminologyCapabilities.CodeSearchSupportEnumFactory());
48214      if (element.hasValidateCode()) {
48215        composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent("validateCode", element.getValidateCode());
48216      }
48217      if (element.hasTranslation()) {
48218        composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent("translation", element.getTranslation());
48219      }
48220      if (element.hasClosure()) {
48221        composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent("closure", element.getClosure());
48222      }
48223  }
48224
48225  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
48226    if (element != null) {
48227      composeElementAttributes(element);
48228      xml.enter(FHIR_NS, name);
48229      composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentElements(element);
48230      composeElementClose(element);
48231      xml.exit(FHIR_NS, name);
48232    }
48233  }
48234
48235  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentElements(TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
48236      composeBackboneElementElements(element);
48237      if (element.hasNameElement()) {
48238        composeString("name", element.getNameElement());
48239      }
48240      if (element.hasVersionElement()) {
48241        composeString("version", element.getVersionElement());
48242      }
48243  }
48244
48245  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
48246    if (element != null) {
48247      composeElementAttributes(element);
48248      xml.enter(FHIR_NS, name);
48249      composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentElements(element);
48250      composeElementClose(element);
48251      xml.exit(FHIR_NS, name);
48252    }
48253  }
48254
48255  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
48256      composeBackboneElementElements(element);
48257      if (element.hasDescriptionElement()) {
48258        composeString("description", element.getDescriptionElement());
48259      }
48260      if (element.hasUrlElement()) {
48261        composeUrl("url", element.getUrlElement());
48262      }
48263  }
48264
48265  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
48266    if (element != null) {
48267      composeElementAttributes(element);
48268      xml.enter(FHIR_NS, name);
48269      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(element);
48270      composeElementClose(element);
48271      xml.exit(FHIR_NS, name);
48272    }
48273  }
48274
48275  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
48276      composeBackboneElementElements(element);
48277      if (element.hasUriElement()) {
48278        composeCanonical("uri", element.getUriElement());
48279      }
48280      if (element.hasVersion()) { 
48281        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent e : element.getVersion()) 
48282          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent("version", e);
48283      }
48284      if (element.hasSubsumptionElement()) {
48285        composeBoolean("subsumption", element.getSubsumptionElement());
48286      }
48287  }
48288
48289  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
48290    if (element != null) {
48291      composeElementAttributes(element);
48292      xml.enter(FHIR_NS, name);
48293      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(element);
48294      composeElementClose(element);
48295      xml.exit(FHIR_NS, name);
48296    }
48297  }
48298
48299  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
48300      composeBackboneElementElements(element);
48301      if (element.hasCodeElement()) {
48302        composeString("code", element.getCodeElement());
48303      }
48304      if (element.hasIsDefaultElement()) {
48305        composeBoolean("isDefault", element.getIsDefaultElement());
48306      }
48307      if (element.hasCompositionalElement()) {
48308        composeBoolean("compositional", element.getCompositionalElement());
48309      }
48310      if (element.hasLanguage()) { 
48311        for (CodeType e : element.getLanguage()) 
48312          composeCode("language", e);
48313      }
48314      if (element.hasFilter()) { 
48315        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent e : element.getFilter()) 
48316          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent("filter", e);
48317      }
48318      if (element.hasProperty()) { 
48319        for (CodeType e : element.getProperty()) 
48320          composeCode("property", e);
48321      }
48322  }
48323
48324  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
48325    if (element != null) {
48326      composeElementAttributes(element);
48327      xml.enter(FHIR_NS, name);
48328      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(element);
48329      composeElementClose(element);
48330      xml.exit(FHIR_NS, name);
48331    }
48332  }
48333
48334  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
48335      composeBackboneElementElements(element);
48336      if (element.hasCodeElement()) {
48337        composeCode("code", element.getCodeElement());
48338      }
48339      if (element.hasOp()) { 
48340        for (CodeType e : element.getOp()) 
48341          composeCode("op", e);
48342      }
48343  }
48344
48345  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
48346    if (element != null) {
48347      composeElementAttributes(element);
48348      xml.enter(FHIR_NS, name);
48349      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(element);
48350      composeElementClose(element);
48351      xml.exit(FHIR_NS, name);
48352    }
48353  }
48354
48355  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
48356      composeBackboneElementElements(element);
48357      if (element.hasHierarchicalElement()) {
48358        composeBoolean("hierarchical", element.getHierarchicalElement());
48359      }
48360      if (element.hasPagingElement()) {
48361        composeBoolean("paging", element.getPagingElement());
48362      }
48363      if (element.hasIncompleteElement()) {
48364        composeBoolean("incomplete", element.getIncompleteElement());
48365      }
48366      if (element.hasParameter()) { 
48367        for (TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent e : element.getParameter()) 
48368          composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent("parameter", e);
48369      }
48370      if (element.hasTextFilterElement()) {
48371        composeMarkdown("textFilter", element.getTextFilterElement());
48372      }
48373  }
48374
48375  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
48376    if (element != null) {
48377      composeElementAttributes(element);
48378      xml.enter(FHIR_NS, name);
48379      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentElements(element);
48380      composeElementClose(element);
48381      xml.exit(FHIR_NS, name);
48382    }
48383  }
48384
48385  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
48386      composeBackboneElementElements(element);
48387      if (element.hasNameElement()) {
48388        composeCode("name", element.getNameElement());
48389      }
48390      if (element.hasDocumentationElement()) {
48391        composeString("documentation", element.getDocumentationElement());
48392      }
48393  }
48394
48395  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
48396    if (element != null) {
48397      composeElementAttributes(element);
48398      xml.enter(FHIR_NS, name);
48399      composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(element);
48400      composeElementClose(element);
48401      xml.exit(FHIR_NS, name);
48402    }
48403  }
48404
48405  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
48406      composeBackboneElementElements(element);
48407      if (element.hasTranslationsElement()) {
48408        composeBoolean("translations", element.getTranslationsElement());
48409      }
48410  }
48411
48412  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
48413    if (element != null) {
48414      composeElementAttributes(element);
48415      xml.enter(FHIR_NS, name);
48416      composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(element);
48417      composeElementClose(element);
48418      xml.exit(FHIR_NS, name);
48419    }
48420  }
48421
48422  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
48423      composeBackboneElementElements(element);
48424      if (element.hasNeedsMapElement()) {
48425        composeBoolean("needsMap", element.getNeedsMapElement());
48426      }
48427  }
48428
48429  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
48430    if (element != null) {
48431      composeElementAttributes(element);
48432      xml.enter(FHIR_NS, name);
48433      composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(element);
48434      composeElementClose(element);
48435      xml.exit(FHIR_NS, name);
48436    }
48437  }
48438
48439  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
48440      composeBackboneElementElements(element);
48441      if (element.hasTranslationElement()) {
48442        composeBoolean("translation", element.getTranslationElement());
48443      }
48444  }
48445
48446  protected void composeTestReport(String name, TestReport element) throws IOException {
48447    if (element != null) {
48448      composeDomainResourceAttributes(element);
48449      xml.enter(FHIR_NS, name);
48450      composeTestReportElements(element);
48451      composeElementClose(element);
48452      xml.exit(FHIR_NS, name);
48453    }
48454  }
48455
48456  protected void composeTestReportElements(TestReport element) throws IOException {
48457      composeDomainResourceElements(element);
48458      if (element.hasIdentifier()) {
48459        composeIdentifier("identifier", element.getIdentifier());
48460      }
48461      if (element.hasNameElement()) {
48462        composeString("name", element.getNameElement());
48463      }
48464      if (element.hasStatusElement())
48465        composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
48466      if (element.hasTestScript()) {
48467        composeReference("testScript", element.getTestScript());
48468      }
48469      if (element.hasResultElement())
48470        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
48471      if (element.hasScoreElement()) {
48472        composeDecimal("score", element.getScoreElement());
48473      }
48474      if (element.hasTesterElement()) {
48475        composeString("tester", element.getTesterElement());
48476      }
48477      if (element.hasIssuedElement()) {
48478        composeDateTime("issued", element.getIssuedElement());
48479      }
48480      if (element.hasParticipant()) { 
48481        for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
48482          composeTestReportTestReportParticipantComponent("participant", e);
48483      }
48484      if (element.hasSetup()) {
48485        composeTestReportTestReportSetupComponent("setup", element.getSetup());
48486      }
48487      if (element.hasTest()) { 
48488        for (TestReport.TestReportTestComponent e : element.getTest()) 
48489          composeTestReportTestReportTestComponent("test", e);
48490      }
48491      if (element.hasTeardown()) {
48492        composeTestReportTestReportTeardownComponent("teardown", element.getTeardown());
48493      }
48494  }
48495
48496  protected void composeTestReportTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
48497    if (element != null) {
48498      composeElementAttributes(element);
48499      xml.enter(FHIR_NS, name);
48500      composeTestReportTestReportParticipantComponentElements(element);
48501      composeElementClose(element);
48502      xml.exit(FHIR_NS, name);
48503    }
48504  }
48505
48506  protected void composeTestReportTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
48507      composeBackboneElementElements(element);
48508      if (element.hasTypeElement())
48509        composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
48510      if (element.hasUriElement()) {
48511        composeUri("uri", element.getUriElement());
48512      }
48513      if (element.hasDisplayElement()) {
48514        composeString("display", element.getDisplayElement());
48515      }
48516  }
48517
48518  protected void composeTestReportTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
48519    if (element != null) {
48520      composeElementAttributes(element);
48521      xml.enter(FHIR_NS, name);
48522      composeTestReportTestReportSetupComponentElements(element);
48523      composeElementClose(element);
48524      xml.exit(FHIR_NS, name);
48525    }
48526  }
48527
48528  protected void composeTestReportTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
48529      composeBackboneElementElements(element);
48530      if (element.hasAction()) { 
48531        for (TestReport.SetupActionComponent e : element.getAction()) 
48532          composeTestReportSetupActionComponent("action", e);
48533      }
48534  }
48535
48536  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
48537    if (element != null) {
48538      composeElementAttributes(element);
48539      xml.enter(FHIR_NS, name);
48540      composeTestReportSetupActionComponentElements(element);
48541      composeElementClose(element);
48542      xml.exit(FHIR_NS, name);
48543    }
48544  }
48545
48546  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
48547      composeBackboneElementElements(element);
48548      if (element.hasOperation()) {
48549        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
48550      }
48551      if (element.hasAssert()) {
48552        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
48553      }
48554  }
48555
48556  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
48557    if (element != null) {
48558      composeElementAttributes(element);
48559      xml.enter(FHIR_NS, name);
48560      composeTestReportSetupActionOperationComponentElements(element);
48561      composeElementClose(element);
48562      xml.exit(FHIR_NS, name);
48563    }
48564  }
48565
48566  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
48567      composeBackboneElementElements(element);
48568      if (element.hasResultElement())
48569        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
48570      if (element.hasMessageElement()) {
48571        composeMarkdown("message", element.getMessageElement());
48572      }
48573      if (element.hasDetailElement()) {
48574        composeUri("detail", element.getDetailElement());
48575      }
48576  }
48577
48578  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
48579    if (element != null) {
48580      composeElementAttributes(element);
48581      xml.enter(FHIR_NS, name);
48582      composeTestReportSetupActionAssertComponentElements(element);
48583      composeElementClose(element);
48584      xml.exit(FHIR_NS, name);
48585    }
48586  }
48587
48588  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
48589      composeBackboneElementElements(element);
48590      if (element.hasResultElement())
48591        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
48592      if (element.hasMessageElement()) {
48593        composeMarkdown("message", element.getMessageElement());
48594      }
48595      if (element.hasDetailElement()) {
48596        composeString("detail", element.getDetailElement());
48597      }
48598  }
48599
48600  protected void composeTestReportTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
48601    if (element != null) {
48602      composeElementAttributes(element);
48603      xml.enter(FHIR_NS, name);
48604      composeTestReportTestReportTestComponentElements(element);
48605      composeElementClose(element);
48606      xml.exit(FHIR_NS, name);
48607    }
48608  }
48609
48610  protected void composeTestReportTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
48611      composeBackboneElementElements(element);
48612      if (element.hasNameElement()) {
48613        composeString("name", element.getNameElement());
48614      }
48615      if (element.hasDescriptionElement()) {
48616        composeString("description", element.getDescriptionElement());
48617      }
48618      if (element.hasAction()) { 
48619        for (TestReport.TestActionComponent e : element.getAction()) 
48620          composeTestReportTestActionComponent("action", e);
48621      }
48622  }
48623
48624  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
48625    if (element != null) {
48626      composeElementAttributes(element);
48627      xml.enter(FHIR_NS, name);
48628      composeTestReportTestActionComponentElements(element);
48629      composeElementClose(element);
48630      xml.exit(FHIR_NS, name);
48631    }
48632  }
48633
48634  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
48635      composeBackboneElementElements(element);
48636      if (element.hasOperation()) {
48637        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
48638      }
48639      if (element.hasAssert()) {
48640        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
48641      }
48642  }
48643
48644  protected void composeTestReportTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
48645    if (element != null) {
48646      composeElementAttributes(element);
48647      xml.enter(FHIR_NS, name);
48648      composeTestReportTestReportTeardownComponentElements(element);
48649      composeElementClose(element);
48650      xml.exit(FHIR_NS, name);
48651    }
48652  }
48653
48654  protected void composeTestReportTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
48655      composeBackboneElementElements(element);
48656      if (element.hasAction()) { 
48657        for (TestReport.TeardownActionComponent e : element.getAction()) 
48658          composeTestReportTeardownActionComponent("action", e);
48659      }
48660  }
48661
48662  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
48663    if (element != null) {
48664      composeElementAttributes(element);
48665      xml.enter(FHIR_NS, name);
48666      composeTestReportTeardownActionComponentElements(element);
48667      composeElementClose(element);
48668      xml.exit(FHIR_NS, name);
48669    }
48670  }
48671
48672  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
48673      composeBackboneElementElements(element);
48674      if (element.hasOperation()) {
48675        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
48676      }
48677  }
48678
48679  protected void composeTestScript(String name, TestScript element) throws IOException {
48680    if (element != null) {
48681      composeDomainResourceAttributes(element);
48682      xml.enter(FHIR_NS, name);
48683      composeTestScriptElements(element);
48684      composeElementClose(element);
48685      xml.exit(FHIR_NS, name);
48686    }
48687  }
48688
48689  protected void composeTestScriptElements(TestScript element) throws IOException {
48690      composeDomainResourceElements(element);
48691      if (element.hasUrlElement()) {
48692        composeUri("url", element.getUrlElement());
48693      }
48694      if (element.hasIdentifier()) {
48695        composeIdentifier("identifier", element.getIdentifier());
48696      }
48697      if (element.hasVersionElement()) {
48698        composeString("version", element.getVersionElement());
48699      }
48700      if (element.hasNameElement()) {
48701        composeString("name", element.getNameElement());
48702      }
48703      if (element.hasTitleElement()) {
48704        composeString("title", element.getTitleElement());
48705      }
48706      if (element.hasStatusElement())
48707        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48708      if (element.hasExperimentalElement()) {
48709        composeBoolean("experimental", element.getExperimentalElement());
48710      }
48711      if (element.hasDateElement()) {
48712        composeDateTime("date", element.getDateElement());
48713      }
48714      if (element.hasPublisherElement()) {
48715        composeString("publisher", element.getPublisherElement());
48716      }
48717      if (element.hasContact()) { 
48718        for (ContactDetail e : element.getContact()) 
48719          composeContactDetail("contact", e);
48720      }
48721      if (element.hasDescriptionElement()) {
48722        composeMarkdown("description", element.getDescriptionElement());
48723      }
48724      if (element.hasUseContext()) { 
48725        for (UsageContext e : element.getUseContext()) 
48726          composeUsageContext("useContext", e);
48727      }
48728      if (element.hasJurisdiction()) { 
48729        for (CodeableConcept e : element.getJurisdiction()) 
48730          composeCodeableConcept("jurisdiction", e);
48731      }
48732      if (element.hasPurposeElement()) {
48733        composeMarkdown("purpose", element.getPurposeElement());
48734      }
48735      if (element.hasCopyrightElement()) {
48736        composeMarkdown("copyright", element.getCopyrightElement());
48737      }
48738      if (element.hasOrigin()) { 
48739        for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
48740          composeTestScriptTestScriptOriginComponent("origin", e);
48741      }
48742      if (element.hasDestination()) { 
48743        for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
48744          composeTestScriptTestScriptDestinationComponent("destination", e);
48745      }
48746      if (element.hasMetadata()) {
48747        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
48748      }
48749      if (element.hasFixture()) { 
48750        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
48751          composeTestScriptTestScriptFixtureComponent("fixture", e);
48752      }
48753      if (element.hasProfile()) { 
48754        for (Reference e : element.getProfile()) 
48755          composeReference("profile", e);
48756      }
48757      if (element.hasVariable()) { 
48758        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
48759          composeTestScriptTestScriptVariableComponent("variable", e);
48760      }
48761      if (element.hasSetup()) {
48762        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
48763      }
48764      if (element.hasTest()) { 
48765        for (TestScript.TestScriptTestComponent e : element.getTest()) 
48766          composeTestScriptTestScriptTestComponent("test", e);
48767      }
48768      if (element.hasTeardown()) {
48769        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
48770      }
48771  }
48772
48773  protected void composeTestScriptTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
48774    if (element != null) {
48775      composeElementAttributes(element);
48776      xml.enter(FHIR_NS, name);
48777      composeTestScriptTestScriptOriginComponentElements(element);
48778      composeElementClose(element);
48779      xml.exit(FHIR_NS, name);
48780    }
48781  }
48782
48783  protected void composeTestScriptTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
48784      composeBackboneElementElements(element);
48785      if (element.hasIndexElement()) {
48786        composeInteger("index", element.getIndexElement());
48787      }
48788      if (element.hasProfile()) {
48789        composeCoding("profile", element.getProfile());
48790      }
48791  }
48792
48793  protected void composeTestScriptTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
48794    if (element != null) {
48795      composeElementAttributes(element);
48796      xml.enter(FHIR_NS, name);
48797      composeTestScriptTestScriptDestinationComponentElements(element);
48798      composeElementClose(element);
48799      xml.exit(FHIR_NS, name);
48800    }
48801  }
48802
48803  protected void composeTestScriptTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
48804      composeBackboneElementElements(element);
48805      if (element.hasIndexElement()) {
48806        composeInteger("index", element.getIndexElement());
48807      }
48808      if (element.hasProfile()) {
48809        composeCoding("profile", element.getProfile());
48810      }
48811  }
48812
48813  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
48814    if (element != null) {
48815      composeElementAttributes(element);
48816      xml.enter(FHIR_NS, name);
48817      composeTestScriptTestScriptMetadataComponentElements(element);
48818      composeElementClose(element);
48819      xml.exit(FHIR_NS, name);
48820    }
48821  }
48822
48823  protected void composeTestScriptTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
48824      composeBackboneElementElements(element);
48825      if (element.hasLink()) { 
48826        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
48827          composeTestScriptTestScriptMetadataLinkComponent("link", e);
48828      }
48829      if (element.hasCapability()) { 
48830        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
48831          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
48832      }
48833  }
48834
48835  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
48836    if (element != null) {
48837      composeElementAttributes(element);
48838      xml.enter(FHIR_NS, name);
48839      composeTestScriptTestScriptMetadataLinkComponentElements(element);
48840      composeElementClose(element);
48841      xml.exit(FHIR_NS, name);
48842    }
48843  }
48844
48845  protected void composeTestScriptTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
48846      composeBackboneElementElements(element);
48847      if (element.hasUrlElement()) {
48848        composeUri("url", element.getUrlElement());
48849      }
48850      if (element.hasDescriptionElement()) {
48851        composeString("description", element.getDescriptionElement());
48852      }
48853  }
48854
48855  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
48856    if (element != null) {
48857      composeElementAttributes(element);
48858      xml.enter(FHIR_NS, name);
48859      composeTestScriptTestScriptMetadataCapabilityComponentElements(element);
48860      composeElementClose(element);
48861      xml.exit(FHIR_NS, name);
48862    }
48863  }
48864
48865  protected void composeTestScriptTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
48866      composeBackboneElementElements(element);
48867      if (element.hasRequiredElement()) {
48868        composeBoolean("required", element.getRequiredElement());
48869      }
48870      if (element.hasValidatedElement()) {
48871        composeBoolean("validated", element.getValidatedElement());
48872      }
48873      if (element.hasDescriptionElement()) {
48874        composeString("description", element.getDescriptionElement());
48875      }
48876      if (element.hasOrigin()) { 
48877        for (IntegerType e : element.getOrigin()) 
48878          composeInteger("origin", e);
48879      }
48880      if (element.hasDestinationElement()) {
48881        composeInteger("destination", element.getDestinationElement());
48882      }
48883      if (element.hasLink()) { 
48884        for (UriType e : element.getLink()) 
48885          composeUri("link", e);
48886      }
48887      if (element.hasCapabilitiesElement()) {
48888        composeCanonical("capabilities", element.getCapabilitiesElement());
48889      }
48890  }
48891
48892  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
48893    if (element != null) {
48894      composeElementAttributes(element);
48895      xml.enter(FHIR_NS, name);
48896      composeTestScriptTestScriptFixtureComponentElements(element);
48897      composeElementClose(element);
48898      xml.exit(FHIR_NS, name);
48899    }
48900  }
48901
48902  protected void composeTestScriptTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
48903      composeBackboneElementElements(element);
48904      if (element.hasAutocreateElement()) {
48905        composeBoolean("autocreate", element.getAutocreateElement());
48906      }
48907      if (element.hasAutodeleteElement()) {
48908        composeBoolean("autodelete", element.getAutodeleteElement());
48909      }
48910      if (element.hasResource()) {
48911        composeReference("resource", element.getResource());
48912      }
48913  }
48914
48915  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
48916    if (element != null) {
48917      composeElementAttributes(element);
48918      xml.enter(FHIR_NS, name);
48919      composeTestScriptTestScriptVariableComponentElements(element);
48920      composeElementClose(element);
48921      xml.exit(FHIR_NS, name);
48922    }
48923  }
48924
48925  protected void composeTestScriptTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
48926      composeBackboneElementElements(element);
48927      if (element.hasNameElement()) {
48928        composeString("name", element.getNameElement());
48929      }
48930      if (element.hasDefaultValueElement()) {
48931        composeString("defaultValue", element.getDefaultValueElement());
48932      }
48933      if (element.hasDescriptionElement()) {
48934        composeString("description", element.getDescriptionElement());
48935      }
48936      if (element.hasExpressionElement()) {
48937        composeString("expression", element.getExpressionElement());
48938      }
48939      if (element.hasHeaderFieldElement()) {
48940        composeString("headerField", element.getHeaderFieldElement());
48941      }
48942      if (element.hasHintElement()) {
48943        composeString("hint", element.getHintElement());
48944      }
48945      if (element.hasPathElement()) {
48946        composeString("path", element.getPathElement());
48947      }
48948      if (element.hasSourceIdElement()) {
48949        composeId("sourceId", element.getSourceIdElement());
48950      }
48951  }
48952
48953  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
48954    if (element != null) {
48955      composeElementAttributes(element);
48956      xml.enter(FHIR_NS, name);
48957      composeTestScriptTestScriptSetupComponentElements(element);
48958      composeElementClose(element);
48959      xml.exit(FHIR_NS, name);
48960    }
48961  }
48962
48963  protected void composeTestScriptTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
48964      composeBackboneElementElements(element);
48965      if (element.hasAction()) { 
48966        for (TestScript.SetupActionComponent e : element.getAction()) 
48967          composeTestScriptSetupActionComponent("action", e);
48968      }
48969  }
48970
48971  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
48972    if (element != null) {
48973      composeElementAttributes(element);
48974      xml.enter(FHIR_NS, name);
48975      composeTestScriptSetupActionComponentElements(element);
48976      composeElementClose(element);
48977      xml.exit(FHIR_NS, name);
48978    }
48979  }
48980
48981  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
48982      composeBackboneElementElements(element);
48983      if (element.hasOperation()) {
48984        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
48985      }
48986      if (element.hasAssert()) {
48987        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
48988      }
48989  }
48990
48991  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
48992    if (element != null) {
48993      composeElementAttributes(element);
48994      xml.enter(FHIR_NS, name);
48995      composeTestScriptSetupActionOperationComponentElements(element);
48996      composeElementClose(element);
48997      xml.exit(FHIR_NS, name);
48998    }
48999  }
49000
49001  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
49002      composeBackboneElementElements(element);
49003      if (element.hasType()) {
49004        composeCoding("type", element.getType());
49005      }
49006      if (element.hasResourceElement()) {
49007        composeCode("resource", element.getResourceElement());
49008      }
49009      if (element.hasLabelElement()) {
49010        composeString("label", element.getLabelElement());
49011      }
49012      if (element.hasDescriptionElement()) {
49013        composeString("description", element.getDescriptionElement());
49014      }
49015      if (element.hasAcceptElement()) {
49016        composeCode("accept", element.getAcceptElement());
49017      }
49018      if (element.hasContentTypeElement()) {
49019        composeCode("contentType", element.getContentTypeElement());
49020      }
49021      if (element.hasDestinationElement()) {
49022        composeInteger("destination", element.getDestinationElement());
49023      }
49024      if (element.hasEncodeRequestUrlElement()) {
49025        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
49026      }
49027      if (element.hasMethodElement())
49028        composeEnumeration("method", element.getMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
49029      if (element.hasOriginElement()) {
49030        composeInteger("origin", element.getOriginElement());
49031      }
49032      if (element.hasParamsElement()) {
49033        composeString("params", element.getParamsElement());
49034      }
49035      if (element.hasRequestHeader()) { 
49036        for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
49037          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
49038      }
49039      if (element.hasRequestIdElement()) {
49040        composeId("requestId", element.getRequestIdElement());
49041      }
49042      if (element.hasResponseIdElement()) {
49043        composeId("responseId", element.getResponseIdElement());
49044      }
49045      if (element.hasSourceIdElement()) {
49046        composeId("sourceId", element.getSourceIdElement());
49047      }
49048      if (element.hasTargetIdElement()) {
49049        composeId("targetId", element.getTargetIdElement());
49050      }
49051      if (element.hasUrlElement()) {
49052        composeString("url", element.getUrlElement());
49053      }
49054  }
49055
49056  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
49057    if (element != null) {
49058      composeElementAttributes(element);
49059      xml.enter(FHIR_NS, name);
49060      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
49061      composeElementClose(element);
49062      xml.exit(FHIR_NS, name);
49063    }
49064  }
49065
49066  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
49067      composeBackboneElementElements(element);
49068      if (element.hasFieldElement()) {
49069        composeString("field", element.getFieldElement());
49070      }
49071      if (element.hasValueElement()) {
49072        composeString("value", element.getValueElement());
49073      }
49074  }
49075
49076  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
49077    if (element != null) {
49078      composeElementAttributes(element);
49079      xml.enter(FHIR_NS, name);
49080      composeTestScriptSetupActionAssertComponentElements(element);
49081      composeElementClose(element);
49082      xml.exit(FHIR_NS, name);
49083    }
49084  }
49085
49086  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
49087      composeBackboneElementElements(element);
49088      if (element.hasLabelElement()) {
49089        composeString("label", element.getLabelElement());
49090      }
49091      if (element.hasDescriptionElement()) {
49092        composeString("description", element.getDescriptionElement());
49093      }
49094      if (element.hasDirectionElement())
49095        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
49096      if (element.hasCompareToSourceIdElement()) {
49097        composeString("compareToSourceId", element.getCompareToSourceIdElement());
49098      }
49099      if (element.hasCompareToSourceExpressionElement()) {
49100        composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
49101      }
49102      if (element.hasCompareToSourcePathElement()) {
49103        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
49104      }
49105      if (element.hasContentTypeElement()) {
49106        composeCode("contentType", element.getContentTypeElement());
49107      }
49108      if (element.hasExpressionElement()) {
49109        composeString("expression", element.getExpressionElement());
49110      }
49111      if (element.hasHeaderFieldElement()) {
49112        composeString("headerField", element.getHeaderFieldElement());
49113      }
49114      if (element.hasMinimumIdElement()) {
49115        composeString("minimumId", element.getMinimumIdElement());
49116      }
49117      if (element.hasNavigationLinksElement()) {
49118        composeBoolean("navigationLinks", element.getNavigationLinksElement());
49119      }
49120      if (element.hasOperatorElement())
49121        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
49122      if (element.hasPathElement()) {
49123        composeString("path", element.getPathElement());
49124      }
49125      if (element.hasRequestMethodElement())
49126        composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
49127      if (element.hasRequestURLElement()) {
49128        composeString("requestURL", element.getRequestURLElement());
49129      }
49130      if (element.hasResourceElement()) {
49131        composeCode("resource", element.getResourceElement());
49132      }
49133      if (element.hasResponseElement())
49134        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
49135      if (element.hasResponseCodeElement()) {
49136        composeString("responseCode", element.getResponseCodeElement());
49137      }
49138      if (element.hasSourceIdElement()) {
49139        composeId("sourceId", element.getSourceIdElement());
49140      }
49141      if (element.hasValidateProfileIdElement()) {
49142        composeId("validateProfileId", element.getValidateProfileIdElement());
49143      }
49144      if (element.hasValueElement()) {
49145        composeString("value", element.getValueElement());
49146      }
49147      if (element.hasWarningOnlyElement()) {
49148        composeBoolean("warningOnly", element.getWarningOnlyElement());
49149      }
49150  }
49151
49152  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
49153    if (element != null) {
49154      composeElementAttributes(element);
49155      xml.enter(FHIR_NS, name);
49156      composeTestScriptTestScriptTestComponentElements(element);
49157      composeElementClose(element);
49158      xml.exit(FHIR_NS, name);
49159    }
49160  }
49161
49162  protected void composeTestScriptTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
49163      composeBackboneElementElements(element);
49164      if (element.hasNameElement()) {
49165        composeString("name", element.getNameElement());
49166      }
49167      if (element.hasDescriptionElement()) {
49168        composeString("description", element.getDescriptionElement());
49169      }
49170      if (element.hasAction()) { 
49171        for (TestScript.TestActionComponent e : element.getAction()) 
49172          composeTestScriptTestActionComponent("action", e);
49173      }
49174  }
49175
49176  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
49177    if (element != null) {
49178      composeElementAttributes(element);
49179      xml.enter(FHIR_NS, name);
49180      composeTestScriptTestActionComponentElements(element);
49181      composeElementClose(element);
49182      xml.exit(FHIR_NS, name);
49183    }
49184  }
49185
49186  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
49187      composeBackboneElementElements(element);
49188      if (element.hasOperation()) {
49189        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
49190      }
49191      if (element.hasAssert()) {
49192        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
49193      }
49194  }
49195
49196  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
49197    if (element != null) {
49198      composeElementAttributes(element);
49199      xml.enter(FHIR_NS, name);
49200      composeTestScriptTestScriptTeardownComponentElements(element);
49201      composeElementClose(element);
49202      xml.exit(FHIR_NS, name);
49203    }
49204  }
49205
49206  protected void composeTestScriptTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
49207      composeBackboneElementElements(element);
49208      if (element.hasAction()) { 
49209        for (TestScript.TeardownActionComponent e : element.getAction()) 
49210          composeTestScriptTeardownActionComponent("action", e);
49211      }
49212  }
49213
49214  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
49215    if (element != null) {
49216      composeElementAttributes(element);
49217      xml.enter(FHIR_NS, name);
49218      composeTestScriptTeardownActionComponentElements(element);
49219      composeElementClose(element);
49220      xml.exit(FHIR_NS, name);
49221    }
49222  }
49223
49224  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
49225      composeBackboneElementElements(element);
49226      if (element.hasOperation()) {
49227        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
49228      }
49229  }
49230
49231  protected void composeValueSet(String name, ValueSet element) throws IOException {
49232    if (element != null) {
49233      composeDomainResourceAttributes(element);
49234      xml.enter(FHIR_NS, name);
49235      composeValueSetElements(element);
49236      composeElementClose(element);
49237      xml.exit(FHIR_NS, name);
49238    }
49239  }
49240
49241  protected void composeValueSetElements(ValueSet element) throws IOException {
49242      composeDomainResourceElements(element);
49243      if (element.hasUrlElement()) {
49244        composeUri("url", element.getUrlElement());
49245      }
49246      if (element.hasIdentifier()) { 
49247        for (Identifier e : element.getIdentifier()) 
49248          composeIdentifier("identifier", e);
49249      }
49250      if (element.hasVersionElement()) {
49251        composeString("version", element.getVersionElement());
49252      }
49253      if (element.hasNameElement()) {
49254        composeString("name", element.getNameElement());
49255      }
49256      if (element.hasTitleElement()) {
49257        composeString("title", element.getTitleElement());
49258      }
49259      if (element.hasStatusElement())
49260        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49261      if (element.hasExperimentalElement()) {
49262        composeBoolean("experimental", element.getExperimentalElement());
49263      }
49264      if (element.hasDateElement()) {
49265        composeDateTime("date", element.getDateElement());
49266      }
49267      if (element.hasPublisherElement()) {
49268        composeString("publisher", element.getPublisherElement());
49269      }
49270      if (element.hasContact()) { 
49271        for (ContactDetail e : element.getContact()) 
49272          composeContactDetail("contact", e);
49273      }
49274      if (element.hasDescriptionElement()) {
49275        composeMarkdown("description", element.getDescriptionElement());
49276      }
49277      if (element.hasUseContext()) { 
49278        for (UsageContext e : element.getUseContext()) 
49279          composeUsageContext("useContext", e);
49280      }
49281      if (element.hasJurisdiction()) { 
49282        for (CodeableConcept e : element.getJurisdiction()) 
49283          composeCodeableConcept("jurisdiction", e);
49284      }
49285      if (element.hasImmutableElement()) {
49286        composeBoolean("immutable", element.getImmutableElement());
49287      }
49288      if (element.hasPurposeElement()) {
49289        composeMarkdown("purpose", element.getPurposeElement());
49290      }
49291      if (element.hasCopyrightElement()) {
49292        composeMarkdown("copyright", element.getCopyrightElement());
49293      }
49294      if (element.hasCompose()) {
49295        composeValueSetValueSetComposeComponent("compose", element.getCompose());
49296      }
49297      if (element.hasExpansion()) {
49298        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
49299      }
49300  }
49301
49302  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
49303    if (element != null) {
49304      composeElementAttributes(element);
49305      xml.enter(FHIR_NS, name);
49306      composeValueSetValueSetComposeComponentElements(element);
49307      composeElementClose(element);
49308      xml.exit(FHIR_NS, name);
49309    }
49310  }
49311
49312  protected void composeValueSetValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
49313      composeBackboneElementElements(element);
49314      if (element.hasLockedDateElement()) {
49315        composeDate("lockedDate", element.getLockedDateElement());
49316      }
49317      if (element.hasInactiveElement()) {
49318        composeBoolean("inactive", element.getInactiveElement());
49319      }
49320      if (element.hasInclude()) { 
49321        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
49322          composeValueSetConceptSetComponent("include", e);
49323      }
49324      if (element.hasExclude()) { 
49325        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
49326          composeValueSetConceptSetComponent("exclude", e);
49327      }
49328  }
49329
49330  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
49331    if (element != null) {
49332      composeElementAttributes(element);
49333      xml.enter(FHIR_NS, name);
49334      composeValueSetConceptSetComponentElements(element);
49335      composeElementClose(element);
49336      xml.exit(FHIR_NS, name);
49337    }
49338  }
49339
49340  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
49341      composeBackboneElementElements(element);
49342      if (element.hasSystemElement()) {
49343        composeUri("system", element.getSystemElement());
49344      }
49345      if (element.hasVersionElement()) {
49346        composeString("version", element.getVersionElement());
49347      }
49348      if (element.hasConcept()) { 
49349        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
49350          composeValueSetConceptReferenceComponent("concept", e);
49351      }
49352      if (element.hasFilter()) { 
49353        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
49354          composeValueSetConceptSetFilterComponent("filter", e);
49355      }
49356      if (element.hasValueSet()) { 
49357        for (CanonicalType e : element.getValueSet()) 
49358          composeCanonical("valueSet", e);
49359      }
49360  }
49361
49362  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
49363    if (element != null) {
49364      composeElementAttributes(element);
49365      xml.enter(FHIR_NS, name);
49366      composeValueSetConceptReferenceComponentElements(element);
49367      composeElementClose(element);
49368      xml.exit(FHIR_NS, name);
49369    }
49370  }
49371
49372  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
49373      composeBackboneElementElements(element);
49374      if (element.hasCodeElement()) {
49375        composeCode("code", element.getCodeElement());
49376      }
49377      if (element.hasDisplayElement()) {
49378        composeString("display", element.getDisplayElement());
49379      }
49380      if (element.hasDesignation()) { 
49381        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
49382          composeValueSetConceptReferenceDesignationComponent("designation", e);
49383      }
49384  }
49385
49386  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
49387    if (element != null) {
49388      composeElementAttributes(element);
49389      xml.enter(FHIR_NS, name);
49390      composeValueSetConceptReferenceDesignationComponentElements(element);
49391      composeElementClose(element);
49392      xml.exit(FHIR_NS, name);
49393    }
49394  }
49395
49396  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
49397      composeBackboneElementElements(element);
49398      if (element.hasLanguageElement()) {
49399        composeCode("language", element.getLanguageElement());
49400      }
49401      if (element.hasUse()) {
49402        composeCoding("use", element.getUse());
49403      }
49404      if (element.hasValueElement()) {
49405        composeString("value", element.getValueElement());
49406      }
49407  }
49408
49409  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
49410    if (element != null) {
49411      composeElementAttributes(element);
49412      xml.enter(FHIR_NS, name);
49413      composeValueSetConceptSetFilterComponentElements(element);
49414      composeElementClose(element);
49415      xml.exit(FHIR_NS, name);
49416    }
49417  }
49418
49419  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
49420      composeBackboneElementElements(element);
49421      if (element.hasPropertyElement()) {
49422        composeCode("property", element.getPropertyElement());
49423      }
49424      if (element.hasOpElement())
49425        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
49426      if (element.hasValueElement()) {
49427        composeString("value", element.getValueElement());
49428      }
49429  }
49430
49431  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
49432    if (element != null) {
49433      composeElementAttributes(element);
49434      xml.enter(FHIR_NS, name);
49435      composeValueSetValueSetExpansionComponentElements(element);
49436      composeElementClose(element);
49437      xml.exit(FHIR_NS, name);
49438    }
49439  }
49440
49441  protected void composeValueSetValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
49442      composeBackboneElementElements(element);
49443      if (element.hasIdentifierElement()) {
49444        composeUri("identifier", element.getIdentifierElement());
49445      }
49446      if (element.hasTimestampElement()) {
49447        composeDateTime("timestamp", element.getTimestampElement());
49448      }
49449      if (element.hasTotalElement()) {
49450        composeInteger("total", element.getTotalElement());
49451      }
49452      if (element.hasOffsetElement()) {
49453        composeInteger("offset", element.getOffsetElement());
49454      }
49455      if (element.hasParameter()) { 
49456        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
49457          composeValueSetValueSetExpansionParameterComponent("parameter", e);
49458      }
49459      if (element.hasContains()) { 
49460        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
49461          composeValueSetValueSetExpansionContainsComponent("contains", e);
49462      }
49463  }
49464
49465  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
49466    if (element != null) {
49467      composeElementAttributes(element);
49468      xml.enter(FHIR_NS, name);
49469      composeValueSetValueSetExpansionParameterComponentElements(element);
49470      composeElementClose(element);
49471      xml.exit(FHIR_NS, name);
49472    }
49473  }
49474
49475  protected void composeValueSetValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
49476      composeBackboneElementElements(element);
49477      if (element.hasNameElement()) {
49478        composeString("name", element.getNameElement());
49479      }
49480      if (element.hasValue()) {
49481        composeType("value", element.getValue());
49482      }  }
49483
49484  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
49485    if (element != null) {
49486      composeElementAttributes(element);
49487      xml.enter(FHIR_NS, name);
49488      composeValueSetValueSetExpansionContainsComponentElements(element);
49489      composeElementClose(element);
49490      xml.exit(FHIR_NS, name);
49491    }
49492  }
49493
49494  protected void composeValueSetValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
49495      composeBackboneElementElements(element);
49496      if (element.hasSystemElement()) {
49497        composeUri("system", element.getSystemElement());
49498      }
49499      if (element.hasAbstractElement()) {
49500        composeBoolean("abstract", element.getAbstractElement());
49501      }
49502      if (element.hasInactiveElement()) {
49503        composeBoolean("inactive", element.getInactiveElement());
49504      }
49505      if (element.hasVersionElement()) {
49506        composeString("version", element.getVersionElement());
49507      }
49508      if (element.hasCodeElement()) {
49509        composeCode("code", element.getCodeElement());
49510      }
49511      if (element.hasDisplayElement()) {
49512        composeString("display", element.getDisplayElement());
49513      }
49514      if (element.hasDesignation()) { 
49515        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
49516          composeValueSetConceptReferenceDesignationComponent("designation", e);
49517      }
49518      if (element.hasContains()) { 
49519        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
49520          composeValueSetValueSetExpansionContainsComponent("contains", e);
49521      }
49522  }
49523
49524  protected void composeVerificationResult(String name, VerificationResult element) throws IOException {
49525    if (element != null) {
49526      composeDomainResourceAttributes(element);
49527      xml.enter(FHIR_NS, name);
49528      composeVerificationResultElements(element);
49529      composeElementClose(element);
49530      xml.exit(FHIR_NS, name);
49531    }
49532  }
49533
49534  protected void composeVerificationResultElements(VerificationResult element) throws IOException {
49535      composeDomainResourceElements(element);
49536      if (element.hasTarget()) { 
49537        for (Reference e : element.getTarget()) 
49538          composeReference("target", e);
49539      }
49540      if (element.hasTargetLocation()) { 
49541        for (StringType e : element.getTargetLocation()) 
49542          composeString("targetLocation", e);
49543      }
49544      if (element.hasNeed()) {
49545        composeCodeableConcept("need", element.getNeed());
49546      }
49547      if (element.hasStatusElement())
49548        composeEnumeration("status", element.getStatusElement(), new VerificationResult.StatusEnumFactory());
49549      if (element.hasStatusDateElement()) {
49550        composeDateTime("statusDate", element.getStatusDateElement());
49551      }
49552      if (element.hasValidationType()) {
49553        composeCodeableConcept("validationType", element.getValidationType());
49554      }
49555      if (element.hasValidationProcess()) { 
49556        for (CodeableConcept e : element.getValidationProcess()) 
49557          composeCodeableConcept("validationProcess", e);
49558      }
49559      if (element.hasFrequency()) {
49560        composeTiming("frequency", element.getFrequency());
49561      }
49562      if (element.hasLastPerformedElement()) {
49563        composeDateTime("lastPerformed", element.getLastPerformedElement());
49564      }
49565      if (element.hasNextScheduledElement()) {
49566        composeDate("nextScheduled", element.getNextScheduledElement());
49567      }
49568      if (element.hasFailureAction()) {
49569        composeCodeableConcept("failureAction", element.getFailureAction());
49570      }
49571      if (element.hasPrimarySource()) { 
49572        for (VerificationResult.VerificationResultPrimarySourceComponent e : element.getPrimarySource()) 
49573          composeVerificationResultVerificationResultPrimarySourceComponent("primarySource", e);
49574      }
49575      if (element.hasAttestation()) {
49576        composeVerificationResultVerificationResultAttestationComponent("attestation", element.getAttestation());
49577      }
49578      if (element.hasValidator()) { 
49579        for (VerificationResult.VerificationResultValidatorComponent e : element.getValidator()) 
49580          composeVerificationResultVerificationResultValidatorComponent("validator", e);
49581      }
49582  }
49583
49584  protected void composeVerificationResultVerificationResultPrimarySourceComponent(String name, VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
49585    if (element != null) {
49586      composeElementAttributes(element);
49587      xml.enter(FHIR_NS, name);
49588      composeVerificationResultVerificationResultPrimarySourceComponentElements(element);
49589      composeElementClose(element);
49590      xml.exit(FHIR_NS, name);
49591    }
49592  }
49593
49594  protected void composeVerificationResultVerificationResultPrimarySourceComponentElements(VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
49595      composeBackboneElementElements(element);
49596      if (element.hasWho()) {
49597        composeReference("who", element.getWho());
49598      }
49599      if (element.hasType()) { 
49600        for (CodeableConcept e : element.getType()) 
49601          composeCodeableConcept("type", e);
49602      }
49603      if (element.hasCommunicationMethod()) { 
49604        for (CodeableConcept e : element.getCommunicationMethod()) 
49605          composeCodeableConcept("communicationMethod", e);
49606      }
49607      if (element.hasValidationStatus()) {
49608        composeCodeableConcept("validationStatus", element.getValidationStatus());
49609      }
49610      if (element.hasValidationDateElement()) {
49611        composeDateTime("validationDate", element.getValidationDateElement());
49612      }
49613      if (element.hasCanPushUpdates()) {
49614        composeCodeableConcept("canPushUpdates", element.getCanPushUpdates());
49615      }
49616      if (element.hasPushTypeAvailable()) { 
49617        for (CodeableConcept e : element.getPushTypeAvailable()) 
49618          composeCodeableConcept("pushTypeAvailable", e);
49619      }
49620  }
49621
49622  protected void composeVerificationResultVerificationResultAttestationComponent(String name, VerificationResult.VerificationResultAttestationComponent element) throws IOException {
49623    if (element != null) {
49624      composeElementAttributes(element);
49625      xml.enter(FHIR_NS, name);
49626      composeVerificationResultVerificationResultAttestationComponentElements(element);
49627      composeElementClose(element);
49628      xml.exit(FHIR_NS, name);
49629    }
49630  }
49631
49632  protected void composeVerificationResultVerificationResultAttestationComponentElements(VerificationResult.VerificationResultAttestationComponent element) throws IOException {
49633      composeBackboneElementElements(element);
49634      if (element.hasWho()) {
49635        composeReference("who", element.getWho());
49636      }
49637      if (element.hasOnBehalfOf()) {
49638        composeReference("onBehalfOf", element.getOnBehalfOf());
49639      }
49640      if (element.hasCommunicationMethod()) {
49641        composeCodeableConcept("communicationMethod", element.getCommunicationMethod());
49642      }
49643      if (element.hasDateElement()) {
49644        composeDate("date", element.getDateElement());
49645      }
49646      if (element.hasSourceIdentityCertificateElement()) {
49647        composeString("sourceIdentityCertificate", element.getSourceIdentityCertificateElement());
49648      }
49649      if (element.hasProxyIdentityCertificateElement()) {
49650        composeString("proxyIdentityCertificate", element.getProxyIdentityCertificateElement());
49651      }
49652      if (element.hasProxySignature()) {
49653        composeSignature("proxySignature", element.getProxySignature());
49654      }
49655      if (element.hasSourceSignature()) {
49656        composeSignature("sourceSignature", element.getSourceSignature());
49657      }
49658  }
49659
49660  protected void composeVerificationResultVerificationResultValidatorComponent(String name, VerificationResult.VerificationResultValidatorComponent element) throws IOException {
49661    if (element != null) {
49662      composeElementAttributes(element);
49663      xml.enter(FHIR_NS, name);
49664      composeVerificationResultVerificationResultValidatorComponentElements(element);
49665      composeElementClose(element);
49666      xml.exit(FHIR_NS, name);
49667    }
49668  }
49669
49670  protected void composeVerificationResultVerificationResultValidatorComponentElements(VerificationResult.VerificationResultValidatorComponent element) throws IOException {
49671      composeBackboneElementElements(element);
49672      if (element.hasOrganization()) {
49673        composeReference("organization", element.getOrganization());
49674      }
49675      if (element.hasIdentityCertificateElement()) {
49676        composeString("identityCertificate", element.getIdentityCertificateElement());
49677      }
49678      if (element.hasAttestationSignature()) {
49679        composeSignature("attestationSignature", element.getAttestationSignature());
49680      }
49681  }
49682
49683  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
49684    if (element != null) {
49685      composeDomainResourceAttributes(element);
49686      xml.enter(FHIR_NS, name);
49687      composeVisionPrescriptionElements(element);
49688      composeElementClose(element);
49689      xml.exit(FHIR_NS, name);
49690    }
49691  }
49692
49693  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
49694      composeDomainResourceElements(element);
49695      if (element.hasIdentifier()) { 
49696        for (Identifier e : element.getIdentifier()) 
49697          composeIdentifier("identifier", e);
49698      }
49699      if (element.hasStatusElement())
49700        composeEnumeration("status", element.getStatusElement(), new VisionPrescription.VisionStatusEnumFactory());
49701      if (element.hasCreatedElement()) {
49702        composeDateTime("created", element.getCreatedElement());
49703      }
49704      if (element.hasPatient()) {
49705        composeReference("patient", element.getPatient());
49706      }
49707      if (element.hasEncounter()) {
49708        composeReference("encounter", element.getEncounter());
49709      }
49710      if (element.hasDateWrittenElement()) {
49711        composeDateTime("dateWritten", element.getDateWrittenElement());
49712      }
49713      if (element.hasPrescriber()) {
49714        composeReference("prescriber", element.getPrescriber());
49715      }
49716      if (element.hasLensSpecification()) { 
49717        for (VisionPrescription.VisionPrescriptionLensSpecificationComponent e : element.getLensSpecification()) 
49718          composeVisionPrescriptionVisionPrescriptionLensSpecificationComponent("lensSpecification", e);
49719      }
49720  }
49721
49722  protected void composeVisionPrescriptionVisionPrescriptionLensSpecificationComponent(String name, VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
49723    if (element != null) {
49724      composeElementAttributes(element);
49725      xml.enter(FHIR_NS, name);
49726      composeVisionPrescriptionVisionPrescriptionLensSpecificationComponentElements(element);
49727      composeElementClose(element);
49728      xml.exit(FHIR_NS, name);
49729    }
49730  }
49731
49732  protected void composeVisionPrescriptionVisionPrescriptionLensSpecificationComponentElements(VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
49733      composeBackboneElementElements(element);
49734      if (element.hasProduct()) {
49735        composeCodeableConcept("product", element.getProduct());
49736      }
49737      if (element.hasEyeElement())
49738        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
49739      if (element.hasSphereElement()) {
49740        composeDecimal("sphere", element.getSphereElement());
49741      }
49742      if (element.hasCylinderElement()) {
49743        composeDecimal("cylinder", element.getCylinderElement());
49744      }
49745      if (element.hasAxisElement()) {
49746        composeInteger("axis", element.getAxisElement());
49747      }
49748      if (element.hasPrism()) { 
49749        for (VisionPrescription.PrismComponent e : element.getPrism()) 
49750          composeVisionPrescriptionPrismComponent("prism", e);
49751      }
49752      if (element.hasAddElement()) {
49753        composeDecimal("add", element.getAddElement());
49754      }
49755      if (element.hasPowerElement()) {
49756        composeDecimal("power", element.getPowerElement());
49757      }
49758      if (element.hasBackCurveElement()) {
49759        composeDecimal("backCurve", element.getBackCurveElement());
49760      }
49761      if (element.hasDiameterElement()) {
49762        composeDecimal("diameter", element.getDiameterElement());
49763      }
49764      if (element.hasDuration()) {
49765        composeQuantity("duration", element.getDuration());
49766      }
49767      if (element.hasColorElement()) {
49768        composeString("color", element.getColorElement());
49769      }
49770      if (element.hasBrandElement()) {
49771        composeString("brand", element.getBrandElement());
49772      }
49773      if (element.hasNote()) { 
49774        for (Annotation e : element.getNote()) 
49775          composeAnnotation("note", e);
49776      }
49777  }
49778
49779  protected void composeVisionPrescriptionPrismComponent(String name, VisionPrescription.PrismComponent element) throws IOException {
49780    if (element != null) {
49781      composeElementAttributes(element);
49782      xml.enter(FHIR_NS, name);
49783      composeVisionPrescriptionPrismComponentElements(element);
49784      composeElementClose(element);
49785      xml.exit(FHIR_NS, name);
49786    }
49787  }
49788
49789  protected void composeVisionPrescriptionPrismComponentElements(VisionPrescription.PrismComponent element) throws IOException {
49790      composeBackboneElementElements(element);
49791      if (element.hasAmountElement()) {
49792        composeDecimal("amount", element.getAmountElement());
49793      }
49794      if (element.hasBaseElement())
49795        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
49796  }
49797
49798  @Override
49799  protected void composeResource(Resource resource) throws IOException {
49800    if (resource instanceof Parameters)
49801      composeParameters("Parameters", (Parameters)resource);
49802    else if (resource instanceof Account)
49803      composeAccount("Account", (Account)resource);
49804    else if (resource instanceof ActivityDefinition)
49805      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
49806    else if (resource instanceof AdverseEvent)
49807      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
49808    else if (resource instanceof AllergyIntolerance)
49809      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
49810    else if (resource instanceof Appointment)
49811      composeAppointment("Appointment", (Appointment)resource);
49812    else if (resource instanceof AppointmentResponse)
49813      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
49814    else if (resource instanceof AuditEvent)
49815      composeAuditEvent("AuditEvent", (AuditEvent)resource);
49816    else if (resource instanceof Basic)
49817      composeBasic("Basic", (Basic)resource);
49818    else if (resource instanceof Binary)
49819      composeBinary("Binary", (Binary)resource);
49820    else if (resource instanceof BiologicallyDerivedProduct)
49821      composeBiologicallyDerivedProduct("BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource);
49822    else if (resource instanceof BodyStructure)
49823      composeBodyStructure("BodyStructure", (BodyStructure)resource);
49824    else if (resource instanceof Bundle)
49825      composeBundle("Bundle", (Bundle)resource);
49826    else if (resource instanceof CapabilityStatement)
49827      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
49828    else if (resource instanceof CarePlan)
49829      composeCarePlan("CarePlan", (CarePlan)resource);
49830    else if (resource instanceof CareTeam)
49831      composeCareTeam("CareTeam", (CareTeam)resource);
49832    else if (resource instanceof CatalogEntry)
49833      composeCatalogEntry("CatalogEntry", (CatalogEntry)resource);
49834    else if (resource instanceof ChargeItem)
49835      composeChargeItem("ChargeItem", (ChargeItem)resource);
49836    else if (resource instanceof ChargeItemDefinition)
49837      composeChargeItemDefinition("ChargeItemDefinition", (ChargeItemDefinition)resource);
49838    else if (resource instanceof Claim)
49839      composeClaim("Claim", (Claim)resource);
49840    else if (resource instanceof ClaimResponse)
49841      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
49842    else if (resource instanceof ClinicalImpression)
49843      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
49844    else if (resource instanceof CodeSystem)
49845      composeCodeSystem("CodeSystem", (CodeSystem)resource);
49846    else if (resource instanceof Communication)
49847      composeCommunication("Communication", (Communication)resource);
49848    else if (resource instanceof CommunicationRequest)
49849      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
49850    else if (resource instanceof CompartmentDefinition)
49851      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
49852    else if (resource instanceof Composition)
49853      composeComposition("Composition", (Composition)resource);
49854    else if (resource instanceof ConceptMap)
49855      composeConceptMap("ConceptMap", (ConceptMap)resource);
49856    else if (resource instanceof Condition)
49857      composeCondition("Condition", (Condition)resource);
49858    else if (resource instanceof Consent)
49859      composeConsent("Consent", (Consent)resource);
49860    else if (resource instanceof Contract)
49861      composeContract("Contract", (Contract)resource);
49862    else if (resource instanceof Coverage)
49863      composeCoverage("Coverage", (Coverage)resource);
49864    else if (resource instanceof CoverageEligibilityRequest)
49865      composeCoverageEligibilityRequest("CoverageEligibilityRequest", (CoverageEligibilityRequest)resource);
49866    else if (resource instanceof CoverageEligibilityResponse)
49867      composeCoverageEligibilityResponse("CoverageEligibilityResponse", (CoverageEligibilityResponse)resource);
49868    else if (resource instanceof DetectedIssue)
49869      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
49870    else if (resource instanceof Device)
49871      composeDevice("Device", (Device)resource);
49872    else if (resource instanceof DeviceDefinition)
49873      composeDeviceDefinition("DeviceDefinition", (DeviceDefinition)resource);
49874    else if (resource instanceof DeviceMetric)
49875      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
49876    else if (resource instanceof DeviceRequest)
49877      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
49878    else if (resource instanceof DeviceUseStatement)
49879      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
49880    else if (resource instanceof DiagnosticReport)
49881      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
49882    else if (resource instanceof DocumentManifest)
49883      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
49884    else if (resource instanceof DocumentReference)
49885      composeDocumentReference("DocumentReference", (DocumentReference)resource);
49886    else if (resource instanceof EffectEvidenceSynthesis)
49887      composeEffectEvidenceSynthesis("EffectEvidenceSynthesis", (EffectEvidenceSynthesis)resource);
49888    else if (resource instanceof Encounter)
49889      composeEncounter("Encounter", (Encounter)resource);
49890    else if (resource instanceof Endpoint)
49891      composeEndpoint("Endpoint", (Endpoint)resource);
49892    else if (resource instanceof EnrollmentRequest)
49893      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
49894    else if (resource instanceof EnrollmentResponse)
49895      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
49896    else if (resource instanceof EpisodeOfCare)
49897      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
49898    else if (resource instanceof EventDefinition)
49899      composeEventDefinition("EventDefinition", (EventDefinition)resource);
49900    else if (resource instanceof Evidence)
49901      composeEvidence("Evidence", (Evidence)resource);
49902    else if (resource instanceof EvidenceVariable)
49903      composeEvidenceVariable("EvidenceVariable", (EvidenceVariable)resource);
49904    else if (resource instanceof ExampleScenario)
49905      composeExampleScenario("ExampleScenario", (ExampleScenario)resource);
49906    else if (resource instanceof ExplanationOfBenefit)
49907      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
49908    else if (resource instanceof FamilyMemberHistory)
49909      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
49910    else if (resource instanceof Flag)
49911      composeFlag("Flag", (Flag)resource);
49912    else if (resource instanceof Goal)
49913      composeGoal("Goal", (Goal)resource);
49914    else if (resource instanceof GraphDefinition)
49915      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
49916    else if (resource instanceof Group)
49917      composeGroup("Group", (Group)resource);
49918    else if (resource instanceof GuidanceResponse)
49919      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
49920    else if (resource instanceof HealthcareService)
49921      composeHealthcareService("HealthcareService", (HealthcareService)resource);
49922    else if (resource instanceof ImagingStudy)
49923      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
49924    else if (resource instanceof Immunization)
49925      composeImmunization("Immunization", (Immunization)resource);
49926    else if (resource instanceof ImmunizationEvaluation)
49927      composeImmunizationEvaluation("ImmunizationEvaluation", (ImmunizationEvaluation)resource);
49928    else if (resource instanceof ImmunizationRecommendation)
49929      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
49930    else if (resource instanceof ImplementationGuide)
49931      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
49932    else if (resource instanceof InsurancePlan)
49933      composeInsurancePlan("InsurancePlan", (InsurancePlan)resource);
49934    else if (resource instanceof Invoice)
49935      composeInvoice("Invoice", (Invoice)resource);
49936    else if (resource instanceof Library)
49937      composeLibrary("Library", (Library)resource);
49938    else if (resource instanceof Linkage)
49939      composeLinkage("Linkage", (Linkage)resource);
49940    else if (resource instanceof ListResource)
49941      composeListResource("List", (ListResource)resource);
49942    else if (resource instanceof Location)
49943      composeLocation("Location", (Location)resource);
49944    else if (resource instanceof Measure)
49945      composeMeasure("Measure", (Measure)resource);
49946    else if (resource instanceof MeasureReport)
49947      composeMeasureReport("MeasureReport", (MeasureReport)resource);
49948    else if (resource instanceof Media)
49949      composeMedia("Media", (Media)resource);
49950    else if (resource instanceof Medication)
49951      composeMedication("Medication", (Medication)resource);
49952    else if (resource instanceof MedicationAdministration)
49953      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
49954    else if (resource instanceof MedicationDispense)
49955      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
49956    else if (resource instanceof MedicationKnowledge)
49957      composeMedicationKnowledge("MedicationKnowledge", (MedicationKnowledge)resource);
49958    else if (resource instanceof MedicationRequest)
49959      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
49960    else if (resource instanceof MedicationStatement)
49961      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
49962    else if (resource instanceof MedicinalProduct)
49963      composeMedicinalProduct("MedicinalProduct", (MedicinalProduct)resource);
49964    else if (resource instanceof MedicinalProductAuthorization)
49965      composeMedicinalProductAuthorization("MedicinalProductAuthorization", (MedicinalProductAuthorization)resource);
49966    else if (resource instanceof MedicinalProductContraindication)
49967      composeMedicinalProductContraindication("MedicinalProductContraindication", (MedicinalProductContraindication)resource);
49968    else if (resource instanceof MedicinalProductIndication)
49969      composeMedicinalProductIndication("MedicinalProductIndication", (MedicinalProductIndication)resource);
49970    else if (resource instanceof MedicinalProductIngredient)
49971      composeMedicinalProductIngredient("MedicinalProductIngredient", (MedicinalProductIngredient)resource);
49972    else if (resource instanceof MedicinalProductInteraction)
49973      composeMedicinalProductInteraction("MedicinalProductInteraction", (MedicinalProductInteraction)resource);
49974    else if (resource instanceof MedicinalProductManufactured)
49975      composeMedicinalProductManufactured("MedicinalProductManufactured", (MedicinalProductManufactured)resource);
49976    else if (resource instanceof MedicinalProductPackaged)
49977      composeMedicinalProductPackaged("MedicinalProductPackaged", (MedicinalProductPackaged)resource);
49978    else if (resource instanceof MedicinalProductPharmaceutical)
49979      composeMedicinalProductPharmaceutical("MedicinalProductPharmaceutical", (MedicinalProductPharmaceutical)resource);
49980    else if (resource instanceof MedicinalProductUndesirableEffect)
49981      composeMedicinalProductUndesirableEffect("MedicinalProductUndesirableEffect", (MedicinalProductUndesirableEffect)resource);
49982    else if (resource instanceof MessageDefinition)
49983      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
49984    else if (resource instanceof MessageHeader)
49985      composeMessageHeader("MessageHeader", (MessageHeader)resource);
49986    else if (resource instanceof MolecularSequence)
49987      composeMolecularSequence("MolecularSequence", (MolecularSequence)resource);
49988    else if (resource instanceof NamingSystem)
49989      composeNamingSystem("NamingSystem", (NamingSystem)resource);
49990    else if (resource instanceof NutritionOrder)
49991      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
49992    else if (resource instanceof Observation)
49993      composeObservation("Observation", (Observation)resource);
49994    else if (resource instanceof ObservationDefinition)
49995      composeObservationDefinition("ObservationDefinition", (ObservationDefinition)resource);
49996    else if (resource instanceof OperationDefinition)
49997      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
49998    else if (resource instanceof OperationOutcome)
49999      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
50000    else if (resource instanceof Organization)
50001      composeOrganization("Organization", (Organization)resource);
50002    else if (resource instanceof OrganizationAffiliation)
50003      composeOrganizationAffiliation("OrganizationAffiliation", (OrganizationAffiliation)resource);
50004    else if (resource instanceof Patient)
50005      composePatient("Patient", (Patient)resource);
50006    else if (resource instanceof PaymentNotice)
50007      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
50008    else if (resource instanceof PaymentReconciliation)
50009      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
50010    else if (resource instanceof Person)
50011      composePerson("Person", (Person)resource);
50012    else if (resource instanceof PlanDefinition)
50013      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
50014    else if (resource instanceof Practitioner)
50015      composePractitioner("Practitioner", (Practitioner)resource);
50016    else if (resource instanceof PractitionerRole)
50017      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
50018    else if (resource instanceof Procedure)
50019      composeProcedure("Procedure", (Procedure)resource);
50020    else if (resource instanceof Provenance)
50021      composeProvenance("Provenance", (Provenance)resource);
50022    else if (resource instanceof Questionnaire)
50023      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
50024    else if (resource instanceof QuestionnaireResponse)
50025      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
50026    else if (resource instanceof RelatedPerson)
50027      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
50028    else if (resource instanceof RequestGroup)
50029      composeRequestGroup("RequestGroup", (RequestGroup)resource);
50030    else if (resource instanceof ResearchDefinition)
50031      composeResearchDefinition("ResearchDefinition", (ResearchDefinition)resource);
50032    else if (resource instanceof ResearchElementDefinition)
50033      composeResearchElementDefinition("ResearchElementDefinition", (ResearchElementDefinition)resource);
50034    else if (resource instanceof ResearchStudy)
50035      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
50036    else if (resource instanceof ResearchSubject)
50037      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
50038    else if (resource instanceof RiskAssessment)
50039      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
50040    else if (resource instanceof RiskEvidenceSynthesis)
50041      composeRiskEvidenceSynthesis("RiskEvidenceSynthesis", (RiskEvidenceSynthesis)resource);
50042    else if (resource instanceof Schedule)
50043      composeSchedule("Schedule", (Schedule)resource);
50044    else if (resource instanceof SearchParameter)
50045      composeSearchParameter("SearchParameter", (SearchParameter)resource);
50046    else if (resource instanceof ServiceRequest)
50047      composeServiceRequest("ServiceRequest", (ServiceRequest)resource);
50048    else if (resource instanceof Slot)
50049      composeSlot("Slot", (Slot)resource);
50050    else if (resource instanceof Specimen)
50051      composeSpecimen("Specimen", (Specimen)resource);
50052    else if (resource instanceof SpecimenDefinition)
50053      composeSpecimenDefinition("SpecimenDefinition", (SpecimenDefinition)resource);
50054    else if (resource instanceof StructureDefinition)
50055      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
50056    else if (resource instanceof StructureMap)
50057      composeStructureMap("StructureMap", (StructureMap)resource);
50058    else if (resource instanceof Subscription)
50059      composeSubscription("Subscription", (Subscription)resource);
50060    else if (resource instanceof Substance)
50061      composeSubstance("Substance", (Substance)resource);
50062    else if (resource instanceof SubstanceNucleicAcid)
50063      composeSubstanceNucleicAcid("SubstanceNucleicAcid", (SubstanceNucleicAcid)resource);
50064    else if (resource instanceof SubstancePolymer)
50065      composeSubstancePolymer("SubstancePolymer", (SubstancePolymer)resource);
50066    else if (resource instanceof SubstanceProtein)
50067      composeSubstanceProtein("SubstanceProtein", (SubstanceProtein)resource);
50068    else if (resource instanceof SubstanceReferenceInformation)
50069      composeSubstanceReferenceInformation("SubstanceReferenceInformation", (SubstanceReferenceInformation)resource);
50070    else if (resource instanceof SubstanceSourceMaterial)
50071      composeSubstanceSourceMaterial("SubstanceSourceMaterial", (SubstanceSourceMaterial)resource);
50072    else if (resource instanceof SubstanceSpecification)
50073      composeSubstanceSpecification("SubstanceSpecification", (SubstanceSpecification)resource);
50074    else if (resource instanceof SupplyDelivery)
50075      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
50076    else if (resource instanceof SupplyRequest)
50077      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
50078    else if (resource instanceof Task)
50079      composeTask("Task", (Task)resource);
50080    else if (resource instanceof TerminologyCapabilities)
50081      composeTerminologyCapabilities("TerminologyCapabilities", (TerminologyCapabilities)resource);
50082    else if (resource instanceof TestReport)
50083      composeTestReport("TestReport", (TestReport)resource);
50084    else if (resource instanceof TestScript)
50085      composeTestScript("TestScript", (TestScript)resource);
50086    else if (resource instanceof ValueSet)
50087      composeValueSet("ValueSet", (ValueSet)resource);
50088    else if (resource instanceof VerificationResult)
50089      composeVerificationResult("VerificationResult", (VerificationResult)resource);
50090    else if (resource instanceof VisionPrescription)
50091      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
50092    else if (resource instanceof Binary)
50093      composeBinary("Binary", (Binary)resource);
50094    else
50095      throw new Error("Unhandled resource type "+resource.getClass().getName());
50096  }
50097
50098  protected void composeResource(String name, Resource resource) throws IOException {
50099    if (resource instanceof Parameters)
50100      composeParameters(name, (Parameters)resource);
50101    else if (resource instanceof Account)
50102      composeAccount(name, (Account)resource);
50103    else if (resource instanceof ActivityDefinition)
50104      composeActivityDefinition(name, (ActivityDefinition)resource);
50105    else if (resource instanceof AdverseEvent)
50106      composeAdverseEvent(name, (AdverseEvent)resource);
50107    else if (resource instanceof AllergyIntolerance)
50108      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
50109    else if (resource instanceof Appointment)
50110      composeAppointment(name, (Appointment)resource);
50111    else if (resource instanceof AppointmentResponse)
50112      composeAppointmentResponse(name, (AppointmentResponse)resource);
50113    else if (resource instanceof AuditEvent)
50114      composeAuditEvent(name, (AuditEvent)resource);
50115    else if (resource instanceof Basic)
50116      composeBasic(name, (Basic)resource);
50117    else if (resource instanceof Binary)
50118      composeBinary(name, (Binary)resource);
50119    else if (resource instanceof BiologicallyDerivedProduct)
50120      composeBiologicallyDerivedProduct(name, (BiologicallyDerivedProduct)resource);
50121    else if (resource instanceof BodyStructure)
50122      composeBodyStructure(name, (BodyStructure)resource);
50123    else if (resource instanceof Bundle)
50124      composeBundle(name, (Bundle)resource);
50125    else if (resource instanceof CapabilityStatement)
50126      composeCapabilityStatement(name, (CapabilityStatement)resource);
50127    else if (resource instanceof CarePlan)
50128      composeCarePlan(name, (CarePlan)resource);
50129    else if (resource instanceof CareTeam)
50130      composeCareTeam(name, (CareTeam)resource);
50131    else if (resource instanceof CatalogEntry)
50132      composeCatalogEntry(name, (CatalogEntry)resource);
50133    else if (resource instanceof ChargeItem)
50134      composeChargeItem(name, (ChargeItem)resource);
50135    else if (resource instanceof ChargeItemDefinition)
50136      composeChargeItemDefinition(name, (ChargeItemDefinition)resource);
50137    else if (resource instanceof Claim)
50138      composeClaim(name, (Claim)resource);
50139    else if (resource instanceof ClaimResponse)
50140      composeClaimResponse(name, (ClaimResponse)resource);
50141    else if (resource instanceof ClinicalImpression)
50142      composeClinicalImpression(name, (ClinicalImpression)resource);
50143    else if (resource instanceof CodeSystem)
50144      composeCodeSystem(name, (CodeSystem)resource);
50145    else if (resource instanceof Communication)
50146      composeCommunication(name, (Communication)resource);
50147    else if (resource instanceof CommunicationRequest)
50148      composeCommunicationRequest(name, (CommunicationRequest)resource);
50149    else if (resource instanceof CompartmentDefinition)
50150      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
50151    else if (resource instanceof Composition)
50152      composeComposition(name, (Composition)resource);
50153    else if (resource instanceof ConceptMap)
50154      composeConceptMap(name, (ConceptMap)resource);
50155    else if (resource instanceof Condition)
50156      composeCondition(name, (Condition)resource);
50157    else if (resource instanceof Consent)
50158      composeConsent(name, (Consent)resource);
50159    else if (resource instanceof Contract)
50160      composeContract(name, (Contract)resource);
50161    else if (resource instanceof Coverage)
50162      composeCoverage(name, (Coverage)resource);
50163    else if (resource instanceof CoverageEligibilityRequest)
50164      composeCoverageEligibilityRequest(name, (CoverageEligibilityRequest)resource);
50165    else if (resource instanceof CoverageEligibilityResponse)
50166      composeCoverageEligibilityResponse(name, (CoverageEligibilityResponse)resource);
50167    else if (resource instanceof DetectedIssue)
50168      composeDetectedIssue(name, (DetectedIssue)resource);
50169    else if (resource instanceof Device)
50170      composeDevice(name, (Device)resource);
50171    else if (resource instanceof DeviceDefinition)
50172      composeDeviceDefinition(name, (DeviceDefinition)resource);
50173    else if (resource instanceof DeviceMetric)
50174      composeDeviceMetric(name, (DeviceMetric)resource);
50175    else if (resource instanceof DeviceRequest)
50176      composeDeviceRequest(name, (DeviceRequest)resource);
50177    else if (resource instanceof DeviceUseStatement)
50178      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
50179    else if (resource instanceof DiagnosticReport)
50180      composeDiagnosticReport(name, (DiagnosticReport)resource);
50181    else if (resource instanceof DocumentManifest)
50182      composeDocumentManifest(name, (DocumentManifest)resource);
50183    else if (resource instanceof DocumentReference)
50184      composeDocumentReference(name, (DocumentReference)resource);
50185    else if (resource instanceof EffectEvidenceSynthesis)
50186      composeEffectEvidenceSynthesis(name, (EffectEvidenceSynthesis)resource);
50187    else if (resource instanceof Encounter)
50188      composeEncounter(name, (Encounter)resource);
50189    else if (resource instanceof Endpoint)
50190      composeEndpoint(name, (Endpoint)resource);
50191    else if (resource instanceof EnrollmentRequest)
50192      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
50193    else if (resource instanceof EnrollmentResponse)
50194      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
50195    else if (resource instanceof EpisodeOfCare)
50196      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
50197    else if (resource instanceof EventDefinition)
50198      composeEventDefinition(name, (EventDefinition)resource);
50199    else if (resource instanceof Evidence)
50200      composeEvidence(name, (Evidence)resource);
50201    else if (resource instanceof EvidenceVariable)
50202      composeEvidenceVariable(name, (EvidenceVariable)resource);
50203    else if (resource instanceof ExampleScenario)
50204      composeExampleScenario(name, (ExampleScenario)resource);
50205    else if (resource instanceof ExplanationOfBenefit)
50206      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
50207    else if (resource instanceof FamilyMemberHistory)
50208      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
50209    else if (resource instanceof Flag)
50210      composeFlag(name, (Flag)resource);
50211    else if (resource instanceof Goal)
50212      composeGoal(name, (Goal)resource);
50213    else if (resource instanceof GraphDefinition)
50214      composeGraphDefinition(name, (GraphDefinition)resource);
50215    else if (resource instanceof Group)
50216      composeGroup(name, (Group)resource);
50217    else if (resource instanceof GuidanceResponse)
50218      composeGuidanceResponse(name, (GuidanceResponse)resource);
50219    else if (resource instanceof HealthcareService)
50220      composeHealthcareService(name, (HealthcareService)resource);
50221    else if (resource instanceof ImagingStudy)
50222      composeImagingStudy(name, (ImagingStudy)resource);
50223    else if (resource instanceof Immunization)
50224      composeImmunization(name, (Immunization)resource);
50225    else if (resource instanceof ImmunizationEvaluation)
50226      composeImmunizationEvaluation(name, (ImmunizationEvaluation)resource);
50227    else if (resource instanceof ImmunizationRecommendation)
50228      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
50229    else if (resource instanceof ImplementationGuide)
50230      composeImplementationGuide(name, (ImplementationGuide)resource);
50231    else if (resource instanceof InsurancePlan)
50232      composeInsurancePlan(name, (InsurancePlan)resource);
50233    else if (resource instanceof Invoice)
50234      composeInvoice(name, (Invoice)resource);
50235    else if (resource instanceof Library)
50236      composeLibrary(name, (Library)resource);
50237    else if (resource instanceof Linkage)
50238      composeLinkage(name, (Linkage)resource);
50239    else if (resource instanceof ListResource)
50240      composeListResource(name, (ListResource)resource);
50241    else if (resource instanceof Location)
50242      composeLocation(name, (Location)resource);
50243    else if (resource instanceof Measure)
50244      composeMeasure(name, (Measure)resource);
50245    else if (resource instanceof MeasureReport)
50246      composeMeasureReport(name, (MeasureReport)resource);
50247    else if (resource instanceof Media)
50248      composeMedia(name, (Media)resource);
50249    else if (resource instanceof Medication)
50250      composeMedication(name, (Medication)resource);
50251    else if (resource instanceof MedicationAdministration)
50252      composeMedicationAdministration(name, (MedicationAdministration)resource);
50253    else if (resource instanceof MedicationDispense)
50254      composeMedicationDispense(name, (MedicationDispense)resource);
50255    else if (resource instanceof MedicationKnowledge)
50256      composeMedicationKnowledge(name, (MedicationKnowledge)resource);
50257    else if (resource instanceof MedicationRequest)
50258      composeMedicationRequest(name, (MedicationRequest)resource);
50259    else if (resource instanceof MedicationStatement)
50260      composeMedicationStatement(name, (MedicationStatement)resource);
50261    else if (resource instanceof MedicinalProduct)
50262      composeMedicinalProduct(name, (MedicinalProduct)resource);
50263    else if (resource instanceof MedicinalProductAuthorization)
50264      composeMedicinalProductAuthorization(name, (MedicinalProductAuthorization)resource);
50265    else if (resource instanceof MedicinalProductContraindication)
50266      composeMedicinalProductContraindication(name, (MedicinalProductContraindication)resource);
50267    else if (resource instanceof MedicinalProductIndication)
50268      composeMedicinalProductIndication(name, (MedicinalProductIndication)resource);
50269    else if (resource instanceof MedicinalProductIngredient)
50270      composeMedicinalProductIngredient(name, (MedicinalProductIngredient)resource);
50271    else if (resource instanceof MedicinalProductInteraction)
50272      composeMedicinalProductInteraction(name, (MedicinalProductInteraction)resource);
50273    else if (resource instanceof MedicinalProductManufactured)
50274      composeMedicinalProductManufactured(name, (MedicinalProductManufactured)resource);
50275    else if (resource instanceof MedicinalProductPackaged)
50276      composeMedicinalProductPackaged(name, (MedicinalProductPackaged)resource);
50277    else if (resource instanceof MedicinalProductPharmaceutical)
50278      composeMedicinalProductPharmaceutical(name, (MedicinalProductPharmaceutical)resource);
50279    else if (resource instanceof MedicinalProductUndesirableEffect)
50280      composeMedicinalProductUndesirableEffect(name, (MedicinalProductUndesirableEffect)resource);
50281    else if (resource instanceof MessageDefinition)
50282      composeMessageDefinition(name, (MessageDefinition)resource);
50283    else if (resource instanceof MessageHeader)
50284      composeMessageHeader(name, (MessageHeader)resource);
50285    else if (resource instanceof MolecularSequence)
50286      composeMolecularSequence(name, (MolecularSequence)resource);
50287    else if (resource instanceof NamingSystem)
50288      composeNamingSystem(name, (NamingSystem)resource);
50289    else if (resource instanceof NutritionOrder)
50290      composeNutritionOrder(name, (NutritionOrder)resource);
50291    else if (resource instanceof Observation)
50292      composeObservation(name, (Observation)resource);
50293    else if (resource instanceof ObservationDefinition)
50294      composeObservationDefinition(name, (ObservationDefinition)resource);
50295    else if (resource instanceof OperationDefinition)
50296      composeOperationDefinition(name, (OperationDefinition)resource);
50297    else if (resource instanceof OperationOutcome)
50298      composeOperationOutcome(name, (OperationOutcome)resource);
50299    else if (resource instanceof Organization)
50300      composeOrganization(name, (Organization)resource);
50301    else if (resource instanceof OrganizationAffiliation)
50302      composeOrganizationAffiliation(name, (OrganizationAffiliation)resource);
50303    else if (resource instanceof Patient)
50304      composePatient(name, (Patient)resource);
50305    else if (resource instanceof PaymentNotice)
50306      composePaymentNotice(name, (PaymentNotice)resource);
50307    else if (resource instanceof PaymentReconciliation)
50308      composePaymentReconciliation(name, (PaymentReconciliation)resource);
50309    else if (resource instanceof Person)
50310      composePerson(name, (Person)resource);
50311    else if (resource instanceof PlanDefinition)
50312      composePlanDefinition(name, (PlanDefinition)resource);
50313    else if (resource instanceof Practitioner)
50314      composePractitioner(name, (Practitioner)resource);
50315    else if (resource instanceof PractitionerRole)
50316      composePractitionerRole(name, (PractitionerRole)resource);
50317    else if (resource instanceof Procedure)
50318      composeProcedure(name, (Procedure)resource);
50319    else if (resource instanceof Provenance)
50320      composeProvenance(name, (Provenance)resource);
50321    else if (resource instanceof Questionnaire)
50322      composeQuestionnaire(name, (Questionnaire)resource);
50323    else if (resource instanceof QuestionnaireResponse)
50324      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
50325    else if (resource instanceof RelatedPerson)
50326      composeRelatedPerson(name, (RelatedPerson)resource);
50327    else if (resource instanceof RequestGroup)
50328      composeRequestGroup(name, (RequestGroup)resource);
50329    else if (resource instanceof ResearchDefinition)
50330      composeResearchDefinition(name, (ResearchDefinition)resource);
50331    else if (resource instanceof ResearchElementDefinition)
50332      composeResearchElementDefinition(name, (ResearchElementDefinition)resource);
50333    else if (resource instanceof ResearchStudy)
50334      composeResearchStudy(name, (ResearchStudy)resource);
50335    else if (resource instanceof ResearchSubject)
50336      composeResearchSubject(name, (ResearchSubject)resource);
50337    else if (resource instanceof RiskAssessment)
50338      composeRiskAssessment(name, (RiskAssessment)resource);
50339    else if (resource instanceof RiskEvidenceSynthesis)
50340      composeRiskEvidenceSynthesis(name, (RiskEvidenceSynthesis)resource);
50341    else if (resource instanceof Schedule)
50342      composeSchedule(name, (Schedule)resource);
50343    else if (resource instanceof SearchParameter)
50344      composeSearchParameter(name, (SearchParameter)resource);
50345    else if (resource instanceof ServiceRequest)
50346      composeServiceRequest(name, (ServiceRequest)resource);
50347    else if (resource instanceof Slot)
50348      composeSlot(name, (Slot)resource);
50349    else if (resource instanceof Specimen)
50350      composeSpecimen(name, (Specimen)resource);
50351    else if (resource instanceof SpecimenDefinition)
50352      composeSpecimenDefinition(name, (SpecimenDefinition)resource);
50353    else if (resource instanceof StructureDefinition)
50354      composeStructureDefinition(name, (StructureDefinition)resource);
50355    else if (resource instanceof StructureMap)
50356      composeStructureMap(name, (StructureMap)resource);
50357    else if (resource instanceof Subscription)
50358      composeSubscription(name, (Subscription)resource);
50359    else if (resource instanceof Substance)
50360      composeSubstance(name, (Substance)resource);
50361    else if (resource instanceof SubstanceNucleicAcid)
50362      composeSubstanceNucleicAcid(name, (SubstanceNucleicAcid)resource);
50363    else if (resource instanceof SubstancePolymer)
50364      composeSubstancePolymer(name, (SubstancePolymer)resource);
50365    else if (resource instanceof SubstanceProtein)
50366      composeSubstanceProtein(name, (SubstanceProtein)resource);
50367    else if (resource instanceof SubstanceReferenceInformation)
50368      composeSubstanceReferenceInformation(name, (SubstanceReferenceInformation)resource);
50369    else if (resource instanceof SubstanceSourceMaterial)
50370      composeSubstanceSourceMaterial(name, (SubstanceSourceMaterial)resource);
50371    else if (resource instanceof SubstanceSpecification)
50372      composeSubstanceSpecification(name, (SubstanceSpecification)resource);
50373    else if (resource instanceof SupplyDelivery)
50374      composeSupplyDelivery(name, (SupplyDelivery)resource);
50375    else if (resource instanceof SupplyRequest)
50376      composeSupplyRequest(name, (SupplyRequest)resource);
50377    else if (resource instanceof Task)
50378      composeTask(name, (Task)resource);
50379    else if (resource instanceof TerminologyCapabilities)
50380      composeTerminologyCapabilities(name, (TerminologyCapabilities)resource);
50381    else if (resource instanceof TestReport)
50382      composeTestReport(name, (TestReport)resource);
50383    else if (resource instanceof TestScript)
50384      composeTestScript(name, (TestScript)resource);
50385    else if (resource instanceof ValueSet)
50386      composeValueSet(name, (ValueSet)resource);
50387    else if (resource instanceof VerificationResult)
50388      composeVerificationResult(name, (VerificationResult)resource);
50389    else if (resource instanceof VisionPrescription)
50390      composeVisionPrescription(name, (VisionPrescription)resource);
50391    else if (resource instanceof Binary)
50392      composeBinary(name, (Binary)resource);
50393    else
50394      throw new Error("Unhandled resource type "+resource.getClass().getName());
50395  }
50396
50397  protected void composeType(String prefix, Type type) throws IOException {
50398    if (type == null)
50399      ;
50400    else if (type instanceof Extension)
50401       composeExtension(prefix+"Extension", (Extension) type);
50402    else if (type instanceof Narrative)
50403       composeNarrative(prefix+"Narrative", (Narrative) type);
50404    else if (type instanceof Count)
50405       composeCount(prefix+"Count", (Count) type);
50406    else if (type instanceof Dosage)
50407       composeDosage(prefix+"Dosage", (Dosage) type);
50408    else if (type instanceof MarketingStatus)
50409       composeMarketingStatus(prefix+"MarketingStatus", (MarketingStatus) type);
50410    else if (type instanceof SubstanceAmount)
50411       composeSubstanceAmount(prefix+"SubstanceAmount", (SubstanceAmount) type);
50412    else if (type instanceof Population)
50413       composePopulation(prefix+"Population", (Population) type);
50414    else if (type instanceof Distance)
50415       composeDistance(prefix+"Distance", (Distance) type);
50416    else if (type instanceof Age)
50417       composeAge(prefix+"Age", (Age) type);
50418    else if (type instanceof Duration)
50419       composeDuration(prefix+"Duration", (Duration) type);
50420    else if (type instanceof ProductShelfLife)
50421       composeProductShelfLife(prefix+"ProductShelfLife", (ProductShelfLife) type);
50422    else if (type instanceof Timing)
50423       composeTiming(prefix+"Timing", (Timing) type);
50424    else if (type instanceof ProdCharacteristic)
50425       composeProdCharacteristic(prefix+"ProdCharacteristic", (ProdCharacteristic) type);
50426    else if (type instanceof Meta)
50427       composeMeta(prefix+"Meta", (Meta) type);
50428    else if (type instanceof Address)
50429       composeAddress(prefix+"Address", (Address) type);
50430    else if (type instanceof Contributor)
50431       composeContributor(prefix+"Contributor", (Contributor) type);
50432    else if (type instanceof Attachment)
50433       composeAttachment(prefix+"Attachment", (Attachment) type);
50434    else if (type instanceof DataRequirement)
50435       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
50436    else if (type instanceof Money)
50437       composeMoney(prefix+"Money", (Money) type);
50438    else if (type instanceof HumanName)
50439       composeHumanName(prefix+"HumanName", (HumanName) type);
50440    else if (type instanceof ContactPoint)
50441       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
50442    else if (type instanceof Identifier)
50443       composeIdentifier(prefix+"Identifier", (Identifier) type);
50444    else if (type instanceof Coding)
50445       composeCoding(prefix+"Coding", (Coding) type);
50446    else if (type instanceof SampledData)
50447       composeSampledData(prefix+"SampledData", (SampledData) type);
50448    else if (type instanceof Ratio)
50449       composeRatio(prefix+"Ratio", (Ratio) type);
50450    else if (type instanceof Reference)
50451       composeReference(prefix+"Reference", (Reference) type);
50452    else if (type instanceof TriggerDefinition)
50453       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
50454    else if (type instanceof Quantity)
50455       composeQuantity(prefix+"Quantity", (Quantity) type);
50456    else if (type instanceof Period)
50457       composePeriod(prefix+"Period", (Period) type);
50458    else if (type instanceof Range)
50459       composeRange(prefix+"Range", (Range) type);
50460    else if (type instanceof RelatedArtifact)
50461       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
50462    else if (type instanceof Annotation)
50463       composeAnnotation(prefix+"Annotation", (Annotation) type);
50464    else if (type instanceof ContactDetail)
50465       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
50466    else if (type instanceof UsageContext)
50467       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
50468    else if (type instanceof Expression)
50469       composeExpression(prefix+"Expression", (Expression) type);
50470    else if (type instanceof Signature)
50471       composeSignature(prefix+"Signature", (Signature) type);
50472    else if (type instanceof CodeableConcept)
50473       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
50474    else if (type instanceof ParameterDefinition)
50475       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
50476    else if (type instanceof CodeType)
50477       composeCode(prefix+"Code", (CodeType) type);
50478    else if (type instanceof OidType)
50479       composeOid(prefix+"Oid", (OidType) type);
50480    else if (type instanceof CanonicalType)
50481       composeCanonical(prefix+"Canonical", (CanonicalType) type);
50482    else if (type instanceof UuidType)
50483       composeUuid(prefix+"Uuid", (UuidType) type);
50484    else if (type instanceof UrlType)
50485       composeUrl(prefix+"Url", (UrlType) type);
50486    else if (type instanceof UnsignedIntType)
50487       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
50488    else if (type instanceof MarkdownType)
50489       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
50490    else if (type instanceof IdType)
50491       composeId(prefix+"Id", (IdType) type);
50492    else if (type instanceof PositiveIntType)
50493       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
50494    else if (type instanceof DateType)
50495       composeDate(prefix+"Date", (DateType) type);
50496    else if (type instanceof DateTimeType)
50497       composeDateTime(prefix+"DateTime", (DateTimeType) type);
50498    else if (type instanceof StringType)
50499       composeString(prefix+"String", (StringType) type);
50500    else if (type instanceof IntegerType)
50501       composeInteger(prefix+"Integer", (IntegerType) type);
50502    else if (type instanceof UriType)
50503       composeUri(prefix+"Uri", (UriType) type);
50504    else if (type instanceof InstantType)
50505       composeInstant(prefix+"Instant", (InstantType) type);
50506    else if (type instanceof BooleanType)
50507       composeBoolean(prefix+"Boolean", (BooleanType) type);
50508    else if (type instanceof Base64BinaryType)
50509       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
50510    else if (type instanceof TimeType)
50511       composeTime(prefix+"Time", (TimeType) type);
50512    else if (type instanceof DecimalType)
50513       composeDecimal(prefix+"Decimal", (DecimalType) type);
50514    else
50515      throw new Error("Unhandled type");
50516  }
50517
50518}